在sonSonarqube上编写XPath规则做SQL拼接代码检测

admin 2022年2月8日23:17:16评论269 views字数 1732阅读5分46秒阅读模式

我们的目的,扫描出来SQL拼接,SQL拼接如果没有用预编译从合规来说就是不对的。

Sonar测试环境安装

Sonarqube的docker化(有的人连docker都不会用,😔):

version:  "3"

 

services:

  sonarqube:

    image: sonarqube:7.9-community

    ports:

      - "9000:9000"

    networks:

      - sonarnet

    environment:

      -  SONARQUBE_JDBC_URL=jdbc:postgresql://db:5432/sonar

    volumes:

      - sonarqube_conf:/opt/sonarqube/conf

      - sonarqube_data:/opt/sonarqube/data

      - sonarqube_extensions:/opt/sonarqube/extensions

      -  sonarqube_bundled-plugins:/opt/sonarqube/lib/bundled-plugins

 

  db:

    image: postgres:11.1

    networks:

      - sonarnet

    environment:

      - POSTGRES_USER=sonar

      - POSTGRES_PASSWORD=sonar

    volumes:

      -  postgresql_data:/var/lib/postgresql/data

 

networks:

  sonarnet:

    driver: bridge

 

volumes:

  sonarqube_conf:

  sonarqube_data:

  sonarqube_extensions:

  sonarqube_bundled-plugins:

  postgresql_data:

在sonSonarqube上编写XPath规则做SQL拼接代码检测

运行sonar准备好,建议运行sonarqube7.9,这是一个LTS版本。支持大量的插件。

Sonar-pmd

安装完成打开127.0.0.1:9000,输入账号admin/admin,然后登陆配置,选择market,然后输入“chinese“ 安装中文语言包。方便E文不好的童鞋。同时安装好pmd


 

在sonSonarqube上编写XPath规则做SQL拼接代码检测


 

静态代码检测可以做哪些事情(看起来和正则表达式一样):

1、SQL拼接(同理可以检测其他的一些拼接,例如命令执行的参数是否拼接了)

2、SSO认证SDK是否接入

3、加密算法是否使用了国密

4、1day 特征检测

5、配置信息是否有密码明文特征

6、大部分语言的规则(Ecmascript,PHP,C#,Python,Ruby,GO,XML等)

静态代码审计有一些鸡肋,由于不能溯源变量的来源,显得好像只能检测一部分的安全问题。但是这个有一点好处就是语言多,支持的范围广,毕竟是ast检测,不是检测字节码。哦,对了,他还可以支持IDEA和Eclipse。甚至可以把合规的丢到开发的初期就解决问题,一份策略,2个地方可以使用,且支持多语言。Em..挺好的,加上字节码的检测,这样合规和漏洞都可以解决。

 

规则导入:

选择“代码规则“

然后选择“模板“->”只显示模板”

在sonSonarqube上编写XPath规则做SQL拼接代码检测

然后选择XPath rule template

在sonSonarqube上编写XPath规则做SQL拼接代码检测

然后选择“自定义规则“

在sonSonarqube上编写XPath规则做SQL拼接代码检测



然后到“质量配置”里创建一个PMD规则

在sonSonarqube上编写XPath规则做SQL拼接代码检测

并且在‘代码规则‘里激活它

在sonSonarqube上编写XPath规则做SQL拼接代码检测

 

Mybatis 

在sonSonarqube上编写XPath规则做SQL拼接代码检测

怎么安装就不说了,这里创建一个Mybatis SQL拼接的质量配置


然后默认使用他

在sonSonarqube上编写XPath规则做SQL拼接代码检测

然后回到“代码规则”里找到

在sonSonarqube上编写XPath规则做SQL拼接代码检测

并继承他编写规则

定义3个SQL拼接规则

在sonSonarqube上编写XPath规则做SQL拼接代码检测

其实只要第一个规则就行了。意思就是任何元素的文本包含$符号就判定为SQL拼接

最后的效果如下

在sonSonarqube上编写XPath规则做SQL拼接代码检测


可以看到这些都是有问题的,潜在可能存在SQL注入

在sonSonarqube上编写XPath规则做SQL拼接代码检测


其他问题

1、sonar扫描xml需要增加一个sonar.source变量,即在扫描的时候增加-Dsonar.source=src

2、配置xml规则的时候,文件类型不需要填写

3、XPath语法2.0才会有fn:matches和starts-with等




明天继续分享规则怎么写

本文始发于微信公众号(xsser的博客):在sonSonarqube上编写XPath规则做SQL拼接代码检测

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年2月8日23:17:16
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   在sonSonarqube上编写XPath规则做SQL拼接代码检测https://cn-sec.com/archives/481902.html

发表评论

匿名网友 填写信息