基于TrackRay 的渗透测试平台设计

2020-06-22 10:29焦运良戴贻康
网络安全与数据管理 2020年6期
关键词:安全漏洞调用插件

范 晶,焦运良,戴贻康

(华北计算机系统工程研究所,北京100083)

0 引言

互联网中Web 应用所产生的漏洞数量越来越多, 使得每年发生的黑客攻击案件也在逐年增长[1]。为了保障网络或系统的信息安全,在系统投入应用之前都会对其进行渗透测试。渗透测试模拟黑客或者入侵者的攻击行为,绕过或破坏目标系统的安全防护并获得一定的系统权限,在此过程中检测系统漏洞或病毒并给出修复建议,从而分析与评估系统的安全等级。 通常使用的渗透测试工具有WVS、AppScan、Nessus 等, 这些工具测试时存在自动化水平低、 测试流量太大以及漏洞发现率较低等缺点。基于此,本文设计一个基于TrackRay 的渗透测试平台,功能强大,便于搭建,并且可以灵活地编写插件快速实现Web 安全漏洞检测。

1 Web 服务器与漏洞

1.1 Web 服务器

Web 服务器概念较为广泛,一般是指网站服务器,运行于计算机上的服务程序,可以向Web 客户端(如浏览器)提供文档或者信息浏览服务[2]。 Web服务器主要是以HTTP 协议(请求-响应协议)进行通信,所以也被称为HTTP 服务器[3]。

Web 服务器的工作过程主要分为建立连接、发送请求、应答和关闭连接四个步骤。 客户端(包括浏览器和其他应用程序)通过TCP/IP 协议(传输控制协议/网络协议)建立和服务器的TCP 连接,通过打开虚拟文件socket 可以确认是否连接成功;当成功建立起连接后,客户端向服务器发送基于HTTP 协议的用户请求;服务器接收到请求后,经过查询与处理, 向客户机发送基于HTTP 协议的回应, 如果请求的网络地址中包含有动态语言(如ASP,PHP,JSP等语言)的内容,那么服务器端将会使用相应动态语言的解释引擎处理内容,并将处理后的数据发送给客户端,客户端接收到服务器发回的数据后将信息显示在窗口中;最后,当发出的响应结束后,Web服务器便与客户端断开,关闭连接。 具体的工作原理图如图1 所示。

1.2 漏洞

一般来说,如果在一个信息系统中存在某种问题,这种问题可能存在于设计、实现、运维等过程中,使得系统发生某种安全风险, 如对系统的机密性、完整性、可用性产生泄露和破坏,那么此问题就可以统称为漏洞[4]。 从目前存在的系统漏洞来看,操作系统漏洞是远远少于应用程序漏洞的,绝大多数的漏洞类型属于Web 服务器中的应用程序漏洞[5]。其中Web 应用程序漏洞又可以划分为SQL 注入漏洞、文件上传漏洞、跨站脚本攻击等。

1.2.1 SQL 注入漏洞

SQL(结构化查询语言)注入攻击是黑客针对数据库进行攻击的常见方式,通过在Web 表单或Web链接中插入SQL 查询语句,欺骗服务器执行攻击者所插入的SQL 查询语句[6]。 具体来说,SQL 注入攻击利用服务器中运行的Web 应用程序,将攻击者编写的SQL 查询语句提交到到网站后台执行,然后返回给前台页面被SQL 注入攻击的查询结果。如果网站存在SQL 注入漏洞,攻击者就可以通过输入恶意SQL 查询语句改变原先SQL 查询语句的结构,从而改变用户真正所需的查询结果。

有两种情况可以产生SQL 注入漏洞,一种是平台层的配置错误或数据库本身存在漏洞所导致的,还有一种是由于程序编写者对输入未进行过滤,或者在拼接SQL 注入字符串时没有采用固定的结构,从而执行了非法的数据查询。 因此,可以采用预编译语句固定SQL 语句结构,预先对外部输入进行检测、过滤等操作,以确保数据库引擎所执行的逻辑是未被篡改的。

1.2.2 文件上传漏洞

在现代的Web 应用程序中, 为了提高业务效率, 共享文件,Web 应用程序一般都拥有允许用户上传文件的入口,虽然这种入口为用户提供了很大的便利,但也给恶意用户打开一扇门。 Web 应用程序中这种上传入口越多,服务器所面临的风险也就越大。 如果Web 程序对上传的文件没有进行仔细的过滤和转化,恶意用户就有可能上传对服务器有危害的脚本文件,执行违法操作,如获得服务器目录和文件、获得服务器数据库访问权限、对企业内网进行扫描操作等[7]。 这些操作将会导致整个网站瘫痪和安全信息泄露,使用户遭受严重的损失。

