js文件都能獲取到哪些信息

js文件都能獲取到哪些信息,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

創(chuàng)新互聯(lián)網(wǎng)站建設(shè)服務(wù)商,為中小企業(yè)提供網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站服務(wù),網(wǎng)站設(shè)計(jì),網(wǎng)站運(yùn)營(yíng)等一站式綜合服務(wù)型公司,專業(yè)打造企業(yè)形象網(wǎng)站,讓您在眾多競(jìng)爭(zhēng)對(duì)手中脫穎而出創(chuàng)新互聯(lián)。

01 簡(jiǎn)介

JavaScript已經(jīng)成為現(xiàn)代Web瀏覽器開(kāi)發(fā)中最普遍的技術(shù)之一。有的測(cè)試人員只審計(jì)html源代碼,而忽略審計(jì)js文件里的源代碼,今天我們就來(lái)講一講審計(jì)js文件都能獲取到哪些信息。

02 詳解

通過(guò)審計(jì)js文件源代碼能獲取到的信息,我個(gè)人將其分為以下四類:敏感信息、業(yè)務(wù)邏輯、加密算法、Ajax請(qǐng)求。

敏感信息

審計(jì)js文件最直觀的就是很有可能獲取到賬號(hào)密碼、配置等敏感信息。

HTML定義頁(yè)面結(jié)構(gòu),CSS定義裝修樣式,而JavaScript定義前端工作內(nèi)容,主要是監(jiān)聽(tīng)事件執(zhí)行動(dòng)作,比如邏輯判斷,亦或是向服務(wù)器發(fā)送請(qǐng)求等等。而要正確執(zhí)行這些動(dòng)作,通常都會(huì)進(jìn)行一些簡(jiǎn)單的配置。

最常見(jiàn)的配置就是設(shè)置網(wǎng)站根路徑,不過(guò)也經(jīng)常遇到直接在js文件里配置賬號(hào)密碼的情況;更有甚者,有的開(kāi)發(fā)人員直接在js文件里定義SQL語(yǔ)句,然后由前端發(fā)送到服務(wù)器執(zhí)行。這不僅泄露了數(shù)據(jù)庫(kù)信息,也提高了SQL注入漏洞攻擊的風(fēng)險(xiǎn)。

以上是獲取敏感信息的一種情況,還有一種情況就是注釋。

為了更好的維護(hù)代碼、調(diào)試代碼,我們經(jīng)常在源碼中見(jiàn)到各種注釋。比如為了方便調(diào)試,直接把賬號(hào)密碼寫(xiě)在Javascript代碼中,調(diào)試完后,只是把這條語(yǔ)句注釋掉而非刪掉;有時(shí)候系統(tǒng)更迭,推出一些新的接口,開(kāi)發(fā)人員把老接口注釋掉使用新的接口,但服務(wù)器端并沒(méi)有把老接口關(guān)掉等等。

以上情況不僅讓我們搜集到了更多目標(biāo)信息,也增加了系統(tǒng)攻擊面,只能說(shuō):這些開(kāi)發(fā)人員真他娘的是個(gè)人才。

業(yè)務(wù)邏輯

除了能獲取到敏感信息,審計(jì)js文件還可以獲取到Web系統(tǒng)的一些業(yè)務(wù)邏輯。

說(shuō)到業(yè)務(wù)邏輯,就要牽扯到前端校驗(yàn)。有些系統(tǒng)只做了前端校驗(yàn),只要響應(yīng)包滿足條件,就會(huì)執(zhí)行下一步操作,服務(wù)器端不會(huì)再進(jìn)一步檢驗(yàn)接下來(lái)的請(qǐng)求是否有問(wèn)題,我們只要修改響應(yīng)包就可以繞過(guò)檢測(cè)。

比如輸入錯(cuò)誤的賬號(hào)密碼,響應(yīng)false,要求重新輸入賬號(hào)密碼;我們把響應(yīng)包攔截,把false改成true,前端檢測(cè)到true,認(rèn)為賬號(hào)密碼正確,發(fā)送跳轉(zhuǎn)到系統(tǒng)內(nèi)部的請(qǐng)求,而服務(wù)器沒(méi)有再校驗(yàn)請(qǐng)求是否有問(wèn)題,將系統(tǒng)內(nèi)部頁(yè)面響應(yīng)給前端。

要繞過(guò)前端校驗(yàn),像0/1、true/false這種很容易就能猜到該怎么修改,但有些系統(tǒng)可能有十多個(gè)響應(yīng)碼,或者響應(yīng)碼有多位,如果我們耐著性子一個(gè)一個(gè)去試,時(shí)間成本會(huì)很大。

比如0是用戶名錯(cuò)誤,1是密碼錯(cuò)誤,2是驗(yàn)證碼錯(cuò)誤,9999是登陸成功,如果我們從0開(kāi)始,一個(gè)一個(gè)去試,說(shuō)真的還不一定能試出來(lái)。除非先輸入正確的賬號(hào)密碼得到正確的響應(yīng)碼,然后輸入錯(cuò)誤的賬號(hào)密碼,再用之前得到的正確響應(yīng)碼替換錯(cuò)誤的響應(yīng)碼,嘗試看是否存在前端校驗(yàn)的問(wèn)題。

問(wèn)題是:如果是安全服務(wù),客戶還有可能提供賬號(hào)密碼,但攻防演練、挖洞一般都是靠自己白手起家,哪里有什么賬號(hào)密碼給你。而前端業(yè)務(wù)邏輯通常都由js實(shí)現(xiàn),基本都可以通過(guò)代碼審計(jì)來(lái)確定如何構(gòu)造響應(yīng)包來(lái)嘗試?yán)@過(guò)前端校驗(yàn)。我只想說(shuō):信息收集真的很重要。

