当获得了一个webshell的时候,下一步要反弹个shell回来
在尝试了https://github.com/trustedsec/unicorn独角兽失败之后,找到了一篇使用golang将shellcode注入到内存的文章 Bypassing Antivirus with Golang - Gopher it! | JUMPSEC LABS GitHub - brimstone/go-shellcode: Load shellcode into a new process https://golang.org/pkg/syscall/?GOOS=windows#NewLazyDLL
该代码利用golang中的syscall包来调用NewLazyDLL 方法来加载Kernel32.dll,加载Kernel32.dll后,即可将其用于寻址和内存分配。编译后的代码将十六进制格式的msfvenom内容用作命令行参数。 由于代码存在许久,可能直接使用会被检测到,这里对其进行了修改,重命名所有变量,通过URL方式加载shellcode,为了绕过沙盒,添加了一些其他的参数,如果不存在参数则退出执行。 用powershell下载到服务器
等了几分钟,发现文件没有被删除,再执行。Msf收到会话
在尝试了getuid命令之后,返回了错误,查看了以下目录,还是被删除了
本地复现了下,可以看到被检测到了
绕过可以看一下微软的文章 Microsoft Defender Antivirus exclusions on Windows Server - Microsoft Defender for Endpoint | Microsoft Learn
Windows Server 2016和2019上的Microsoft Defender Antivirus自动将您注册为某些排除项,具体由您指定的服务器角色定义。请参阅 自动排除项列表 。这些排除项不会被windows defender检查。
按照文章,创建个目录PHP5433,修改文件为php-cgi.exe即可绕过wd的防护
使用烂土豆提权
文中webshell: https://github.com/NetSPI/cmdsql