免责声明:本教程仅限学术讨论使用,请勿作用于非法用途!!!如有用于非法用途,本人概不负责。
这道题挺有趣的……在经过多天的纠结以后也算是收获颇多呀。
本文将用两种解法对这道题进行攻略:
通用步骤:
一、信息收集
1.扫端口、扫服务
这里我们发现其开放了53端口,所以我们首先在/etc/hosts添加trick.htb这个域名。
2.跑目录
没啥收获
3.跑子域名
没啥收获
二、开始边思考边收集
因为有DNS服务,我们可以用dig发送axfr看看返回信息
发现域名preprod-payroll.trick.htb,添加到/etc/hosts
从这里开始我们用两种思路来解题:
思路一:
看到登陆页面首先想到的就是sql注入,我就直接上sqlmap
找到密码以后登进去
我们可以看出他是Nginx的网站,还是先对域名跑一跑目录看看有没有发现,发现有个users.php
访问这个页面发现他与preprod-payroll.trick.htb/index.php?page=users页面显示内容一致,我们可以推测每一个模块都有一个对应的php页面,于是我们对每一个页面都进行检查。
在这里,我们发现一个可以传入id的新页面,推断可能存在sql注入,我利用sqlmap确认了这里的注入点
因为我们已经进入后台了,再用sqlmap的意义也不大了,所以我们在这里可以尝试利用load_file来读文件
这里我们先读/etc/passwd来测试看看是否可行,测试过程中还发现其用户名为michael。所以我做了个一无谓的尝试(万一权限允许呢……):直接读/home/michael/user.txt;可惜失败,还得是老老实实去做……在这里我们既然可以读/etc/passwd,那应该也能都其他配置文件。
刚进入这个页面的时候我们就已经发现他是nginx的网站了,我们就去看看nginx的配置文件。
到这里我们就发现了另一个域名。第一种思路的介绍就到这里,如果想看看第二种思路的可以继续往下看,如果只是想解题的可以直接跳过第二种思路看下半部分。
-------------------------------------------------------手动分隔^_^------------------------------------------------------
思路二:
这个思路其实就很简单了,说白了就是认真观察,在得到第一个子域名以后继续跑子域名,就能跑出第二个子域名……
大概是这样的:把前缀“preprod-”保留,然后跑就完了……
-------------------------------------------------------手动分隔^_^------------------------------------------------------
总结:
这两种思路各有各的好处,第一种思路我觉得更贴合实际,所以我详细的介绍了第一种思路;但是第二种思路倒是也提醒了我要善于观察域名……
-------------------------------------------------------手动分隔^_^------------------------------------------------------
下一部分:getshell
进入这一部分就更简单了,这网页存在目录穿越,可以在/home/michael读文件,能读user的flag;也可以找到ssh私钥,拿着私钥就能ssh登录了。
-------------------------------------------------------手动分隔^_^------------------------------------------------------
提权(由于打的时候忘截图了,就直接文字描述吧……如果有问题可以私聊……):
首先sudo -l可以看到我们能够运行fail2ban restart
然后根据相关资料我们可以找到一篇利用fail2ban的提权姿势https://systemweakness.com/privilege-escalation-with-fail2ban-nopasswd-d3a6ee69db49
提权的过程中我们会发现没有权限对配置文件进行修改,在这里我用的方法是先把配置文件复制一份到/home/michael下,在用户家目录对其进行修改,改完了以后删除掉原有的配置文件,然后把我改好的配置文件再复制进去。然后我们只需要重启服务,制造错误日志就可以弹回root权限了。