Offsec Nibbles CTF 实战解析
在准备OSCP认证过程中,我遇到了OffSec Proving Grounds中一个名为Nibbles的靶机。在了解了PostgreSQL的日常问题和我最喜欢的开发者名言"这不是bug,而是功能"后,这成为了我最喜欢的攻击靶机之一。
该靶机的前半部分相对简单,但在后期权限提升时会变得稍微复杂。不过,如果你知道该寻找什么,就能轻松获得最后的flag。
该靶机属于中等难度,但不要因此退缩。OSCP的部分理念是,无论靶机多难,都要不断枚举、枚举、再枚举。OSCP的模式是"更加努力",但说实话,如果你记得Fritzel女士的名言:"起初,当你没有成功时,问问自己第一次失败的原因",这可能在考试时是更有效的心态。
我们知道这是一个Linux操作系统。
作为实验的一部分,我喜欢将所有IP地址导出到目标,以简化操作。因此,在本教程中,我将把目标IP称为$target:
从低挂果实开始,你可以访问端口21上的FTP服务器,检查端口80上的网站,或者在本例中,PostgreSQL运行在端口5437上。因此,在获得另外两个端口的访问权限之前,仍然可以访问或使用SQL进行远程代码执行。我们可以忽略端口139和445,因为这两个端口当前都已关闭。
在深入研究该靶机之前,业余爱好者和专业道德黑客的一个区别在于理解框架和CVSS。这一点也很重要,因为在OSCP期间,你需要为测试撰写报告;理解"为什么这是安全风险"将对你有所帮助。
在几乎所有版本的PostgreSQL漏洞中,都要感谢这些CVE:CVE-2019-9193、CVE-2022-1552和CVE-2023-39417。特别是这个:CVE-2022-1552。这里的问题是,无论PostgreSQL版本如何,你都可以运行一些脚本(尤其是Python脚本),仅凭用户名和密码就能获得服务器访问权限。
感谢GitHub上的netbiosX列表:https://github.com/netbiosX/Default-Credentials/blob/master/PostgreSQL-Default-Password-List.md。此列表将有助于缩小常见用户名和密码的范围。因此,如果此列表不起作用,我建议如果标准用户/密码列表无效,则接下来访问FTP。
现在进行测试,使用postgres/postgres:
默认用户完美运行,所以现在我可以实现RCE。通过简单的Google搜索,我找到了squid22的这个仓库。https://github.com/squid22 并链接到RCE:https://github.com/squid22/PostgreSQL_RCE。
这是squid22制作的仓库代码:
接下来,我喜欢运行'git clone http://github.com'或使用'wget',两者皆可。但要获取报告或下载脚本,并确保进入目录或将脚本移动到其他目录。
然后,运行以下命令:
sudo chmod +x postgresql_rce.py
这样,你的脚本就能工作了。然后使用sudo nano编辑脚本。
对于这一点,如果你刚接触CTF或道德黑客,下半部分不用担心;那是连接到我们目标PC的部分。如果你刚接触Python,也不要动第二行。唯一需要关注的是第五行、第七行,如果你愿意,可能还有第八行。确保保留引号。
逐行说明:
- 第5行是Rhosts,这是你的目标IP。你不能在这里写$target,但OffSec很好,会提供IP地址。一旦你启动运行活动机器,他们就会提供:192.168.*.47,但即使在真实环境中,你仍然需要输入IP地址。我知道我跳过了第六行,但那是你要攻击的端口,所以不要动它。
- 第7行:替换为你机器的IP地址。运行'ifconfig'获取信息。对于OffSec,将是tun0 IP,并插入该地址。
- 第80行由你决定。我不建议使用端口80作为监听端口。使用像9999、1234、4444等数字。如果需要使用Python服务器进行文件传输,请确保不使用端口80。在CTF中我将坚持使用80,但其余由用户决定。然后按Ctrl X保存,是的。
在运行脚本之前,确保打开监听器。对于端口80,你可以这样做:
nc -lnvp 80
然后运行脚本:
这是CTF的前半部分。对于OSCP,他们明确指出,对于报告,你需要这样做:
他们需要用户和IP地址,但现在我们继续枚举。至于权限提升,我运气很好。真的运气很好。我查看了SetUID并遇到了这个命令:
然后我获得了root权限。真的运气很好。
你仍然需要为OSCP添加IP地址,但在获得root后,你可以获取flag。我专注于在获取flag之前获得root访问权限,因为到那时你已经成功入侵了机器。对于proving grounds,它们总是在Linux用户的home目录或Windows的Desktop中。
更进一步来说,对于真实环境,这个靶机很容易被入侵。默认密码是不可接受的。即使这是在沙盒中,你仍然应该使用比默认更强的密码,然后限制其从网络访问。因为在后期利用后,我们可以使用Chisel在网络中从这个靶机进行横向移动,看看是否能访问DC。此外,通过root访问权限,我们可以同时访问passwd文件和shadow文件,并使用密码列表运行John the Ripper来破解账户。
通过实施SSL加密来加固PostgreSQL至关重要,因为一个基本的Python脚本就可以访问网络上的主机。此外,应用Mac过滤防火墙规则有助于防止恶意设备访问系统,这在像我的攻击靶机这样的情况下特别有益。最重要的是,更新软件。
这个CVE或漏洞的挑战性在于它被部署到生产环境,被标记为功能,对于PostgreSQL,它与CVE相关联;然而,它无法防止RCE。即使有人为错误,我们也需要提醒自己放慢速度,不要仅仅依赖AI/Vibe编码,因为今天为善而构建的东西明天可能会反噬。"这不是bug,而是功能"可能导致无数问题,因为这个"功能"相当容易被利用。
这仍然是我在准备OSCP期间遇到的最喜欢的靶机之一。有时候,运气和简单的谷歌搜索就能提供你需要的答案。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)
公众号二维码

公众号二维码

