前言
将《代码审计-企业级Web代码安全架构》这本书提及的所有漏洞案例完整详细复现,并提供源代码包,方便后续新人从这本书入手的时候自己复现案例才能学的更深刻。
漏洞标题
Metinfo 文件包含漏洞分析 书P92
准备工作
- Phpstorm(其他IDE也行,因为平常用Phpstorm写代码,所以用习惯了)
- Metinfo 4.0 源代码包
开始
- 漏洞点出现在/message/index.php,直接从get请求获取模块名,拼接到require_once函数中,如图:

- 对应功能点如下图:

- 漏洞相对较简单,这里我们将php.ini中的allow_url_include开启,重启web服务器软件这样的话 就导致了远程文件包含,我们写一个1.txt文件,如图:

- 然后构造exp:http://localhost/techpackage.net-MetInfo4.0/message/index.php?metid =http://localhost/1.txt?.php,访问后打印出运行php版本信息,如图:

- 可以看到,这里用到了一个?来截断,书p92页讲到远程文件包含时利用问号来伪截断,这个不受GPC和PHP 版本限制,只要能返回代码给包含函数,它就能执行,在HTTP协议里面访问http://localhost/1.txt和 访问http://localhost/1.txt?.php返回的结果是一样的,因为这个时候WebServer把问号之后的内容当 成了请求参数,而txt不在WebServer里面解析,参数对访问1.txt返回的内容不影响,所以就实现了伪截断, 这是书上的原话。