php文件包含漏洞分析 | 您所在的位置:网站首页 › php文件包含漏洞函数嘛 › php文件包含漏洞分析 |
文件包含漏洞定义
什么是文件包含?
文件包含漏洞常出现在PHP语言中。 PHP为了提高代码复用性,提供了文件包含函数 include() 、 require()、include_once()和require_once()函数,被包含的文件内容会被当做代码来执行。 就像造轮子一样:把重复使用的一段代码,单独写到一个文件里,再用文件包含函数来包含这个文件。 这样就造成一个特征,就是任意后缀名的文件被包含过来就被视为php代码。利用这一特点可以对php系统进行攻击。 php文件包含会用到php伪协议 什么是伪协议?php伪协议是php支持的协议和封装协议,类似于 fopen()、 copy()、 file_exists() 和 filesize() 的文件系统函数。是php内置的协议可以直接调用。 常见的伪协议 • file:// — 访问本地文件系统 • http:// — 访问 HTTP(s) 网址 • ftp:// — 访问 FTP(s) URLs • php:// — 访问各个输入/输出流(I/O streams) • zlib:// — 压缩流 • data:// — 数据(RFC 2397) • glob:// — 查找匹配的文件路径模式 • phar:// — PHP 归档 • ssh2:// — 安全外壳协议 2 • rar:// — RAR • ogg:// — 音频流 • expect:// — 处理交互式的流 实战分析php文件包含主要出现位置: include(),require(),include_once(),require_once() 前两者是本地文件包含,后两者是远程文件包含。 利用分析 简单探测可以先读取…/…/…/…/…/…/…/…/…/…/etc/passwd之类的文件,探测是否能读取到文件 攻击利用一如上传1.png 文件其中图片马,直接访问不解析。 利用php://filter协议 如/upload//include.php?file=upload/1.png 解析其中问php代码 简单的一句话木马,post请求,请求参数为cmd #使用data协议配合base64会更好使用 ?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOyA/Pg== expect协议这个较为少见,但是一旦配置不当可以直接命令执行。 ?file=php://input 请求包body中填入参数 说明本文章仅作技术交流使用,请勿攻击他人。您应确保该行为符合当地的法律法规,并且已经取得了足够的授权。请勿对非授权目标进行测试。 参考文章https://www.php.net/manual/zh/wrappers.php http://www.xbhp.cn/news/85575.html |
CopyRight 2018-2019 实验室设备网 版权所有 |