[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


<<:  D3JsDay03可缩放向量图型 不用怕图片不行—SVG简介

>>:  Day 3 - 部署 Home Lab 网路 - 上

稽核表撰写实务

上一篇内部稽核讲到 5. 监督作业:进行下列监督作业,以确定本制度之有效性、及时性及确实性: (1)...

03 | 认识 WordPress「区块编辑器」的发展和简介

关於 Block Editor(区块编辑器)的各类延伸有很多,我们这篇文章尽量保持简单,但您可以从...

TailwindCSS 从零开始 - 设定自己想要的 TailwindCSS 样式 Variant

前面有提到 TailwindCSS 在所有的 DOM 元素前面几乎都可以使用伪类变体来控制,但几乎...

《DAY 29》天气 App 实作(二)

昨天已经把 struct 写好了,今天来呈现资料在手机画面上,在此之前可以先上网搜寻 API 说明文...

LeetCode 896. Monotonic Array

题目 An array is monotonic if it is either monotone ...