【事件分析】No.9 潘多拉魔盒般的Webshell上传

近年来,Web应用程序是攻击者利用安全漏洞进行攻击的最常见目标之一。在成功渗透进Web站点后,攻击者会使用Webshell维持对目标长久的访问权限。尽管Webshell在实践中普遍存在,并且严重涉及Web安全问题,但它从未成为任何研究的直接主题。相反,Webshell经常被视为需要检测和删除的恶意”软件”,而不是需要分析和详细了解的恶意代码,久而久之给企业等网站带来巨大的危害。今天就为大家带来平台事件规则解读系列第九篇——潘多拉魔盒般的Webshell上传。

Webshell常伪装在错误页面

Webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门。黑客在入侵了一个网站后,通常会将asp或php后门文件与网站服务器WEB目录下正常的网页文件混在一起,然后就可以使用浏览器来访问asp或者php后门,得到一个命令执行环境,以达到控制网站服务器的目的。

恶意软件发布者、黑客和钓鱼诈骗犯现在都喜欢把webshell隐藏在虚假HTTP错误页面中。这些页面常常伪装为错误页面,比如404未找到页面或者403禁止页面,然而它们实际上是webshell登录表单页,攻击者能够获得webshell并且在服务器上执行系统命令。

 

Webshell上传攻击原理及其概述

webshell根据脚本可以分为PHP脚本木马,ASP脚本木马,也有基于.NET的脚本木马和JSP脚本木马。在国外,还有用python脚本语言写的动态网页,当然也有与之相关的webshell。 webshell根据功能也分为大马、小马和一句话木马,例如:<%eval request(“pass”)%>通常把这句话写入一个文档里面,然后文件名改成xx.asp。然后传到服务器上面。用eval方法将request(“pass”)转换成代码执行,request函数的作用是应用外部文件。这相当于一句话木马的客户端配置。具体分类如下图:

Webshell的特点

1、Webshell大多是以动态脚本形式的出现,也可以称为网站的后门工具

2、Webshell就是一个asp或者php木马后门

3、Webshell可以穿越服务器防火墙,由于与被控制的服务器或远程主机交换的数据都是通过80端口传递的,因此不会被防火墙拦截。

4、Webshell一般不会在系统日志中留下记录,只会在网站的web日志中留下一些数据提交记录,没有经验的管理员很难看出入侵痕迹。

5、黑客将这些asp或者PHP木马后门文件放置在网站服务器的web目录中,与正常的网页文件混在一起。黑客可以用web的方式,通过asp或者php木马后门控制的网站服务器,包括上传下载文件,查看数据库、执行任意程序命令等

 

下图是一个典型的Webshell的攻击序列图,利用web的漏洞,获取web权限,上传小马,安装大马,然后远程调用Webshell,执行各种命令,以达到获取数据等恶意目的。

Webshell上传绕过方法

(一)绕过前台脚本检测扩展名上传Webshell

当用户在客户端上传文件的时候,客户端与服务器没有进行任何的信息交互,判断上传文件的类型是前台脚本文件来判断。

白名单方式检测:允许jpg,png等文件上传,如果要上传php格式文件,可以后面加一个.jpg后缀,提交后用burp进行抓包拦截,把jpg后缀删除。

 

(二)利用00截断上传Webshell:利用PHP函数

1、include和require一般在网站内部读取文件

2、file_get_contents一般用于打开一个url或一个文件

3、file_exists判断文件是否存在

4、所有url中参数可以用%00控制

5、截断–本地文件包含

截断类型:php%00截断

截断条件:php版本小于5.3.4

php的magic_quotes_gpc为off状态

(1)当打开magic_quotes_gpc时,所有单引号、双引号。反斜线和null字符(%00)都会被加上一个反斜线进行转义

(2)还有很多函数有类似的作用:addslashes()、mysql_escape_string()、mysql_real_escape_string()等

(3)当把magic_quotes_gpc关闭,PHP版本依然是5.3.10时,依然不能截断。所以证明,php版本和gpc两个条件都必须满足,才能截断。

(4)除了上面的,还有file_get_contents也能配合php%00利用。

(5)原理:利用程序员在写程序时对文件的上传路径过滤不严格,产生0x00上传截断漏洞,假设上传路径为:【http://xx.xx.xx.xx/upfiles/lubr.php.jpg】,通过抓包截断将【lubr.php】后面的【.】换成【0x00】(也就是burp抓包,利用十六进制,【.】的十六进制是2e,所以把2e替换为00,点击forword就可以上传了)。在上传的时候,当文件读到【0x00】时,会认为文件已经结束,从而将【lubr.php.jpg】的内容写入到【lubr.php】中,从而达到攻击目的。

 

