渗透测试-Ngrok内网映射与穿透
前言
有的时候希望把本地内网系统映射到公网方便跨局域网访问,Sunny-Ngrok提供国内免费的内网映射服务器,可以满足我们这个需求。
内网穿透有什么用?
假设你写了一个代码功能,本地测试已经OK,此时,你要想让千里之外的朋友帮你测试,会怎么做呢?
· A方案:如果你的朋友懂代码,你可以把代码打包发给他,让他在本地测试;
· B方案:如果你的朋友不懂代码,你只能搭建一套服务器,然后放到公网服务器上面,让他通过外网访问进行测试。
不论是A方案还是B方案,整个过程复杂繁琐,特别是B方案,如果不会服务器部署那套,那直接白搭。
此时,Ngrok 就可以派上用场了,只需要打开输入一个命令,就可以让你千里之外的朋友测试了,整个操作耗时5秒不到。
为什么使用Sunny-Ngrok?
· 提供免费内网穿透服务,免费服务器支持绑定自定义域名;
· 管理内网服务器,内网web进行演示;
· 快速开发微信程序和第三方支付平台调试;
· 本地WEB外网访问、本地开发微信、TCP端口转发;
· 本站新增FRP服务器,基于 FRP 实现https、udp转发;
· 无需任何配置,下载客户端之后直接一条命令让外网访问您的内网不再是距离。
Ngrok官网 提供了具体的使用教程:Sunny-Ngrok使用教程:http://www.ngrok.cc/_book/,本文记录下具体的使用演示。
Py建站
在进行内网映射之前,先在本地搭建一个局域网站点,此处直接使用Python建立HTTP服务站店。Python搭建局域网HTTP站点很简单,仅需一条命令即可,可用于局域网内部快速文件分享和传输。
1、在希望打开HTTP服务的文件夹路径打开 Cmder:
2、执行以下命令,即可把当前目录发布到本地8000端口:
python -m SimpleHTTPServer 8000br
同时站点访问日志会即时在终端输出打印,如下图所示:
3、执行快捷键Ctrl + C可以终止HTTP服务,Linux系统使用 Python 搭建HTTP服务的方法同上。
内网穿透
实操演示
1、首先访问 Ngrok 官网进行账号注册:
2、注册完登录进入系统,访问“隧道开通”,选择免费服务:
3、进行隧道配置:
4、点击生成隧道列表,服务器自动分配了一个免费域名与我们指定的本地站点进行了映射,接下来下载 Ngrok 客户端工具:
5、客户端下载完成以后,解压缩并在对应的路径下打开 Cmder 终端:
6、在终端执行命令:sunny clientid 隧道id(上图服务器分配的隧道id),即可成功建立映射:
7、这时候在公网直接在浏览器访问 Ngrok 服务器分配给我们的域名即可访问到本地站点:
原理浅析
在互联网终端急剧增长的今天,公网ip已经成为稀缺资源,对于国内垄断的电信运营商来讲,更是不可能随便免费给你一个公网IP,许多家庭宽带都无法分配到公网IP,又或者公司学校安全角度考量,为了防止网络攻击,资料泄露,禁止内网机器通过路由器进行端口映射,搭建代理服务器,由此许多内网穿透、内网映射软件应运而生。
Ngrok 穿透过程:
1. 当服务端接收到连接,就读取映射表,判断接收的端口对应于哪一个客户端,然后向客户端发送通知;
2. 客户端收到通知,读取本地映射表,判断对应哪个内网地址,向内网地址发起连接;
3. 客户端和内网的服务器建立连接后,向服务端发起一个连接,作为转发通道;
4。服务端读取请求数据,并通过转发通道转发到客户端,客户端读取响应并通过转发通道返回给请求。
这只是一个简单的连接过程,其中还有映射端口的管理,如果是全端口映射还需要动态映射端口,目前只有网络通有这个全端口的功能,对于一些特殊应用,还要修改解析修改转发的数据才能穿透成功。
总结
至此,已成功借助 Ngrok 将本地内网系统映射到公网 Ngrok 分配的免费域名上,可以愉快地在公网访问内部网站和资源啦(注意安全……)。
