1沛豌、簡介
1.1萝喘、XSS區(qū)別
從信任的角度來區(qū)分:
- XSS:利用用戶對站點的信任,服務器下發(fā)的腳本在客戶端瀏覽器執(zhí)行
- CSRF:利用站點對已經身份認證的信任
在已經身份認證過的用戶琼懊,可以正常訪問服務端資源阁簸。此時如果黑客發(fā)送一個鏈接,是進行上述訪問的服務資源如修改密碼的一個鏈接請求哼丈,此時此用戶點擊启妹,會被執(zhí)行,密碼會被直接修改醉旦,因為是利用已經認證的合法身份提交的饶米。
1.2、結合社工在身份認證會話過程中實現(xiàn)攻擊
- 修改賬號密碼车胡、個人信息(修改已注冊的email檬输、收貨地址)
- 發(fā)送偽造的業(yè)務請求(網(wǎng)銀、購物匈棘、投票)
- 關注他人社交賬號丧慈、推送博文
- 在用戶非自愿、不知情的情況下提交請求
1.3主卫、業(yè)務邏輯漏洞
- 缺少二次確認機制:一般來說對于服務端而言逃默,所有的請求都是合法的,因為已經驗證了用戶簇搅。但是服務端對于關鍵操作完域,缺少確認機制是發(fā)生此問題的根源(可以采用驗證碼機制)
- 自動掃描程序無法實現(xiàn)此類漏洞
1.4 漏洞利用條件
- 被害用戶已經完成身份認證
- 新請求的提交不需要重新身份認證或確認機制
- 攻擊者必須了解web app請求的參數(shù)構造
- 誘使用戶觸發(fā)攻擊的指令(社工)
2、驗證csrf(get方法)
環(huán)境說明:
192.168.50.115 kali瘩将,模擬黑客吟税,搭建1.html網(wǎng)頁,誘使受害者點擊
192.168.50.17 模擬受害者機器
192.168.50.183 靶機姿现,有csrf漏洞的服務
2.1肠仪、搭建誘使點擊網(wǎng)頁
首先,黑客要知道web app請求的構造建钥,因此藤韵,通過burpsuite截獲正常訪問時的請求數(shù)據(jù)。訪問csrf界面熊经,然后輸入修改的密碼泽艘,點擊提交:
將get請求以一個可點擊鏈接的方式欲险,寫入1.html文件中,在黑客的主機上搭建匹涮,路徑為
/var/www/html/1.html
<a href='http://=192.168.50.183/dvwa/vulnerabilities/csrf/?password_new=123&password_conf=123&Change=Change'>csrf</a>
然后啟動apahce天试,并確定能夠訪問
# service apache2 start
2.2、誘使受害者點擊
將上述構造好的網(wǎng)頁然低,通過社工或者其他手段喜每,誘使受害者點擊(在受害者已經登錄此網(wǎng)站的情況下)
2.3 csrf攻擊后果
此時,受害者正在正常訪問此網(wǎng)站雳攘,此時如果接受到攻擊者發(fā)送的鏈接带兜,然后點擊了,會發(fā)生什么呢吨灭?
此時logout之后刚照,在通過密碼為“password”則無法登錄
3、驗證csrf(post方法)
burpsuite截斷后喧兄,使用CSRF PoC generator功能无畔。首先截斷請求,構造數(shù)據(jù)請求
然后在此基礎上吠冤,右鍵點擊“CSRF PoC generator”
隨后會生成csrf html:
復制內容浑彰,在'/var/www/html/2.html'中粘貼
驗證
在正常登錄訪問網(wǎng)站的同時,點擊惡意鏈接
此時拯辙,密碼已經被修改郭变。
4、源代碼
4.1薄风、low級別
4.2饵较、medium級別
上述的都是基于low級別進行的poc測試,下面通過medium級別可以看到遭赂,多了一層判斷,意思是判斷referer信息横辆,看請求中是否含有127.0.0.1即只能本機修改密碼撇他,如果不是則不能執(zhí)行。
通過請求截斷狈蚤,在referer中添加127.0.0.1困肩,只要在referer中找到此字段,即為通過判斷條件
轉發(fā)forward后脆侮,密碼已經修改成功
4.3锌畸、high級別
高級別增加了當前密碼的二次校驗功能
5、自動掃描程序的檢測方法
- 在請求和響應過程中檢查是否存在anti-CSRF token名
- 檢查服務器是否驗證anti-CSRF token的名值
- 檢查token中可編輯的字符串
- 檢查referer頭是否可以偽造
6靖避、應對對策
- Captcha驗證碼
- anti-CSRF token
- Referer
- 降低會話超時時間