awvs 13使用_如何解密AWVS?15行代码就够了!
項(xiàng)目介紹
AWVS一直以來(lái)在圈子中都比較火,以速度快和高準(zhǔn)確性深受大家喜愛(ài)。很多人想研究其運(yùn)作機(jī)制卻因閉源而不得其解。
今天這里通過(guò)一個(gè)極其簡(jiǎn)單的方式,只用幾行代碼就能讓你一見(jiàn)其核心代碼。這是最新解碼方法,除python3外無(wú)須安裝任何依賴(沒(méi)辦法,python寫(xiě)的),支持11.x,12.x,13.x,以及后續(xù)版本^_^
對(duì)于有IAST、DAST掃描器需求的同學(xué),很有幫助。安全從業(yè)人員亦可以學(xué)習(xí)到業(yè)界頂尖的掃描技術(shù);對(duì)于動(dòng)手能力強(qiáng)的同學(xué),還可以通過(guò)學(xué)習(xí)這幾行代碼,自動(dòng)動(dòng)手給AWVS添加插件哦。
項(xiàng)目地址
https://github.com/gatlindada/awvs-decode/
解密原理
awvs的版本迭代歷史
1. 6.5版本之前,awvs的掃描規(guī)則是明文可見(jiàn)
2. 6.5 - 10.x,awvs的規(guī)則變?yōu)?script結(jié)尾的javascript腳本,執(zhí)行程序也使用了TMD加殼,分析較難,但也可以使用解密腳本從文件夾提取,因過(guò)于古老,腳本就沒(méi)必要放出來(lái)了
3. 11.x - 13.x(當(dāng)前最新),awvs把腳本放到了“wvsc_blob.bin”文件中,起初誤以為加密了,沒(méi)承想,經(jīng)過(guò)靜態(tài)分析后發(fā)現(xiàn)程序沒(méi)加殼,wvsc_blob.bin也沒(méi)有加密,只是google protobuf協(xié)議壓縮存儲(chǔ)了。簡(jiǎn)單理解:類似把文件使用ZIP工具壓縮一下。所以新版本中,使用解密這個(gè)詞有些不準(zhǔn)確了,準(zhǔn)確地講是解碼(decode)而非解密(decrypt)。
使用方法
wvsc_blob.bin文件一般在“C:\Program Files (x86)\Acunetix XXX\core\wvsc_blob.bin”
將wvscblob.bin文件放到和腳本同一目錄,執(zhí)行腳本即可,輸出在以‘a(chǎn)wvs_script_blob_decode’開(kāi)頭的目錄下。
$ python3 awvs-decode.py目錄解讀
awvs使用Google V8引擎執(zhí)行javascript的掃描腳本,腳本在/Scripts/目錄下的”.script”后綴文件,”.script”文件中“#include”包含的是/Scripts/Includes目錄下的文件,使用宏替換的方式加載,而非require。
/Scripts/PerFile/: 針對(duì)文件路徑中文件名相關(guān)的漏洞,常用于檢測(cè)備份文件、BashRCE、PHP CGI、URI XSS等
/Scripts/PerFolder/: 針對(duì)URI路徑中文件夾的漏洞探測(cè),如備份文件夾、探測(cè)后臺(tái)路徑等
/Scripts/PerScheme/: 針對(duì)變量輸入點(diǎn)的掃描,包括GET、POST參數(shù)、Http請(qǐng)求頭、Cookie參數(shù)等
/Scripts/PerServer/: 針對(duì)不同域名或主機(jī)的檢測(cè),每個(gè)“站點(diǎn)”只執(zhí)行一次
/Scripts/PostCrawl/: 針對(duì)POST請(qǐng)求的掃描,在爬蟲(chóng)期間即可執(zhí)行
/Scripts/PostScan/: 只針對(duì)POST請(qǐng)求的掃描,常用于存儲(chǔ)型漏洞掃描,執(zhí)行期間不會(huì)上報(bào)漏洞,通常借助于DNSLog技術(shù)異步觸發(fā),一旦觸發(fā)即漏洞存在。
/Scripts/WebApps/: 只針對(duì)檢測(cè)到的相關(guān)WebApps類型進(jìn)行檢測(cè)。awvs會(huì)識(shí)別服務(wù)類型,新版指紋特征在/httpdata/12-WebAppDetection.js中,11.x版本之前在.xml的配置文件中。
/Crawler下包含一些爬蟲(chóng)相關(guān)的處理腳本
/httpdata、/lib包含一些基礎(chǔ)腳本
/lib/legacy/legacy.js是一個(gè)非常核心的文件,是所有腳本的先導(dǎo),它解釋了掃描引擎(C++)如何與V8進(jìn)行數(shù)據(jù)交互,如果你想運(yùn)行這些代碼,你最好得模擬一個(gè)掃描引擎,代碼量不小,不建議嘗試。
其他的目錄留給大家探索。
還有一個(gè)大家關(guān)注的,獲取AWVS的漏洞描述文件:很簡(jiǎn)單,使用數(shù)據(jù)庫(kù)連接工具連接pgsql后dump即可,用戶名和密碼在應(yīng)用配置目錄下找,一般在/AppData/隱藏目錄下
核心代碼
只有簡(jiǎn)簡(jiǎn)單單15行代碼就搞定。確要精簡(jiǎn)的話5行代碼也行。
#!/usr/bin/env python3import struct, zlib, os, datetimemask, pos = 2 ** 32 - 16, 32base_path = os.path.abspath("awvs_script_blob_decode_" + datetime.date.today().isoformat())with open('wvsc_blob.bin', 'rb') as fp: s = fp.read() while pos < len(s): file_len = struct.unpack(' d = zlib.decompress(s[pos + 4: pos + 4 + file_len]) path_len = ord(struct.unpack(' path = os.path.join(base_path, bytes.decode(d[2 + 1: 2 + path_len])) os.makedirs(os.path.dirname(path), exist_ok=True) open(path, 'wb').write(d[2 + path_len + 1 + 2 + (1 if (len(d) - path_len - 3) > 2 ** 14 else 0) + (1 if (len(d) - path_len - 3) > 2 ** 21 else 0):]) pos += ((file_len + 4) & mask) + 16免責(zé)聲明
該腳本僅用于個(gè)人私下研究技術(shù)交流用,一切后果就使用者承擔(dān)
*本文作者:gatlindada,轉(zhuǎn)載請(qǐng)注明來(lái)自FreeBuf.COM
精彩推薦
總結(jié)
以上是生活随笔為你收集整理的awvs 13使用_如何解密AWVS?15行代码就够了!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: oracle字段求和_oracle大纲
- 下一篇: virtual DOM和真实DOM的区别