freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

靶机HacktheBox之Nest
2022-05-31 09:22:15
所属地 广东省

信息收集

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

image.png

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

image.png

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

image.png

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

image.png

漏洞利用

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

image.png

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

image

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

image

image

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

image

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

image

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

image

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

image

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

image

用户提权

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

image

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

image

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

image

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

image

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

image

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

image

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

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 passwordIterations, 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的明文值

image

image

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

image

# 渗透测试 # 网络安全技术 # HackTheBox
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者