写自2022国护期间,针对该公司财务系统出现SQL注入漏洞而写,旨在提高业务系统安全性

技战法原则

基于本次护网行动演习的规则,本技战法设计的原则要求第一目的为保护目标不被攻陷,并且将红方攻击拦截在目标互联网边界,防止红方进入目标内网区域进行下一步攻击。在此防守基础上设计技战法,目的在于通过一些防守技巧以及方法最大程度上保护业务区正常运行。

技战法概述

财务共享系统为目前各大企业大规模使用的财务系统,在企业业务系统中及其重要,公司大部分财务都会经由该系统处理,但同是也是攻击者重点攻击的目标。由于财务系统储存大大量总重要信息以及共公司重要资产,一旦失陷,攻击者就可根据这些重要信息以及其他资产对内网其他关键设施进行攻击,造成后果不堪设想。因此在护网行动演练过程中,保障财务系统的安全尤为重要。

作为财务系统,与数据库交互自然是不可避免。在与数据库的交互过程中很容易出现SQL注入漏洞并且被攻击者利用攻击财务系统,因此需要重点关注并且避免SQL注入漏洞的产生。

技战法介绍

财务共享系统的SQL注入防护可以从以下几个方面来进行加固防护。

设备方面防护

1、首先从财务系统本身来进行防护,对于财务系统要对其及时升级,对于财务系统一些已知的漏洞要及时修复并打好补丁,确定系统没有已知的未修复漏洞,防止已公开漏洞被攻击者里利用。

2、使用防火墙等设备对财务系统进行防护,有效防止攻击者使用SQL注入漏洞对财务系统进行攻击。同时及时更新防火墙,添加一些新的规则来阻拦一些恶意SQL语句。

用户方面防护

1、分级管理

对用户进行分级管理,严格控制用户的权限,对于普通用户,禁止给予数据库建立、删除、修改等相关权限,只有系统管理员才具有增、删、改、查的权限,防止普通用户越权进行数据库一些非法操作造成攻击。

2、进行基础过滤和二次过滤操作

SQL注入攻击前,入侵者通过修改参数提交and等特殊字符,判断是否存在漏洞,然后通过select、update等各种字符编写SQL注入语句。因此防范SQL注入要对用户输入进行检查,确保数据输入的安全性,在具体检查输入或提交的变量时,对于单引号、双引号、冒号等字符进行转换或者过滤,从而有效防止SQL注入。

3、进行危险字符过滤

在SQL语法中有许多危险字符,我们需要在获取用户输入提交参数时,首先要进行基础过滤,然后根据程序的功能及用户输入的可能性进行二次过滤,以确保系统的安全性。

开发方面防护

1、使用安全的传递方式

在进行编写SQL语言时,禁止将变量直接写入到SQL语句,必须通过设置相应的参数来传递相关的变量。从而抑制SQL注入。数据输入不能直接嵌入到查询语句中。同时要过滤输入的内容,过滤掉不安全的输入数据。或者采用参数传值的方式传递输入变量,这样可以最大程度防范SQL注入攻击。

2、使用安全参数

SQL数据库为了有效抑制SQL注入攻击的影响,在进行SQLServer数据库设计时设置了专门的SQL安全参数。在程序编写时应尽量使用安全参数来杜绝注入式攻击,从而确保系统的安全性。

3、避免报错信息泄露

当SQL语句出错时,数据库会返回报错信息,如果这个报错信息被攻击者看到,攻击者会根据报错信息来进行攻击,因此在开发过程中,要尽量避免报错信息被用户所知晓,需要对报错信息进行一个隐蔽处理或者不显示。

日常维护方面防护

1、定期进行漏洞扫描

为了更有效地防范SQL注入攻击,作为系统管理除了设置有效的防范措施,更应该及时发现系统存在SQL攻击安全漏洞。系统管理员可以采购一些SQL漏洞扫描工具,通过专业的扫描工具,可以及时的扫描到系统存在的相应漏洞。

2、多层验证

现在的网站系统功能越来越庞大复杂,为确保系统的安全,访问者的数据输入必须经过严格的验证才能进入系统,验证没通过的输入直接被拒绝访问数据库,并且向上层系统发出错误提示信息。同时在客户端访问程序中验证访问者的相关输入信息,从而更有效的防止简单的SQL注入。但是如果多层验证中的下层如果验证数据通过,那么绕过客户端的攻击者就能够随意访问系统。因此在进行多层验证时,要每个层次相互配合,只有在客户端和系统端都进行有效的验证防护,才能更好地防范SQL注入攻击。

3、数据备份

对于数据库中一些重要的数据,需要定时备份,防止数据被脱库导致数据难以挽回。

异常预警防护

将财务共享系统日志同步给态势感知系统等危险感知系统,时刻关注财务共享系统的异常信息,需要注意以下异常信息。

1、注意一些异常对于数据库的操作,如删除语句语句等,对于正常的业务来往过程中,一般不会涉及删除语句,如数据包中出现删除语句,需第一时间对发出该数据包的IP进行封禁处理。

2、如遇语句异常并且执行成功,需第一时间停止服务后,将该攻击者IP进行封禁,同时立即查看数据库是否出现异常,如无异常,需查找漏洞位置并且修复该漏洞后,确认漏洞修复完全后,再上线服务。

3、如遇数据库遭到重大损害,需第一时间停止服务后,对数据库进行应急修复处理,并且查找漏洞位置,修复该漏洞后,确认漏洞修复完全后,再上线服务

出现上述异常情况时,首先进行应急处理后,对数据库进行修复处理,并检查与数据库相关日志,对攻击行为进行溯源处理。