靶机w1r3s

下载靶机镜像,顺利打开
nmap四项扫描获取信息
ip a
查看当前主机信息kali的IP为192.168.1.135
nmap -sn 192.168.1.0/24

-sn: 这是该命令的核心参数。
- 它代表 Ping Scan(在旧版本中也写作
-sP)。 - 它的作用是只进行主机发现,不进行端口扫描。Nmap 会尝试联络目标 IP,如果对方有回应,就标记为“Up”(在线),然后跳过后续复杂的扫描工序。
192.168.1.0/24: 指定扫描的目标范围
当你运行这条命令时,Nmap 会像“点名”一样,向该网段内的所有 256 个 IP 地址发送探测数据包(如 ICMP 回显请求、TCP ACK 等)。
(以上为ai解释)
扫描出来多了一个192.168.1.132为靶机地址
nmap -min-rate 10000 -p- 192.168.1.132 -oA nmaps

以10000的速率扫描靶机Ip将内容全格式存储到文件夹nmapscan下

这个指令出自 Nmap(网络扫描工具)。
它的作用是“一箭三雕”,即:一次性将扫描结果保存为三种最主要的文件格式。这比分别输入三种输出命令要方便得多。
生成的三种格式详述
当你运行 nmap -oA my_scan <目标> 时,你的文件夹中会多出三个文件:
| 文件后缀 | 格式名称 | 主要用途 |
|---|---|---|
.nmap |
标准输出 (Normal) | 适合人类阅读。内容和你直接在终端屏幕上看到的扫描结果完全一致。 |
.gnmap |
Grep 格式 (Grepable) | 适合命令行处理。将结果按行整理,方便使用 grep、awk 或 cut 等工具快速筛选特定的 IP 或端口。 |
.xml |
XML 格式 | 适合程序解析。这是最重要的数据格式,可以被导入到 Metasploit、Zenmap 或各种漏洞管理系统中,也可以用于编写自动化脚本。 |
-p-
-p在nmap扫描中用于指定端口,-这里指扫描所有默认端口( 1 到 65535)如果只有-p则只扫描默认的1000个端口。
grep open nmapscan/ports.nmap |awk -F’/‘ ‘{print $1}’

筛选nmap结果中所有开放的端口
第二部分:awk -F'/' '{print $1}'
- 作用:切割与提取。
-F'/':告诉awk使用斜杠/作为分隔符来切分每一行。{print $1}:打印切分后的第一部分。

结合.nmap文件中的内容能更直接观察命令作用

将端口赋值给ports变量,便于后续操作(我觉得无所谓,刚开始手打就好了,省的还要记忆过多命令造成混乱)
sudo nmap -sT -sV -sC -O -p21,22,80,3306 192.168.1.132 -oA nmapscan/detail
最重要的扫描,主要看参数
-sT
执行 TCP 全连接扫描。Nmap 会完成完整的 TCP 三次握手
-sV
版本探测。Nmap 不仅会告诉你端口是开着的,还会尝试通过指纹对比确定具体的软件版本(例如:是 Apache 2.4.50 还是 nginx 1.18)。
-sC
使用 默认脚本 (Default Scripts) 进行扫描。它会自动运行一组常用的 Nmap 脚本 (NSE),用于探测常见的漏洞或获取更多服务信息(例如获取 HTTP 标题或 SSH 密钥指纹)。
-O
操作系统探测。通过分析目标机对 TCP/IP 数据包的响应特征,推测目标运行的是 Linux、Windows 还是其他系统,甚至能估算出内核版本。

sudo nmap -sU –top-ports 20 192.168.1.132 -oA nmapscan/udp

-sU
和-sT类似,T是TCP协议所以U是UDP协议,挺好记的
–top-ports 20
扫描最常见的20个端口
sudo nmap –script=vuln -p21,22,80,3306 192.168.1.132 -oA nmapscan/vuln
–script=vuln
这是最核心的参数。它调用了 Nmap 脚本引擎 (NSE) 中的 vuln 分类脚本。
- Nmap 会针对你指定的端口,自动运行几十个已知的漏洞检测脚本(如检测 CVE 漏洞、弱口令、MS17-010、常见的 Web 漏洞等)。
利用已有信息进行尝试
之前对于ftp端口的扫描发现ftp能够进行访问,因此这里使用ftp的anonymous用户无需密码即可下载ftp上的文件

看到存在三个文件夹


下载所有文件

打印所有内容。
01ec2d8fc11c493b25029fb1f47f39ce
观察这段内容

使用工具hash-identifier可以查看内容使用什么加密算法,这里是Md5

再来看SXQgaXMgZWFzeSwgYnV0IG5vdCB0aGF0IGVhc3kuLg==,很明显base64

-d:decrypt解密的意思
这意味着这些信息可能没有作用

