邢士发
(河南经贸职业学院,河南 郑州 450046)
Webshell的隐蔽性不仅很强,而且种类也愈来愈繁杂,让网络安全管理员防不胜防。从最初基于TCP和UDP的Webshell到后来基于ICMP和DNS的shell[4],其中就包含有直接上传Webshell、远程文件包含(RFI)、SQL注入和FTP,可能存在跨站点脚本(XSS)作为攻击的形式,甚至一些比较老旧的方法利用后台数据库备份及恢复获取Webshell的各种数据库压缩权限等[5]。常用的方法有NC反弹、SSH端口转发和Telnet反弹等,更隐藏和更强大的手段诸如利用awk来进行反弹获得shell[6]。正是越来越多的语言支持后门的编写,才使得Webshell隐蔽性更好[7]。
本次实验主要使用的工具有phpstudy、Burp Suite、中国菜刀(China chopper)、wireshark等。其中Burp Suite主要用于抓包、改包、放包,用于前端绕过;中国菜刀(China chopper)主要用于连接一句话木马获取shell,遍历目录;wireshark主要检测Webshell恶意代码注入的过程。
图1为已经搭建好的靶场界面图。
图1 upload-labs本地靶场实验场景
本实验利用upload-labs漏洞测试环境进行一句话木马文件上传,首先利用前端绕过技术并上传成功后,然后利用Web管理工具进行连接,连接成功后即可实现文件管理。利用此方法可以打开虚拟终端,对数据库进行管理并在后台留下后门文件,对wireshark抓取的流量包进行流量分析。如图2所示,进行分析源码发现上传的文件必须是图片的格式(若限制的是文件类型那么需要抓包修改文件类型)。
图2 靶机web检测源代码
根据代码提示,现将一句话木马的文件格式改为jpg图片的格式并上传至服务器,然后用Burp Suite进行抓包、改包,然后再放包。具体实现过程如图3所示。
图3 抓包获取的内容
网页没有显示报错信息,然后复制此图片路径进行访问,验证是否上传成功,其中文件路径选取方法如图4所示。
图4 获取图片的存放路径
然后访问上述图片URL路径,如图5显示上传成功。
图5 查看文件路径是否成功访问
最后使用中国菜刀连接Payload,成功获取网站文件目录和虚拟终端Shell,具体操作如图6所示。
如图7所示,通过菜刀工具成功连接后并进入系统文件管理界面,此时证明网站服务器能够被成功访问以及获取到虚拟终端Shell。
图7 连接成功获得路径遍历权限
在wireshark中分析已捕获的上传文件过程中的数据包,可以发现菜刀在连接一句话木马的过程中存在相关的post流量数据包。基于流量的检测是不能作为检测Webshell危险函数的唯一手段,因为Webshell带有常见的系统调用、系统配置、数据库、文件的操作等动作,所以这些行为方式决定了它的数据流量中可以多带有一些明显的特征参数,并且通过匹配行为的流量特征作为检测方法,这也正是基于Webshell入侵后的行为特征进行检测,除此之外,还可以从系统层面的Webshell入侵行为进行检测。流量数据包如图8所示。
图8 wireshark流量分析菜刀连接过程
在WAMP Server安装的目录下进行编辑访问控制文件.htaccess,该文件中的<Files Match"xiaoma">是要匹配的内容,如果上传的文件名字中含有“xiaoma”字符的都可以上传,并且取得Webshell的权限,这种方式危害性会很大。服务器如果被黑客上传此类文件,就会实现文件上传并拿下服务器所有权限。
攻击者首先上传.htaccess,使得所有文件都会被解析为php,然后再上传木马并解析,.htaccess的编写内容如图9所示。
图9 .htaccess文件内容
文件截断有%00、0x00、/00三种常见技术,本次实验以0x00为例,在url中%00表示ascll码中的0,而ASCII中0作为特殊字符保留,表示字符串结束,所以当url中出现%00时就会认为读取已结束。如在1.php文件名改为1.php%00.jpg时会被解析为1.php,这样就能绕过后缀限制并实现上传shell[8]。具体攻击通过修改Hex中的上传脚本扩展名后的内容可达到阶段性的效果。具体操作如图10所示。
图10 修改绕过位置
除了以上方法还有如下检测方法:
(1)动态检测(沙箱),即Webshell一旦被上传到服务器,Webshell在动态执行时所表现出来的特征。这种检测方式类似于Selenium模拟浏览器的行为[9]。
(2)日志检测,使用Webshell的时候不会在操作系统日志中留下任何记录,在网站的Web日志中可能会留下Webshell页面的访问数据和数据提交记录。日志分析检测技术通过大量的日志文件建立请求模型,从而检测出异常文件HTTP异常请求模型检测[10]。
本次实验通过WAMP Server搭建的本地服务器upload-labs靶机,演示了攻击者如何利用网站与服务器的Webshell漏洞并实现达到长期控制网站服务器的过程。受害者需及时修复此漏洞,以免其他人继续利用该漏洞[11]。在服务器没有配置错误的情况下,Webshell可以在Web服务器的相关用户权限下运行。同时通过使用Webshell,攻击者可以尝试利用系统上的本地漏洞来执行权限提升,常见的方法有查找敏感配置文件、通过内核漏洞提权、利用低权限用户目录下可被Root权限用户调用的脚本提权、任务计划等。通过以上实验发现,Webshell隐蔽性很强,不易被发现和查杀。在没有记录流量的情况下,Webshell使用post包发送,这种方式不会被记录到系统日志中,仅会在Web日志中保留一些提交的数据记录[12],所以本次实验是全程开启wireshark来捕获流量数据,因此可以获取Webshell恶意代码注入的流量包,从而进行漏洞分析与防御。