CSRF滲透測試 防禦與安全檢測手法剖析

2021-01-08 網站安全伺服器安全

上一節講到了滲透測試中xss跨站攻擊檢測方法和防護,這一節也是關於跨站攻擊的另一個手法CSRF,很多客戶找到我們Sinesafe想要了解更多的跨站攻擊檢測方法以及防禦此類攻擊的辦法,想要讓網站的安全性更加堅固,對此提醒大家滲透測試網站必須要拿到授權才能測試哦!

3.3.1. 簡介

CSRF(Cross-site request forgery)跨站請求偽造,也被稱為「One Click Attack」或者Session Riding,通常縮寫為CSRF,是一種對網站的惡意利用。儘管聽起來像跨站腳本(XSS),但它與XSS非常不同,XSS利用站點內的信任用戶,而CSRF則通過偽裝來自受信任用戶的請求來利用受信任的網站。

3.3.2. 分類

3.3.2.1. 資源包含

資源包含是在大多數介紹CSRF概念的演示或基礎課程中可能看到的類型。這種類型歸結為控制HTML標籤(例如<image>、<audio>、<video>、<object>、<>等)所包含的資源的攻擊者。如果攻擊者能夠影響URL被加載的話,包含遠程資源的任何標籤都可以完成攻擊。

由於缺少對Cookie的源點檢查,如上所述,此攻擊不需要XSS,可以由任何攻擊者控制的站點或站點本身執行。此類型僅限於GET請求,因為這些是瀏覽器對資源URL唯一的請求類型。這種類型的主要限制是它需要錯誤地使用安全的HTTP請求方式。

3.3.2.2. 基於表單

通常在正確使用安全的請求方式時看到。攻擊者創建一個想要受害者提交的表單; 其包含一個Java片段,強制受害者的瀏覽器提交。

該表單可以完全由隱藏的元素組成,以致受害者很難發現它。

如果處理cookies不當,攻擊者可以在任何站點上發動攻擊,只要受害者使用有效的cookie登錄,攻擊就會成功。如果請求是有目的性的,成功的攻擊將使受害者回到他們平時正常的頁面。該方法對於攻擊者可以將受害者指向特定頁面的網絡釣魚攻擊特別有效。

3.3.2.3.

這可能是最少看到的方式。

由於許多現代Web應用程式依賴XHR,許多應用花費大量的時間來構建和實現這一特定的對策。

基於XHR的CSRF通常由於SOP而以XSS有效載荷的形式出現。沒有跨域資源共享策略(CORS),XHR僅限於攻擊者託管自己的有效載荷的原始請求。

這種類型的CSRF的攻擊有效載荷基本上是一個標準的XHR,攻擊者已經找到了一些注入受害者瀏覽器DOM的方式。

3.3.3. 防禦

通過CSRF-token或者驗證碼來檢測用戶提交驗證Referer/Content-Type對於用戶修改刪除等操作最好都使用POST操作避免全站通用的cookie,嚴格設置cookie的域3.4. SSRF漏洞

3.4.1. 簡介

服務端請求偽造(Server Side Request Forgery, SSRF)指的是攻擊者在未能取得伺服器所有權限時,利用伺服器漏洞以伺服器的身份發送一條構造好的請求給伺服器所在內網。SSRF攻擊通常針對外部網絡無法直接訪問的內部系統。

3.4.2. 漏洞危害

SSRF可以對外網、伺服器所在內網、本地進行埠掃描,攻擊運行在內網或本地的應用,或者利用File協議讀取本地文件。

內網服務防禦相對外網服務來說一般會較弱,甚至部分內網服務為了運維方便並沒有對內網的訪問設置權限驗證,所以存在SSRF時,通常會造成較大的危害。

3.4.3. 利用方式

SSRF利用存在多種形式以及不同的場景,針對不同場景可以使用不同的繞過方式。

以curl為例, 可以使用dict protocol操作Redis、file協議讀文件、gopher協議反彈Shell等功能,常見的Payload如下:

curl -vvv 'dict://127.0.0.1:6379/info'

curl -vvv 'file:///etc/passwd'

