從零開始寫網(wǎng)站登錄爆破(一)
0x00簡述
本文從零開始介紹一個網(wǎng)站登錄爆破腳本的編寫過程,通過腳本模擬網(wǎng)站登錄的作用有以下幾點:
1,web類安全工具需要一個強大的爬蟲爬取目標網(wǎng)站的所有頁面,以確認漏洞利用點。
如果遇到需要登錄才能爬取的情況,可以爬蟲直接模擬登錄過程。
2,已知部分信息,爆破網(wǎng)站后臺,為下一步的滲透做準備。
關(guān)于登錄爆破在《blackhat python》這本書中有一個例子,但是我用requests和beautifulsoup做了一些修改,后續(xù)還會以此為基礎(chǔ)添加更多的功能。
0x01網(wǎng)站的認證過程
要模擬登錄網(wǎng)站就要知道網(wǎng)站的登錄認證過程,這里以joomla這款開源cms為例。
配置瀏覽器使用代理,本地127.0.0.1 8080端口,我使用了owasp zap
這款工具,其他的工具如Burpsuite或者直接F12 都可以查看到包的信息。
第一步,首先訪問后臺登錄頁面,抓包查看發(fā)現(xiàn)返回包中包含“SetCookie”響應(yīng)頭,cookie此時作為認證用戶身份的憑據(jù),且每次訪問都會改變。
第二步,接著POST方法提交登錄信息,同樣抓包查看
可以看到包里的參數(shù)不只有賬號密碼,還有token(用于防御CSRF)還有task等等。
認證的同時要抓取頁面表單的其他input標簽的name和value。joomla的較為簡單,網(wǎng)站一般不會明文傳輸用戶名和密碼,遇到這種情況需要分析引入的js文件,模擬加密算法。
第三步,可以通過代理歷史頁面看到,post請求觸發(fā)了303跳轉(zhuǎn)跳回了原url相當于又實現(xiàn)了一次GET請求,可以查看到這次請求攜帶了之前設(shè)置的cookie。
到這里網(wǎng)站的基本認證流程就結(jié)束了,接著我們用工具自動化
0x02HTTP方法
登錄過程中用到了兩種方法,GET和POST方法,用reqeusts實現(xiàn)很簡單
import requests res_get=requests.get(url) res_post=requests.post(url,data=data,cookies=cookies,headers=headers)
其中data屬性接收一個dict作為post的數(shù)據(jù),cookies和headers
請求頭都可以自己定義,將準備好的請求頭用dict封裝就可以偽造一個firefox瀏覽器的請求
cookie處理的兩種方法
cookie值在第一次請求目標url的時候就已經(jīng)設(shè)定好了
res_get.headers['Set-Cookie']讀取響應(yīng)頭取出set-cookie字段解析成dict
另一種 cookies=res.cookies 自動處理可以直接傳入