赛季7靶场 -- Checker --User flag
本系列仅说明靶场的攻击思路,不会给出任何的详细代码执行步骤,因为个人觉得找到合适的工具以实现攻击思路的能力也非常重要。root要逆向,没做了,但是user flag也有借鉴意义,关于2FA的绕过我们有必要了解
1.首先Nmap扫描,发现80和22和8080端口。在80端口我们发现了bookstack,在8080端口我们发现了teampass。
【+】中间件发现
【*】希望探寻中间件版本
2.为了了解中间件版本信息,我们使用katana来快速爬取js,从而发现中间件版本。
【+】中间件版本探明
3.我们发现teampass和bookstack均存在漏洞。teampass的版本存在SQL注入漏洞,bookstack版本存在SSRF+LFR漏洞。teampass是一个团队密钥管理软件,里面会存很多密码,是非常有价值的目标。bookstack是一个博客软件,里面会有文章。借助teampass漏洞我们窃取到了数据库里面用户的占账号和密码hash。
【+】窃取账号和密码hash
4.我们希望能够破解密码,从而进入teampass获取密码。我们使用hashcat成功破解了密码,进入到bob账号,获取了reader账号的ssh密钥,和bob的bookstack密钥。
【+】获取ssh账户,bookstack账户5.我们尝试登录ssh,发现存在2FA,我们必须获取到相关的验证码。经过网络上的搜索,我们会了解到2FA认证会有一个密钥文件,这个文件通常存在于/home/user/xxx文件。我们尝试使用bookstack的LFR漏洞获取/home/user/xxx文件,但失败了(后续了解到是因为Web服务账户权限不足导致的)。于是我们转向了bookstack的文章,因为个人写作也很可能会泄露一些敏感信息。我们发现了有关于备份的文章,他告诉我们备份目录,那么很可能这个地方也存在/home/user/xxx文件的副本,所以我尝试获取它。我们成功获取到了/home/user/xxx文件的验证码密钥。于是我们编写python完成验证码获取。我们成功登陆了ssh
【+】reader用户的ssh shell
6.获取reader用户,第一步猜测自身身份,我们应该是一个Web运维角色,因为我们可以使用数据库,并查明密码hash是否是弱密码。首先linpeas快速扫描一下,我们了解到我们拥有一个check_***.sh脚本的sudo权限,这非常有趣。我们查看脚本,并找不到一些命令执行的位置,但是我们发现了一个check_***二进制文件。因为二进制文件可能会有意想不到的功能,所以我们可能可以借助二进制文件来劫持root用户。可惜的是,查明了so静态库的调用情况,我们并没有获得一些有趣的内容。那么只有逆向分析这个二进制文件了,首先我strings了二进制文件,以查看是否有硬编码的密码,但是没有。然后我使用pspy64监控了二进制文件的执行过程,以了解是否有我可以在不动态调试二进制文件的情况下执行命令的可能,但是没有。值得注意的是二进制文件执行后,会创建一个mysql语句,mysql语句可以用于执行shell,如果我们可以劫持其中变量,那么就一定能够完成命令执行。那么也就可以劫持root用户。
【+】user flag get!