Struts2绕过WAF读写文件与命令执行技巧【案例分享】

版权申诉
0 下载量 87 浏览量 更新于2024-03-01 收藏 12.08MB DOC 举报
struts2 绕过 waf 读写文件及另类方式执行命令.doc 在之前的项目和众测中,多次遇到了Struts2漏洞,不过都是016版本。每次只是简单证明了存在漏洞,由于waf的存在,没有进行深入利用。在这里简单记录一下。 0x01 背景 通过xray或者Struts2漏扫可以扫描到网站存在Struts2漏洞。但是在执行命令时会发现直接Connection Reset,很明显是被waf拦截了。 0x02 探究waf规则 逐一删除关键字,发现拦截的关键字有三个:Runtime、dispatcher。Runtime是一个很熟悉的关键字,一般用来执行命令,拦截了这个关键字,执行命令就会比较困难。dispatcher比较陌生,查了资料以后发现是用来读取Struts2的请求对象中的关键字。getRealPath直接意思是获取真实路径。 0x03 尝试突破 在绕过waf关键字的前提下进行读、写文件,比如webshell落地,或者直接执行命令,如CS上线等。 dispatcher绕过 可以通过拼接进行绕过,部分代码如下: ```Java String path = request.getRealPath("/"); File file = new File(path+"/test.jsp"); FileWriter fileWriter = new FileWriter(file); fileWriter.write("test"); fileWriter.close(); ``` 通过这种方式,可以绕过waf的检测,成功进行了文件的写入操作。 在绕过waf的基础上,可以通过使用文件包含漏洞,引入外部的恶意脚本,进一步执行命令或者获取系统信息等操作。另外,还可以通过修改Struts2的配置文件,来实现一些特殊的攻击,比如绕过权限验证等。 总结来说,Struts2绕过waf读写文件及另类方式执行命令的过程中,关键在于理解waf的规则,灵活运用一些绕过技巧,并且在实际操作中深入挖掘漏洞的细节,这样才能最大程度地发挥漏洞的利用价值。同时,也需要十分谨慎,避免对目标系统造成不可挽回的损失。