Tomcat弱口令爆破+war部署getshell

1.1、影响版本

Tomcat全版本

1.2、环境搭建

1.利用vulhub已有的镜像,由于这个镜像启动后登录管理页面存在重复验证的问题,这里不再利用docker-compose.yml

cd /root/vulhub/tomcat/tomcat8
docker pull docker.io/vulhub/tomcat:8.0

2、创建tag并运行docker

docker tag yourDockerid tomcat8.0

3、更改tomcat镜像的里的tomcat-users.xml

docker cp tomcat-users.xml yourDockerid:/usr/local/tomcat/conf/tomcat-users.xml

4、重启docker

docker restart yourDockerid

1.3、复现流程

1.3.1、弱口令爆破--使用burpsuite爆破

访问manager后台

http://192.168.52.130:8080/manager/html

提交用户名和密码后抓包,设置Authorization: Basic dG9tY2F0Onh4eHh4eHh4eA==这一部分为payload变量。

设置payload为Custom iterator,并按顺序设置以下3个payload。

这个顺序很有讲究,在实际测试中,tomcat6/7/8+会针对登陆次数过多的用户进行锁定,经过统计分析,当登录错误>5次后,就会锁定用户。这时候我们就要考虑如何绕过。CSDN上有个脚本利用的是占满tomcat缓存的方式绕过,当同一账号大于5次登录,就会采用脏数据去进行登录,直到缓存占满后,又会用剩下的可能存在的username进行登录。直到找到password为止。tomcat暴破图形化---绕过tomcat 6/7/8的防暴破机制

这里我们采用针对同一弱口令去爆破不同账号的方式进行猜解,将可能存在的username放入position1的位置,其次放置password在position3的位置,最后attack时爆破的顺序如下图,就不会针对同一账号锁定。这样做的好处在于我们针对同一个口令去爆破大量用户时,由于用户不同,不会被锁定,同时由于第二次使用这个账户爆破其他口令时,tomcat的缓存有很大几率被占满,就不会导致锁定。

在此模块设置对payload的处理方式

然后start attack,获得密码,即可登录。

1.3.2、弱口令爆破--使用msf自带模块爆破

msf有一个自带的爆破该后台的模块,但是显然也没有考虑到后续版本对这个策略的绕过,不过无论哪个绕过方式都不适当,因为请求的次数太多,都需要结合实际考虑是否使用。但是这个模块依旧有意义的点在于它的username和password是十分易于存在的用户名和弱口令,且数目很少,假如存在弱口令,也顶多是这个;不存在弱口令,在无可奈何的情况下,也就是只能采用我们上述的办法。下面是爆破过程。
首先使用爆破模块

use auxiliary/scanner/http/tomcat_mgr_login

然后设置参数

set rhosts 192.168.52.130
set rport 8080

然后run一下即可,由于tomcat口令正好处于第5个,未被锁定,故而网上绝大部分文章都是这样利用的,实际上没有深入思考实战价值

1.4、部署war包上传getshell

1)、将shell.jsp打包成war包
shell.jsp单独放置一个目录,命令行下进入当前目录

jar -cvf Login.war .\

或者直接将shell.jsp压缩,修改后缀为.war即可
2)、进入登录后的页面,部署上传

3)、访问http://yourip:port/Login/shell.jsp
Login目录是war包的包名

posted @ 2020-08-05 15:47  qianxinggz  阅读(4508)  评论(3编辑  收藏  举报