这里给了一些员工的信息和职位,在实战中需要留意,这给了我们很多思考的方向
这两条信息,明显是被翻转过了,因此我们找一个翻转工具,看一下是什么内容


还是告诉我们这条方向是没用的,因此需要重新考虑

刚刚看到有mysql服务,尝试一下
mysql -h 192.168.1.132 -u root -p
-h 192.168.1.132:
-h代表 Host(主机)。- 指定你要连接的数据库服务器 IP 地址。如果不加这个参数,默认会尝试连接你本地的
localhost。
-u root:
-u代表 User(用户)。- 这里指定以 root 用户身份登录。在数据库中,root 通常是拥有最高权限的超级管理员。
-p:
-p代表 Password(密码)。- 注意:参数后面没有直接写密码。这样做是为了安全,按下回车后,终端会提示你输入密码,且输入过程是不可见的(隐藏回显)。
没有成功,放弃了

浏览器访问一下,是一个ubuntu网页
爆破一下网页
sudo gobuster dir -u http://192.168.1.132 –wordlist=/usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt
gobuster是工具名
gobuster dir:
启动 Gobuster 并指定模式为 **dir (directory)**。这告诉工具你要找的是隐藏的路径/目录。
-u
指定目标 **URL ** http://192.168.1.132
–wordlist=/usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt
选择用哪个字典

发现了三个文件夹,打开看一下



administrator文件夹可以查看

next进去告诉我们使用Cuppa CMS,可以以此展开。


因为知道该网站使用Cuppa CMS,因此使用searchsploit查找有没有已发现的漏洞进行利用-

使用 -m 参数,你可以一键把这个脚本“镜像”到你现在的文件夹里,方便你后续的查看、修改和运行。命名为25971

漏洞利用点


直接用发现打不开,因为之前访问administrator成功了,所以思考在安装的时候administrator是否作为根目录

发现有反应但是没有读出来passwd
这里我们看一下cuppa cms的源码,看看能不能发现问题

找到searchsploit中介绍的漏洞点
curl –data-urlencode ‘urlConfig=../../../../../../../../../etc/passwd’ http://192.168.1.132/administrator/alerts/alertConfigField.php

curl
一个利用 URL 语法在命令行下工作的文件传输工具。
--data-urlencode:
- 这个参数会将数据进行 URL 编码 后通过 POST 请求发送。
- 在处理像
../这种可能包含特殊字符的攻击载荷时,使用编码可以确保数据在传输过程中不被 Web 服务器误解或截断。
'urlConfig=../../../../../../../../../etc/passwd':
urlConfig: 这是目标 PHP 脚本接收的参数名。../(点点斜杠): 这是“返回上一级目录”的操作。通过连续使用多个../,攻击者试图跳出 Web 服务器的根目录(通常是/var/www/html/),进入系统的根目录/。/etc/passwd: 这是一个所有用户可读的文件,包含了系统中所有用户的列表、UID、GID、家目录路径以及使用的 Shell 类型。虽然现代系统不在这里存储明文密码(密码在/etc/shadow中),但获取此文件通常是确认漏洞存在的第一步。
目标 URL: http://192.168.1.132/administrator/alerts/alertConfigField.php
- 看起来攻击者认为这个特定的 PHP 文件在处理
urlConfig参数时,直接将其作为路径引用(例如使用了include(),require(), 或file_get_contents()等函数),且没有进行有效的路径清理。

成功获取了passwd中的内容
发现每一行第二个内容都有X推断密码是以哈希的方式存在shadow文件中的
x: 密码占位符(表示实际加密后的密码存储在 /etc/shadow 中,无法直接看到)。
所以去查看shadow文件
curl –data-urlencode ‘urlConfig=../../../../../../../../../etc/shadow’ http://192.168.1.132/administrator/alerts/alertConfigField.php

用户名 (daemon):账号名称。
加密密码 (*):
- 如果是
\*或 **!**:表示该账号被锁定,无法通过密码登录。 - 如果是
$id$salt$hash格式:那才是真正的哈希值(例如$6$代表 SHA-512 算法)。 - 注:你当前看到的全是系统服务账号,它们通常不设置密码,所以显示为
\*。
最后一次修改密码的时间 (17379):从 1970 年 1 月 1 日起计算的天数。
最小修改间隔 (0):两次改密码之间最少隔多少天。
最大修改间隔 (99999):密码多少天后必须更改。
提前警告天数 (7):密码过期前几天开始提醒用户。
宽限天数:密码过期后多少天内还能用(空代表无限期)。
账号失效时间:空代表永不失效。
保留字段:留作未来使用。
成功读取shadow中的密码,接下需要对可解密的密码进行解码

筛选出有hash加密的信息,存放进shadow.hash文件中

使用工具john进行解密

爆出来了密码,尝试能否连接
成功

到此成功。
