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)敏感配置泄漏: 以普通用户登陆就可以查看该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。
转载请注明:IT运维空间 » 安全防护 » SonarQube API越权漏洞的思考
发表评论