如何通过struts2绕过WAF实现文件读写及非传统命令执行?
- 内容介绍
- 文章标签
- 相关推荐
本文共计4202个文字,预计阅读时间需要17分钟。
之前接触到过几次Struts2,版本是016,项目和众测都遇到过问题,每次都只是证明了存在,因为WAF的存在,没有深入去利用。这里简单记录下。+0x01+ 背景 +xray或Struts2漏洞扫描可以扫描到网站。
之前碰到过好几次Struts2,还都是016,项目、众测都遇到过,每次都只是证明了一下存在,由于waf的存在,没有深入去利用,这里简单的记录下。
0x01 背景xray或者Struts2漏扫可以扫到网站存在Struts2漏洞
但是执行命令会发现直接Connection Reset,很明显是被waf拦截了
一个一个删除关键字,发现拦截的关键字有三个:
Runtime、dispatcher
Runtime很熟悉,执行命令一般都用这个,拦截了这个关键字,执行命令还是比较困难的dispatcher比较陌生,查了资料以后发现是读取Struts2的请求对象中的关键字getRealPath字面意思,获取真实路径
简单说一下思路,在绕过waf关键字的前提下进行读、写文件,如webshell落地;或者直接执行命令,如CS上线等。
本文共计4202个文字,预计阅读时间需要17分钟。
之前接触到过几次Struts2,版本是016,项目和众测都遇到过问题,每次都只是证明了存在,因为WAF的存在,没有深入去利用。这里简单记录下。+0x01+ 背景 +xray或Struts2漏洞扫描可以扫描到网站。
之前碰到过好几次Struts2,还都是016,项目、众测都遇到过,每次都只是证明了一下存在,由于waf的存在,没有深入去利用,这里简单的记录下。
0x01 背景xray或者Struts2漏扫可以扫到网站存在Struts2漏洞
但是执行命令会发现直接Connection Reset,很明显是被waf拦截了
一个一个删除关键字,发现拦截的关键字有三个:
Runtime、dispatcher
Runtime很熟悉,执行命令一般都用这个,拦截了这个关键字,执行命令还是比较困难的dispatcher比较陌生,查了资料以后发现是读取Struts2的请求对象中的关键字getRealPath字面意思,获取真实路径
简单说一下思路,在绕过waf关键字的前提下进行读、写文件,如webshell落地;或者直接执行命令,如CS上线等。