# * 注意: 連結使用單引號,避免$變量問題

3.4.4. 相關危險函數

SSRF涉及到的危險函數主要是網絡訪問,支持偽協議的網絡讀取。以PHP為例,涉及到的函數有 file_get_contents() / fsockopen() / curl_exec() 等。

3.4.5. 過濾繞過

3.4.5.1. 更改IP位址寫法

一些開發者會通過對傳過來的URL參數進行正則匹配的方式來過濾掉內網IP,如採用如下正則表達式:

^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}$對於這種過濾我們採用改編IP的寫法的方式進行繞過,例如192.168.0.1這個IP位址可以被改寫成:

8進位格式:0300.0250.0.116進位格式:0xC0.0xA8.0.110進位整數格式:323223552116進位整數格式:0xC0A80001還有一種特殊的省略模式,例如10.0.0.1這個IP可以寫成10.1。 訪問改寫後的IP位址時,Apache會報400 Bad Request,但Nginx、MySQL等其他服務仍能正常工作。 另外,0.0.0.0這個IP可以直接訪問到本地,也通常被正則過濾遺漏。

3.4.5.2. 使用解析到內網的域名

XSS全稱為Cross Site ing,為了和CSS分開簡寫為XSS,中文名為跨站腳本。該漏洞發生在用戶端,是指在渲染過程中發生了不在預期過程中的Java代碼執行。XSS通常被用於獲取Cookie、以受攻擊者的身份進行操作等行為。

3.4.5.3. 利用解析URL所出現的問題

在某些情況下,後端程序可能會對訪問的URL進行解析,對解析出來的host地址進行過濾。這時候可能會出現對URL參數解析不當,導致可以繞過過濾。

比如 //@192.168.0.1/ 當後端程序通過不正確的正則表達式(比如將http之後到com為止的字符內容,也就是,認為是訪問請求的host地址時)對上述URL的內容進行解析的時候,很有可能會認為訪問URL的host,而實際上這個URL所請求的內容都是192.168.0.1上的內容。

3.4.5.4. 利用跳轉

如果後端伺服器在接收到參數後,正確的解析了URL的host,並且進行了過濾,我們這個時候可以使用跳轉的方式來進行繞過。

可以使用如 http://域名.org/redirect-to?url=http://192.168.0.1 等服務跳轉,但是由於URL中包含了192.168.0.1這種內網IP位址,可能會被正則表達式過濾掉,可以通過短地址的方式來繞過。

常用的跳轉有302跳轉和307跳轉,區別在於307跳轉會轉發POST請求中的數據等,但是302跳轉不會。

3.4.5.5. 通過各種非HTTP協議

如果伺服器端程序對訪問URL所採用的協議進行驗證的話,可以通過非HTTP協議來進行利用。

比如通過gopher,可以在一個url參數中構造POST或者GET請求,從而達到攻擊內網應用的目的。例如可以使用gopher協議對與內網的Redis服務進行攻擊。

除了gopher協議,File協議也是SSRF中常用的協議,該協議主要用於訪問本地計算機中的文件,我們可以通過類似 file:///path/to/file 這種格式來訪問計算機本地文件。使用file協議可以避免服務端程序對於所訪問的IP進行的過濾。例如我們可以通過 file:///d:/1.txt 來訪問D盤中1.txt的內容。

3.4.5.6. DNS Rebinding

一個常用的防護思路是:對於用戶請求的URL參數,首先伺服器端會對其進行DNS解析,然後對於DNS伺服器返回的IP位址進行判斷,如果在黑名單中,就禁止該次請求。

但是在整個過程中,第一次去請求DNS服務進行域名解析到第二次服務端去請求URL之間存在一個時間差,利用這個時間差,可以進行DNS重綁定攻擊。

要完成DNS重綁定攻擊,我們需要一個域名,並且將這個域名的解析指定到我們自己的DNS Server,在我們的可控的DNS Server上編寫解析服務,設置TTL時間為0。這樣就可以進行攻擊了,完整的攻擊流程為:

