您当前的位置: 首页 > 

合天网安实验室

暂无认证

  • 0浏览

    0关注

    748博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

HTB靶机攻略之onetwoseven

合天网安实验室 发布时间:2019-10-23 11:13:45 ,浏览量:0

最近HTB上新出来了一个靶场OneTwoSeven,所以我对它进行了测试,发现整个思路挺有意思,所以记录下来。

信息搜集 MASSCAN

像往常一样,我们先masscan扫描然后再用nmap

NMAP

过程分析

通常,这是我们执行强制浏览或某种形式的自动Web扫描的地方。但是,由于存在速率限制,因此我们需要手动浏览该站点。

浏览时,我们http://10.10.10.133/signup.php发现它为我们提供了凭据sftp

我们还看到了域名的使用onetwoseven.htb。在继续之前,需要更新本地DNS条目/etc/hosts。否则访问不了域名

完成之后,让我们检查一下远程文件系统上可以访问的内容。

我们将从以预先生成的用户身份访问sftp服务器开始。由于无法上传和执行Web Shell,因此让我们检查一下该命令可用的help命令。

我们创建一个符号链接,并且public_html文件夹可写;让我们看看它带我们到哪里。

Nmap网络扫描:

(nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。)

源代码恢复

让我们从一些源代码恢复开始。我们将利用symlink命令来浏览原始的php文件。我们可以检查一些有意思的文件是signup.phpindex.php。如果我们尝试使用相同的名称(即php扩展名)符号链接到这些文件,则服务器在尝试执行php时会遇到问题。相反,我们将删除php扩展名,以便我们可以恢复源代码。

让我们先来看一看index。我们无法从sftp shell中查看/获取文件。这里的窍门是我们需要view-source:http://10.10.10.133/~ots-yZjFkZWY/index在浏览器中输入。在其中,我们可以发现,如果要从服务器本身(127.0.0.1)或104.24.0.54访问此页面,则将显示指向服务器的链接。服务器本身似乎正在监听port 60080

下一个文件signup包含有趣的信息。具体来说,它向我们展示了如何为sftp登录生成用户名和密码。

让我们确认用户名功能如何处理我们的IP地址。

  • 第1行:生成给定IP地址的md5sum

  • 第5行:获取哈希IP的前8个字符

  • 第9行:base64对缩短的哈希进行编码

  • 第13行:从字符串中删除所有等号

  • 第17行:返回缩短/替换后的哈希的子字符串,从第四个字符开始,一直到字符串末尾

  • 第21行:将字符串“ ots-”与上述所有操作的结果连接起来,为我们提供用户名

密码要简单得多。

如果还有其他用户遵循ots-模式,我们可以获取他们的密码!我们来/etc/passwd看看是否有感兴趣的用户。

回到sftp shell,我们可以进行符号链接/etc/passwd并检出内容。

在上面的输出中,我们可以看到我们的用户名。这里的好处是,每个/etc/passwd条目的GECOS字段中记录了IP地址。让我们进行下一步,并获取与127.0.0.1关联的用户的密码!

那里有一套凭据!让我们在sftp服务上使用它们。

登录后,我们看到user.txt。剩下的就是下载并打开它!

让我们再次重新访问sftp服务器。这次,我们将链接文件系统的根。

我们将再次使用浏览器来查看结果。

观察文件夹,目前我们唯一有权浏览的有用的的文件.login.php.swp位于http://onetwoseven.htb/~ots-mODVhZTM/var/www/html-admin/

让我们下载文件并分析其内容。运行file命令可以分析.login.php.swp告诉我们这是一个vim隐藏文件。

当vim打开login.php文件进行编辑时,它会创建一个隐藏的交换文件.login.php.swp。并且这个文件是可以恢复的!

出现上述提示后,我们可以按Enter键并查看我们新恢复的文件。我们要关注几行;我们将从第一行开始。

第1行告诉我们,可以预期运行此php文件的服务器位于端口60080上。

接下来,第26行让我们知道该php文件与他们的后端管理相关。

有趣的东西在第78行;管理员用户名和哈希密码!

我们可以使用crackstation.net获取明文密码。

SSH连接

我们尝试开启ssh隧道。

我们使用ssh -v命令看看。

我们可以从上述输出中得出的结论是,在服务器断开连接之前,连接成功并且ssh连接已建立。所以我们可以来建立ssh转发隧道,以到达服务器回送地址上的端口60080。

两个ssh选项将帮助我们在没有交互式shell的情况下建立隧道。让我们检查一下。

下面我们看到使用的隧道选项。

运行完上面的命令后,我们运行kali上的netstat命令。我们应该在端口60080上看到一个侦听器。

我们可以看到我们的kali机器上有一个60080的监听器。在那里发送的所有流量都将转发到端口60080上的10.10.10.133的localhost接口。知道这一点,我们可以浏览到本地隧道,该隧道将把所有流量通过该隧道移至目标。

拿到WEB SHELL

设置好隧道后,我们可以浏览到http://127.0.0.1:60080。

最明显的点是底部的**插件上传”**部分。我们可以使用开发人员工具来启用该Submit Query按钮。

当我们在开发工具中查看按钮时,会在标记上看到禁用的属性\

我们可以简单地删除属性以启用按钮。

让我们尝试上传一个简单的php web shell,尝试一下乐趣。在此过程中,让我们在Burp中捕获POST请求,因为稍后会派上用场。

网站回应404错误。

如果浏览到127.0.0.1:60080/menu.php?addon=addons/ots-man-addon.php,则会看到一条说明,告知我们禁用的功能会导致404错误。我们可以假设已经尝试禁用文件上传功能。

上面的页面上还有一条注释:

插件管理器不能直接执行,而只能通过提供的RewriteRules执行

因此,当我们要下载菜单上列出的文件之一时,我们通过类似于以下网址的URL进行请求http://127.0.0.1:60080/addon-download.php?addon=[SOME_PLUGIN]。每当addon-download.php请求时,Web服务器都会在内部将请求重写为addons/ots-man-addon.php。请注意,两者addon-upload.phpaddon-download.php都由同一个文件处理:ots-man-addon.php

由于我们对负责处理文件上载和下载的文件最感兴趣,下面分析ots-man-addon.php源码。

以下是我们关注的代码片段。

             
关注
打赏
1665306545
查看更多评论
0.0364s