造成文件上传漏洞的原因有多种情况,包括未对上传文件的后缀名(扩展名)做严格检查与限制;未对上传文件的用户权限进行限制; 以及Web 服务器对于上传文件或者指定目录的行为未做一定的限制等。 因此,对上传文件的扩展名的合法性进行检查,分析文件内容、检测文件类型的合法性和限制Web 服务器对于特定类型文件的操作, 可以减少发生文件上传漏洞的可能性。

1.2.3 跨站脚本攻击

图1 Web 服务器工作原理

跨站脚本攻击(Cross Site Scripting,XSS),是指攻击者利用网站漏洞恶意盗取用户私人信息的行为。攻击者一般通过XSS 漏洞将恶意脚本代码注入到网站页面链接中,并很好地伪装成合法链接,当用户不小心点开链接后,信息便被泄露出去[8]。 XSS漏洞曾在安全领域中未受到足够的重视,认为其危害小可以忽略,但是随着Web 应用的普及和复杂性的提升,以及在拥有大量用户的企业或网站受到越来越多的XSS 攻击之后,XSS 漏洞也被重视起来。攻击者可以通过XSS 漏洞规避网站的访问控制权限,从而控制用户在浏览器上的行为,记录和读取用户的网站密码等私人信息。

跨站脚本攻击主要分为持久性跨站脚本攻击和非持久性跨站脚本攻击。持久性跨站脚本攻击所依赖的数据会存储在服务器数据库或文件中,在数据被清除或漏洞被修复之前会一直存在。而非持久性跨站脚本攻击是一次性的,仅在当前访问的链接或页面中发挥作用, 如果页面被关闭或者链接跳转,那么这次攻击的数据就会消失。 防御XSS 的关键就是在输入不可信数据的时候进行合法编码,对外部数据进行检查、过滤等操作,并且考虑到不同浏览器之间的兼容情况应设置不同的过滤规则;在将来自外部的数据插入到网站页面中时,对外部数据进行超文本标记语言实体编码,以规避不合法的脚本在浏览器中解析运行。

2 渗透测试平台设计

TrackRay 是一个开源的插件化渗透测试平台,集成有Metasploit、Nmap、SQLmap、AWVS 等知名安全工具,并内置漏洞扫描器,可实现安全漏洞扫描功能。 主体使用Java 编写,支持Java、Python、JSON 等多种方式编写插件,从而可以方便灵活地根据自己的需求来编写和调用不同类型的插件,实现快速安全漏洞检测。

2.1 平台搭建

首先安装TrackRay 依赖环境,JDK1.8 和Maven是必须安装的, 保证系统能够执行java-version 和mvn-verson。 同时安装Metasploit、AWVS、Python 2.7和Nmap 等安全检测工具,以实现Web 安全漏洞检测。

整个平台的搭建步骤如下所示。

(1)手动启动AWVS 服务,登录后台生成一个安全的API 密码。 复制此密钥和AWVS 地址,以便进行密钥和地址修改。

(2) 找到Python 的数据库目录, 修改python.package.path 参数,如图2 所示。

图2 修改Python 参数

(3)安装Maven 后找到仓库位置,一般在settings.xml 里配置指定仓库目录,并在当前目录下生成一个.m2 的目录,并修改相应参数,如图3 所示。

图3 修改Maven 参数

(4)Ceye.io 下注册一个账号, 记录下分配到的域名和TOKEN,并修改配置文件,这是为DNSLOG回显检测漏洞时使用的,注册页面如图4 所示。

图4 注册账号

(5)启动msf 和sqlmapapi 控制台函数,以便进行插件调用。 在相应的metasploit 和sqlmap 目录下分别执行,成功执行后修改配置文件,如图5 所示。

图5 配置文件修改

(6)编译打包程序,不同系统下的执行命令不一样:Windows 下运行package.bat;Linux 下运行package.sh。等待下载完成和程序编译完成,若是此过程中未出现问题则会提示BUILD SUCESS,如图6 所示。

(7)编译成功后在当前目录下打包一个trackray.jar程序, 也就是TrackRay 的主程序, 接着直接执行start.bat 或者startup.sh,就可以启动该项服务。 没有抛出异常或ERROR 日志,则表示访问8080 端口正常。 服务列表如图7 所示。

图6 编译成功

至此,整个平台搭建完成。 接下来通过调用服务或者调用相应编写好的插件, 便可以实现Web安全漏洞检测。 本平台支持多种语言编写插件,并且插件类型丰富,可根据自己的需要灵活编写。

2.2 插件编写与调用

本平台支持多种插件类型,包括:爬虫插件、内部插件、独立应用插件、漏洞扫描插件、交互式插件等。 其中漏洞扫描插件是本文研究的重点。

