Struts2-DevMode漏洞渗透实战


背景

  • 看博客看了这么长时间的兄弟估计有点疑惑这人。老发安卓到底是会不会渗透测试。我是在学习安卓逆向所以找点案例练练手。所以我发的安卓逆向的比较多。后续准备学习内网渗透测试。我是想自己可以掌握 包含 渗透测试 ,代码审计,安卓逆向,内网渗透,免杀这些所有的能力。为以后为了我们的工具和内部群和大家一起交流。所以我在不断努力中。
  • 这篇文章带大家来看看渗透实战测试。这个遇到的实战比较少。之前有朋友在项目中也遇到没怎么搞。因为学习比较忙。前段时间闲来无事帮忙搞了一个渗透测试项目。又碰到这个漏洞了。这个漏洞碰到的比较少所以很少人可以搞定。吐司貌似也有一篇文章说的是这个漏洞如何利用。开始正题吧

发现目标

  • 使用ABC_123 大佬的struts2 工具扫描出Struts2-DevMode见下图。
  • 发现目标

  • 因为是工具扫描出来的漏洞不确定他是否存在漏洞所以我们。要手工对这个网站进行测试。确定是否存在漏洞。另外确定网站是否存在waf等所以我们构造payload进行手工测试见下图:我们请求构造一个不存在的url然后报错了。说明开启了debug模式
  • 开启了debug模式

确定是否存在漏洞

  • 我们使用payload打一下,回显了freemarker。所以我们确定这个100%是存在漏洞了
  • 存在漏洞

确定是否存在waf

  • 祭出宽字节 struts-061的payload 打一下,确定不存在waf。但是没有打成功。尝试了许多exp。都返回null. 他们的exp都是在body里面返回结果。那么是不是body里面返回的不行呢。我们在header里面返回结果行不行(这个思路比较重要如果没有这个这个网站拿不下)
  • 不存在waf

改变exp思路成功执行命令

  • 那我们找一个header返回的exp打一下。由于之前写我们的webframeworktools 工具的时候我们对struts2 工具的exp进行深入研究。所以直接找到可以在header里面执行payload的工具转换成执行命令的成功执行命令。由于这个比较隐秘exp我就打码处理了。
  • 成功执行命令

反弹shell

  • 看到可以只命令估计大部分的思路是反弹shell。然后就行了。但是我测试大部分反弹shell的东东反弹shell都不行。我用curl 测试可以出网。现有阶段我们不能反弹。只能看看能不能拿下webshell。有tomcat说可以解析jsp。那我们能不能利用wget下载然后getshell通过找网站特征图片.css,js,html。等后续最终确定了web路径。然后wget下载拿到shell了。后来想了一下我们能不能直接上传webshell呢。
  • 拿到webshell

构造exp上传webshell

  • 根据工具的exp构造包上传webshell。此exp已经集成到工具里面了详情看更新https://github.com/peiqiF4ck/WebFrameworkTools-5.1-main
  • 通过上传拿到webshell

总结

  • 之所以能成功getshell就是我们打破常规思路。在header头部显示结果。成功了。后续内网渗透什么的。等我研究了后续有我自己实战渗透内网的东东或者是靶场什么的只要我觉得这个不错我会写文章。共享的。不管是渗透话是什么我们一定不能按照常规思路进行测试。因为常规测试的路子已经被别人知道了堵死了。至于如何练习自己的渗透思维。多练习。加自己的总结。

文章作者: peiqiF4ck
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 peiqiF4ck !
  目录