巧用 SSH 打通外网限制

VSole2022-04-24 06:55:31

笔者在工作中遇到此场景,如下两条网络限制下,总部如何访问分公司内部web服务器?

  • dmz服务器可以访问总部外网服务器22端口,不可以访问web服务器;
  • web服务器不可访问公网,但是到dmz网络无限制。

初看需求,我们第一个想到的肯定是内网端口映射到公网,或者vpn,但是不修改网络策略情况下很难实现。有没有别的方法呢,我们继续从纯网络角度分析现有条件。

网络通信是双向的,有请求,有回应,就是我们俗称的“通”。dmz可以访问外部22端口,代表请求,回包两个通信通道都是通畅的,我们是否可以借助回包通道,从外部发起到内部的反向访问呢?答案当然是有的,我们来试一试,需要ssh工具。

我们在dmz执行如下命令。

[root@dmz]#  ssh -f -N -g -R  6606:10.1.1.1:80 root@115.100.100.100

-f:代表后台运行程序

-N:表示使用远程端口转发创建ssh隧道

-g:监听本机所有IP地址

-R,表示使用远程端口转发创建ssh隧道

命令结合起来什么意思呢,我们使用root用户远程连接到115.100.100.100,并且远程主机监听6606端口,当访问此端口时,会跳转到dmz的80端口。此过程会使用到ssh隧道。dmz运行之后,总部服务器的已经有了端口监听。

[root@center]# netstat -tunlp | grep 6606
    tcp        0      0 127.0.0.1:6606          0.0.0.0:*               LISTEN      8616/sshd: root
    我们在总部服务器尝试端口提示拒绝,代表网络已经打通了,但是dmz服务器并没有监听80端口,所以报端口拒绝。
[root@center]# telnet 127.0.0.1 6606
    Trying 127.0.0.1...
    telnet: connect to address 127.0.0.1: Connection refused

如法炮制,再把web服务器到dmz的网络反向打通,dmz服务器访问本地80端口时将跳转到web服务器的80端口。

[root@web]# ssh -f -N -g -R  80:10.1.1.1:80 root@10.1.1.2


再次到总部服务器测试访问就能通信了。

[root@center]# telnet 127.0.0.1 6606
    Trying 127.0.0.1...
    Connected to 127.0.0.1.
    Escape character is '^]'.

我们最后从网络角度来回顾数据包的的转发过程。

从总部服务器看到如下信息。

#dmz服务器以115.100.100.101:29493作源,访问本地22端口,建立了tcp连接。
[root@center]# ss | grep 115.
    tcp    ESTAB      0      0      172.16.1.1:22                115.100.100.101:29493
[root@center]# netstat -tpna | grep 115.
    tcp        0      0 172.16.1.127:22      101.230.91.53:29493     ESTABLISHED 8555/sshd: root
#本地端口也对应到了进程号8616[root@center]#netstat -tunlp | grep 6606
    tcp        0      0 127.0.0.1:6606          0.0.0.0:*               LISTEN      8616/sshd: root
[root@center]# ps -ef | grep 8616
    root      8616  8555  0 Dec03 ?        00:01:04 sshd: root.

当总部服务器访问127.0.0.1:6606时,网络连接信息如下。

双向通道已经建立
[root@center]# ss | grep 6606
    tcp    ESTAB      0      0      127.0.0.1:6606                 127.0.0.1:51158
    tcp    ESTAB      0      0      127.0.0.1:51158                127.0.0.1:6606

我们最后用图片来展示最终网络转发过程。

dmz发起ssh连接到总部服务器,并且远程端口转发。远程服务器访问转发端口时,数据将封装到回包通道,由于ssh本身加密,外部网络无法知晓网络交互逻辑,从而实现反向访问。

sshdmz主机
本作品采用《CC 协议》,转载必须注明作者和本文链接
笔者在工作中遇到此场景,如下两条网络限制下,总部如何访问分公司内部web服务器?dmz服务器可以访问总部外网服务器22端口,不可以访问web服务器;web服务器不可访问公网,但是到dmz网络无限制。
如今,在很多组织机构内部,针对 DMZ 或隔离网络区域内的计算机设备,为了限制其它接入端口风险,通常只允许这些设备开启 3389 端口,使用远程桌面来进行管理维护。那么我们能不能利用这个 3389 端口的 RDP 服务建立起一条通向内网的代理隧道呢?当然可以,下面就引出我们今天的主角 —— SocksOverRDP。
如今,在很多组织机构内部,针对 DMZ 或隔离网络区域内的计算机设备,为了限制其它接入端口风险,通常只允许这些设备开启 3389 端口,使用远程桌面来进行管理维护。
内网渗透-代理篇
2021-12-01 05:44:01
利用代理工具将内网的流量代理到本地进行访问,这样就可以对内网进行下一步渗透,同时也可以利用代理工具将其他网段的流量转发到本地进行纵向渗透。代理的本质是Socks协议(防火墙安全会话转换协议),工作在OSI参考模型的第5层(会话层)。使用TCP协议传输数据,因而不提供如传递ICMP信息之类的网络层相关服务。目前支持SOCKS4和SOCKS5两个版本:
内网渗透合集(三)
2023-01-28 09:44:16
jsp端口转发渗透过程中,由于windows和linux的差别以及运行语言环境的限制导致端口转发经常出现问题。于是自己写了个简单的JSP的端口转发脚本。仿造 LCX的功能,具有正向、反向、监听三种模式。对于目前数量众多的JAVA WEB网站来说,可以比较方便的实现端口转发。在这里发布出来,小伙伴们使用过程中,如果发现什么bug欢迎提交哈~参数说明/KPortTran.jsp?lip = local ip / 本地ip //一般为内网主机IP. lp = local port / 本地端口 //一般为内网主机端口
汇总项目实施过程中可能出现的故障及解决方法。
内网渗透合集(二)
2023-01-28 09:35:05
接下来在内网肉鸡再次执行:htran -p -slave 公网肉鸡IP 119 127.0.0.1 8009?linux也有实现,感觉使用方法更加明朗,且与windows下的兼容 在此推荐下。把windows的小做修改下,重新编译了下,源程序比较简单就不上传工程文件了,直接给个C文件,自己编译下即可。linux下实现大同小异,只不过用的fork实现子线程。此时在渗透测试端192.168.10.50可看到通道连接成功,效果如图4。
一个内网安全攻防的知识仓库
生产环境资产对外服务资产是红队密切的关注点。对于安全设备所覆盖范围进行有效排查,尽可能做到无死角全覆盖。管理员应全面检查系统、数据库、对外服务相关权限设置,以确保最小权限原则,过期的授权应予以删除。对于大中型企业的资产较多,端口管控较为困难,红队通过对端口发起有效入侵是最直接、最有效的途径之一。为了更加安全,以防红队人员探测到web服务,也可
VSole
网络安全专家