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