Web应用安全攻防实训平台的设计与实现

时间:2022-10-06 01:29:29

Web应用安全攻防实训平台的设计与实现

摘要:紧密结合OWASP和Trust Wave的安全报告,进行Web应用相关安全威胁(漏洞)特征的分析和提取,并在此基础上设计和实现Web应用安全攻防实训平台,集成了多种类型的Web系统和应用漏洞。在Web应用安全攻防实训平台上,对SQL注入攻防过程进行真实训练,使用户能清晰地看到攻击行为、过程、结果,并能够有针对性地提出SQL注入安全改进建议和完成相关安全措施部署。

关键词:OWASP;Web应用漏洞;安全攻防;实训平台;SQL注入

一、引言

随着计算机与互联网的快速发展,Web应用已经深入各个领域当中。但是由于 Web 开发人员能力的良莠不齐,致使大量的站点存在着 Web应用安全漏洞,这就给攻击者打开方便之门。世界上权威的Web安全与数据库安全研究组织OWASP(Open Web Application Security Project)提供的OWASP TOP10 WEB安全报告,总结了Web应用程序最可能、最常见、最危险的十大安全威胁,包括SQL注入漏洞;跨站脚本(XSS);直接引用安全漏洞;跨站请求伪造(CSRF);配置安全缺陷;加密存储威胁;未检验重定向等。Trust Wave公司在其2012 Global Security Report的十大Web应用安全威胁包括SQL注入漏洞;逻辑缺陷;跨站脚本;授权旁路;会话处理缺陷;旁路认证;跨站请求伪造;源代码泄露;详细的错误信息;脆弱的第三方软件等。

Web应用安全受到越来越多的攻击者的关注,一方面是由于传统的C/S架构方式逐渐在往“瘦客户端”的B/S架构上迁移,而且其应用与数据库系统的结合也更加紧密,使得存在安全漏洞的环节增多;另一方面是由于防火墙和IDS/IPS可以关闭不必要暴露的端口,但是对于Web应用常用的80端口都是对外开放的,这样使得攻击者可以方便地借助于这个通道进行攻击或者执行恶意的操作。

二、系统框架设计

基于B/S架构的Web应用安全攻防实训平台允许用户使用浏览器与站点进行交互操作,并且可以通过应用来访问后台数据库系统,其架构主要包括以下方向。

1.Web应用系统。采用标准HTML代码进行编写用于显示数据和接收用户输入的数据,在Net Framework框架基础上采用C#进行编写代码接受用户端传递过来的参数,负责处理业务逻辑和数据库访问等功能。

2.Web应用服务器。用来支持Web应用和用户浏览器之间的正常通信,负责处理HTTP请求/响应消息等操作,采用Windows自带的IIS程序,根据实际需要可以扩展到Apache、Lighttpd等Web应用服务器。

3.操作系统和数据库系统。操作系统默认采用Windows Sever系列,后台数据库默认采用SQL Server作为后台数据库系统,根据实际需要可以进行相应扩展My SQL、Access、Oracle等等。

攻防实训平台的硬件部分包括Web应用服务器、数据库服务器、防火墙、教师端和学生端等,其系统拓扑图如图1所示。学生端分为校内学生端和校外学生端两组,其中校外学生端通过防火墙进行访问、分析和处理。

图1 系统拓扑图

三、安全漏洞设计和利用

在OWASP和TrustWave的报告中,SQL注入漏洞都被列为最危险的攻击形式之一,因此,提取SQL注入漏洞作为分析和测试用例。

1.SQL注入漏洞分析。其原理是通过把SQL命令插入到Web表单递交、或输入域名或页面请求的查询字符串中,最终达到欺骗服务器执行恶意的SQL命令,通过构造巧妙的递交参数构造巧妙的SQL语句,从而成功获取想要的数据。其严重后果会使得攻击者得到在数据库服务器上执行命令的权限,并且甚至可以获得管理员的权限进行更为危险的操作。

2.SQL注入漏洞构造。为了利用SQL注入漏洞,攻击者必须找到一个参数传递数据,然后这个参数传送到操作数据库的SQL语句中,Web应用程序使用该语句操作数据库,可能导致信息泄漏、数据丢失、记录篡改等危害。

在Web应用安全攻防平台的显示页面(view.aspx)的部分代码编写如下。

SqlCommand Cmd=new SqlCommand("select*from NewView where id =" +Request.QueryString["id"], Conn);

SqlDataReader Dr = Cmd.ExecuteReader();

其传递过来的参数id,没有做任何的限制和处理就传递给操作数据库的SQL语句,那么该语句就产生了SQL注入漏洞。

3.模拟攻击过程。在构造完SQL注入漏洞以后,使用经典的参数后面附带单引号(’)、and 1=1、and 1=2和分号(;)测试数据,分析其返回结果。对于SQL Server的数据库可以采用错误的安全配置和猜解管理员数据表及其内容的方式进行模拟攻击。

(1)SA用户权限利用。如果Web应用采用了SA用户进行数据连接,那么可以构造特殊的SQL Server命令来提交到查询字符串中,利用SQL Server自带的xp_cmdshell操作系统外壳命令来执行相应的系统命令,提交的页面字符串(Web应用地址:192.168.2.5)为:

http://192.168.2.5/view.aspx?id=28;exec master.dbo.xp_cmdshell "net user test test /add"

对于SQL Server阻止了对xp_cmdshell的访问情况,可以使用sp_configure来恢复和启用xp_cmdshell,提交的页面字符串为:

