이 도구를 이용하여 허용받지 않은 서비스 대상으로 해킹을 시도하는 행위는 범죄 행위입니다. 해킹을 시도할 때에 발생하는 법적인 책임은 그것을 행한 사용자에게 있다는 것을 명심하시기 바랍니다.
A4 - Insecure DOR (Order Tickets)
난이도 하
insecure_direct_object_ref_2.php 페이지는 티켓을 주문하는 기능을 제공합니다. 1tickets를 선택하고 [Confirm] 버튼을 눌러보도록 하겠습니다.
[Confirm] 버튼을 누르면 1장의 영화 티켓이 주문이 되었고 15 EUR라는 메시지를 확인할수 있습니다. 더 자세히 살펴보기 위하여 크롬 개발자 도구 및 버프 스위트를 통하여 알아보도록 하겠습니다.
버프 스위트를 통하여 패킷을 확인해 보면 티켓 수량 및 가격정보가 전달되는 것을 알 수 있습니다. 해당 페이지에서는 상품 주문 시 상품의 가격조작이 가능하기 때문에 이후에 과정은 테스트를 직접 해보시고 결과가 어떻게 나오는지 확인해 보시기 바랍니다.
개발자 도구를 통하여 소스 코드를 확인해보면 티켓의 가격을 저장하는 변수가 hidden 타입으로 숨겨져 있는것을 확인할 수 있습니다. hidden -> text로 변경해 보도록 하겠습니다.
hidden 타입을 text 타입으로 변경을 하면 티켓값이 담겨있는 입력창이 나타나게 됩니다. 여기서 가격을 수정하거나 ticket_price 변수의 값을 1로 수정을 하게 되면 15유로가 아닌 1유로로 티켓이 주문되게 됩니다.
난이도 중
난이도 중에서는 난이도 하와는 다르게 가격정보를 담는 변수가 사라진것을 확인할 수 있습니다.
소스코드를 확인해 보면 isset 함수를 통하여 값을 리턴을 해주는 것을알수 있고 요청된 값이 있을 시 해당 값을 ticket_price 값으로 반영해주고 있기 때문에 가격이 변조될 위협이 있습니다.
실제 취약점 진단이나 모의해킹을 하게 되면 이행점검을 하게 되는데 이행점검시에는 취약했던 변수나 정보들을 알고 다시 한번 점검을 하게 됩니다. 여기서도 난이도 하에서 봤던 가격정보 변수를 이용하여 프락시 툴로 값을 전달해 보도록 하겠습니다.
ticket_quantity=1&action=order&ticket_price=1
난이도 하에서 취약했던 변수를 사용하여 난이도 중에서 값을 넣고 넘겨서 확인하면 변경해주었던 티켓값으로 페이지에 노출이 되는것을 알 수 있습니다.
난이도 상
난이도 상을 확인해 보면 티켓값을 고정해 놓을것을 알 수 있습니다. 소스코드를 확인해 보면 abs 절댓값 함수를 사용하여 티켓 수량과 티켓금액을 곱하여 값을 출력해 준다는 것을 확인할 수 있습니다. 따라서 가격과 같이 변하면 안 되는 데이터의 경우 웹 페이지 소스코드에서 사용자에게 변수가 드러나지 않도록 해야 하고, 난이도 상에서 처럼 값을 고정하여 수정되지 않도록 하여야 합니다.
'Code::Security > 비박스(BWAPP)' 카테고리의 다른 글
비박스(bWAPP) A5 Arbitrary File Access (Samba) (0) | 2022.09.05 |
---|---|
비박스(bWAPP) A5 Security Misconfiguration (보안 설정 오류) (0) | 2022.09.05 |
비박스(bWAPP) A4 Insecure DOR (Reset Secret) (0) | 2022.08.30 |
비박스(bWAPP) A4 Insecure DOR (Change Secret) (0) | 2022.08.30 |
비박스(bWAPP) A3 XSS - Stored (User-Agent) (0) | 2022.08.26 |