流控>>>HTTP.CONNECT隧道>>>proxytunnel

 

原理
    通过CONNECT在客户端与代理服务端建立隧道,然后通过隧道发送数据给代理,数据中包含了请求URL以及真实数据,代理根据请求RUL发送真实数据获取内容
特点
    基于http/https协议建立隧道
    基于HTTP CONNECT方法封装信息
环境
    内网仅使用HTTP代理服务器访问外部网络    
实验
    环境A
        linux-A  -->  linux-B  -->  firewall-C  -->  kali-D
        A    1.1.1.101
        B    1.1.1.102
        C    1.1.1.100 192.168.1.100
        D    192.168.1.101
        
        A    客户端,通过proxytunnel以及浏览器代理访问Dweb资源
        B    squid代理服务器
        C    只允许访问外部80端口
        D    web服务器
    目的
        对比proxytunnel代理和浏览器代理区别
    配置
        D
            service apache2 start
        C
            rule配置
        B
            vi /etc/squid3/squid.conf
            /^http_port
            /^http_access
            /^acl
        A
            proxytunnle -a 80 -p 1.1.1.102:3128 -d 192.168.1.101:80
        
    分析
        使用浏览器代理
            通过wireshark抓包,A->B的发送的包中指定了HTTP REQUEST URL,B在根据指定的URL转发数据,A通过ger方法请求数据
            D主机的数据包中x-forwarded-for字段包含了真实的请求IP,需要注意
        通过proxytunnel代理
            0x0 A->B发送HTTP CONNECT请求,请求中含有目标主机地址
            0x1 B主机与CONNCET请求中的目标主机地址建立TCP三次握手,握手完成后响应CONNECT->A
            0X2    后续A->B通过CONNECT载荷传递信息,B通过GET方法向D主机请求数据,在通过CONNCET载荷信息响应给A


    环境B
        linux-A  -->  linux-B  -->  firewall-C  -->  linux-D  -->  linux-E
        A    1.1.1.101
        B    1.1.1.102
        C    1.1.1.100 192.168.1.100
        D    192.168.1.101
        E     192.168.1.102
        
        A    客户端,通过proxytunnel以及浏览器代理访问Dweb资源
        B    squid代理服务器
        C    只允许访问外部80端口
        D    squid代理服务器
        E    web服务器    
        
    配置
        E
            service apache2 start
        D
            vi /etc/squid3/squid.conf
            /^http_port
            /^http_access
            /^acl    
        C
            rule配置
        B
            vi /etc/squid3/squid.conf
            /^http_port
            /^http_access
            /^acl
        A
            proxytunnle -a 80 -p 1.1.1.102:3128 -r 192.168.1.101:80 -d 192.168.1.102:80
        
        A:A->B CONNECT请求,request url == D
        B:接收A数据,B三次握手D,B->A CONNECT响应
        A:A->B CONNECT载荷,载荷内容:CONNECT请求,request url==E
        B:接收A数据,程序解封装  B->D CONNECT请求,request url==E
        D:接收B数据,D三次握手E,D->B CONNECT响应
        后续到达D的数据直接发送到目的
        
总结
    通过http connect方法,与代理服务器建立连接,后续请求通过CONNECT载荷发送到代理服务器,代理将载荷内容进行转发到二级代理
    

    A->B | CONNECT隧道,REQUEST URL==> D,内容:ONNECT隧道,REQUEST URL==> E,http请求
    B 接收
    B->D | ONNECT隧道,REQUEST URL==> E,http请求
    E接受
    D     | HTTP请求 -> E
    D收到响应,原隧道返回
 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值