手动进行SQL注入监测主要有以下步骤:
首先要明确需要进行SQL注入监测的应用程序和对应的数据库。这些通常是包含敏感信息(如用户账号密码、财务数据等)或者对业务运营至关重要的系统。例如,企业的用户登录注册系统、订单管理系统等所关联的数据库。
深入了解目标应用的整体架构,包括前端展示层、中间业务逻辑层和后端数据库访问层的交互方式。这有助于确定SQL语句可能的构建和传递路径。
全面查找应用程序中所有可能的输入点。这些输入点包括但不限于网页表单(如登录表单、搜索框等)、URL参数、HTTP头信息等。例如,在一个电商网站中,商品搜索框、用户登录时的用户名和密码输入框以及商品排序的URL参数等都是潜在的输入点。
针对每个输入点,准备一些基本的SQL注入测试字符串。常见的如单引号('),因为在SQL语句中,单引号用于界定字符串,如果输入单引号可能导致SQL语法错误,从而暴露潜在的注入点。例如,在登录表单的用户名输入框中输入',观察应用程序的响应。
构建一些具有逻辑意义的测试输入,如“' OR '1'='1”这种可以绕过身份验证的输入(如果应用存在SQL注入漏洞的话)。将其输入到相关的输入点,看是否会出现异常的登录成功或者数据查询结果变化等情况。
仔细查看应用程序返回的错误消息。如果出现数据库相关的错误消息(如SQL语法错误提示),这可能表明输入触发了SQL注入漏洞。例如,数据库返回类似“You have an error in your SQL syntax”的错误消息,就需要进一步深入分析。
检查应用程序返回的数据是否异常。比如,在搜索商品时,输入特殊的测试字符串后,如果返回了不应该出现的商品信息或者大量的数据,可能存在SQL注入漏洞导致查询结果异常。
如果有权限访问数据库日志,查看在输入测试数据期间数据库的查询记录。数据库日志会记录所有的查询操作,包括由应用程序发送的SQL语句。通过分析日志中的SQL语句,可以发现是否存在恶意的SQL注入操作。例如,如果在输入测试字符串后,日志中出现了一些不符合正常业务逻辑的SQL查询语句,就需要重点关注。
将每个输入点的测试输入、应用程序的响应以及数据库日志(如果有相关发现)等情况详细记录下来。这有助于后续对测试结果的全面分析,也方便与其他安全人员进行沟通和共享。
根据记录的结果,判定是否存在SQL注入漏洞。如果存在,进一步评估漏洞的风险等级,例如,根据漏洞可能获取的数据敏感性、影响的范围等因素确定是高风险、中风险还是低风险漏洞。