CSRF
跨站請求偽造(Cross-Site Request Forgery)
CSRF經(jīng)常配合XSS一起進(jìn)行攻擊!(同XSS類似,都屬于跨站攻擊,不攻擊服務(wù)器端而攻擊正常訪問網(wǎng)站的用戶!)
XSS利用站點(diǎn)內(nèi)的信任用戶,CSRF偽造成受信任用戶!

CSRF原理
攻擊者偽造目標(biāo)用戶的身份,以目標(biāo)用戶的名義執(zhí)行非法操作!
如:發(fā)送郵件、發(fā)送消息、盜取目標(biāo)用戶的賬戶進(jìn)行購買,轉(zhuǎn)賬等威脅目標(biāo)用戶的財(cái)產(chǎn)安全!
注意:具體實(shí)例,請參考之前的文章!
CSRF的利用
之前文章的利用手段截圖:


CSRF的防御
- 使用POST請求代替GET請求
CSRF一般觸發(fā)的時(shí)候,都是通過用戶點(diǎn)擊鏈接,比如美女圖片,吸引眼球的信息,這種請求方式都是GET請求,所以使用POST在一定程度上會(huì)避免通過GET方式請求CSRF!
- HTTP Referer
HTTP頭信息中,包含Referer字段,記錄了請求的來源地址(上一個(gè)訪問地址),通過檢查此字段,可以了解來源是站內(nèi)還是外部的惡意連接!
- 驗(yàn)證碼
每次請求,都需要填寫驗(yàn)證碼!(盡管也可以繞過驗(yàn)證碼,今后講解業(yè)務(wù)安全時(shí),會(huì)提到如果繞過驗(yàn)證碼漏洞!)
注意:驗(yàn)證碼,用戶體驗(yàn)不好!
- Token(請求令牌!)
CSRF之所以能成功的重要原因是:攻擊者能夠預(yù)知和偽造請求中的關(guān)鍵字段,因此,如果在請求中放入攻擊者不能偽造的信息就能起到防范CSRF的作用!
在HTTP請求中以參數(shù)的形式加入一個(gè)隨機(jī)產(chǎn)生的請求令牌(Token),并在服務(wù)器端進(jìn)行驗(yàn)證。如果請求中沒有Token或者Token內(nèi)容不正確,則拒絕該請求!
Cookie Token:Token值放進(jìn)Cookie中(所有表單都包含同一個(gè)偽隨機(jī)值)
把Token放入HTTP頭部自定義的屬性中
一次性Token:每一個(gè)表單包含一個(gè)不同的偽隨機(jī)值!
SSRF
SSRF:Server-Side Request Forgery(服務(wù)端請求偽造)
攻擊者利用SSRF漏洞通過服務(wù)器端發(fā)起偽造請求!
一般情況下,SSRF攻擊的目標(biāo)是外網(wǎng)無法訪問的內(nèi)部系統(tǒng)!
(由于請求是服務(wù)器端發(fā)起的,所以服務(wù)器能請求到與自身相連而與外網(wǎng)隔絕的內(nèi)網(wǎng)!)
SSRF漏洞形成原因
服務(wù)器提供了從其他服務(wù)器應(yīng)用獲取數(shù)據(jù)的功能,并且對目標(biāo)地址沒有做嚴(yán)格的過濾!
SSRF漏洞利用
- 通過服務(wù)器獲取內(nèi)網(wǎng)主機(jī)、本地端口掃描、獲取一些服務(wù)的banner信息!
banner:會(huì)獲取到一些敏感信息!
banner 信息中,可以獲取到軟件開發(fā)商、軟件名稱、服務(wù)類型、版本號等。
而版本號有時(shí)候就會(huì)存在公開的 CVE 問題,可以直接進(jìn)行利用。
banner 信息獲取的基礎(chǔ)是在和目標(biāo)建立鏈接后的,只有建立的鏈接,才可以獲取到相應(yīng)的 banner 信息,
當(dāng)目標(biāo)對 banner 信息進(jìn)行隱藏或者配置了禁止讀取時(shí),這時(shí)的 banner 則獲取不到!
- 對內(nèi)網(wǎng)的應(yīng)用程序進(jìn)行攻擊,如redis,JBoss等!
- 對內(nèi)網(wǎng)的Web應(yīng)用進(jìn)行指紋識別,識別內(nèi)部的資產(chǎn)信息
- 攻擊內(nèi)網(wǎng)程序,造成緩沖區(qū)溢出。
- 利用file偽協(xié)議讀取文件
舉例:
端口探測:
http://www.tony.com/index.php?url=http://127.0.0.1:3306
讀取文件:
http://www.tony.com/index.php?url=file:///etc/passwd
內(nèi)網(wǎng)的JBoss攻擊:
http://www.tony.com/index.php?url=http://192.168.1.88:8080
http://www.tony.com/index.php?url=http://192.168.1.88:8080/jmx-console/
// 發(fā)現(xiàn)存在jmx控制臺未授權(quán)訪問漏洞
通過jboss.deployment接口部署Web木馬應(yīng)用
獲取Webshell
執(zhí)行命令
SSRF防御
- 過濾請求協(xié)議,只允許http或https的協(xié)議
- 限制訪問的IP地址
- 限制訪問的端口
- 設(shè)置統(tǒng)一的錯(cuò)誤處理頁面,防止信息泄漏!