伺服器端獲得URL參數,進行第一次DNS解析,獲得了一個非內網的IP對於獲得的IP進行判斷,發現為非黑名單IP,則通過驗證伺服器端對於URL進行訪問,由於DNS伺服器設置的TTL為0,所以再次進行DNS解析,這一次DNS伺服器返回的是內網地址。由於已經繞過驗證,所以伺服器端返回訪問內網資源的結果。3.4.5.7. 利用IPv6

有些服務沒有考慮IPv6的情況,但是內網又支持IPv6,則可以使用IPv6的本地IP如 [::] 0000::1或IPv6的內網域名來繞過過濾。

3.4.5.8. 利用IDN

一些網絡訪問工具如Curl等是支持國際化域名(Internationalized Domain Name,IDN)的,國際化域名又稱特殊字符域名,是指部分或完全使用特殊的文字或字母組成的網際網路域名。

在這些字符中,部分字符會在訪問時做一個等價轉換,例如 . 和 example.com 等同。利用這種方式,可以用 ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ 等字符繞過內網限制。

3.4.6. 可能的利用點

sftp

tftp(UDP協議擴展)dictgopherldapimap/imaps/pop3/pop3s/smtp/smtps(爆破郵件用戶名密碼)rtsp – smb/smbs(連接SMB)telnethttp、httpsmongodbShellShock命令執行JBOSS遠程Invoker war命令執行Java調試接口命令執行axis2-admin部署Server命令執行Jenkins s接口命令執行Confluence SSRFStruts2 命令執行counchdb WEB API遠程命令執行docker API遠程命令執行php_fpm/fastcgi 命令執行tomcat命令執行Elasticsearch引擎Groovy腳本命令執行WebDav PUT上傳任意文件WebSphere Admin可部署war間接命令執行Apache Hadoop遠程命令執行zentoPMS遠程命令執行HFS遠程命令執行glassfish任意文件讀取和war文件部署間接命令執行3.4.7. 防禦方式

過濾返回的信息統一錯誤信息限制請求的埠禁止不常用的協議對DNS Rebinding,考慮使用DNS緩存或者Host白名單,如果想要更完善的網站安全防護,以及提前滲透測試可以找專業的網站安全公司,國內做的比較好的如Sinesafe,綠盟,啟明星辰等等。

