一、文件包含漏洞
1、文件包含漏洞原理?危害?修复?
原理:开发⼈员⼀般希望代码更灵活,所以将被包含的⽂件设置为变量,⽤来进⾏动态调⽤,但是由于⽂件包含函数加载的参数没有经过过滤或者严格的定义,可以被⽤户控制,然后包含了其他的恶意⽂件,就导致了执⾏了⾮预期的代码。然后导致客户端就可以调⽤⼀个恶意⽂件,造成⽂件包含漏洞。
危害:可能会造成读取⽂件、远程⽂件读取实现⽹站挂⻢、利⽤php://input伪协议可以执⾏任意脚本代码等危害。
修复:1、过滤:对传⼊的⽂件名进⾏过滤、对敏感路径的关键字进⾏过滤。
2、对php.ini配置⽂件进行参数设置:
3、对包含的文件范围做出限制:比如设置后台定义被包含⽂件的⽩名单、配置open_basedir=指定⽬录,限制访问区域、修改Apache⽇志⽂件的存放地址。
2、文件包含的函数?
3、文件包含支持的协议
1、php伪协议:fiter、input、data、zip、phar
2、file协议
3、http和https
4、文件包含的绕过?
空字符绕过、00截断(但是PHP版本必须⼩于5.3)
⻓路径:利⽤系统特性绕过waf。windowx系统中,当点号数量⼤于256个字符时,256个字符以后的内容就会被丢弃,因此可利⽤此特性进⾏绕过;Liunx系统中点号⼤于4096个。
路径双写绕过:..././..././
后缀处添加斜杠点号进⾏绕过:info.php/.
?绕过:phpinfo.php?
#绕过:直接使⽤#并不能绕过,需要输⼊编码%23才能够⽣效。phpinfo.php%23
5、日志存放路径?
apache:apache存在两个⽂件⽇志⽂件,access.log是记录登录等信息的⽇志⽂件,⽽error.log是错误⽂件。
nginx:nginx存在两个⽂件⽇志⽂件,access.log是记录登录等信息的⽇志⽂件,⽽error.log是错误⽂件。
iis: