漏洞名称:不安全的HTTP方法
漏洞链接:https://hack.zkaq.cn/api/getCatalog
漏洞简介:HTTP通常有GET、POST、DELETE、OPTIONS、PUT、TRACE六种,当然也有拓展的。我们将PUT、DELETE这种明显含有上传和删除文件权限的方法称作不安全的HTTP方法
漏洞验证:
抓包将POST方法改成OPTIONS方法,然后查看返回包中是否有PUT、DELETE等不安全的方法,如果有则不安全
由于DELETE方法比较危险,所以我自己在本地使用phpstudy搭了一个环境来演示,默认phpstudy是不开启PUT、DELETE方法的,如下图所示:
1.找到httpd.conf文件,我的路径是phpStudy\Apache\conf\httpd.conf
在修改前先复制一份,以防万一。
2.使用Notepad++打开httpd.conf文件,搜索一下DocumentRoot,然后添加下图红框中的代码
3.找到下图红框中的代码,删掉#号,开启这两个模块
4.因为在第二步我们添加的代码路径为phpStudy\WWW\Davlock,所以我们需要在WWW目录下创建一个文件夹Davlock
5.配置完成后重启服务,然后再测试一下,确认PUT、DELETE方法开启了就可以了
语法:
PUT /new.html HTTP/1.1
示例:
PUT /new.html HTTP/1.1
Host: example.com
Content-type: text/html
Content-length: 16
<p>New File</p>
应答:
如果目标资源不存在,并且PUT方法成功创建了一份,那么源头服务器必须返回201 (Created) 来通知客户端资源已创建。
HTTP/1.1 201 Created
Content-Location: /new.html
如果目标资源已经存在,并且依照请求中封装的表现形式成功进行了更新,那么,源头服务器必须返回200 (OK) 或者204 (No Content) 来表示请求的成功完成。
HTTP/1.1 204 No Content
Content-Location: /existing.html
测试:
先上传一个1.txt试试
查看服务器,确认上传成功了
再测试上传一个一句话木马
查看服务器,确实存在1.php
然后使用菜刀连接,获得webshell
语法:
DELETE /file.html HTTP/1.1
示例:
DELETE /file.html HTTP/1.1
应答:
如果 DELETE 方法成功执行,那么可能会有以下几种状态码:
状态码 202 (Accepted) 表示请求的操作可能会成功执行,但是尚未开始执行。
状态码 204 (No Content) 表示操作已执行,但是无进一步的相关信息。
状态码 200 (OK) 表示操作已执行,并且响应中提供了相关状态的描述信息。
HTTP/1.1 200 OK
Date: Wed, 21 Oct 2015 07:28:00 GMT
<h1>File deleted.</h1>
测试:
因为我们知道路径下有1.txt,直接将方法改为DELETE,返回204,说明已经删掉了1.txt文件
查看服务器,确实已经删掉了1.txt,只剩下1.php
再试试把1.php删掉
查看服务器发现1.php也被删掉了
用户名 | 金币 | 积分 | 时间 | 理由 |
---|---|---|---|---|
Track-手电筒 | 50.00 | 0 | 2021-08-24 14:02:51 | 一个受益终生的帖子~~ |
打赏我,让我更有动力~
© 2016 - 2024 掌控者 All Rights Reserved.
Track-手电筒
发表于 2021-8-20
后面关于漏洞验证的,同学再补充些,补充下put,delete这些的操作
评论列表
加载数据中...
乐伟超
发表于 2021-8-26
强啊,老哥
评论列表
加载数据中...