电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 592 人浏览分享

靶机HacktheBox之Nest

[复制链接]
592 0
信息收集

发现目标主机只开放了两个端口。其中445端口可能存在匿名登录。

QQ截图20220613103717.png

使用smbmap工具匿名登录成功,发现Data和Users目录是可读权限

QQ截图20220613104328.png

使用smbcIien进行登录,并将相关文件下载分析

529.png

下载的文件中,发现了TempUser账户的用户名和密码

528.png

漏洞利用

使用这个账户名和密码进行smb登录,发现拥有Secure$目录的权限

526.png

使用这个账户登录到data目录后,发现又能访问和下载更多的文件

222.png

在其中的RU_config.xml文件中,发现了存在一段加密的字符串。经过base64解密,发现不能解密成功

221.png

220.png

在NotepadPlusPlus目录中发现了一个config文件,这个文件中发现了一个新的目录\HTB-NEST\Secure$\IT\Carl\

219.png

在RU目录上发现了一个C#的项目

218.png

在Module1.vb这个文件上发现存在RU_Config.xml这个文件,这个文件包含了用户名和密码信息

216.png

根据代码的提示,程序要运行需要RU_Config.xml文件,设置断点,可以看到解密成功的密码

212.png

因为目标主机没有开放22端口,所有只能通过SMB服务的Users文件夹中进行fIag值提取

211.png

用户提权

使用C.Smith账号登录到SMB应用后,发现了一个备份文件的xml,下载分析后发现了一个新的SMB路径

210.png

从应用程序的端口上看,这个应用是运行在4386端口的,也就是之前的telnet端口,开启Debug模式
并进入C:\Program Files\HQK这个目录下

209.png

进入到LDAP目录中,查看LDAP.conf文件,发现了Administrator用户的加密值

208.png

为了更好地分析密码是通过怎样进行加密的,因此需要对HqkLdap.exe这个程序进行代码分析
将其导入到dnSpy程序中进行分析

206.png

可以深层次看到代码逻辑是,通过命令行去传递文件中读取配置。因为DS函数涉及到密码的加密方式
因此可以去跟踪一下这个函数的具体实现方法

33.png

然后跟踪到RD这个方法上,RD这个方法是将密文还原成明文的形式。对比Utils.vb这个文件
里面的代码实现逻辑是和RD这个方法一致的

20.png

因此可以根据这些代码,保留大部分的代码,并别写解密脚本

using System;
using System.IO;
using System.Text;
using System.Security.Cryptography;
namespace Dec {
class Decryptor {
public static void Main() {
   
        var EncryptedString = "yyEq0Uvvhq2uQOcWG8peLoeRQehqip/fKdeG/kjEVb4=";
        var pt = Decrypt(EncryptedString, "667912", "1313Rf99", 3,"1L1SA61493DRV53Z", 256);
        Console.WriteLine("Plaintext: " + pt);
}
   
public static String Decrypt(String cipherText, String passPhrase, String saltValue, int pass
wordIterations, String initVector,int keySize) {
   
        var initVectorBytes = Encoding.ASCII.GetBytes(initVector);
        var saltValueBytes = Encoding.ASCII.GetBytes(saltValue);
        var cipherTextBytes = Convert.FromBase64String(cipherText);
        var password = new Rfc2898DeriveBytes(passPhrase, saltValueBytes,passwordIterations);
        var keyBytes = password.GetBytes(keySize / 8);
        var symmetricKey = new AesCryptoServiceProvider();
        symmetricKey.Mode = CipherMode.CBC;
        var decryptor = symmetricKey.CreateDecryptor(keyBytes, initVectorBytes);
        var memoryStream = new MemoryStream(cipherTextBytes);
        var cryptoStream = new CryptoStream(memoryStream, decryptor,CryptoStreamMode.Read);
        var plainTextBytes = new byte[cipherTextBytes.Length];
        var decryptedByteCount = cryptoStream.Read(plainTextBytes, 0,plainTextBytes.Length);
        memoryStream.Close();
        cryptoStream.Close();
        var plainText = Encoding.ASCII.GetString(plainTextBytes, 0,decryptedByteCount);
        return plainText;
                }
        }
}

使用mcs命令生成一个exe文件,命令为mcs decrypt.cs,并运行他获得Administrator的明文值

19.png

18.png

最后使用psexec.py脚本获得SYSTEM32的权限

16.png

您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

关注

0

粉丝

9021

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.