在创建扫描任务时,勾选“漏洞攻击模块”,便可以调用漏洞扫描插件,主要有独立插件、漏洞规则和kunpeng JSON 插件三种。

独立插件可以根据自己的需要进行编写,给定requests、target 和task 参数,再调用check()和attack()等抽象方法重写漏洞插件规则,以检测出漏洞。 本平台采用简单的判断响应体就能够识别出大多数漏洞, 因而相较于其他检测工具的方法效率更高。kunpeng JSON 是一个Go 语言编写的poc 测试平台,只需按照该插件的格式规范创建一个JSON 文件到/resources/json 目录下,便可以进行插件的调用。

图7 服务列表

在进行插件调用时,本平台提供一个简单友好的MSF 控制台界面,只需简单地输入命令行,便可以有效地执行命令,调用插件,以及直观地观察执行后的结果。 MSF 控制台如图8 所示。

图8 MSF 控制台

在图8 中的首行msf>>后面输入下面的第一行插件服务命令后,平台便开始调用和执行相应的插件,并将结果直接反馈回控制台,运行的结果如图9所示,可以直观形象地观察到检测结果。

3 渗透试验测试

对一台主机的端口和Web 浏览器作为测试对象, 提供该主机的IP 或域名作为测试对象输入,图10 是本平台进行渗透测试实验的流程图。

图9 MSF 执行结果

图10 试验测试流程图

首先进行TrackRay 的系统平台环境搭建,即设置各种参数;接着输入目标的IP 或者域名,即输入测试对象;对此IP 或域名进行端口扫描操作,扫描操作默认为收集目标的详细信息,包括各个端口的开放情况、 开放的端口所使用的服务以及服务版本、目标主机所运行的操作系统类型以及可能的版本。 在扫描结束之后,此模块会将扫描结果存储在一个XML 文件中,以供后续步骤的分析。 在判断调用插件的规则后,若目标运行了Web 服务,便进行漏洞检测, 同样是只需在MSF 控制台输入相应的调用命令,便可以记住相应的插件操作。 同时将漏洞检测结果以报告的形式直观地显示出来。若是目标并没有运行Web 服务, 则跳过此漏洞检测步骤而报告端口的扫描结果。

为了测试本文基于TrackRay 的渗透测试平台对于检测Web 服务网站的安全漏洞效果,搭建起一个带有漏洞的网站站点(192.168.1.21),使用较为流行的开源博客系统WordPress 搭建,在搭建过程中,放入两个漏洞弱点,其一是后台弱口令弱点,另一个弱点是文件内容读取漏洞。使用Nessus 扫描工具和本文设计的渗透测试平台对网站的安全性进行验证,实验结果如图11 所示。

图11 Nessus 扫描结果

首先搭建起Nessus 的扫描环境,虽然花费的时间并不是很久(半小时左右),但是从Nessus 的扫描结果中可以看出:Nessus 只报告了关于中间版本和PHP 版本的漏洞,而预先放置的两个漏洞都没有检测出来。

图12 是对本文设计的渗透测试平台进行测试试验得出的结果。

图12 基于TrackRay 的渗透测试平台的测试结果

首先搭建本文的渗透测试平台,只需二十分钟左右便可以搭建完成,而进行整个试验的运行时间也是在十分钟以内,故相对而言本文的渗透测试平台简单易用。 再看检测结果可知: 使用poc_2014_0216 验证子程序对目标系统进行漏洞验证,最终检测出弱口令和文件内容读取漏洞,优于Nessus 扫描工具检测结果。

4 结论

Web 网页或者信息系统的安全漏洞的验证与修复一直是网络安全研究中的重要问题。本文重点介绍如何搭建起基于TrackRay 的渗透测试平台,并且重点说明了该平台的简便实用性,以及漏洞检测与插件的编写支持多样性和可移植性高。通过对主机的端口和Web 服务进行试验测试, 最后的试验结果也表明:本文设计的渗透测试平台搭建简单快捷,可以进行灵活的编写插件,以及实现了快速的Web 安全漏洞检测。

猜你喜欢
安全漏洞调用插件
刍议计算机软件中的安全漏洞检测技术
基于CTK插件框架的太赫兹人体安检系统软件设计
自编插件完善App Inventor与乐高机器人通信
核电项目物项调用管理的应用研究
基于OSGi的军用指挥软件插件机制研究
系统虚拟化环境下客户机系统调用信息捕获与分析①
试论安全漏洞检测技术在软件工程中的应用
智能设备安全漏洞知多少
基于jQUerY的自定义插件开发
利用RFC技术实现SAP系统接口通信