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,綠盟,啟明星辰等等。

相關焦點

  • 58金融的CSRF防禦實踐
    58金融的全部web流量都由nodejs承接,由nodejs負責防禦web相關的安全攻擊。針對CSRF攻擊,我們建立了一套專門的防禦方案,在此分享給大家,共同提高web服務安全。常見認知誤區網上有很多文章介紹使用Http請求頭的referrer欄位檢測是否CSRF,以及介紹使用Post請求代替Get請求來防禦CSRF。
  • Web滲透測試(CSRF)
    <meta charset=&39;> <form name=&39; action=&39;method=&39;> <input type=&39; name=&39; value=&39;> <input type=&39; name=&39; value=&39;></form> <script>document.csrf.submit
  • 網站安全防護滲透測試解析漏洞詳情
    天氣逐漸變涼,但滲透測試的熱情溫度感覺不到涼,因為有我們的存在公開分享滲透實戰經驗過程,才會讓這個秋冬變得不再冷,近期有反映在各個環境下的目錄解析漏洞的檢測方法,那麼本節由我們Sine安全的高級滲透架構師來詳細的講解平常用到的web環境檢測點和網站漏洞防護辦法。3.14.1. IIS3.14.1.1.
  • 滲透測試api接口 網站安全漏洞檢測工具分享
    某一客戶的網站,以及APP系統數據被篡改,金額被提現,導致損失慘重,漏洞無從下手,經過朋友介紹找到我們SINE安全公司,我們隨即對客戶的網站伺服器情況進行大體了解.建議客戶做滲透測試服務.模擬攻擊者的手法對網站存在的數據篡改漏洞進行檢測與挖掘,就此滲透測試服務的過程進行記錄與分享.
  • 滲透測試 對文件上傳安全檢測與webshell分析
    前段時間我們SINE安全收到客戶的滲透測試服務委託,在這之前,客戶網站受到攻擊,數據被篡改,要求我們對網站進行全面的滲透測試,包括漏洞的檢測與測試,邏輯漏洞.垂直水平越權漏洞,文件上傳漏洞.等等服務項目,在進行安全測試之前,我們對客戶的網站大體的了解了一下,整個平臺網站,包括APP,安卓端,IOS端都採用的JSP+oracle資料庫架構開發,前端使用VUE,伺服器是linux
  • 【黑客技術】web滲透安全學習路線
    通過這幾年從事Web滲透行業的經驗,對沒有編程基礎或者轉行的零基礎小白應該如何學習Web滲透,制定以下學習路線:一. Web滲透基礎1. 學習Web滲透第一步需要了解我國網絡安全法,在網絡安全法中明確規定,非法入侵他人網站、計算機都是違反了刑法,需要承擔相應的責任。2.
  • 網站登錄接口安全滲透測試分享
    從業滲透測試服務已經有十幾年了,在對客戶網站進行漏洞檢測,安全滲透時,尤其網站用戶登錄功能上發現的漏洞很多,想總結一下在滲透測試過程中,網站登錄功能上都存在哪些網站安全隱患,下面就有請我們SINE安全的工程師老陳來給大家總結一下,讓大家都有更好地了解網站,在對自己網站進行開發的過程中,尤其用戶登錄功能上做好網站安全防護
  • 一款真正實現自動化滲透測試的安全工具
    「小智」是國內率先實現「AI+網絡安全檢測」的智能滲透測試機器人。他可以將白帽子在大量滲透過程中積累的實戰經驗轉化為機器可存儲、識別、處理的結構化經驗,並且在自動化測試過程中藉助人工智慧算法不斷進行「智力」成長和邏輯推理決策,以貼近實際人工滲透的方式,對給定目標進行從信息收集到漏洞利用的完整測試過程。
  • 用最簡單的話,一分鐘講明白xss和csrf攻擊,以及如何防禦
    現在網站經常會遭受到一些攻擊,使得用戶信息洩露或者用戶個人財產受到損傷,本文用最簡單的語言,講述一下xss和csrf攻擊,以及他們的防禦手段。>一丶xss攻擊 這是一種最早期之一的網站攻擊方式,同時它現在還被用在一些安全方面做的不好的小網站中作為攻擊方式
  • 【373期-5】滲透培訓教程
    來源:吾愛破解轉自:黑白之道(ID:i77169)黑/白盒滲透測試
  • 網站滲透測試安全檢測登錄認證分析
    聖誕節很快就要到了,對滲透測試的熱情仍然有增無減。我們SINE安全在此為用戶認證登錄安全制定一個全面的檢測方法和要點Json web token (JWT), 是為了在網絡應用環境間傳遞聲明而執行的一種基於JSON的開放標準((RFC 7519).該token被設計為緊湊且安全的,特別適用於分布式站點的單點登錄(SSO)場景。
  • 移動APP安全檢測/原始碼安全審計/滲透測試/漏洞掃描
    移動APP面臨的威脅越來越多,從而使其對安全的需求也日益增長,因此針對APP的滲透測試勢在必行。服務範圍Android、iOS平臺應用服務內容針對移動APP存在的安全風險以及漏洞信息,主要從APP的自身安全、程序源文件安全、本地數據存儲安全、通訊數據傳輸安全、身份認證安全、內部數據交互安全和惡意攻擊防範能力七個方面採用靜態和動態相結合的方式對其進行檢測和分析,發現移動APP存在的問題並給出修復建議,幫助移動應用所有者提高其開發程序的安全性
  • Csrf+Xss組合拳
    這個站是我疫情時候在線上網課的平臺,本著對信息安全做貢獻的目的下去做的這個滲透工作個字符)保存,刷新頁面成功顯示彈窗經測試更改密碼處存在csrf聯想到剛剛的存儲型xss,一個csrf+xss的組合拳漏洞
  • 「Burpsuite練兵場」CSRF(一)
    實驗二:基於請求方式進行token驗證實驗提示:應用程式 email change模塊存在CSRF漏洞,雖然添加了token,但僅防禦了特定的請求方式。同樣構造POC,然後刪除csrf欄位。token覆蓋攻擊目標用戶的token以此實現csrf攻擊。
  • 滲透測試 對網站漏洞掃描與檢測的過程與步驟
    天氣越來越涼爽,在對客戶網站代碼進行滲透測試,漏洞測試的同時我們SINE安全滲透技術要對客戶的網站原始碼進行全方位的安全檢測與審計,只有真正的了解網站,才能更好的去滲透測試,發現網站存在的漏洞,儘可能的讓客戶的網站在上線之前,安全防護做到最極致.在後期的網站,平臺快速發展過程中,避免重大的漏洞導致的經濟損失
  • 基於APP安全滲透測試的加固流程分享
    很多公司都有著自己的APP,包括安卓端以及ios端都有屬於自己的APP應用,隨著網際網路的快速發展,APP安全也影響著整個公司的業務發展,前段時間有客戶的APP被攻擊,數據被篡改,支付地址也被修改成攻擊者自己的,損失慘重,通過朋友介紹找到我們SINE安全做APP的安全防護,我們對客戶APP進行滲透測試
  • 伺服器滲透測試攻擊手法介紹
    伺服器信息收集在滲透攻擊過程中,對目標伺服器的信息收集是非常重要的一步,伺服器上面可以運行大量的系統服務和第三方應用服務,如果作業系統或者第三方教件沒有及時升級打補丁,攻擊者就有可能直接通過伺服器上運行的服務進行攻擊,因為伺服器的錯誤配置或者不安全的訪問控制,導致通過伺服器漏洞進行攻擊的案例墨見不鮮
  • 物聯網滲透測試威脅建模,捕捉應用相關安全風險
    同時,網絡攻擊也在日益增加,安全防護始終是網絡安全防護的一個痛點。近年來,網絡攻擊亦成為最火爆的網絡安全話題之一。那WEB滲透與IOT滲透的區別又有哪些呢?常規WEB滲透測試主要分為四個階段,即信息收集、漏洞分析、 漏洞挖掘和報告形成。
  • 12款白帽子用於黑客滲透測試的作業系統
    本文我們將推薦12個作業系統,包括一些Linux發行版,如Kali Linux,Parrot安全作業系統,BlackArch等。這些以安全為重點的作業系統,可以幫助白帽子黑客進行滲透測試,檢測系統或網絡中的弱點。  Kali Linux:  無需贅言,kali Linux發行版是目前最流行的安全作業系統;基於Debian的作業系統附帶了600多個預安裝的測試工具。
  • 社會工程學的多方面利用與網站滲透測試服務
    社會工程學和前端安全。古典的社會工程學攻擊案例:社會工程師利用人們的好奇心,或者貪圖便宜的心理,讓某人撿起不小心丟下的USB,在好奇心的驅使下,該人將該USB插入自己的計算機,打開帶後門的PDF文件,在不知不覺中給該人的計算機中上了木馬。