image-20260425143948785

下载靶机镜像,顺利打开

nmap四项扫描获取信息

ip aimage-20260425144116976

查看当前主机信息kali的IP为192.168.1.135

nmap -sn 192.168.1.0/24

image-20260425144302191

-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

image-20260425145443640

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

image-20260425145045838

这个指令出自 Nmap(网络扫描工具)。

它的作用是“一箭三雕”,即:一次性将扫描结果保存为三种最主要的文件格式。这比分别输入三种输出命令要方便得多。

生成的三种格式详述

当你运行 nmap -oA my_scan <目标> 时,你的文件夹中会多出三个文件:

文件后缀 格式名称 主要用途
.nmap 标准输出 (Normal) 适合人类阅读。内容和你直接在终端屏幕上看到的扫描结果完全一致。
.gnmap Grep 格式 (Grepable) 适合命令行处理。将结果按行整理,方便使用 grepawkcut 等工具快速筛选特定的 IP 或端口。
.xml XML 格式 适合程序解析。这是最重要的数据格式,可以被导入到 Metasploit、Zenmap 或各种漏洞管理系统中,也可以用于编写自动化脚本。
-p-

-p在nmap扫描中用于指定端口,-这里指扫描所有默认端口( 1 到 65535)如果只有-p则只扫描默认的1000个端口。

grep open nmapscan/ports.nmap |awk -F’/‘ ‘{print $1}’

image-20260425150606133

筛选nmap结果中所有开放的端口

第二部分:awk -F'/' '{print $1}'
  • 作用:切割与提取。
  • -F'/':告诉 awk 使用斜杠 / 作为分隔符来切分每一行。
  • {print $1}:打印切分后的第一部分

image-20260425150732278

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

image-20260425150947057

将端口赋值给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 还是其他系统,甚至能估算出内核版本。

image-20260425151845861

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

image-20260425152228395

-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上的文件

image-20260425153436696

看到存在三个文件夹

image-20260425153522175

image-20260425153556656

下载所有文件

image-20260425153704563

打印所有内容。

01ec2d8fc11c493b25029fb1f47f39ce

观察这段内容

image-20260425153859878

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

image-20260425154313428

再来看SXQgaXMgZWFzeSwgYnV0IG5vdCB0aGF0IGVhc3kuLg==,很明显base64

image-20260425154423628

-d:decrypt解密的意思

这意味着这些信息可能没有作用

image-20260425154551381

这里给了一些员工的信息和职位,在实战中需要留意,这给了我们很多思考的方向image-20260425154818891

这两条信息,明显是被翻转过了,因此我们找一个翻转工具,看一下是什么内容

image-20260425155034602

image-20260425155052990

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

image-20260425155232199

刚刚看到有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(密码)。
  • 注意:参数后面没有直接写密码。这样做是为了安全,按下回车后,终端会提示你输入密码,且输入过程是不可见的(隐藏回显)。

没有成功,放弃了

image-20260425155718061

浏览器访问一下,是一个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

选择用哪个字典

image-20260425161830797

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

image-20260425161854527

image-20260425161922657

image-20260425164853376

administrator文件夹可以查看

image-20260425165022698

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

image-20260425165213376

image-20260425165331256

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

image-20260425165507261

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

image-20260425165634371

漏洞利用点

image-20260425165736648

image-20260425170228787

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

image-20260425171536465

发现有反应但是没有读出来passwd

这里我们看一下cuppa cms的源码,看看能不能发现问题

image-20260425171935259

找到searchsploit中介绍的漏洞点

curl –data-urlencode ‘urlConfig=../../../../../../../../../etc/passwd’ http://192.168.1.132/administrator/alerts/alertConfigField.php

image-20260425172332874

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() 等函数),且没有进行有效的路径清理。

image-20260425172601943

成功获取了passwd中的内容

发现每一行第二个内容都有X推断密码是以哈希的方式存在shadow文件中的

x: 密码占位符(表示实际加密后的密码存储在 /etc/shadow 中,无法直接看到)。

所以去查看shadow文件

curl –data-urlencode ‘urlConfig=../../../../../../../../../etc/shadow’ http://192.168.1.132/administrator/alerts/alertConfigField.php

image-20260425172834717

用户名 (daemon):账号名称。

加密密码 (*):

  • 如果是 \* 或 **!**:表示该账号被锁定,无法通过密码登录。
  • 如果是 $id$salt$hash 格式:那才是真正的哈希值(例如 $6$ 代表 SHA-512 算法)。
  • 注:你当前看到的全是系统服务账号,它们通常不设置密码,所以显示为 \*

最后一次修改密码的时间 (17379):从 1970 年 1 月 1 日起计算的天数。

最小修改间隔 (0):两次改密码之间最少隔多少天。

最大修改间隔 (99999):密码多少天后必须更改。

提前警告天数 (7):密码过期前几天开始提醒用户。

宽限天数:密码过期后多少天内还能用(空代表无限期)。

账号失效时间:空代表永不失效。

保留字段:留作未来使用。

成功读取shadow中的密码,接下需要对可解密的密码进行解码

image-20260425174128475

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

image-20260425174206953

使用工具john进行解密

爆出来了密码,尝试能否连接image-20260425175315775

成功

image-20260425175458478

到此成功。