在Linux系统当中,Shell指的是操作系统所提供的命令行运行环境,而与之对应的WebShell,则是指通过Web方式呈现出来的一种Shell环境。部分管理后台系统支持在不直接登录服务器的情况下调用Shell环境,其实现原理正是借助了网页编程语言所内置的一些函数,例如PHP中的system()、exec()等,这类函数天然具备执行系统命令的能力。借助相应的程序封装处理,便能够在网页界面上实现仿真Shell环境的操作效果。
WebShell固然为网站管理员的日常工作带来了便利,但与此同时,也埋藏着相当巨大的安全隐患。通常情况下,一旦某个网页存在安全漏洞,黑客借此获取到相应权限后,往往会上传一些木马程序,借助这类木马便能够搭建起一个WebShell环境。黑客通过WebShell,便无需登录服务器,即可直接向服务器下发各类操作命令。
一般而言,Web应用本身所拥有的执行权限越大,黑客一旦拿到该网页对应的WebShell后,所能获取到的权限也就相应越大。倘若Web服务器本身是以root权限运行的,那么WebShell将会拥有整个服务器的最高操作权限。更为棘手的是,网页一旦被植入WebShell,防火墙以及管理员往往根本无法及时察觉,因为其所有操作都是通过正常端口对外传输,也并不会留下常规意义上的操作记录。即便在服务器的shell环境中通过history命令查询,同样也无法找到相应操作痕迹,其隐蔽性可谓相当之强。
Web应用最为忌惮的,莫过于存在文件上传漏洞。部分Web服务器存在权限配置不当的问题,或是使用者本身并不十分了解apache、tomcat等服务的具体配置方法,有可能无意间开启了文件列表展示功能,导致黑客能够借此获取到网站的目录结构信息。又或是tomcat沿用了默认配置参数,将一些本应受到保护、带有管理功能的页面暴露在了黑客的视野当中。倘若某个目录中被成功上传了木马文件,且该木马文件恰好能够被外部正常访问,此时便极有可能为攻击者提供出一个可用的WebShell环境。
简要梳理黑客的攻击路径:
- 木马文件成功上传,并顺利躲过服务器上部署的杀毒软件查杀检测
- 确定该木马文件所对应的URL访问路径
- 该木马对应的URL能够被正常访问,并且具备可执行条件
我们平日里经常提及的”一句话木马”,其本质基本上都是用于搭建WebShell环境。一旦成功搭建起WebShell,黑客便可以借助各类专用黑客工具连接至该WebShell,通过发送ls、pwd、cat等常见命令,基本上便能够获取到整个系统的目录结构与文件内容,同时还具备文件上传、下载等操作功能。所谓的黑客工具,其实只是将命令执行的结果以图形化界面的方式呈现出来而已,而真正负责执行命令、返回结果的核心部分,正是WebShell本身。
充分了解黑客的攻击路径,才能够更为有针对性地做好相应防范工作。倘若网页程序本身带有附件上传功能,务必要对所允许上传的文件类型加以严格限制约束。倘若攻击者成功上传的是一句话木马文件,例如命名为hack.php,并将其上传至Web目录之下,一旦该文件对应的URL地址能够被外部正常访问,那么该木马文件便极有可能被黑客成功执行利用。
原创文章,作者:余初云,如若转载,请注明出处:https://blog.jidcy.com/jsjc/3305.html
