
CVE-2019-17240의 익스플로잇입니다.
Bludit CMS 3.9.2 이하 버전은 10회 이상 잘못된 로그인을 시도한 사용자를 차단하는 무차별 대입 방지 메커니즘을 우회할 수 있는 취약점에 영향을 받습니다.
이 취약점은 Rastating에 의해 발견되었습니다.
변경되는 문자열(스푸핑된 문자열)을 X-Forwarded-For 헤더 값으로 사용하여 로그인 요청을 제출하면 성공적으로 처리되었으며, 실패한 로그인 시도는 스푸핑된 문자열에 기록되었습니다.
위 스크립트는 해당 취약점을 사용하여 무차별 대입 방지 메커니즘을 우회합니다.
로그인 페이지 본문에는 CSRF 토큰이 있으므로, 자격 증명으로 POST 요청을 할 때마다 이전 응답의 소스에서 CSRF 토큰을 가져와야 합니다.
한 가지 방법은 GET 요청을 보내고 CSRF 토큰을 가져온 후 자격 증명과 가져온 토큰으로 POST 요청을 보내고 비밀번호를 찾을 때까지 반복하는 것입니다. 이것이 대부분의 스크립트에서 본 방식입니다.
다른 방법은 마지막 POST 요청의 응답에서 CSRF 토큰을 가져오는 것이므로, 처음에만 GET 요청을 하면 됩니다.
두 번째 방법은 첫 번째 방법보다 훨씬 빠르며, 많은 요청을 해야 하는 무차별 대입 공격에서는 약간의 효율성 차이가 큰 영향을 미칩니다.
두 가지 방법을 모두 시도해본 결과, 두 번째 방법으로 1분에 63개의 단어를 테스트할 수 있었고 첫 번째 방법으로는 단 19개를 테스트할 수 있었습니다.
python3 brute.py -u [url] -user [username] -w [pathToWordlist] [-t [threads to use]]
python3 brute.py -u https://192.168.10.13/ -user admin -w sysadmin -t 30
