安全面试常见问题任意文件下载

《网安面试指南》http://mp.weixin.qq.com/s?__biz=MzkwNjY1Mzc0Nw==&mid=2247484339&idx=1&sn=356300f169de74e7a778b04bfbbbd0ab&chksm=c0e47aeff793f3f9a5f7abcfa57695e8944e52bca2de2c7a3eb1aecb3c1e6b9cb6abe509d51f&scene=21#wechat_redirect

1.1 任意文件下载漏洞

l 阅读本章节需要掌握的技术

HTTP请求协议基础

常用工具:

BurpSuite(强大的抓包改包工具)

1.1.1 漏洞原理

很多网站由于业务需求,往往需要提供文件(附件)下载的功能块,但是如果对下载的文件没有做限制,直接通过绝对路径对其文件进行下载,那么,恶意用户就可以利用这种方式下载服务器的敏感文件,对服务器进行进一步的威胁和攻击。

1.1.2 漏洞危害

通过任意文件下载,可以下载服务器的任意文件,web业务的代码,服务器和系统的具体配置信息,也可以下载数据库的配置信息,以及对内网的信息探测等。

1.1.3 检测条件

网站正常运行;网站存在可以下载文件的功能。

1.1.4 检测方法

1、 查找网站存在可下载资源,可读取文件的接口。

2、 使用burpsuite进行数据包的抓取。

3、 寻找数据包中控制文件下载的参数,如

http://www.example.com/filedown.php?filename=testpic.png

4、 修改参数,尝试进行任意文件读取/下载

http://www.example.com/filedown.php?filename=../../../../../../../../../../etc/passwd

要注意的是,部分网站可能存在编码问题,所以构造的时候需要将 /转为url编码 %2f

http://www.example.com/filedown.php?filename=..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2Fetc%2Fpasswd

任意文件下载常用路径

LINUX:

/root/.ssh/authorized_keys

/root/.ssh/id_rsa

/root/.ssh/id_ras.keystore

/root/.ssh/known_hosts

/etc/passwd

/etc/shadow

/etc/issue

/etc/fstab

/etc/host.conf

/etc/motd

/etc/sysctl.conf

/etc/inputrc 输入设备配置文件

/etc/default/useradd 添加用户的默认信息的文件

/etc/login.defs 是用户密码信息的默认属性

/etc/skel 用户信息的骨架

/sbin/nologin 不能登陆的用户

/var/log/message 系统的日志文件

/etc/httpd/conf/httpd.conf 配置http服务的配置文件

/etc/ld.so.conf

/etc/my.cnf

/etc/httpd/conf/httpd.conf

/root/.bash_history

/root/.mysql_history

/proc/mounts

/porc/config.gz

/var/lib/mlocate/mlocate.db

/porc/self/cmdline

WINDOWS:

C:\windows\system32\drivers\etc\hosts host文件

C:*\apache-tomcat-7.0.1/conf/context.xml、web.xml、server.xml、tomcat-users.xml

C:\boot.ini //查看系统版本

C:\Windows\System32\inetsrv\MetaBase.xml //IIS配置文件

C:\Windows\repair\sam //系统初次安装的密码

C:\Program Files\mysql\my.ini //Mysql配置

C:\Program Files\mysql\data\mysql\user.MYD //Mysqlroot

C:\Windows\php.ini //php配置信息

C:\Windows\my.ini //Mysql配置信息

C:\Windows\win.ini //Windows系统的一个基本系统配置文件

1.1.6 修复建议

1、 净化数据:对用户传过来的文件名参数进行硬编码或统一编码,对文件类型进行白名单控制,对包含恶意字符或者空字符的参数进行拒绝。

2、 web应用程序可以使用chroot环境包含被访问的web目录,或者使用绝对路径+参数来访问文件目录,时使其即使越权也在访问目录之内。www目录就是一个chroot应用. 由chroot创造出的那个根目录,叫做"chroot监狱"(所谓"监狱"就是指通过chroot机制来更改某个进程所能看到的根目录,即将某进程限制在指定目录中,保证该进程只能对该目录及其子目录的文件有所动作,从而保证整个服务器的安全,详细具体chroot的用法,可参考:http://blog.csdn.net/frozen_fish/article/details/2244870

3、 任意文件下载漏洞也有可能是web所采用的中间件的版本低而导致问题的产生,例如ibm的websphere的任意文件下载漏洞,需更新其中间件的版本可修复。

4、 要下载的文件地址保存至数据库中。

5、 文件路径保存至数据库,让用户提交文件对应ID下载文件。

6、 用户下载文件之前需要进行权限判断。

7、 文件放在web无法直接访问的目录下。

8、 不允许提供目录遍历服务。

9、 公开文件可放置在web应用程序下载目录中通过链接进行下载。

参考代码:

java 复制代码
public String download() throws Exception {

//获取文件id

String id = Struts2Utils.getRequest().getParameter("id");

try {

//通过id进行文件查询

DownloadFile downFile = fileService.findEntityById(Long.parseLong(id));

// 获取该附件的类型

byte[] bt = null;

bt = downFile.getContent();

HttpServletResponse res =Struts2Utils.getResponse();

res.reset();

res.setContentType("application/x-msdownload");

res.setHeader("Content-Disposition", "attachment;filename="+ URLEncoder.encode(uacFile.getName(), "UTF-8"));

OutputStream out = res.getOutputStream();

out.write(bt);

out.flush();

out.close();

} catch (Exception e1) {

e1.printStackTrace();

}

return null;

}
相关推荐
HCIE考证研究所29 分钟前
考完数通,能转云计算/安全方向吗?转型路径与拓展路线分析
网络·安全·华为·云计算·网络工程师·华为认证·数通
黎相思1 小时前
传输层协议UDP
网络·网络协议·udp
不过普通话一乙不改名1 小时前
扩展:操作系统之高性能网络计算
网络·笔记
Xudde.3 小时前
解决了困扰我的upload靶场无法解析phtml等后缀的问题
学习·安全·php
菜包eo4 小时前
3种添加视频水印的加密方式,守护视频安全!
安全·音视频
FileLink跨网文件交换5 小时前
网络安全|网络准入控制系统有哪些?网络准入控制系统十大解决方案详解
网络·安全
quant_19865 小时前
如何通过 WebSocket 接口订阅实时外汇行情数据(PHP 示例)
开发语言·网络·后端·websocket·网络协议·金融·php
cui_win5 小时前
【网络】Linux 内核优化实战 - net.netfilter.nf_conntrack_max
linux·网络·.net
无衣同学6 小时前
安全参綉25暑假第一次作业
安全
欧阳天羲6 小时前
基于 AI 的大前端安全态势感知与应急响应体系建设
前端·人工智能·安全