iT邦幫忙

2021 iThome 鐵人賽

DAY 3
0
Security

讓Web開發者森77的Hacking Trick系列 第 3

[Day3] HTTP Verb/Method Tampering - HTTP 動詞竄改

前言

相信大家看完上一篇之後,對於HTTP有一個基本的認識了,從這篇開始會介紹一些跟HTTP相關名字有HTTP的一些攻擊。


正文

在上一篇的HTTP基礎後,我們知道了RFC定義了9種Method,接下來我們來講講HTTP Verb Tampering。
GETPOST是用來訪問Web Server內容最常用的方法,現在我們知道了除了GETPOST之外的其他Method。在一般時候這通常不會造成甚麼問題,但如果使用的Web Server設定錯誤(misconfiguration),可能就可以被用於一些惡意目的,例如bypass security control、上傳Web Shell等等。


一些Method安全風險

  • PUT: 這個Method允許User在Web Server上傳檔案,如果濫用的話,攻擊者就可以通過上傳惡意檔案來取的伺服器權限,例如在使用php的網站中寫入:
    <?php echo system($_REQUEST['cmd']); ?>
    就可以造成Code Execution,當然也可以很乾脆的寫入php reverse shell等等,可以利用的方法很多。
    雖然實務上很少使用到PUT,但勿忘CVE-2017-12615/CVE-2017-12617(Apache Tomcat Remote Code Execution via JSP upload) XD。

  • CONNECT: 這個Method請求HTTP Proxy Server建立指定位置的TCP Connection的tunnel,如果被濫用的話,可以用來利用Web Server作為proxy,用於對內部機器發起攻擊,這種嚴重程度不言而喻。

  • TRACE: 這個Method會將發送到Server的任何strings返回給user,讓攻擊者可以知道網站的某些資訊,達到Enum/Leak的效果,也可以透過TRACE進行XSS、XST攻擊,steal cookies,接管帳戶等等。


Bypass Security Control

下面的Java EE Containers是從github抓下來再修改的

    <security-constraint>
        <web-resource-collection>
            <web-resource-name>example</web-resource-name>
            <url-pattern>/secret/*</url-pattern>
            <http-method>GET</http-method>
            <http-method>POST</http-method>
        </web-resource-collection>
        <auth-constraint>
            <role-name>admin</role-name>
        </auth-constraint>
    </security-constraint>

上面設定了HTTP Servlet的Container,定義只允許admin使用GETPOST method拿到/secret/下的所有資源。這邊的問題是可以通過其他Method取繞過這個限制取得相應的資源,例如HEAD或是一些無意義的字串像是FOOABCXXX等,繞過VBAAC/設定檔的安全控制,在有這種漏洞的網站中,一些無意義字串可能會被當作GET


Real-World Case

IBM
在這個案例中,攻擊者可以透過發送特製的請求,造成HTTP Verb Tampering影響IBM Cúram SPM來達成bypass一些安全控制。

CVE-2020-4779

A HTTP Verb Tampering vulnerability may impact IBM Curam Social Program Management 7.0.9 and 7.0.10. By sending a specially-crafted request, an attacker could exploit this vulnerability to bypass security access controls. IBM X-Force ID: 189156.

SAP BusinessObjects Business Intelligence
在SAP BusinessObjects Business Intelligence平台中的CMC(中央管理控制台),透過更改Method,可以造成HTTP Verb Tampering。(沒有找到實際影響的程度,不過應該可以透過這個漏洞使一般使用者越級訪問一些內容,但純屬猜測)

CVE-2018-2483

HTTP Verb Tampering is possible in SAP BusinessObjects Business Intelligence Platform, versions 4.1 and 4.2, Central Management Console (CMC) by changing request method.


Invalid HTTP Method Usage

通常使用的Method跟所需實現的資源執行有關,但某些Web Server可能沒有嚴格執行的話,就會產生安全隱患,例如GET主要用來請求網站return指定的資源,通常只用來取得資料,不會改變應用程式的狀態,但若是設計不良,讓GET可以某些程度上的改變後端資料庫等等的話,可能會導致CSRF、Info Leak等等。


下篇預告: HTTP Request Smuggling


上一篇
[Day2] HTTP 基礎
下一篇
[Day4] HTTP Request Smuggling - HTTP 請求走私
系列文
讓Web開發者森77的Hacking Trick30

尚未有邦友留言

立即登入留言