nmap
└─$ sudo nmap -sS 10.10.11.245 -p- --min-rate=10000
Starting Nmap 7.94 ( https://nmap.org ) at 2023-12-10 23:47 EST
Nmap scan report for surveillance.htb (10.10.11.245)
Host is up (0.25s latency).
Not shown: 65533 closed tcp ports (reset)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
域名是surveillance.htb,因为周日打完了所以加过了,这里还没打的自己加一下hosts
└─$ sudo nmap -sS 10.10.11.245 -sV -A -T4 -O -sC -p80 --min-rate=10000
Starting Nmap 7.94 ( https://nmap.org ) at 2023-12-10 23:51 EST
Host is up (0.25s latency).
PORT STATE SERVICE VERSION
80/tcp open http nginx 1.18.0 (Ubuntu)
|_http-title: Surveillance
|_http-server-header: nginx/1.18.0 (Ubuntu)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Aggressive OS guesses:
Linux 5.0 (97%), Linux 4.15 - 5.8 (96%),
Linux 5.3 - 5.4 (95%), Linux 2.6.32 (95%),
Linux 5.0 - 5.5 (95%), Linux 3.1 (95%),
Linux 3.2 (95%), AXIS 210A or 211 Network Camera (Linux 2.6.17) (95%),
ASUS RT-N56U WAP (Linux 3.4) (93%), Linux 3.16 (93%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 2 hops
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
访问一下到处点点,顺便爆一下vhost和目录
目录爆出
web看到有用到craft,还有版本
访问下爆出来的目录 http://surveillance.htb/admin/login
,是craft cms,版本上面看到是4.4.14
百度下(几台vps上的环境被我做实验玩坏了。抽时间修一下梯。。)
推荐看这个
https://cloud.tencent.com/developer/article/2365764
说实话思考半天也没想到怎么简单的利用这个洞,纠结了半天poc里的call_user_func
最后还是在帖子上看到个
结合msl利用,来实现rce…但是我好懒。
于是找到了https://gist.github.com/gmh5225/8fad5f02c2cf0334249614eb80cbf4ce
决定梭哈,get~
然后开始翻目录…
然后翻到个数据库备份
传出来 翻一翻
找到一个admin的好像是密码
然后看到有个用户叫zoneminder
可能是目标
linpeas正巧又扫出个密码,不知道是啥先收着了
收集信息时候看到有开53,8080,3306
没啥头绪了,然后跑了下上面的密码
拿去登录matthew试试
登上来了
访问一下8080有点好奇是啥
好像是一个奇怪的web…
起个代理看下
这里我用收集到的密码上不去…
换别的方式,可以看到应用名是ZoneMinder
找下cve
…意外的容易找,第一个就是rce
可以看到msf就有…
手动搞的话可以像下面这样,拿到token,写命令执行就ok,例子里是touch /tmp/pwn
我选择msf…
随便执行一个看到有报错
挨个玩一玩8
发现可以读…
这里用user读的时候会报权限不足,暴露了配置文件的位置
我想可能是配置文件污染,于是尝试写入到配置文件中
没写入权限,配置污染应该是走不通了
当时其实是在这里僵住了半天然后开始审zm*.pl
然后在zmcamtool.pl看到他的exportsql函数好像可以利用
这里好像是直接执行了命令 可以利用的点有$ dbUser $ dbPass $ name其中$name是ARGV[0]传入的 但是又过滤…
于是尝试利用一下
很怪366行报错了
…qx给拦了?看了下perl
好吧,然后按照这个思路再看看别的脚本,要找qx之前执行的部分…
然后我翻遍了…zmfilter.pl
然后感觉zmfilter.pl好像也有戏
G
这个audit直接就玩不明白了…
然后翻啊翻,翻到update时候看这边有一个 patchDB好像也是有调用
然后看了下谁调用了这个
翻了下在很上面的位置有个判定$version的…但是翻到了才发现他自己就有个qx。。。
往上追了下
这个也是正常赋值就行
然后继续测…
可以看出他好像是连了下数据库?
看报错是走完这里了。
好像是有默认的用户名和user
应该是在这里获取的,所以我想直接修改am_db_user为我的命令执行返回值,不知道可不可以…然后发现这个值是从zm目录下的conf获取的…改不了
然后尝试替换一下dbUser看看会返回啥…给了几个特殊符号就变成这样了
命令给的这个
好像是有搞头
然后尝试截断
啊啊~
直接构造把flag拿出来试试
芜湖~get啦
好久没更新了。因为最近想去看live,所以一直在超市兼职打工攒钱导致没时间更新,前段时间看到夏洛克给开了就给打了,可惜漏了一个靶机,还卡住一个和一个疯狂还没打,抽时间最近会抽时间尝试一下疯狂难度的,如果有师傅需要夏洛克机器的wp过程的可以留言一下…我应该会抽时间写
最后安利一下live…
白白