相關焦點

  • SpringSecurity框架下實現CSRF跨站攻擊防禦
    SpringSecurity框架下實現CSRF跨站攻擊防禦本文是Spring Security系列中的一篇,如果你想學習JWT、OAuth2及網際網路應用登錄認證、接口鑑權設計、實現方法,希望能關注我!本號已經寫了十幾篇Spring Security文章。還會繼續寫!
  • 網絡安全測試必備工具
    網絡安全技術包括了廣泛的內容,從網絡體系架構的設計到安全控制的管理,都涉及多方面的技術和手段。部署網絡安全設備,進行網絡邏輯隔離,或者進行身份認證,遠程登錄,安全配置等操作,都是被動的防禦,所謂授之於魚不如授之以漁,了解常見的網絡安全測試工具,從被動變為主動,主動的查漏補缺,防患於未然。
  • 網站安全滲透測試常見的漏洞有哪些
    我們SINE安全在進行Web滲透測試中網站漏洞利用率最高的前五個漏洞。常見漏洞包括注入漏洞、文件上傳漏洞、文件包含漏洞、命令執行漏洞、代碼執行漏洞、跨站點腳本(XSS)漏洞、SSRF漏洞、XML外部實體(XXE)漏洞、反序列化漏洞、解析漏洞等。,因為這些安全漏洞可能被黑客利用,從而影響業務。以下每一條路線都是一種安全風險。
  • 網絡安全的基本原則
    這意味著未經授權的用戶對信息的任何更改都是不可能的(或至少無法檢測到),並且可以跟蹤授權的用戶的更改。 可用性:此原則可確保在授權用戶需要時隨時可以完全訪問該信息。這意味著用於存儲,處理和保護所有數據的所有系統必須始終穩定運行。 因此,IT安全專家提出了最佳實踐,以幫助確保其信息安全。
  • 什麼是滲透測試?為什麼要給你您的行動應用程式執行滲透測試
    在為Android或iOS平臺構建行動應用程式時,在開發應用程式時測試漏洞至關重要 - 而不僅僅是在應用程式完全開發時。滲透測試可以作為應用程式開發過程的一部分,因為漏洞可以在早期階段輕鬆識別,從而使行動應用程式開發人員能夠在應用程式完全開發之前做出一些關鍵更改。這節省了開發成本,確保最終產品的使用安全可靠。什麼是滲透測試?
  • 網站APP滲透測試越權漏洞介紹
    網絡上,大家經常可以看到資料庫被脫褲、用戶信息洩露等由於安全漏洞引發的問題,給用戶和企業都帶來了很大的損失。由於公司業務發展迅速,功能不斷增加,用戶數量不斷增加,安全問題日益受到人們的關注。業務部門和安全部門在實踐安全測試時開展合作,早期測試人員和安全同學通過手工執行安全測試用例來發現問題,隨後慢慢地也開始使用一些安全工具,通過自動化的方式來提高發現問題的效率。同時,我們還關注了與業務密切相關的一個安全問題——界面越權問題,並試圖通過自動掃描來發現此類問題,從而提高效率。
  • 如何建立有效的網絡安全防禦體系
    踏實實驗室推出萬字長篇文章,踏實君結合十年團隊經驗和二十年從業經驗深度整理和剖析了網絡安全防禦體系如何有效建立,推薦閱讀預計20分鐘。所以不管是自建安全體系還是採用安全服務商承建,網絡安全防禦體系需要思考的邊界已經擴大到供應鏈安全了(包含這些內容也不僅僅這些內容,軟體開發的原始碼檢測、 提供鏈路服務、託管服務、DNS服務、CDN服務、安全運維服務、IT運維服務、以及合規要求的管理、技術、運維、測評的各項要求)。
  • 詳解雲計算之雲滲透測試
    ,但基本概念仍然適用,這包括安全程序的關鍵組件,例如滲透測試。 在風險管理中,重要部分是了解在何處以及如何對企業雲進行滲透測試。定期對所有關鍵任務雲系統進行滲透測試,有助於確定信息安全計劃中需要改進的地方。根據安全團隊的可用資源,他們可以在系統上線前、運行系統時甚至在設計過程中進行滲透測試。 作為參考,雲安全聯盟(CSA)Top Threats工作組發布《雲滲透測試手冊》,概述如何對公共雲環境中託管的系統和服務進行滲透測試。
  • 內網滲透測試之域滲透詳解!收藏!
    在滲透測試過程中,我們經常會遇到以下場景:某處於域中的伺服器通過路由做埠映射,對外提供web服務,我們通過web腳本漏洞獲得了該主機的system權限,如果甲方有進一步的內網滲透測試需求,以證明企業所面臨的巨大風險,這個時候就需要做內網的域滲透。
  • 對抗中的主動防禦——攻防演練及小規模網絡對抗的戰術
    特別要重點提出的是,針對網絡對抗,還應在以下方面進行著重關注:滲透測試:對於業務系統、APP(不僅是iOS和安卓客戶端,也要包括與服務端的接口)、微信公眾號、小程序等的技術滲透測試,這裡的滲透也應該包含業務邏輯滲透和查找高交互時暴露出的漏洞,而不僅僅是通用性技術滲透;白盒代碼審計:如果有可能,對於重要的業務系統最好進行白盒代碼審計,因為這可以幫助審查到滲透測試難以發現的漏洞
  • 單位區域網ARP攻擊檢測及防禦方法
    單位區域網如何對ARP斷網攻擊進行檢測及預防呢?當區域網電腦中存在ARP攻擊類軟體或病毒時,會嚴重影響整個網絡的性能,同時針對網卡混亂模式的存在,做為網絡管理者而言,也是很有必要採取一定的措施進行制止。下面就與大家分享一下有關ARP攻擊檢測及防禦的具體方法。
  • 聚焦流量分析 騰訊雲打造網絡攻防縱深防禦體系
    通過挖掘流量的安全能力,將各個安全系統有效串聯,構建多層防線的縱深防禦體系,騰訊雲搭建了面向未來的安全防禦「堡壘」,形成「團戰」的力量。安全攻防進入深水區,縱深防禦是基礎隨著5G時代的到來,網絡環境正在經歷巨變,企業也在面向數位化雲化轉型。與之相對,黑客攻擊手法也在不斷演進:模擬真人、多源低頻、APT等各類攻擊手段層出不窮,企業安全建設面臨新的挑戰。
  • 安全漏洞XSS、CSRF、SQL注入以及DDOS攻擊
    安全漏洞XSS、CSRF、SQL注入以及DDOS攻擊 隨著網際網路的普及,網絡安全變得越來越重要,程式設計師需要掌握最基本的web安全防範,下面列舉一些常見的安全漏洞和對應的防禦措施。
  • CSRFTester:一款CSRF漏洞的測試工具
    CSRFTester是一款CSRF漏洞的測試工具,講工具之前,先大概介紹一下CSRF漏洞,CSRF英文全稱是Cross Site Request Forgery,常被叫做跨站點偽造請求,是偽造客戶端請求的一種攻擊形式,CSRF主要指通過偽裝成來自受信任用戶的請求來達到攻擊目標網站的目的,CSRF在2000
  • 助焊劑成分剖析及配方檢測
    助焊劑是指在焊接過程中需要起到協助作用的助劑產品,中科溯源與院校合作,擁有龐大的資料庫和10年行業經驗的剖析老師,可以很好的為你解析原料化學名稱。{助焊劑簡述}助焊劑主要分為有機、無機和樹脂三大類別,助焊劑是一種免清洗化學物質,具有中等固體含量,較少的松香和無滷素活性,可促進焊接,在焊接過程中,它是必不可少的協助材料,焊接後的殘留物很小,具有輕微的光澤,無需清洗即可進行測試。{助焊劑參數}1、有利於焊錫的浸潤和焊點合金的生成。2、能覆蓋在焊料表面並防氧化。
  • 深入剖析新能源汽車絕緣檢測
    對於新能源汽車絕緣檢測的工作原理我們是否有了全面的了解。今天在這裡與大家探討一下新能源汽車絕緣檢測的方法、設計難點及其優缺點,重點剖析基於電橋法的絕緣檢測,希望對大家能有所幫助。在我的上篇文章《高壓需謹慎之深入剖析新能源汽車高壓系統需求及設計》裡,已經提到絕緣檢測是整車高壓安全的需求而來。絕緣檢測功能是整車非常重要的一項功能,更是新能源汽車的標誌性功能。
  • 安全專業人士最愛的 19 個 GitHub 開源項目
    GitHub上有800多個面向安全的項目,為IT管理員和信息安全專業人士提供了豐富的工具和框架,它們可以用於惡意軟體分析、滲透測試、計算機及網絡取證分析、事件響應、網絡監控及其他眾多任務。下面介紹了一些最出色的開源安全項目,負責保護系統和網絡的人都應該仔細看一看。
  • 阿里雲&FreeBuf:2019年Web應用安全年度報告(附下載) | 網際網路數據...
    2019年 Web應用安全威脅不斷升級,從用戶信息洩露到羊毛黨的狂歡,無時無刻不在考驗著每一個行業每一個Web應用的安全水位。本報告從整體攻擊態勢、攻擊手法、攻擊目標、攻擊變形、爬蟲管理等維度,以場景剖析、技術分析、案例說法的方式,對2019年Web應用安全行業整體情況做了梳理,希望給安全從業者和企業決策者帶來一定的參考。
  • 反滲透膜嘉興生產廠家設備安全要求
    反滲透膜嘉興生產廠家設備安全要求 ,「vpkgr」   反滲透膜嘉興生產廠家設備安全要求  複合防滲透膜的操作年限問題問題,主若是由塑料薄膜是不是失防滲隔水浸染而定,據蘇聯標準規定,水工用的厚度為0.2m的不變劑的聚乙烯膜,在淨水條件下的工作年限為30