⽹络安全-⽂件包含漏洞原理、攻击及防御
⽬录
简介
⽂件包含,是⼀个功能。在各种开发语⾔中都提供了内置的⽂件包含函数,可以使开发⼈员在⼀个代码⽂件中直接包含(引⼊)另外⼀个代码⽂件。
类型
根据不同的配置环境,⽂件包含漏洞分为如下两种情况:
1.本地⽂件包含漏洞(LFI):仅能够对服务器本地的⽂件进⾏包含,由于服务器上的⽂件并不是攻击者所能够控制的,因此该情况下,攻击者更多的会包含⼀些固定的系统配置⽂件,从⽽读取系统敏感信息。很多时候本地⽂件包含漏洞会结合⼀些特殊的⽂件上传漏洞,从⽽形成更⼤的威⼒。
2.远程⽂件包含漏洞(RFI):能够通过url地址对远程的⽂件进⾏包含,这意味着攻击者可以传⼊任意的代码,这种情况很严重。
原理
以PHP为例,在PHP中,提供了以下⽂件包含函数:
include:不到⽂件产⽣警告,脚本继续运⾏。
include_once:相对于include,⽂件被包含后不会再次被包含。
require:不到⽂件,产⽣致命错误,脚本停⽌。
require_once:相对于require,⽂件被包含后不会再次被包含。
这些函数在代码设计中被经常使⽤到。⼤多数情况下,⽂件包含函数中包含的代码⽂件是固定的,因此也不会出现安全问题。 但是,有些时候,⽂件包含的代码⽂件被写成了⼀个变量,且这个变量可以由前端⽤户传进来,这种情况下,如果没有做⾜够的安全考虑,则可能会引发⽂件包含漏洞。攻击者会指定⼀个“意想不到”的⽂件让包含函数去执⾏,从⽽造成恶意操作。
攻击
使⽤靶机:
FileInclusion(local)
我们选择⼀个NBA player,可以看到url,filename参数可以修改。
Windows敏感⽂件
Windows敏感⽂件
⽂件路径⽂件作⽤
c:\boot.ini                                  查看系统版本
c:\Windows\l IIS配置⽂件
c:\Windows\php.ini                                  php配置信息
c:\Windows\my.ini
mysql配置⽂件,记录管理员登陆过的MYSQL⽤户名和密码
c:\Windows\system.ini                              winnt的php配置信息c:\Windows\win.ini                                    winnt的mysql配置⽂件
c:\mysql\data\mysql\user.MYD
mysql.user表中的数据库连接密码c:\Program Files\RhinoSoft\Serv-U\ServUDaemon.ini 存储了虚拟主机⽹站路径和密码c:\windows\system32\l 查看IIS的虚拟主机配置
c:\windows\repair\sam
WINDOWS系统初次安装的密码c:\Program Files\
6.0版本以前的serv-u管理员密码
c:\Program Files\
mysql存储文档C:\Documents and Settings\All Users\Application Data\Symantec\pcAnywhere\*.cif⽂件 存储了pcAnywhere的登陆密码c:\Program Files\Apache Group\Apache\f 或C:\apache\f 查看WINDOWS系统apache⽂件c:/Resin-3.0.14/f
查看jsp开发的⽹站resin⽂件配置信息.c:/Resin/f /usr/local/resin/f 查看linux系统配置的JSP虚拟主机
d:\APACHE\Apache2\f C:\mysql\data\mysql\user.MYD
存在MYSQL系统中的⽤户密码C:\Windows\System32\drivers\etc\hostswinserver
配置Telnet信息
⽂件路径
⽂件作⽤测试
我测试了⼀下,发现不可以,因为它限制了include⽬录下,不过,我们可以使⽤../
来到磁盘下的任意⽬录。
../切换⽬录
结合⽂件上传漏洞在../../unsafeupload/uploads/下的上传的⽂件,可以实现php代码的运⾏。
仅本地⽂件包含
仅本地⽂件包含时,
可以查看本地敏感⽂件,如/etc/passwd等
可以包含⽇志⽂件,通过其他⼿段写到⽇志⽂件,如WAF⽇志,ssh登录⽇志
防御
1. ⽂件包含参数写死
2. ⽂件包含参数不可由⽤户修改
3. 禁⽤⽬录跳转字符"../"
4. 使⽤⽂件验证⽩名单
由上⾄下,若⽆法做到上⼀条,就在下⼀条补⾜。
更多内容查看:
喜欢本⽂的请动动⼩⼿点个赞,收藏⼀下,有问题请下⽅评论,转载请注明出处,并附有原⽂链接,谢谢!如有侵权,请及时联系。如果您感觉有所收获,⾃愿打赏,可选择⽀付宝188********(⼩于),您的⽀持是我不断更新的动⼒。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。