WebShell(3)| 木马上传方式及查杀防范
木马上传方式
直接上传
通过直接上传一句话木马获取webShell。
数据库备份webShell
网站进制上传可执行文件,此时我们可以上传正常的图片马
,然后通过数据库备份功能修改备份后的文件名,使得图片马
能够成功解析执行。
1 | copy/b 1.jpg+1.txt 2.jpg # 将文件写入图片中,这里的文件不局限于txt文件 |
有时候数据库备份功能对备份的地址做了前端的限制,只需修改前端源码,成功绕过。
突破本地js验证webShell
若网站对上传只做了前端限制,可以通过修改前端代码或者删除检测代码,还可以通过抓包改包成功上传一句话木马。
上传其他脚本webShell
有时候一台服务器上由于搭建了不同脚本的几个网站,导致服务可同时执行多种脚本,此时我们可以尝试上传其他脚本来绕过对某一脚本的限制。
00截断webShell
00截断是利用服务器对%00后面的字符不再识别,导致攻击者可构造%00
之前的后缀名为可执行文件,成功绕过白名单限制
。
解析漏洞webShell
利用不同服务器存在的解析漏洞成功绕过后缀名限制上传。如IIS
、apache
、nginx
等
利用编辑器漏洞webShell
有些网站在编辑界面应用了存在已知漏洞的编辑器,可利用漏洞直接getShell,或者配合解析漏洞上传木马getShell。如fckeditor
、ewebeditor
、cheditor
等
网站配置插马webShell
一些网站在后台存在网站配置,比如配置网站首页公司名称等信息,此处可直接插入一句话木马。配置界面插马要非常小心,最好下载源码,分析源码闭合代码插入一句话,防止网站被插废。
通过编辑模板webShell
通过对网站的模板编辑写入一句换,利用解析漏洞生成脚本getShell
还可以将一句换木马打包为压缩文件,上传后解压到网站成功getShell
修改脚本文件直接getShell
有的网站管理员可以修改脚本,攻击者可在脚本中插入一句话木马成功getShell
数据库命令执行webShell
有的网站管理员可直接在前端执行sql语句,此时我们可以通过创建数据库写入一句话,再将一句话导出到网站根目录,连接getShell
文件包含webShell
当防火墙对可执行脚本过滤比较严格时,可以通过文件包含的方式绕过。
首先上传一张图片马(后缀为jpg/png等网站允许上传的格式),然后上传包含可执行文件,将上传的文件包含进去。
1 | <?php include( "xxx.jpg");?> # php |
命令执行webShell
网站存在可执行命令的地方可直接用echo
函数写入一句。
Sql注入webShell
存在sql注入的网站,如果有足够的权限并且可以得到绝对路径,我们就可以直接使用select into......outfile
函数直接写入一句话到网站根目录。
木马查杀防范
预防措施
通常,黑客会利用Web服务器软件中存在的漏洞来安装webShell。 因此,消除这些漏洞对于避免失陷Web服务器的潜在风险很重要。
以下是一些与webShell相关的预防措施。
-
如果不使用,要禁用危险的PHP函数,例如
exec()
、shell_exec()
、passthru()
、system()
、show_source()
、proc_open()
、pcntl_exec()
、eval()
与assert()
。 -
如果必须要启用这些命令,请确保未授权用户无法访问这些脚本。此外,使用
escapeshellarg()
和escapeshellcmd()
可以确保不能将用户输入注入到shell命令中,从而导致命令执行漏洞。 -
如果Web应用程序正在使用上传表单,请确保上传的表单是安全的,并且仅允许上传
白名单
所允许的文件类型。 -
不要相信用户输入的信息。
-
不要盲目使用在线论坛或网站上的代码。
-
对于
WordPress
,如果不需要,要避免
安装第三方插件。如果需要使用插件,请确保插接件其信誉良好且经常更新。 -
在敏感目录(如图片或上传)中
禁用
PHP执行。 -
锁定
Web服务器用户权限。