文件包含漏洞:
包含:为了可以重复使用文件中的函数,通过直接调用文件进而使用函数
原理:文件包含漏洞多存在于php web中。
- PHP包含
- JSP包含
1)PHP包含
1.1)包含函数:
- include():找不到包含文件,出现警告,脚本继续执行
- include_once():只能被包含一次,其他和include()函数一致
- require():找不到文件,出现错误,停止脚本
- require_once():只能被包含一次,其他和include()函数一致
1.2)包含分类:
- 本地包含:
- 远程包含:
1.3)包含漏洞挖掘:
- 攻击者输入xxx.php,该文件在包含检测时发现没有此文件,出现警告,并暴露网站绝对路径
1.4)PHP文件包含利用
1.4.1)读取敏感文件:
例如:访问 http://www.xxser.com/index.php"?page=/etc/passwd
常见敏感目录:
- windows系统:
c:\boot.ini //查看系统版本
c:\Program Files\mysql\my\ini //Mysql配置
......
- Linux系统:
......
1.4.2)远程包含shell:远程包含一句话木马
例如一句话木马:<?fputs(fopen("shell.php","w"),"<?php eval($_POST[xxser]);?>")?>
1.4.3)本地包含配合文件上传:
1.4.4)使用PHP封装协议:
1.4.5)包含Apache日志文件:找到Apache路径,利用包含Apache日志文件获取webshell
2)JSP包含
3)文件包含漏洞预防:
- 严格判断包含中参数是否外部可控
- 路径限制
- 包含文件验证
- 尽可能不使用动态包含