Code::Security/비박스(BWAPP)

비박스(bWAPP) A8 CSRF (Change Password)

태군 코드 2022. 10. 7. 16:38
반응형

이 도구를 이용하여 허용받지 않은 서비스 대상으로 해킹을 시도하는 행위는 범죄 행위입니다. 해킹을 시도할 때에 발생하는 법적인 책임은 그것을 행한 사용자에게 있다는 것을 명심하시기 바랍니다.

 

A8 - CSRF (Change Password)

 

난이도 하

csrf_1.php

csrf_1.php 페이지를 살펴보면 접속한 사용자의 패스워드를 변경할 수 있는 기능을 제공하고 있습니다. 여기서는 패스워드 변경 시 아무런 검증을 하지 않고 변경할 패스워드에 관해서만 검증을 하고 있다는 것을 알 수 있습니다.

 

URL 변수 노출

New password 입력란에 값을 입력하고 [Change] 버튼을 누르면 URL에 변수가 노출하는것을 확인할 수 있으며, 그 변수는 password, password_conf라는 것을 알 수 있습니다. 그럼 URL을 복사한 뒤 csrf_1.php 페이지를 호출하여 패스워드를 변경하는 코드를 작성하여 패스워드가 어떻게 변경이 되는지 확인해 보도록 하겠습니다.

 

버프를 통한 URL 복사 방법

추가로 버프스위트를 통하여 URL을 복사하기 위해서는 요청 패킷을 잡고 난 후 마우스 우클릭하여 Copy URL을 눌러 주면 URL 복사가 이루어집니다.

 

먼저 패스워드를 변경하는 CSRF 공격을 하기 위해서는 비박스에서 A1 HTML Injection - Stored (Blog) 페이지 또는 A3 XSS - Stored (Blog) 페이지를 이용해야 합니다. 여기서는 A3 XSS - Stored (Blog) 페이지를 이용하여 진행해 보도록 하겠습니다.

 

공격코드 (csrf로 패스워드 변경)

<a href = "http://localhost/bWAPP/csrf_1.php?password_new=csrf&password_conf=csrf&action=change">CSRF password Chahge</a>

 

<img src="http://localhost/bWAPP/csrf_1.php?password_new=csrf&password_conf=csrf&action=change" height=0 width=0>

 

공격코드는 이것 이외에도 다양하게 활용할 수 있으므로 다양한 방법으로 테스트를 해보시기를 추천드립니다.

 

공격구문 삽입

공격코드를 입력 후 Submit 버튼을 눌러주면 취약한 서버에 공격코드가 저장이 되고 [CSRF password Change] 글씨를 누르면 서버에서 공격 구문이 실행되어 패스워드가 변경이 될 것입니다.

 

비밀번호 변경

CSRF password Chage를 눌러주면 패스워드 변경 페이지로 이동하고 패스워드가 변경이 되었다는 메시지를 확인할 수 있습니다.

 

기존 패스워드로 로그인 불가

로그아웃을 한 뒤 기존 패스워드로 로그인 시도를 하면 패스워드가 변경이 되어 로그인이 안되는 것을 확인할 수 있습니다.

 

반응형

 

난이도 중/상

난이도 중/상에서는 기존 패스워드를 입력하고 변경할 패스워드를 입력해야지 패스워드가 변경이 되므로, 기존의 패스워드를 알지 못하면 패스워드 변경이 불가하다는 것을 확인할 수 있습니다.

 

csrf_1.php

csrf_1.php 페이지의 소스코드를 살펴보면 password_new, password_curr 변수를 mysqli_real_escape_string 함수를 사용하여 우회하고 있으며 SQL Injection 등 다른 공격에 대하여 방어하고 있습니다.

또한 passwor_curr변수의 입력 값을 SHA-1 해시 값으로 변환 후 데이터베이스에 저장된 비밀번호 해시 값과 비교하고 있으며 비밀번호를 변경하기 위해서는 위에서도 언급한 바와 같이 현재 비밀번호가 필요하다는 걸 확인할 수 있습니다.

반응형