应用异常监控

数据库异常监控

在SQL注入的探测阶段,或者报错注入的攻击阶段,通常会在数据库产生大量的异常。因此,通过监控异常可以有效的发现的SQL注入攻击。目前我们所有支持的数据库均可以监控SQL异常,且异常代码可以在插件里配置。

插件里默认监控的SQL异常如下,具体请参考官方插件的 sql_exception 检测算法。

MySQL

错误编号
报警样例

1060

Duplicate column name '5.5.60-0ubuntu0.14.04.1'

1062

Duplicate entry '::root@localhost::1' for key 'group_key'

1064

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') from mysql.user' at line 1

1105

XPATH syntax error: 'root@localhost'

1367

Illegal non geometric 'user()' value found during parsing

PostgreSQL

错误编号
报警样例

42601

normal syntax error

22P02

ERROR: invalid input syntax for type double precision: "DATABASE: test1"

SQLite

错误编号
报警样例

1

generic error, like syntax error、malformed MATCH expression: ["3.6.23.1] and other

Oracle

错误编号
报警样例

ORA-01740

missing double quote in identifier

ORA-01756

quoted string not properly terminated

ORA-00907

missing right parenthesis

HSQL

错误编号
报警样例

-5583

malformed quoted identifier

-5590

unexpected end of statement

SQLServer

错误编号
报警样例

105

Unclosed quotation mark after the character string '%.*ls'.

245

Conversion failed when converting the %ls value '%.*ls' to data type %ls.

DB2

错误编号
报警样例

42603

The string constant beginning with "'xxx" does not have an ending string

FAQ

1. Unable to derive error code from SQL exceptions 错误

当MySQL服务器与JDBC驱动不兼容,我们将无法从异常消息里提取SQL错误代码,并打印这个错误。比如 JDBC 5.1.46 + MySQL 5.5 就会出现这个问题,可以考虑升级JDBC驱动到对应的版本来解决。

这个错误会让数据库异常监控失效。

Last updated