http://192.168.2.5/view.aspx?id=28;EXEC sp_configure 'show advanced options',1 RECONFIGURE;EXEC sp_configure 'xp_cmdshell',1 RECONFIGURE

再次执行xp_cmdshell操作系统外壳命令,如果执行成功即可添加一个系统用户。

(2)数据表的猜解。对于非SQL Server数据库的情况,比如,Access和MySQL数据库类型或者Web应用没有使用SA用户进行数据库连接,那么可以通过SQL注入来完成数据表的猜解,其过程可以分为:猜解表名和记录数;猜解字段名称;猜解字段长度;猜解字段字符等步骤。

猜解表名提交的页面字符串为:

http://192.168.2.5/View.aspx?id=28 and exists(select * from admin)

猜解记录数提交的页面字符串为:

http://192.168.2.5/View.aspx?id=28 and 5

其余提交的页面字符串都可以通过手工构造SQL命令或者使用SQL注入工具来自动完成。

4.获得服务器管理权限。在获得Web应用管理权限之后,可以进入其管理后台利用其Web编辑器的上传功能将准备好的Web Shell上传到Web服务器上。根据其Web应用服务器类型的不同,可以上传ASP(.NET)、PHP和JSP等类型的Web Shell,以获得服务器的管理控制权。

综上所述,其攻击过程如图2所示。

图2漏洞攻击过程

四、SQL注入攻击防范设计

SQL注入攻击防范首先需要对Web应用和数据库系统进行安全合理的配置,包括以下几点。

1.不使用管理员(SA)权限的数据库连接,为每个应用分配权限有限的数据库连接。

2.使用参数化的SQL或者直接使用存储过程进行数据查询存取。

3.应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误页面提示。

对于用户提交的客户端信息,使用SQL注入检测模块进行必要的检测,其步骤主要包括。

1.对客户端提交的信息进行URL解码,防止用户以URL编码的方式构造SQL命令用来欺骗SQL注入检测模块。

2.使用正则表达式来验证提交信息中是否包含单引号(’)、分号(;)、结束符(--)等特殊字符,如果存在则转至异常处理模块。

3.检测提交信息中是否包含select、insert、update、from、user、exec等特殊命令,如果存在则转至异常处理模块。

4.检测提交参数信息的长度是否超过预设的阈值,如果超过则转至异常处理模块。

SQL注入检测步骤流程如图3所示。

图3 SQL注入检测防御模块设计

五、结束语

紧密结合OWASP和Trust Wave提供的相关安全报告,采用积极主动的办法来训练用户对于SQL注入漏洞的处理,分析漏洞原因、构造和设计漏洞、模拟攻击平台,并对结果进行分析,确定问题所在,给出改进建议和防护措施。在平台上,一方面可以实现Web应用攻防技术、过程、方法的演示再现甚至对抗性的攻防演练;另一方面,将教学和实验操作中产生的Web应用攻击行为限制在一定的范围内,防止对互联网的实际网络和服务造成干扰和破坏。

Web应用程序的安全攻防是信息(网络)系统安全中具有挑战性的部分,对于满足信息安全人才的培养,实现网络安全专业方向实验教学,满足教育、政府信息化和企业Web应用安全培训需求是一项十分有意义的工作。

参考文献:

1.OWASP.The Ten Most Critical Web ApplicationSecurityRisks[R],http:///images/0/0f/OWASPT10 2010 rc1.pdf.2012-10

2.TrustWave.2012 Global Security Report[R],http://.cn/OWASP Training/Trustwave WP Global Security Report 2012.pdf.2012-10

3.范渊,《Web应用风险扫描的研究与应用》[J],《电信网技术》,2012.3:13-17

4.章建国,《利用WEB应用漏洞构筑WEB安全检测系统》[J],《广东公安科技》,2006.2:36-39

5.尹中旭、朱俊虎、魏强等,《网络攻防演练平台的设计与实现》[J],《计算机教育》,2011.2:108-112

6.徐川、唐建、唐红,《网络攻防对抗虚拟实验系统的设计与实现》[J],《计算机工程设计》,2011.32(4):1268-1271

7.王云、郭外萍、陈承欢,《Web 项目中的 SQL 注入问题研究与防范方法》[J],《计算机工程与设计》,2010.31(5):976-978

8.李扬、朱晓民、李炜,《网站安全漏洞解析》[J],《四川兵工学报》,2012.33(1):97-99

9.余静、高丰、徐良华,《基于 SQL 注入的渗透性测试技术研究》[J],《计算机工程与设计》2007.28(15):3577-3578

10.朱辉、周亚建、钮心忻,《数据库SQL注入攻击与防御研究》[A],《2011年通信与信息技术新进展——第八届中国通信学会学术年会论文集》,2011,580-583

11.熊婧、曹忠升、朱虹等,《基于构造路径的存储过程SQL注入检测》[J],《计算机研究与发展》,2008.45:125-129

12.王伟平、李昌、段桂华,《基于正则表示的SQL注入过滤模块设计》[J],《计算机工程》,2011.37(5):158-160

基金项目:河北省高等学校科学研究计划项目(课题编号:Z2012087),石家庄市哲学社会科学规划研究项目(课题编号:WH1217)

作者简介:张红瑞(1978—),女,河北定州人,讲师,硕士,主要研究领域为计算机网络、计算机视觉。

【责编 田彩霞】

上一篇:中国荒漠化简介 下一篇:特殊教育课程设置之浅析