参考链接:
WebShell基础详解(特点、原理、分类、工具) - 知乎
网络安全-webshell详解(原理、攻击、检测与防御)_lady_killer9的博客-CSDN博客_webshell
WebShell简介
Webshell就是以asp、php、jsp或cgi等网页文件形式存在的一种代码执行环境,也可以将其称做为一种网页后门。
“web”的含义是显然 需要服务器开放web服务,“shell”的含义是 取得对服务器某种程度上操作权限。
webshell常常被称为入侵者通过网站端口对网站服务器的某种程度上操作的权限。
由于webshell其大多是以动态脚本的形式出现,也有人称之为网站的后门工具。
黑客在入侵了一个网站后,通常会将asp或php后门文件与网站目录下正常的网页文件混在一起,然后就可以使用浏览器来访问asp或者php后门,得到一个命令执行环境,以达到控制网站服务器的目的。
原理
利用文件上传漏洞、SQL注入漏洞、RCE漏洞等,将恶意文件放到web服务器中,也就是常说的”后门”,之后可以进行文件管理、数据库管理、远程命令执行、提权等恶意操作。
Webshell常见的攻击特点主要有以下几点
1、持久化远程访问
Webshell脚本通常会包含后门,黑客上传Webshell之后,就可以充分利用Webshell的后门实现远程访问并控制服务器,从而达到长期控制网站服务器的目的。此外,在上传完Webshell之后,黑客会选择自己修复漏洞,以确保没有其他人会利用该漏洞。通过这种方式,黑客就可以一种低调的姿态,避免与管理员进行任何交互,同时仍然获得相同的结果。
2、提权
在服务器没有配置错误的情况下,Webshell将在web服务器的用户权限下运行,而用户权限是有限的。通过Webshell,黑客可以利用系统上的本地漏洞来实现权限提升,从而获得Root权限,这样黑客基本上可以在系统上做任何事情,包括安装软件、更改权限、添加和删除用户、窃取密码、阅读电子邮件等等。
3、隐蔽性极强
Webshell可以嵌套在正常网页中运行,且不容易被查杀。它还可以穿越服务器防火墙,由于与被控制的服务器或远程主机交互的数据都是通过80端口传递,因此不会被防火墙拦截,在没有记录流量的情况下,Webshell使用post包发送,也不会被记录在系统日志中,只会在Web日志中记录一些数据提交的记录。
webshell隐藏
隐藏到日志
例如,修改发送数据包的头部,添加webshell。 web服务器一般会保存访问记录到Web日志,若找到web日志,且放到可执行目录下,可能获得shell。
隐藏到合法文件
例如,文件上传漏洞中,将php代码放到jpg文件中,可以使用@运算符,以防发生任何错误。
混淆
删除空格、换行符等,导致代码文件比较乱,使用编码或加密来隐藏掉恶意函数名等。
检测与防御
静态检测----web日志
在对日志文件进行预处理后,对日志记录进行文本特征匹配、统计特征计算与文件关联性分析,最后对检测结果汇总,列出疑似的Webshell文件。
例如,网站目录下某php文件访问量过少,且来源ip固定;访问特征异常(ueba)
动态检测
webshell传到服务器了,黑客总要去执行它吧,webshell执行时刻表现出来的特征,我们称为动态特征。
例如,webshell如果执行系统命令的话,会有进程。
总结:攻击层面还应考虑如何绕过系统上传webshell,如何隐藏webshell免查杀,防御方面应该考虑如何避免webshell被上传,如何查杀webshell。