代理技术包括:正向代理、反向代理和透明代理,其中正向代理技术应用最为广泛。大部分情况下,出于安全性考虑,公司组建的局域网只有部分主机能够被互联网上的其它主机访问。正向代理技术在局域网中外网可访问主机设置代理功能 ,使得外部主机通过代理主机可以访问局域网内所有主机和资源。
正向代理:简单的说,就是客户端主动向代理发送一个请求,然后代理向服务器请求并将获取的内容返回给客户端。
比如A想向C借钱,但是C不认识A所以不借给他,然后A就通过B向C借钱,B借到钱之后再转交给A,真正借钱的人是谁,C是不知道的,在这个过程中B就是扮演了一个代理的角色。服务端不知道真正的客户端是谁。我们常说的代理也就是指正向代理,正向代理的过程,它隐藏了真实的请求客户端,服务端不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替来请求。
再比如在我们的渗透测试过程中:我们在获得外网服务器的一定权限后发现这台服务器可以直接或者间接的访问内网 ,此时渗透测试进入后渗透阶段,一般情况下,内网中的其他机器是不允许来自外网机器的访问的。这时候,我们可以将这台外网服务器设置成为代理,使得我们自己的攻击机可以直接访问与操作内网中其他机器。
按照代理协议在TCP/IP协议栈中所处的位置,可以将正向代理分为HTTP代理和socks代理。HTTP代理技术要求所有代理流量按照HTTP协议进行传输,使用socks代理技术则可以在直接在网络层传输代理数据包。HTTP代理工作在应用层,socks代理工作在网络层,所以socks代理技术比HTTP代理快很多。
反向代理:反向代理与正向代理相反,一般是代理服务器主动将获取到的资源流量转发给客户端,让客户端接收。
比如A想向B借钱,但是B也没钱,B有可能向C或者D借钱然后再借给A。至于钱到底是谁的,A是不知道的,A只知道这个钱是B的,这里的B就扮演了一个反向代理的角色,客户不知道真正提供服务的人是谁。反向代理隐藏了真实的服务端,当我们访问www.baidu.com的时候,背后可能有成千上万台服务器为我们服务,但具体是哪一台,你不知道,你也不需要知道,你只需要知道反向代理服务器是谁就好了。www.baidu.com就是我们的反向代理服务器,反向代理服务器会帮我们把请求转发到提供真实服务的服务器那里去。Nginx就是性能非常好的反向代理服务器,它可以用来做负载均衡。
用途差异
安全差异
下面通过合天网安实验室的实验(“内网转发-正向代理”,链接自己上官网找,CSDN不让发 )来理解Windows主机下的正向代理。本实验模拟渗透测试中外网主机通过代理主机访问内网服务器的场景。
内容 | 备注 |
---|---|
攻击主机 | Win7,IP地址:10.1.1.13 |
代理主机 | XP,IP地址:10.1.1.12 |
内网服务器 | Win2003,IP地址:10.1.1.11 |
辅助工具 | xampp、reDuh、tunna、reGeorg、proxifier |
在内网服务器(10.1.1.11)配置安全策略,屏蔽攻击主机(10.1.1.13)直接连接3389端口。本实验的主要在代理主机(10.1.1.12)搭建HTTP正向代理或SOCKS正向代理,实现攻击主机直接远程访问内网服务器或者访问内网资源(内网网页),详细内容包括:
任务描述:reDuh是Glenn Wilkinson在2008年美国黑客大会上演示的一款正向代理工具,该工具实现了HTTP代理功能。下面将讲述如何使用reDuh搭建HTTP正向代理。
1、在未开启reDuh代理前,攻击主机(10.1.1.13)其企图远程连接127.0.0.1:1234失败。
2、我们进入代理主机(10.1.1.12)上解压缩reDuh0master文件:
3、然后复制reDuh-master\reDuhServers
文件夹下的reDuh.jsp文件:
4、将reDuh.jsp文件粘贴到该主机C:\xampp\tomcat\webapps\ROOT
目录下:
5、将reDuh.jsp程序部署到跳板主机(C:\xampp\tomcat\webapps\ROOT\
)后,攻击机(10.1.1.13)远程访问该文件,结果如下:
6、接下来,攻击机下也同样跟代理机一样,解压reDuh-master.zip文件,并用cmd.exe
进入刚刚解压的路径,我这里的解压路径如下:
7、在攻击主机上连接跳板主机上的reDuh.jsp文件。执行命令如下:jar -jar reDuhClient.jar URL路径
。
8、使用nc.exe
连接本机端口1010,对正向代理进行管理。在正向代理管理命令行中,通过[createTunnel] 1234:10.1.1.11:3389
命令创建远程主机10.1.1.11:3389
端口到本机1234
端口的映射:
9、最后,在攻击机远程桌面中输入127.0.0.1:1234
即可实现对10.1.1.11主机的远程访问。来看看是否能连接上内网主机:
10、输入内网主机的登录账号和密码:
11、成功登录内网主机,并执行命令,攻击结束:
任务描述:reDuh搭建HTTP代理,需要nc等工具的辅助,tunna工具可以简化正向代理功能搭建过程,本实验学习如何使用tunna搭建http正向代理,实现对内网服务器资源的访问。tunna是Nikos Vassakis开发的一款HTTP代理工具,常用参数如下:
参数 | 解释 |
---|---|
-u | 远程代理脚本地址 |
-l | 表示本地监听的端口 |
-r | 远程映射端口 |
-v | 输出详细数据 |
-a | 代理远程连接的主机地址 |
1、在跳板机中解压缩Tunna工具并复制conn.php文件:
2、将其部署在跳板机的以下路径:
3、在攻击机中访问以上文件:
4、在攻击主机上执行如下命令,将内网服务器(10.1.1.11)的80端口映射到本地4428端口: python proxy.py -u http://10.1.1.12:8000/conn.php -l 4428 -a 10.1.1.11 -r 80 –v
5、在内网服务器(10.1.1.11)部署内部网页flag.php(c:\xampp\htdocs\
),只允许10.1.1.12 的IP地址的访问,flag.php代码如下:
6、攻击机直接访问http://10.1.1.11/flag.php
提示访问被拒绝,只能内网访问。
7、访问http://127.0.0.1:4428/flag.php
,访问成功,如下图所示:
【注】tunna代理并不是非常稳定,经常出现掉线情况,尤其是使用tunna代理远程连接的流量时,经常掉线。但是使用tunna访问内网web服务还算稳定。
任务描述:本实验环境中,漏洞主机设置安全策略导致攻击主机无法直接进行远程连接,模拟实际测试环境中漏洞主机处于内网的场景。通过在跳板主机(web服务器)上部署reGeorg的tunnel.php程序提供代理功能,攻击主机在proxifier 设置全局代理后可借助于跳板主机远程访问攻击主机。
1、策略设置:在内网服务器CMD里输入gpedit.msc
打开组策略编辑器,计算机配置——>Windows设置——>安全设置——>IP安全策略,编辑新IP安全策略,在‘xx’的IP筛选器属性里填上攻击机的IP。
2、由于内网服务器(10.1.1.11)配置了安全策略,攻击主机无法通过远程桌面连接访问内网服务器:
3、解压跳板机中reGeorg文件,并复制tunnel.php
文件:
4、在跳板主机部署代理程序(c:\xampp\htdocs\
),然后在攻击机上直接访问该页面,提示“Georg says, ‘All seems fine’”:
5、从页面https://pypi.python.org/pypi/urllib3
下载urllib3模块,在攻击主机执行 python setup.py install
命令安装(已装):
6、在攻击主机上解压reGeorg文件:
7、执行如下命令,将远程代理映射到127.0.0.1:6666
端口:python reGeorgSocksProxy.py -p 6666 -u http://10.1.1.12:8000/tunnel.php
:
8、在攻击主机的proxifier程序中“配置文件-代理服务器”菜单中添加全局代理:
9、 添加代理规则(mstsc.exe
是Windows远程桌面连接程序,在系统文件windows\system32里.):
10、攻击主机远程连接输入 10.1.1.11即可连接到漏洞主机(10.1.1.11):