Commit靶场学习笔记

前言

本文通过拆解靶场中 80 与 2222 端口的渗透过程,详解 Nmap 端口扫描、dirsearch 目录遍历、Burpsuit 爆破枚举等工具的使用,以及文件读取漏洞构造、sshd_config 配置文件审计、系统文件时间对比分析等核心思路,旨在为 CTF 攻防实践提供可落地的渗透测试方法与问题排查思路,帮助理解靶场环境中各类漏洞的发现、利用与提权逻辑。

正文

1、端口扫描

使用Nmap扫码靶机端口:

bash 复制代码
nmap -sV -v -T4 -A 192.168.31.77

发现靶机开放80和2222端口:

进入80端口里,发现一个网页。

2、HTML代码审计

Ctrl+U查看网页源代码,看到注释处有用户名和密码:

3、目录遍历

对靶场开放的网页目录遍历:

bash 复制代码
dirsearch -u 192.168.31.77

发现login.php:

拿着上一步获取的用户名密码成功登录:

扫描完发现,还有一个上传目录upload:

说明可能存在文件上传漏洞:

4、文件读取漏洞利用

审计这个网页,发现一行逻辑:

这段代码的本意是「只允许读取以 file:// 开头的文件」,但实际逻辑等同于:

只要用户在 URL 里传 ?file=file://[文件路径],服务器就会读取并输出这个文件的内容。

编写文件读取命令:

html 复制代码
?file=file:///etc/passwd

发现一个高权限用户lingmj,现在得想办法读取到lingmj用户的密码。

继续构造文件读写命令:

html 复制代码
?file=file:///home/lingmj/.bash_history

发现存在编辑了.git目录下的config文件记录:

查看下这个config文件,拿到flag:

html 复制代码
http://192.168.31.77/dashboard.php?file=file:///home/lingmj/.git/config

成功远程拿到lingmj用户:

5、代码审计

检查系统中已安装软件包的文件完整性:

html 复制代码
dpkg -V

这么多改动的,靶机里有一些历史遗留的文件,其实也看不出来改动了什么。

方法(1):开动脑经,查阅sshd_config文件。

仔细想想,作者把靶机端口改成了2222,那说明/etc/ssh/sshd_config里面应该有猫腻,

进入查看:

html 复制代码
cat /etc/ssh/sshd_config

代码审计发现藏了一组用户密码。

方法(2):Brupsuit爆破枚举修改的目录

靶机作者出题,肯定会修改一些目录,

利用SecLists 这个渗透测试字典库的LFI-gracefulsecurity-linux.txt字典

bash 复制代码
cp /usr/share/seclists/Fuzzing/LFI/LFI-gracefulsecurity-linux.txt /root/Desktop

用Brupsuit爆破一下:

6、用户提权

尝试切过去:

html 复制代码
su - root

发现flag。

7、后话

比赛的时候,通过具体的修改的时间,来比较passwd和passwd-文件,确定哪个藏着猫腻:

html 复制代码
ls -l --full-time /etc/passwd
ls -l --full-time /etc/passwd-

也可以在整个系统(/)中查找所有比 /etc/passwd 文件更新(修改时间更晚)的文件目录,同时过滤掉包含 sys|proc|var|run|share|dev|ltmp|git 这些路径的结果:

html 复制代码
find / -newer /etc/passwd 2>&1 | grep -Pv 'sys|proc|var|run|share|dev|ltmp|git'

2>&1是 Shell 重定向语法,作用是:

  • 2 代表标准错误输出(stderr)(比如 find 遍历无权访问的目录时会报错);
  • 1 代表标准输出(stdout)(正常的查找结果);
  • 2>&1:把错误输出重定向到标准输出,让错误信息也能被后续的 grep 过滤(否则错误信息会直接打印到终端,无法过滤)。

grep -Pv 'sys|proc|var|run|share|dev|ltmp|git'

  • |:管道符,把前一个命令的输出作为后一个命令的输入; grep:文本过滤工具;
  • -P:启用 Perl 兼容的正则表达式(让 | 能在正则里表示「或」);
  • -v:反向匹配 ------ 只保留不匹配后面正则的内容(即过滤掉包含指定字符串的行);
  • 'sys|proc|var|run|share|dev|ltmp|git':正则表达式,匹配包含 sys、proc、var等任意一个字符串的行,-v 会把这些行过滤掉(因为这些目录多是系统临时 / 动态目录,无需关注)。

为什么要过滤这些目录?

sys/proc/dev 是系统伪文件系统(内存中动态生成,不是真实磁盘文件),var/run/share 是系统运行时目录,遍历这些目录会产生大量无意义结果和权限错误,过滤后结果更精准。

更美化的写法:

bash 复制代码
# 更优雅的写法:屏蔽错误输出,只保留正常结果过滤
find / -newer /etc/passwd 2>/dev/null | grep -Pv 'sys|proc|var|run|share|dev|ltmp|git'
相关推荐
职豚求职小程序22 分钟前
易方达基金27秋招笔试|场次+考情全梳理
笔记
m0_715674437 小时前
可视化易用·低误报率·跨区域部署:知源-AI数据分类分级系统在金融行业的落地实践
网络·安全·网络安全
国科安芯7 小时前
四重证据,一条逻辑链:商业航天级微控制器MCU抗辐射验证方法学综述——以国科安芯AS32S601为例
人工智能·单片机·嵌入式硬件·mcu·安全·抗辐射
dk_tjy7 小时前
AI驱动的自动化攻击背景下:企业端点安全体系的技术架构与建设路径
网络·人工智能·安全·自动化·终端安全管理·数据防泄漏
dadaobusi7 小时前
学习: PCIe 6.0 的 L0p
学习
燕落南枝9 小时前
CSS 学习:类型选择器与 AI 注释实战
css·人工智能·学习
梦想出海-Phoebe11 小时前
AI Agent能实现自主复制吗?Anthropic研究揭示模型部署与IoT设备安全问题
人工智能·物联网·安全
Swilderrr13 小时前
论文精读:《Directory-Aware Query and Maintenance in Vector Databases》
笔记·学习
kkkkkkkkkk_Z13 小时前
新手自学嵌入式 | 学习日记:LCD显示原理、PWM控制、电容触摸屏(GT9147)驱动开发与项目实战
驱动开发·学习
SatanII13 小时前
K8s 存储与配置管理|Volume、ConfigMap、Secret 核心笔记
笔记·rpc·kubernetes