1.15 渗透测试

CTF4 靶机渗透测试报告

一、漏洞的发现与验证

1.1 信息收集

1.1.1寻找目标靶机

在虚拟机中打开目标靶机,使用 NAT 模式连接网络,在自己的 kali 上面使用 arp-scan -l扫描存活的主机找到靶机的ip地址,排除掉结尾为 .1,.2,.254的ip 找到目标靶机的ip地址为 192.168.5.131

img

1.1.2扫描靶机开放端口,功能,版本

使用 nmap -sS -sV -O -p- 192.168.5.131 扫描目标靶机的开放端口版本号等

可以发现有一个 80 端口是 HTTP 协议的端口,应该是个网站可以利用

img

1.1.3目录扫描

使用 dirb ``http://192.168.5.131:80`` 来扫描目录

得到了一些可能有价值的文件目录

【最高危】****/admin/ 管理后台****目录

路径 状态码 风险点 利用方向
/admin/admin.php 200 管理后台核心文件,极可能存在登录 / 权限漏洞 1. 直接访问测试弱口令(admin/admin、admin/123456)2. 查看页面源码,寻找隐藏接口 / 参数3. 测试 SQL 注入(如 admin.php?id=1’)
/admin/index.php 200 管理后台首页,可能存在未授权访问 1. 测试是否无需登录即可访问2. 寻找页面中的功能点(如用户管理、文件上传)
/admin/inc/ 目录可列 包含后台配置 / 函数文件,可能泄露敏感信息 1. 访问目录查看文件列表,下载 .php/.inc 文件2. 查找数据库配置文件(如 config.inc.php)

【高危】****/mail/ 邮件系统目录

邮件系统是渗透测试的重点目标,通常包含配置文件、用户数据、文件上传等漏洞点:

关键路径 状态码 利用方向
/mail/index.php 302 302 跳转通常是未登录重定向,目标大概率是登录页 1. 追踪跳转地址(浏览器 F12 Network 查看)2. 测试通用邮件系统弱口令
/mail/config/ 目录可列 配置目录,极可能存在数据库连接信息 1. 访问 /mail/config/index.php 或直接查看目录文件2. 寻找 config.php/database.php 等文件
/mail/configure 200 系统配置脚本,可能是安装 / 初始化页面 1. 访问测试是否能重新配置系统2. 查看是否存在配置项泄露(如数据库账号密码)
/mail/plugins/ 多插件目录 插件通常存在漏洞(XSS、文件包含) 1. 逐个访问插件目录(如 calendar/、demo/)2. 测试插件参数的 XSS/SQL 注入

【中高危】****/calendar/ 日历系统目录

关键路径 状态码 利用方向
/calendar/index.php 200 日历系统首页,可能存在信息泄露 1. 测试参数注入(如 index.php?month=1’)2. 查看 README/TODO 文件,获取系统版本和漏洞线索
/calendar/includes/admin.php 200 日历系统管理接口 1. 测试未授权访问2. 寻找文件上传功能

可列目录

扫描结果中多个目录标记 Directory IS LISTABLE,直接访问可查看文件列表,优先级最高的是:

  • /images/:可能包含后台截图、敏感图片
  • /inc/:系统核心函数 / 配置目录,必看
  • /pages/:可能包含未授权访问的页面
  • /sql/极高危,可能包含数据库备份文件(.sql),直接下载获取用户数据

特殊文件与状态码

路径 状态码 意义 操作
/restricted 401 需要身份验证(Basic Auth) 测试弱口令(admin/123456、root/root)
/robots.txt 200 爬虫协议文件,可能泄露隐藏路径 访问查看,寻找 Disallow 标记的路径
/cgi-bin/ 403 CGI 脚本目录,通常权限严格 尝试常见 CGI 脚本(如 test-cgi),测试解析漏洞
/conf 500 配置文件,访问报错可能是权限问题 尝试换方法访问(如目录遍历 ../conf)

img

2.1 sql 注入

2.1.1注入页面的文章选择 url 存在 sql 注入

在文章选择的url中有id =1这种标志,怀疑存在 sql 注入

img

2.1.2验证是否存在

在页面 url 中输入 ‘ 尝试闭合,发现页面报错说明该位置存在 sql 注入注入点

img

2.1.3 使用 sqlmap 获取 payload

使用 sqlmap -u "``http://192.168.5.131/index.html?page=blog&title=Blog&id=1``" 获得payload

img

img

2.1.4 用 sqlmap 获取数据

使用 sqlmap -u "``http://192.168.5.131/index.html?page=blog&title=Blog&id=2``" -dbs

获取数据库名

发现 “ehks” 是有用的数据库

img

使用 sqlmap -u "``http://192.168.5.131/index.html?page=blog&title=Blog&id=2``" -D ehks -tables

获取表名

很明显是需要 user 这个表

img

使用 sqlmap -u "``http://192.168.5.131/index.html?page=blog&title=Blog&id=2``" -D ehks -T user -dump

获取表中数据

img

2.1.5使用 ssh 远程连接 RCE

得到用户的账密之后使用 ssh 进行远程连接(使用achen)

使用 sudo ssh -oHostKeyAlgorithms=+ssh-rsa -oKexAlgorithms=diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1 achen@192.168.5.131

之后输入密码即可连接成功

img

2.1.6提权

RCE之后输入 sudo su

就可以得到 root 权限

img

2.2.1在收集到的 /calendar/index.php 目录页面存在sql注入

在这个页面的登录框可能存在 sq l注入

img

2.2.2验证是否存在

使用 ‘ 来验证,结果发生报错,说明存在

img

img

2.2.3后续仍然使用 sqlmap

2.3.1 在收集到的 /admin/inc/blog.php 目录页面存在 sql 注入

img

2.3.2验证是否存在

使用 ‘ 观察是否报错

报错则表示存在 sql 注入

结果说明存在 sql 注入注入点

img

img

2.3.3后续仍然使用 sqlmap

2.4.1 在 http://192.168.5.131/calendar/index.php?action=search&year=2026&month=1&day=15 这个页面存在 sql 注入

这个页面有搜索功能,可能存在sql注入点

img

2.4.2验证是否存在

输入 ‘ 看是否报错,如果报错则存在

结果可以看出存在 sql 注入注入点

img

3.1 xss 漏洞

3.1.1 在 http://192.168.5.131/index.html 主页面搜索框存在xss漏洞

主页面有用户可以交互的搜索框,怀疑存在 xss 漏洞

img

3.1.2构造payload

使用<script>alert(1)</script>

结果出现弹窗说明存在

img

img

3.2.1 在 admin/inc/blog.php 文件目录中存在两个xss漏洞

这个页面有两个用户可以输入的框

怀疑有两个 xss 漏洞

img

3.2.2构造payload

都使用 <script>alert(1)</script> 分别写在上下两个框里

结果都发生了弹窗,说明都存在xss

img

img

img