(三)构造图片马,绕过文件内容检测上传Webshell

1、Windows捆绑技术:copy /b 主文件+追加文件 新生成文件copy /b 7.jpg + 1.aspx c.jpg(将1.aspx的内容追加到7.jpg的文件中,并生成一个新的文件叫c.jpg,上传时候后缀名【.jpg】改为【.jpg.aspx】

2、GetlmageSize函数

该函数是用来检测文件是否是有效的图片文件(内容特征),而非检测文件的扩展名

 

(四)绕过服务器扩展名检测上传

1、IIS6.0解析漏洞

(1)在网站下建立文件夹的名字为*.asp、*.asa的文件夹,其目录内的任何扩展名的文件都被IIS当做asp文件来执行。例如创建目录vidun.asp,那么/vidun.asp/1.jpg将当做asp文件来执行

(2)网站上传图片的时候,将网页木马文件的名字改成“.asp;.jpg”,也同样会被IIS当做asp文件来解释执行。例如上传一个图片文件,名字叫“vidun,asp;.jpg”,该文件可以被当做ASP文件解析并执行。

 

2、apache解析漏洞

(1)不管文件后缀名是什么,只要是.php.*为结尾,就会被apache服务器解析成php文件。

(2)mime.type配置文件定义了apache能够解析那些文件的类型。

(3)当apache遇到xxx.php.rar或者xxx.php.111这些默认没有在mime.types文件定义的都会解析成php文件。

(4)原理:当浏览器将文件提交到服务端的时候,服务端会根据设定的黑白名单对浏览器提交上来的文件扩展名进行检测,如果上传的文件扩展名不符合白名单限制,则不允许上传,否则上传成功。将一句话木马的文件名【lubr.php】,改成【lubr.php.abc】。首先,服务器验证文件扩展名的时候,验证的是【.abc】(因为他是从文件名右边往左边解析的),只要该扩展名满足服务器端白名单规则,即可上传。另外,当在浏览器端访问该文件时,apache如果解析不了【.abc】扩展名,会向前寻找可解析的扩展名,即【.php】。一句话木马可以被解析,即可通过中国菜刀连接。

绿盟“Webshell攻击” 平台检测规则方案

当下,黑客利用Webshell攻击的做法越来越频繁,对于这种技术不是很了解的人们,通常都会忽视这种页面,给大量企业网站的安全已构成潜在的严重威胁。为了防止Webshell攻击悄悄的破坏网络安全,对企业网站造成严重的影响,绿盟企业安全平台(NSFOCUS ESP)、绿盟安全态势感知(NSFOCUS TSA)和绿盟全流量威胁分析解决方案(NSFOCUS TAM)中已经添加了该事件的发现规则。

一般而言绿盟对这种“WebShell攻击”有着相关的规则流程分析。该规则对通过Webshell页面获取服务器权限或敏感信息并进行相关配置修改的行为进行事件防护。其通过接入绿盟WAF平台和绿盟安全设备日志中配置设备接入信息,进入WAF相关目录下,运行对应的代码即可实现对WebShell攻击的告警。

 

总结

通过对“Webshell攻击”的整体分析,我们发现Webshell不知不觉为人们带来了很多危害,一旦黑客拿到了网站的WebShell,就可以修改网站的文件了!这样,网站将不再有秘密可言,比如下载文件,修改文件,删除文件等,将变得非常容易。拿到WebShell权限后,如果磁盘做了安全设置以及站点独立权限设置,则这个WebShell可能只能对当前站点有效,无法操作其他网站的程序。如果入侵者通过执行命令,提升网站的权限后,就可以发展到入侵服务器,进而创建管理用户,达到控制整台服务器的目的。因此,无论是网站开发人员还是业界的同胞,都要提高对Webshell攻击的警惕,时刻关注网站是否存在漏洞,防止其被上传WebShell,造成严重的后果。而绿盟企业安全平台(NSFOCUS ESP)、绿盟安全态势感知(NSFOCUS TSA)、绿盟全流量分析平台(TAM)可以通过事件规则有效发现Webshell访问并进行告警,另外也可以通过绿盟企业安全平台(NSFOCUS ESP)持续发现和管理安全漏洞,先一步阻止漏洞的再次利用。

更多安全平台事件规则解读,且听下回分解。

发表评论