加密算法

審計(jì)代碼能獲取到的第三類信息就是加密算法。在當(dāng)今的大環(huán)境下,企業(yè)越來(lái)越重視安全,運(yùn)用了各種防護(hù)手段來(lái)提高系統(tǒng)的安全系數(shù),提高攻擊者的攻擊成本,其中就有加密機(jī)制。

可能很多測(cè)試人員在測(cè)試的時(shí)候,抓包發(fā)現(xiàn)參數(shù)值都是加密的,就這么放過(guò)了。但這種前端加密都是可以在js中找到加密算法的,要么在html文件的js中,要么包含在js文件中。

當(dāng)然我們也可以不需要知道加密算法到底是怎么樣的,直接輸入測(cè)試的明文Payload,系統(tǒng)自然會(huì)利用加密算法輸出對(duì)應(yīng)的加密數(shù)據(jù)。這個(gè)Payload不行,我們?cè)佥斎胂乱粋€(gè)明文Payload去測(cè)試。

以上的方式時(shí)間成本會(huì)增加很多,而且有時(shí)候系統(tǒng)會(huì)先檢測(cè)輸入的數(shù)據(jù)是否含有非法字符,沒(méi)有非法字符才會(huì)加密發(fā)送到服務(wù)器端。而只要我們找到了對(duì)應(yīng)的加密算法,就可以手工構(gòu)造或者編寫(xiě)腳本批量生成我們想要的加密數(shù)據(jù),進(jìn)而去測(cè)試系統(tǒng)是否存在漏洞。

據(jù)目前工作經(jīng)歷來(lái)看,涉及到加密的參數(shù),存在漏洞的幾率要高很多。因?yàn)榍岸思用芎?,后端必須解密才能使用。但很多時(shí)候,系統(tǒng)的安全檢測(cè)只在請(qǐng)求傳過(guò)來(lái)的時(shí)候,加密時(shí)沒(méi)有檢測(cè)到非法字符就繞過(guò)了檢測(cè),后端解密之后就可以肆意橫行。

Ajax請(qǐng)求

審計(jì)js文件能獲取到的信息還有Ajax請(qǐng)求,也是漏洞重災(zāi)區(qū)。而Ajax請(qǐng)求的調(diào)用通常很隱蔽,且Ajax請(qǐng)求的觸發(fā)條件無(wú)規(guī)律,很容易被遺漏或忽略。

Ajax請(qǐng)求通常是被各個(gè)事件觸發(fā)調(diào)用,而這些事件的觸發(fā)往往需要滿足一定條件。但很多時(shí)候,即便事件觸發(fā)條件未滿足,我們?nèi)?gòu)造Ajax請(qǐng)求的數(shù)據(jù)包發(fā)送給服務(wù)器端,依然可以得到服務(wù)器的響應(yīng)。

服務(wù)器訪問(wèn)控制不當(dāng),并沒(méi)有去檢測(cè)用戶是否是通過(guò)正常業(yè)務(wù)邏輯發(fā)送Ajax請(qǐng)求,也沒(méi)有去檢測(cè)用戶是否有操作權(quán)限。服務(wù)器認(rèn)為客戶端發(fā)過(guò)來(lái)的請(qǐng)求都是正確的,這又要提一下安全的本質(zhì):一切輸入都是不安全的。而且每一個(gè)Ajax請(qǐng)求都對(duì)應(yīng)一個(gè)接口,這又增加了攻擊面,每個(gè)請(qǐng)求都可能形成獨(dú)立的攻擊過(guò)程。

舉個(gè)真實(shí)案例:修改密碼,先要通過(guò)短信驗(yàn)證碼校驗(yàn)才能修改新密碼。只有管理員才能修改密碼,修改密碼的Ajax請(qǐng)求由修改密碼功能調(diào)用,普通用戶沒(méi)有這個(gè)功能。(某些原因,沒(méi)有截圖,意淫一下吧)

開(kāi)發(fā)人員認(rèn)為所有的用戶都會(huì)按照系統(tǒng)業(yè)務(wù)邏輯一步一步觸發(fā)請(qǐng)求,先點(diǎn)擊發(fā)送驗(yàn)證碼,然后填寫(xiě)驗(yàn)證碼進(jìn)行校驗(yàn),通過(guò)校驗(yàn)后跳轉(zhuǎn)到修改密碼的頁(yè)面,輸入新密碼,最后修改成功。而且只有管理員有這個(gè)功能頁(yè)面。

但通過(guò)代碼審計(jì),直接在js文件中找到了修改密碼的Ajax請(qǐng)求,請(qǐng)求參數(shù)只有新密碼。現(xiàn)在我們已經(jīng)找到了修改密碼的請(qǐng)求,那么我們可以跳過(guò)前面一系列的校驗(yàn)和請(qǐng)求,只需要構(gòu)造出修改密碼請(qǐng)求,就可以修改密碼。

而且這個(gè)Ajax請(qǐng)求是寫(xiě)在js文件里的,系統(tǒng)并不會(huì)因?yàn)橛脩魴?quán)限的不同而調(diào)用不同的js文件,所以普通用戶也能夠查到到對(duì)應(yīng)的js代碼,不存在管理員一說(shuō)。

看完上述內(nèi)容,你們掌握js文件都能獲取到哪些信息的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

網(wǎng)站題目:js文件都能獲取到哪些信息
當(dāng)前路徑:http://bm7419.com/article16/psdggg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、動(dòng)態(tài)網(wǎng)站、手機(jī)網(wǎng)站建設(shè)商城網(wǎng)站、品牌網(wǎng)站建設(shè)微信公眾號(hào)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

營(yíng)銷型網(wǎng)站建設(shè)