这个破靶机难度不高但是也不低…考的东西蛮多,卡在主页太久了,收集完信息后一直太多时间浪费在fuzz首页的download接口,感谢hxd发现afr有路径过滤,要不这靶机彻底卡这了。
惯例nmap扫一下
无视22,看到开了53和80 ,看到53是起了dns的,话不多说直接把自己的dns指向他
再接着看web
ng的1.18应该…这个靶机能用的上的漏洞我是真没找到
1.首页有两个here
看眼源码
第一个对应http://snoopy.htb/download
第二个对应http://snoopy.htb/download?file=announcement.pdf
有域名,加到解析里,然后点击下载这俩
下出俩压缩包来
看了一下,第一个链接下的zip比第二个连接的zip多了个视频,可能是因为第二个链接file参有指定文件名,所以我这时候就怀疑大概率有任意文件下载。
查询一下压缩包里东西的成分
zip本体
pdf文件
mp4文件
查了下skia m106没啥能用的漏洞,其他没看出啥东西,接着点进去看看文件内容
pdf结尾又有个邮箱,对应的人是sally brown,职务pr
还有个mp4结尾又有个邮箱
2.about页面有人员信息,包括姓名、职务、邮箱共四个(其中这个sally brown和她的邮箱在上面也多次出现,这人怕不是工贼),team部分也是同样的内容
3.contcat部分泄露疑似公司邮箱指向的域名mail.snoopy.htb,以及这个域名依据上面所说应该是正在进行迁移。
点击发送信息,提示报错
整理一下目前web收集到的信息
目前存疑的点在于home的文件下载和contcat页面的提交,需要检验下是否存在漏洞可以利用。
检验下contcat页的,发现这个属实没啥搞头…可能这个就单纯的用来告诉你他家邮箱是真挂了…
再来搞首页的下载部分,我怀疑那个download应该是指向的一个目录,而这个目录下只有一个pdf和一个mp4,所以加个file后面跟这个目录下pdf的名字下出来的就只有一个pdf,所以尝试一下。
先搞一个大概率这个目录下不存在的文件,看看会不会返回内容。
并没有返回,于是在尝试改为mp4的文件名字,看看能否单独下载那个mp4,验证一下他可以下载目录下文件的想法。
可以看到确实是可以下
于是判断download的指向会不会是可以利用,或许file不是利用点
还是不行,于是先不在这浪费时间了。
开始尝试爆子域,因为他的53开了dns,指到他的dns上,大概率是能爆出什么东西来。
爆出来两个ns,www,mm,mail,全加到hosts里。
然后挨个尝试访问,发现只有mm可以正经访问
在看看有没有能利用的功能点
点进去用不了,估计没开这个
再试试别的
用注册邮箱重置密码,于是用上面收集到的邮箱尝试一下。
发不出去邮件,可能和contcat页面的提示的mail域正在做调整有关系,于是尝试往其他不存在的邮箱发送邮件。
我再试试一个随便构造的snoopy邮箱是啥反应
ん?看样子是会先数据库查一下验证邮件用户存在的话就尝试发送,不存在的话就找个地方丢出去了。
又因为邮箱域挂了,所以存在的用户会报邮件无法发送。
这台靶机最开始扫的时候dns显示是bind搭的,所以如果操纵域名将其目前可能无解析指向的mail域给指向到我们本机来进行收重置密码的邮件应该是可行的。
但是不论是用rndc(这个要开953端口,后面试了下这靶机用不了)还是nsupdate都需要用到key…问题是key是写在服务器里name.conf文件里的,最开始home首页的疑似任意下载也没法利用,于是卡在这好久好久…
直到hxd发现一开始的home的下载点有过滤机制得双写绕过…我也是哭了。
直接开整
get√
顺便看下其他配置文件
看得出思路确实是正确了
要用key访问,允许的源ip也是我们tun段的
确实是没看到mail…
key也拿到了,于是开搞
加好力,在验证一下
起个smtpd准备接邮件
他俩聊着…我把所有的账号都翻了个遍,最后发现sbrown是管理所以更有翻一翻的价值…
这里发现sbrown这个用户比其他用户多了一个integrations,于是点进去看看
前俩没没啥用,第三个点进去看到是个API
呕吼
找个地方触发一下试试
吼吼 填一下
不知道他要往2222口丢什么东西,所以开个nc判断下
啊 连接仙人ですわ 居然妄图连我
不过话说回来他既然ssh我 肯定会提交密码或者撞钥匙,于是我起了个蜜罐抓一下…
get
你连我 我也连你ですわ
进来之后看看sudo命令发现不得了,居然有git
看眼用户
啊…这么多人,看眼home下面都有哪些
只有俩是吧,你们其他同事是不是不用上班的啊
于是判断 不论是从sudo还是家目录来看 下一个提权的目标用户都应该是sbrown
于是研究一下怎么用git提权…
这里只允许我们用git来还原版本,可以尝试用sbrown的权限来把公钥文件写到他.ssh里面,
于是开始构造
我以为成了,但是连了下没连上,突然发现tmp下面多了个home…我人傻了
wtm…看样是在哪个目录执行他在哪开始写,不支持绝对路径
于是我寻思到home下执行这个文件,但是突然一看…sudo有限制没法在/home执行/tmp下的文件,这个大哥给我限制的是死死地。
于是目前变成了必须要找一个,我执行命令用的配置文件必须在我当前目录下,不能用其他路径下的,而且这个还要能干涉到sbrown家目录下的地方。
我特么直接一个ln干到他家目录,反正访问链接的人是sbrown
于是撸一个配置让sbrown执行创建一个ln
记得给家目录和当前目录一个权限啊,不然sbrown一直提示找不到文件,我还以为我写的有问题执行不了
然后就报错了…好怪啊
这个方式我感觉应该是没问题的,但是会提示is beyond a symbolic link,因为git压根就不允许他不允许出现链接的形式…我给忘了
最后在文档里查到了一种改名绕过链接检测的方式…感觉这应该是个cve,当前版本估计还没修。
先创建软连接,然后在用第二个文件改写链接名之后再接着执行写入,就成功写进去了。
我自己测试rename的机制是会把原来文件给删掉,然后创建一个重命名后的新文件,虽然重命名了但是除了名字其他都不变,紧接着又在内存里执行了下面的写入操作,可能这个漏洞就是利用了这个机制躲过了软链接检测。
如果我在这创建软连接之后再把改文件名和写入分为两个文件前后单独执行的话,他就会依旧报软连接错误。
不知道后面的版本有没有修…
只有让用clamav来扫东西的权限,于是找找clamav --debug下有啥漏洞可以用
一顿乱找找到一个CVE-2023-20052和CVE-2023-20032
用一下CVE-2023-20052吧,直接读root下的flag,github上能找到老哥的利用方式,也简单
https://github.com/nokn0wthing/CVE-2023-25002
不过在那之前还得先确认下root的flag文件叫啥名字…这里我创建了一个软连接到root下给他扫…他会显示root下每个文件的名字。
ok还是root.txt
genisoimage -D -V "exploit" -no-pad -r -apple -file-mode 0777 -o test.img .
先创建一个img文件
然后用libdmg-hfsplus包里的dmg把img转个dmg出来
再把头上那段
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
替换成
<!DOCTYPE plist [<!ENTITY xxe SYSTEM "/root/root.txt"> ]>
可以像那个老哥一样用bbe,毕竟是个二进制文件…
bbe -e 's|| ]>|' -e 's/blkx/&xxe\;/' test.dmg -o exploit.dmg
改好之后传进去就行,然后用clamav扫一下…
getroot
这靶机user难度和root难度差距挺大的,有蛮多值得学习的地方,在wp里我也特意留了些坑,希望大伙不要只抄答案,学会自己思考试验每一步,真正把知识学到手里…