이 도구를 이용하여 허용받지 않은 서비스 대상으로 해킹을 시도하는 행위는 범죄 행위입니다. 해킹을 시도할 때에 발생하는 법적인 책임은 그것을 행한 사용자에게 있다는 것을 명심하시기 바랍니다.
A4 - Insecure DOR (Reset Secret)
안전하지 않은 직접 객체 참조 취약점을 통하여 비밀번호 힌트를 변경해 보겠습니다. 해당 페이지는 비밀번호 힌트 변경 요청을 하면 변경 요청 확인 없이 초기화할 비밀번호 힌트가 전송됩니다. 변수에 입력된 값을 필터링하지 않는 직접 객체 참조 취약점을 이용하여 버프 스위트로 요청 값을 가로챈 후 다른 사용자의 비밀번호를 초기화합니다.
난이도 하
insecure_direct_object_ref_3.php 페이지는 접속한 사용자의 비밀번호 힌트를 'Any bugs?'로 초기화하는 기능을 제공하는 페이지입니다. 버프 스위트로 [Any bugs?] 버튼을 클릭했을 때의 요청을 가로채서 확인해 보도록 하겠습니다.
버프 스위트를 통하여 [Any bugs?] 버튼을 클릭했을 때의 요청되는 패킷을 확인해 보면 'xxe-2.php' 페이지로 XML 타입의 변수를 전송합니다. 전송되는 변수는 login과 secret이며, 각각 아이디와 초기화할 비밀번호 힌트가 입력되어 있습니다.
여기서 다른 사용자의 비밀번호 힌트를 초기화하는 공격을 시도합니다. login 변수와 secret 변수의 내용을 수정한 후 [Forward] 버튼을 눌러 줍니다. 그리고 'sqli_16.php' 페이지로 이동하여 test01 계정의 비밀번호 힌트를 확인해 보도록 하겠습니다.
sqli_16.php 페이지에서 test01 계정의 비밀번호 힌트 내용을 확인해 보면 조금 전에 변경한 내용으로 변경된 것을 확인할 수 있습니다.
난이도 중/상
난이도 중/상에서는 로그인 변수에 사용하는 아이디를 세션에서 받아 입력하기 때문에 버프 스위트에서 아이디를 수정하여도 사용자가 변경되지 않습니다.
또한, simplexml_load_string() 함수를 사용하여 XML 코드를 객체로 변경한 후 MySQL의 UPDATE SET 구문으로 secret 변수에 입력된 내용으로 비밀번호 힌트를 초기화합니다. 여기서도 마찬가지로 PHP에서 제공하는 mysqli_real_escape_string 함수를 사용하여 NULL, \n, \r, \, ', ", ^Z에 백 슬래시를 붙여 SQL 인젝션 및 XXE 공격을 방어하고 있습니다.
'Code::Security > 비박스(BWAPP)' 카테고리의 다른 글
비박스(bWAPP) A5 Security Misconfiguration (보안 설정 오류) (0) | 2022.09.05 |
---|---|
비박스(bWAPP) A4 Insecure DOR (Order Tickets) (0) | 2022.09.02 |
비박스(bWAPP) A4 Insecure DOR (Change Secret) (0) | 2022.08.30 |
비박스(bWAPP) A3 XSS - Stored (User-Agent) (0) | 2022.08.26 |
비박스(bWAPP) A3 XSS - Stored (Cookies) (0) | 2022.08.23 |