이 도구를 이용하여 허용받지 않은 서비스 대상으로 해킹을 시도하는 행위는 범죄 행위입니다. 해킹을 시도할 때에 발생하는 법적인 책임은 그것을 행한 사용자에게 있다는 것을 명심하시기 바랍니다.
A8 - CSRF (Change Password)
난이도 하
csrf_1.php 페이지를 살펴보면 접속한 사용자의 패스워드를 변경할 수 있는 기능을 제공하고 있습니다. 여기서는 패스워드 변경 시 아무런 검증을 하지 않고 변경할 패스워드에 관해서만 검증을 하고 있다는 것을 알 수 있습니다.
New password 입력란에 값을 입력하고 [Change] 버튼을 누르면 URL에 변수가 노출하는것을 확인할 수 있으며, 그 변수는 password, password_conf라는 것을 알 수 있습니다. 그럼 URL을 복사한 뒤 csrf_1.php 페이지를 호출하여 패스워드를 변경하는 코드를 작성하여 패스워드가 어떻게 변경이 되는지 확인해 보도록 하겠습니다.
추가로 버프스위트를 통하여 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 페이지의 소스코드를 살펴보면 password_new, password_curr 변수를 mysqli_real_escape_string 함수를 사용하여 우회하고 있으며 SQL Injection 등 다른 공격에 대하여 방어하고 있습니다.
또한 passwor_curr변수의 입력 값을 SHA-1 해시 값으로 변환 후 데이터베이스에 저장된 비밀번호 해시 값과 비교하고 있으며 비밀번호를 변경하기 위해서는 위에서도 언급한 바와 같이 현재 비밀번호가 필요하다는 걸 확인할 수 있습니다.
'Code::Security > 비박스(BWAPP)' 카테고리의 다른 글
비박스(bWAPP) A8 CSRF (Transfer Amount) (0) | 2022.10.11 |
---|---|
비박스(bWAPP) A8 CSRF (Change Secret) (0) | 2022.10.11 |
비박스(bWAPP) A8 Cross-Site Request Forgery (CSRF) (0) | 2022.10.07 |
비박스(bWAPP) A7 XML External Entity Attacks (XXE) (0) | 2022.10.06 |
비박스(bWAPP) A7 Server Side Request Forgery (SSRF) (0) | 2022.10.04 |