靶机官方:Funbox: Rookie[1]
实战思路:
一、主机发现
二、端口发现(服务、组件、版本)
三、漏洞发现(获取权限)
21端口/FTP服务
组件漏洞
口令漏洞 4
22端口/SSH服务 9
组件漏洞 9
口令漏洞 10
口令泄露 10
80端口/HTTP服务 11
组件漏洞 11
URL漏洞(目录、文件) 12
四、越权提权 15
sudo 15
suid 15
信息收集 18
sudo
一、主机发现
本次攻击指定IP,不涉及主机发现过程。
二、端口发现(服务、组件、版本)
使用命令sudo -u root nmap 172.16.33.30 -n -Pn -p- --reason -sV -sC -O
获得主机开放的端口、提供的服务、使用的组件、组件的版本。
开放的端口 | 提供的服务 | 使用的组件 | 组件的版本 |
21/tcp | ftp | ProFTPD | 1.3.5e |
22/tcp | ssh | OpenSSH | 7.6p1 |
80/tcp | http | Apache httpd | 2.4.29 |
- | os | Ubuntu Linux | ? |
三、漏洞发现(获取权限)
21端口/FTP服务
组件漏洞
使用命令 searchsploit ProFTPD 1.3.5e
和 searchsploit ProFTPD 1.3.5
,发现1.3.5版本存在多个RCE漏洞的EXP。
查看发现都是CVE-2015-3306漏洞,在1.3.5a版本中已修复,因此这里的1.3.5e版本不受影响。
但是EXP找都找到了,不影响也试试呗,试完发现确实不受影响。
口令漏洞
使用命令ftp 172.16.33.30
连接FTP服务,使用匿名账号anonymous
和空口令
登录,使用命令dir
查看文件情况,发现有很多文件。
先使用命令prompt off
关闭交互模式,避免批量下载文件时每个文件都询问是否下载;再使用命令mget *
批量下载所有文件,最后使用命令bye
退出FTP服务。
备注:后来发现使用命令dir -la
或ls -la
可以查看隐藏文件的情况,虽然此处帮助不大。
使用命令for f in $(ls *.zip); do unzip $f; done;
解压缩所有压缩包,发现所有压缩包都需要密码才能解压缩。
使用命令for f in $(ls *.zip); do zipinfo $f; done;
查看所有压缩包里的文件,发现都是SSH私钥文件id_rsa
。由此可知,压缩包的文件名是SSH用户名,压缩包里是对应的SSH私钥。
使用命令zip2john marge.zip > marge.hash
和john marge.john
爆破压缩包的解压密码,无收获。
备注:前面都是对单个压缩包爆破解压密码,无收获就去查看22端口和80端口了。后面倒回来才对所有压缩包爆破解压密码,也就是下文。
使用命令for f in $(ls *.zip); do zip2john $f > $f.john; done;
和for f in $(ls *.zip.john); do john $f; done;
批量爆破压缩包的解压密码,获得cathrine.zip
的解压缩密码catwoman
和tom.zip
的解压缩密码iubire
。
最终获得cathrine
和tom
的用户名和SSH密钥。
22端口/SSH服务
组件漏洞
使用命令searchsploit OpenSSH 7.6
,发现3个EXP,均是CVE-2018-15473用户名枚举漏洞。
本来想验证一下前面拿到的SSH用户名是否真实存在,结果EXP的执行结果不准,只能放弃。
口令漏洞
基于前面拿到的SSH用户名,外加root用户名,使用命令hydra -L user.txt -P /usr/share/seclists/Passwords/500-worst-passwords.txt 172.16.33.30 ssh
,未爆破出弱口令。
口令泄露
使用命令ssh tom@172.16.33.30 -i tom_id_rsa
,发现前面获得的cathrine
和tom
的SSH密钥,只有tom
能成功登录,可能是cathrine用户更新了SSH密钥。
80端口/HTTP服务
组件漏洞
使用命令searchsploit Apache 2.4.29
和searchsploit httpd 2.4.29
,除了本地提权外,未发现其它可利用漏洞。
使用Wappalyzer、FindSomething自动识别网站组件,无收获。
URL漏洞(目录、文件)
01、手动浏览
访问首页http://172.16.33.30/
,发现啥也没有,是中间件默认页面。
02、目录扫描
使用命令dirb http://172.16.33.30/ /usr/share/seclists/Discovery/Web-Content/common.txt -R
对网站目录和文件进行遍历,发现/index.html
文件和/robots.txt
文件,约等于没有任何发现。
/robots.txt
文件中的/logs/
目录下也是空的。
03、模糊测试
基于目前已知信息,没有对网站的目录和文件进行FUZZ的必要。
04、信息收集
前面在Firefox翻找网站的流量全都走Burp Suite代理,在Burp Suite中未发现敏感信息泄露。
四、越权提权
sudo
使用命令sudo -l
查看tom用户的特权命令,发现需要tom用户的SSH密码才能执行。
suid
使用命令find / -perm -u=s -ls 2>/dev/null
查看特权程序,发现比较多的系统命令,但在GTFOBins[2]并未搜索到可用于suid提权的。
信息收集
使用命令ls -la
查看文件情况,发现.mysql_history
文件。使用命令cat .mysql_history
查看文件内容,发现不知道是什么服务的账号tom
和密码xx11yy22!
。
尝试看看这个账号密码能否登录SSH服务,竟然登录成功,获得用户tom
的SSH密码xx11yy22!
。
那么为什么能在MySQL数据库中找到SSH服务的账号密码?我想应该是受害人在多个平台都使用了相同的账号密码吧,所以我们能在拿到A系统的账号密码后(MySQL数据库中),用于登录B系统(SSH服务)。
sudo
使用命令sudo -l
查看tom用户的特权命令,输入SSH密码后,发现(ALL : ALL) ALL
,用户tom可以执行所有命令。那就执行一下切换到root用户的命令sudo su
,获得root账号的权限。
参考资料
[1]
Funbox: Rookie: https://www.vulnhub.com/entry/funbox-rookie,520/
[2]GTFOBins: https://gtfobins.github.io/