任意文件下载与目录穿越

任意文件下载与目录穿越

任意文件下载

如果网站对用户的查看或下载的文件不做限制,则恶意用户就能查看或下载任意敏感文件,这就是文件查看与下载漏洞,属于owasp top10的失效访问控制类型。

实例

任意文件下载

站点:pikachu

下载地址为相对地址

请求地址:http://127.0.0.1/pikachu/vul/unsafedownload/execdownload.php?filename=kb.png

我们可以直接访问对应的url来下载数据,其中可以更改filename来下载不同的文件

目录穿越

在pikachu文件夹下新建一个1.txt的文件

访问url:http://127.0.0.1/pikachu/vul/unsafedownload/execdownload.php?filename=../../../1.txt

../就是访问上一层目录

产生原理

对用户输入的数据没有过滤,没有限定只能在当前路径下下载

敏感文件:/etc/passwd /etc/shadow /etc/nginx/nginx.conf

利用方式

1
2
3
4
5
6
7
8
9
10
一般链接形式:
download.php?path=
down.php?file=
data.php?file=
download.php?filename=
或者包含参数“
&Src=
&Inputfile=
&Path=
&Data=

利用思路

1,下载常规的配置文件,例如ssh,weblogic,ftp,mysql等相关配置

2,下载各种.log文件,从中寻找一些后台地址,文件上传点之类的地方

3,下载web业务文件进行白盒审计,利用漏洞进一步攻入服务器

4,常见利用文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/root/.ssh/authorized_keys  //ssh免密登陆
/root/.ssh/id_rsa
/root/.ssh/id_rsa.keystore
/root/.ssh/known_hosts //记录每个访问计算机用户的公钥
/etc/passwd //用户名
/etc/shadow //密码
/etc/my.cnf //mysql配置文件
/etc/httpd/conf/httpd.conf //apache配置文件
/root/.bash_history //用户历史命令记录文件
/root/.mysql_history //mysql历史命令记录文件
/proc/mounts //记录系统挂载设备
/proc/config.gz //内核配置文件
/var/lib/mlocate/mlocate.db //全文件路径
/porc/self/cmdline //当前进程的cmdline参数

漏洞修复

  • 过滤“.”,使用户不能跨目录访问
  • 正则严格判断用户输入参数的格式
  • php.ini配置open_basedir限定文件访问范围