前言

正向代理存在SSRF,并且还是直接回显的。

漏洞配置

server {
    resolver        114.114.114.114;  # 相应解析时间快了非常多
    listen          8083;

    location / {
        proxy_pass  http://$host$request_uri;
        add_header  JoychouProxyRT $request_time;
    }
}

这是一个非常简单的HTTP正向代理的配置,其实就一行关键的代码。

proxy_pass http://$host$request_uri;

我们用cURL命令看看正向代理的效果。

curl -v -H 'Host:www.baidu.com' 118.25.15.216:8083

返回的请求:

* Rebuilt URL to: 118.25.15.216:8083/
*   Trying 118.25.15.216...
* TCP_NODELAY set
* Connected to 118.25.15.216 (118.25.15.216) port 8083 (#0)
> GET / HTTP/1.1
> Host:www.baidu.com
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Server: Tengine/2.2.2
< Date: Fri, 02 Nov 2018 13:43:50 GMT
< Content-Type: text/html
< Content-Length: 2381
< Connection: keep-alive
< Accept-Ranges: bytes
< Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
< Etag: "588604c4-94d"
< Last-Modified: Mon, 23 Jan 2017 13:27:32 GMT
< Pragma: no-cache
< Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/
< JoychouProxyRT: 0.088
<
<!DOCTYPE html>
<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css><title>百度一下,你就知道

cURL提供了proxy参数,效果和上面的curl命令一样。

curl -v -x 118.25.15.216:8083 http://www.baidu.com/
curl -v --proxy 118.25.15.216:8083 http://www.baidu.com/

如果用Python测试,可以使用requests的proxies参数,大致代码如下,wilson师傅指导。

import requests

proxies = {
  "http": "http://10.10.1.10:3128",
  "https": "http://10.10.1.10:1080",
}

requests.get("http://example.org", proxies=proxies)

最后,我们可以看到整个正向代理过程是,用过正向代理都知道:

client -> proxy的服务器 -> proxy的服务器再去访问www.baidu.com

思考

我在想为什么就这么简单的一行代码,大家不用Nginx去搭正向代理,要用shadowsocks。后面在测试的时候,发现Nginx搭建的搭建并不支持HTTPS,我想这应该是原因吧。

有人可能会说把proxy_pass http://$host$request_uri;的http改成https,应该就支持了吧。其实不是,有兴趣的可以自己研究或者Google下。

还有一个问题是,开发这样配一个HTTP代理的目的是什么?大家可以猜测下。

工具

看过Nginx Config Security这篇文章,一定对Gixy工具不陌生,我们来测试下是否能够扫描,下载最新版本。

上面的配置并没有扫描出来。不过把$host改成$http_host就扫描出来了。其实在这里,$host和$http_host都可以造成SSRF漏洞。
1585587966(1).jpg

标签: none

添加新评论