简述:
报错注入的危害主要是查询数据方面,它自己很难做一些如提权之类的动作。
报错注入主要涉及:extractvalue()、updatexml()等。这些函数的功能和注入结果类似,但使用的参数会略有不同。
本文讨论到的报错注入主要是“xml”的报错注入,先讨论注入点
简单的来说,在数据库中,一些操作xml文件的函数会遵循一种叫“XPATH”的格式规范。这个规范会比较严格,限制了一些字符。而当数据库查询语句试图调用上面提到的函数时,若给出的查询语句——也就是查询的目标XPATH就会触发“报错”
这里可以发现,触发报错是很容易的,但有报错不一定有注入。安全的查询在报错时只会返回用户所查询的语句,而若存在暴露,数据库会解析extractvalue里存在的一些查询语句并返回,导致攻击者可以通过报错注入去爬取数据库的数据。
payload案例:
1 | https://xxx.xxx.xxx/xxx/xxx/api/xxx/xxx?xxx=xxx%27%20AND%20EXTRACTVALUE(1,concat(0x7e,database(),0x7e))--%20xxxx |
小结:
报错注入形式简单,判断简单,是一个可以模板化测试的漏洞(sqlmap)
而若有蓝队研判需求,主要关注报错注入的返回包是否没有返回查询语句而是返回其它一些有的没的。