前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OpenRASP SQL注入绕过

OpenRASP SQL注入绕过

原创
作者头像
腾讯代码安全检查Xcheck
修改2020-12-02 11:33:29
2.4K1
修改2020-12-02 11:33:29
举报

0x00 OpenRASP介绍

OpenRASP即应用运行时自我保护,“可直接注入到被保护应用的服务中提供函数级别的实时防护,可以在不更新策略以及不升级被保护应用代码的情况下检测/防护未知漏洞”——https://rasp.baidu.com/ 《OpenRASP 官方文档》

0x01 OpenRASP防护效果

  1. 环境搭建 本文以Tomcat服务器为例,参考官网 快速接入——Tomcat服务器文档(https://rasp.baidu.com/doc/install/manual/tomcat.html
官方搭建指引文档
官方搭建指引文档

2. 防护示例

对靶场项目进行SQL注入攻击,根据burp返回报文,显示已经被OpenRASP拦截。

burp返回报文
burp返回报文
OpenRASP拦截图
OpenRASP拦截图

0x03 绕过OpenRASP进行SQL注入

操作:新增一个参数(参数名为一个无意义的参数名即可),注意该参数需要在被注入参数的前面,以保证rasp先检测该参数。被注入参数中添加一段注释如下,新增参数值为注释的一部分(长度大于等于8即可)。

如下图,盲注成功:

盲注成功
盲注成功

对于请求content-type为multipart的,也是同理,新增额外参数来绕过。但是对于json格式的请求报文,除了上述的请求参数污染外,还可以通过添加或者修改header(User-Agent/X-Forwarded-For/Referer)内容,从而绕过open rasp检测。

修改User-Agent绕过
修改User-Agent绕过
修改X-Forwarded-For绕过
修改X-Forwarded-For绕过

0x04 绕过分析

调试分析源码plugins/official/plugin.js文件。在_run方法中,使用RASP.sql_tokenize方法会将执行的SQL语句解析成一个个token,解析的结果中不会包含注释部分。

代码语言:javascript
复制
  if (algorithmConfig.sql_userinput.pre_enable && ! sqliPrefilter1.test(value)) {
       return false
  }

  // 懒加载,需要的时候初始化 token
  if (raw_tokens.length == 0) {
      raw_tokens = RASP.sql_tokenize(params.query, params.server)
  }

  if (is_token_changed(raw_tokens, userinput_idx, value.length)) {
      reason = _("SQLi - SQL query structure altered by user input, request parameter name: %1%", [name])
      return true
  }

如下图,调试可观察到程序将SQL语句解析为12个token,语句中注释的部分被忽略。

SQL语句 token
SQL语句 token

然后进入is_token_changed方法中。该方法作用主要是:找到用户输入参数值在要被执行的SQL语句(已经解析成token,里面不包含注释内容)的位置,所以只要该参数属于SQL语句注释的内容,这里的start值就不会被后续赋值,始终为-1。在后面会产生数组越界,从而程序异常终止。从而绕过open rasp检测。

is_token_changed方法
is_token_changed方法

0x05 最后

使用OpenRASP并不能保证应用程序绝对的安全,代码安全才是治本之道。本文仅对绕过OpenRASP进行SQL注入进行研究,但是从绕过原理上看,其他漏洞防护也可用相似的方法绕过,暂未验证。抛砖引玉,有兴趣的小伙伴欢迎发送消息后台交流~


想了解Xcheck更多信息或者代码安全审计相关技术欢迎关注xcheck公众号~

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x00 OpenRASP介绍
  • 0x01 OpenRASP防护效果
  • 0x03 绕过OpenRASP进行SQL注入
  • 0x04 绕过分析
  • 0x05 最后
相关产品与服务
应用安全开发
应用安全开发(Application Security Development,下文中也叫 Xcheck)为您提供优质的代码分析服务。Xcheck 凭借优秀的算法和工程实现,能在极低的误报率和漏报率前提下,以极快的速度发现代码中存在的安全漏洞。Xcheck 采用私有化部署的模式,所以产品使用的整个生命周期,源码都不会流出公司网络,杜绝源码泄露风险。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档