什麼是服務端偽造(SSRF)

2021-08-05 19:22:57 字數 3045 閱讀 6290

譯者:neal1991

welcome to star my articles-translator , providing you advanced articles translation. any suggestion, please issue or contact me

license: mit

服務端偽造(ssrf)指的是攻擊者從乙個具有漏洞的web應用中傳送的乙個偽造的請求的攻擊。ssrf通常適用於針對在防火牆後一般對於外部網路的攻擊者是無法訪問的內部系統。另外,攻擊者也可能利用ssrf來訪問監聽回送位址介面(127.0.0.1)的服務。

典型的ssrf發生在web應用傳送請求的時候,攻擊者對這個傳送的請求具有全部或者部分的控制。乙個通用的例子就是攻擊者能夠控制全部或者部分web應用向第三方服務傳送請求的url。

下面的是php中容易收到ssrf的乙個例子。

在上面的例子中,因為攻擊者對於url引數具有完整的控制,因此能夠對於網上的任何**都能夠傳送任意的get請求。攻擊者也能夠向伺服器中的資源傳送請求。

比如,攻擊者可能能夠訪問本地的服務。在下面的例子中,攻擊者通過開啟mod_status(預設開啟)能夠在apache http伺服器上傳送下面的請求。

類似的,ssrf能夠被用來請求這個web伺服器可以訪問的其它內部資源,但是這些資源不是對公共開放的。這個樣的例子比如是在amazon ec2 以及 openstack 上訪問例項元資料。這個服務僅僅向伺服器開放而不是外部世界。攻擊者甚至會有更多發現通過使用這個方法在內部網路中執行埠掃瞄。

除了通過http://以及·https://url協議,攻擊者可能也利用少數人或者遺留的url協議來訪問內部網路的本地系統中的檔案。

下面的例子就是利用file:///url協議來傳送這樣的請求。

根據應用如何產生請求,攻擊者能夠利用url協議而不是檔案以及http。比如,如果curl被用來產生請求(上面的例子這就是利用fopen()來傳送請求),可能能夠利用dist url協議向任何主機的任何埠傳送請求並且傳送自定義的資料。

上述的請求會造成應用鏈結到主機的11211埠並且傳送字串」stat」。埠11211是memcached(通常不會暴露)使用的埠。對於乙個可以利用的綜合攻擊列表以及url協議,onsec實驗室維護了乙個具有關於ssrf攻擊有用的詳細文件。

為了自動檢測ssrf,我們需要依靠中介服務,因為檢測到這樣乙個漏洞需要乙個帶外和延時的向量。acunetix通過在自動掃瞄是講acumonitor 作為它的中介服務來解決這個問題。

在這個掃瞄期間,acunetix將會產生乙個包含乙個特殊acumonitor url的請求。如果acumonitor接受到乙個包含以上乙個特殊url的請求,它會傳送乙個通知到acunetix告訴它應該對於ssrf發出警告。

下面的是acunetix利用acumonitor掃瞄來檢測ssrf的結果。這個警告包含了正在執行的http請求的資訊,包括傳送這個請求的ip位址以及這個請求使用的user-agent字串。這個資訊可以幫助開發者識別問題的**並且進行修復。

直接在使用者的輸入上實時簡單的黑名單或者正規表示式來過濾ip位址或者域傳送的這個請求,這對於避免ssrf是乙個方法。

通常,黑名單都是乙個糟糕的安全控制因為總是會有開發者忽視的漏網之魚有。在這樣的情況下,攻擊者就能夠利用這樣的旁路來產生http重定向,乙個萬用字元dns服務比如xip.io或者甚至是可用的ip編碼.

相反,最通用的解決ssrf的方式是使用你的應用需要訪問dns名稱或者ip位址的白名單。如果白名單方案不適合你的使用者案例,那麼你必須依賴黑名單,適當地驗證你的使用者輸入是非常重要的。乙個例子就是不允許向私有ip位址(非路由)傳送請求(詳細參考rfc 1918),然而,在使用黑名單的情況下,正確的採取什麼樣的避免措施往往取決於具體的應用。換句話說,對於ssrf沒有乙個通用的修復方法,因為它非常依賴於應用的功能以及商業需求。

確保響應是遠端伺服器接收的響應是它應該接收的是非常重要的,這對於阻止響應資料意想不到的洩露給攻擊者是非常重要的。以上其他的,無論在任何情況下,伺服器傳送的原生響應體都不應該直接傳送給客戶端。

如果你的應用僅僅使用http或者https來傳送請求,那麼應該就僅僅允許這些url協議。關閉不使用的的url協議能夠阻止web應用使用潛在危險的url協議,比如file:///dict://ftp://以及gopher

服務比如memcached,redis,elasticsearch以及mongodb預設不需要認證的。ssrf漏洞可以提供給攻擊者乙個沒有任何認證阻攔的機會來訪問這些服務。因此,最好實在人地方都使用認證,這也是乙個防護機制。

SSRF(服務端請求偽造)

ssrf server side request forgery 伺服器端請求偽造 是一種由攻擊者構造形成由服務端發起請求的乙個安全漏洞。一般情況下,ssrf攻擊的目標是從外網無法訪問的內部系統。正是因為它是由服務端發起的,所以它能夠請求到與它相連而與外網隔離的內部系統 作為web安全萌新,以上晦澀...

SSRF 服務端請求偽造

ssrf,server side request forgery,服務端請求偽造,是一種由攻擊者構造形成由伺服器端發起請求的乙個漏洞。一般情況下,ssrf 攻擊的目標是從外網無法訪問的內部系統。漏洞形成的原因大多是因為服務端提供了從其他伺服器應用獲取資料的功能且沒有對目標位址作過濾和限制。也就是當前...

SSRF 服務端請求偽造

ssrf,server side request forgery,服務端請求偽造,是一種由攻擊者構造形成由伺服器端發起請求的乙個漏洞。一般情況下,ssrf 攻擊的目標是從外網無法訪問的內部系統。漏洞形成的原因大多是因為服務端提供了從其他伺服器應用獲取資料的功能且沒有對目標位址作過濾和限制。攻擊者可以...