Windows + Linux 提权
windows提权
还在苦恼Windows提权?这篇超详细总结,从零基础到精通,收藏这篇就够了!-CSDN博客
提权路线:Webshell(apache)、数据库权限 -> 系统普通用户权限 ->Administrator权限 -> System权限
一、信息收集
1 | systeminfo # 查询系统信息,了解系统版本、补丁情况等 |
二、分类:
- 系统内核溢出漏洞提权: 就像钻系统的小窟窿,风险高,收益也高。
- 数据库提权: 从数据库下手,曲线救国。
- 错误的系统配置提权: 系统配置不当,简直是白给。
- 组策略首选项提权: 偷偷修改组策略,神不知鬼不觉。
- WEB中间件漏洞提权: 攻破WEB服务器,直捣黄龙。
- DLL劫持提权: 狸猫换太子,用恶意DLL替换系统DLL。
- 滥用高危权限令牌提权: 偷取令牌,冒充大佬。
- 第三方软件/服务提权等: 抓住第三方软件的小辫子,也能提权。
Linux提权
一、提权原理
Linux 提权主要分为内核提权和其他类型提权。内核提权的优点是针对存在漏洞的内核版本通常可通用利用,但缺点是稳定性差,易导致 shell 丢失或系统崩溃。常见的提权思路包括:先上传信息收集脚本,枚举系统内核和配置;再结合系统开启的服务,进行有针对性的提权操作。
①权限划分
用户和组
- 用户:管理员和普通用户(系统用户,自定义用户)
- 组:在 Linux 中的每个用户必须属于一个组,不能独立于组外在 Linux 中每个文件有所有者、所在组、其它组的概念同样,用户组的信息我们可以在 /etc/group 中查看
/etc/passwd 文件
- 作用: 记录用户基本属性
- 格式: 用户名:密码:用户ID:组ID:用户说明:家目录:登陆之后shell
/etc/shadow 文件
作用:存储用户加密密码及相关账号安全信息
格式: 用户名:加密密码:密码最后一次修改日期:两次密码的修改时间间隔:密码有效期:密码修改到期到的警告天数:密码过期之后的宽限天数:账号失效时间:保留
加密的密码具有固定格式:
$id$salt$encryptedid 表示加密算法,1 代表 MD5,5 代表 SHA-256,6 代表 SHA-512
salt 为盐值,系统随机生成
encrypted 表示密码的 hash 值
文件提权(rwx)
- ls -l:查看当前目录文件的权限
- ls -la:可以查看当前目录全部文件权限(包括隐藏文件)
例如:
drwxr-xr-x 10 echoin echoin 4096 Dec 20 14:57 Desktop
drwxr-xr-x:类型 + 权限d:目录-普通文件r= read(读)w= write(写)x= execute(执行)rwxr-xr-x:权限(owner(rwx)=可读可写可进入/执行;group/others(r-x)=可读可进入/执行,不可写),数值是 75510:硬链接数(目录常见≈2+子目录数)echoin echoin:所有者 / 所属组4096:目录项占用空间(不是目录内文件总大小)Dec 20 14:57:最后修改时间(目录内容变更会更新)Desktop:目录名- 如果你想把权限转成数字(比如 755),对应关系是:
rwx= 7,r-x= 5,所以rwxr-xr-x=755。
特殊提权
- SUID(Set User ID):应用于可执行文件,当该文件被执行时,临时赋予执行者“文件所有者”的权限,而不是执行者本人的权限,常用于如
passwd等系统命令。 - SGID(Set Group ID):作用类似于 SUID,不过是切换到“文件所属组”的权限;若用于目录,则新创建的文件会自动继承该目录的所属组。
- SBIT(Sticky Bit):主要用于目录,表示只有文件的所有者或管理员才有权限删除或修改该目录下的文件,常见于
/tmp目录,用于保护用户的临时文件不被其他用户删除。
②信息收集
工具:LinEnum
LinEnum(收集系统的基本信息)
linux-smart-enumeration(详细的枚举信息)
Linux_Exploit_Suggester(迅速检查该版本是否存在已知漏洞)
Linux提权辅助工具_linux-exploit-suggester.sh-CSDN博客
使用:
1 | # 示例: |

Linux_Exploit_Suggester 运行: ./les.sh

手动收集:
查看系统信息
1 | # 打印所有可用的系统信息 |
用户和群组
1 | # 列出系统上的所有用户 |
查找明文密码
1 | # 在文件中查找包含 "user"(不区分大小写)的行 |
ssh 私钥
1 | # 查看当前用户的 SSH 授权密钥 |
二、Linux提权方法
内核提权
利用工具Linux_Exploit_Suggester(迅速检查该版本是否存在已知漏洞)
/etc/passwd提权
当系统错误地将/etc/passwd设置为可写时,攻击者可以向其中添加一个伪造的 root 用户(UID 为 0)。通过这个账号登录后,就能直接获取系统最高权限。该方法简单有效,常见于配置不当的系统或靶机环境中。
利用:
LinEnum工具:

利用过程:
生成伪造 root 账号密码串
使用openssl或python生成一个加密密码,例如密码为123456

1 | openssl passwd -1 123456 |
构造账号条目
例如添加一个名为hacker的 root 用户
1 | hacker:$1$gsScV.jb$NaQjGTtNccPyBYkFQYNad0:0:0:root:/root:/bin/bash |
追加到/etc/passwd文件中
使用普通用户直接写入
1 | echo 'hacker:$1$gsScV.jb$NaQjGTtNccPyBYkFQYNad0:0:0:root:/root:/bin/bash' >> /etc/passwd |
切换到新账号
1 | su hacker |
Docker提权
Docker 提权是指通过容器配置漏洞或不当设置,突破容器的隔离限制,从而获得宿主机的 root 权限。
SUID提权
SUID(Set User ID)是文件权限的一种设置,当一个文件具有 SUID 权限时,执行该文件的用户将临时获得该文件拥有者的权限,通常是 root 权限。这种权限主要用于允许普通用户执行某些高权限的操作,例如访问或修改系统资源。然而,若某些二进制文件或实用程序错误地设置了 SUID 权限,攻击者便可以利用这些文件提升权限,从而获得 root 权限,造成安全风险
使用信息收集工具,查找root权限的SUID文件
越权:
1 | find / -perm -u=s -type f 2>/dev/null |
Sudo提权
在 Linux 系统中,sudo命令用于让普通用户以其他用户(通常是 root)的身份执行命令。正常情况下,执行sudo需要输入用户自己的密码,但为了运维方便,管理员可能会在sudoers文件中配置某些用户或命令为无需密码(NOPASSWD)即可执行。如果这些配置不当,攻击者可能利用它们执行高权限命令,从而实现本地提权,因此 sudo 配置错误常常是提权的关键入口之一。
通过信息收集工具可以快速扫描系统中存在的 SUID 程序和 sudo 权限配置

若发现用户可以通过sudo执行 Python,通常可以使用以下命令:
1 | sudo python -c 'import os; os.system("/bin/bash")' |
其他命令
1 | sudo /bin/bash |
_定时任务提权
定时任务(cron job)是 Linux 系统中用于定期执行任务的工具,允许系统在指定时间间隔内自动运行命令或脚本。由于 cron 通常以 root 权限执行,如果攻击者能够修改 cron 配置文件或其执行的脚本或二进制文件,就可以利用 root 权限执行任意代码,从而实现提权。攻击者通过获取对定时任务的控制,能够在系统中以 root 权限运行恶意代码,造成严重的安全威胁。
手工查看定时任务的命令vim /etc/crontab
工具查看:

提权命令
1 | #!/bin/bash |