协议分析仪能够检测SQL注入攻击,其通过深度解析应用层协议(如HTTP、WebSocket)、分析请求参数、识别异常语法模式,并结合上下文验证和规则引擎,实现对SQL注入的精准识别。以下是具体检测方法及技术实现:
Cookie
、
User-Agent
)、请求体(如
POST
表单数据、JSON/XML负载),提取所有用户可控输入字段(如
id=1
、
search=test
)。
SELECT
、
UNION
、
INSERT
、
DROP
、
--
、
'
、
"
等),结合逻辑运算符(如
OR 1=1
)和注释符(如
),识别潜在注入点。
GET /user?id=1' OR '1'='1
中,协议分析仪检测到
'
和
OR
组合,触发SQL注入告警。
%27
代替
'
)、十六进制编码(如
0x27
)、Unicode编码(如
u0027
)等,还原原始字符后进行模式匹配。
POST /login
的JSON体中包含
password=admin%27--
,协议分析仪解码后识别到
'
和
--
,判定为注入尝试。
GET
请求中包含大量参数(如超过10个),或
DELETE
/
PUT
方法用于非预期资源,协议分析仪结合参数分析,判定为异常请求。
Content-Type
头(如
application/json
),若实际负载为SQL语句(如
{"data":"SELECT * FROM users"}
),触发告警。
SELECT * FROM users WHERE id=
后无值),或嵌套过多子查询(如
SELECT * FROM (SELECT * FROM users)
),判定为注入尝试。
id
参数预期为整数,但实际值为
1 OR 1=1
(字符串),触发类型不匹配告警。
Cookie
中的
session_id
),若未登录用户尝试访问需授权的SQL操作(如
DELETE FROM orders
),判定为非法注入。
SELECT
查询),触发DDoS式注入攻击告警。
xp_cmdshell
),触发告警。
search=%'; DROP TABLE products;--
(长度50字符),判定为异常注入。
MySQL
)、版本(如
5.7.32
)或表名(如
users
),表明攻击可能成功,提升风险等级。
UNION SELECT 1,2,database()
),协议分析仪检测响应中是否包含非预期数据(如数据库名),确认攻击有效性。
Sleep()
时间延迟注入)。
admin'--
、
1' OR 'a'='a
等经典注入模式。
b(UNIONs+SELECT|INSERTs+INTO|DELETEs+FROM)b
的正则表达式,协议分析仪自动标记匹配请求。
{"query":"SELECT * FROM users WHERE id=" + userInput}
)。
{"filter":"name='admin' OR 1=1"}
)。
filter
参数,及时修复后避免批量用户信息泄露。