Web Hacking/기타

접근 통제 취약점 공격

seungwon9201 2024. 7. 6. 00:30

취약한 접근 통제 리스크는 아래와 같이 분류할 수 있다.

  • URL이나 파라미터를 조작해서 다른 사용자의 리소스에 접속하거나 기능을 수행시키는 경우
  • 인증 및 인가 과정을 거치지 않고 관리자 페이지에 접속하는 경우
  • Directory Traversal 취약점과 같은 디렉토리 경로를 벗어난 호스트 내부에 접근하는 경우

IDOR Attack(Insecure Direct Object Reference)

안전하지 않은 직접 객체 참조 공격으로 공격자가 요청 메시지의 URL이나 파라미터를 변경해서 임의로 기능을 실행시키거나 리소스에 접근하는 공격 기법이다.

-실습 목표-
Burpsuite의 intercept기능을 사용해서 POST요청의 바디 부분에 전달되는 파라미터 값을 조작해서 물건의 가격을 변경시키자.

실습 페이지에 들어오면 이렇게 몇개의 티켓을 구매할 건지 물어보는 페이지가 나온다.

개수를 1개로 설정하고 confirm버튼을 누르면 구매할 개수의 티켓과 가격이 출력이 된다.

 

이제 burpsuite의 intercept기능을 키고 다시 confirm버튼을 눌러보자.

그러면 이렇게 각각의 파라미터가 전달되고 있는 것을 확인할 수 있다. 

웹 페이지에서는 가격은 변경할 수 없었지만 위의 사진을 보면 티켓의 가격정보(ticket_price)가 파라미터로 전달되는 것을 확인할 수 있다. 즉, 파라미터값을 변경할 수 있다면 우리가 원하는 가격으로 티켓을 변경시킬 수 있게 된다.

-웹 모의해킹 팁-
웹 페이지의 메뉴 등 사용자 인터페이스로는 변경할 수 없는 값이 파라미터를 통해서 전달된다면 공격이 가능할 수 있다.

 

그럼 이제 파라미터의 값을 변경시켜보자.

티켓의 개수를 10000개로 바꾸고 가격을 0원으로 바꾸었다. 이제 forward버튼을 눌러서 요청을 전송해 보자.

이렇게 10000개의 쿠폰을 0원으로 주문을 했다. 이렇게 파라미터를 조작해서 악의적으로 변경이 가능하다.


관리자 페이지 인증 우회

관리자 페이지의 URL을 직접 요청해서 관리자 페이지에 접속할 수 있다.

종종 관리자 페이지는 admin, admin.php 등과 같은 URL로 되어 있어 쉽게 추측할 수 있는 경우가 많고 웹 사용자가 관리자 페이지에 접근하면 권한이 있는지 확인을 해야 한다. 또한 로그인하지 않은 사용자가 관리자 페이지에 접속해서 각종 정보를 얻거나 관리 기능을 수행하는 문제점이 발생하는 경우가 있다.

 

 -실슴 목표-
관리자 URL을 직접 요청해서 관리자 메뉴에 접속해 보자.

 

아래와 같이 입력해서 직접 관리자 페이지에 접속해 보자.

http://192.168.56.102/bWAPP/admin

이렇게 URL을 추측해서 입력함으로써 관리자 페이제 접속할 수 있게 되었다.

이번 실습에서는 노출정보가 크게 중요한 정보는 아니지만, 실제 웹 사이트에서 이런 일이 발생한다면 굉장히 중요한 정보들이 노출될 가능성이 있다.

 

추가적으로 관리자 페이지가 반드시 관리자 페이지의 형태로 나타나는 것도 아니다.

예를 들어 DVWA 같은 경우에 setup.php URL로 접속을 하면 누구나 데이터 베이스를 초기화시킬 수 있게 된다.

 

만일 실제 시스템에서 이런 상황이 발생한다면 중요한 데이터가 손실되거나 노출될 수 있다.


Directory Traversal 취약점 공격

웹 애플리케이션의 파라미터 중에서 파일 경로를 그 값으로 지정할 수 있는 파라미터가 존재할 수 있다.

이러한 경우에 공격자는 해당 파일의 경로를 조작해서 의도치 않은 경로에 파일이 지정되기도 한다.

 

윈도우의 경우 ..\(리눅스는 ../)문자열을 통해서 상위 디렉토리의 경로를 지정하게 된다.

만약 이러한 문자열의 입력이 혀용 된다면 공격자는 상위디렉토리 여러 개를 거쳐서 결국 루트 디렉토리까지 지정할 수 있게 되고 결국 호스트 내부의 모든 파일에 접근하는 것이 가능하게 될 것이다.

 

그럼 실습을 해보자.

-실습 목표-
Directory Traversal attack으로 호스트 내부 파일의 내용을 확인하자.

실습 페이지에 URL을 보면 page 파라미터에 message.txt가 지정되어 전달되고 있다.

message.txt에 직접 접근해 보자.

이렇게 문자열이 출력되는 페이지가 뜨게 된다.

 

만약 message.txt파일이 아니라 다른 파일로 지정하면 어떻게 될까?

다른 파일의 내용이 웹 사이트를 통해서 출력될 가능성이 높아진다!

 

그럼 directory traversal attack을 통해서 page파라미터를 변경해 보자.

이렇게 page파라미터를 directory traversal attack으로 변경시켜 /etc/passwd/ 내용을 웹 페이지에 출력시켰다.

-웹 모의해킹 팁-
../를 반복하는 횟수는 현재 경로의 상위 디렉토리 숫자를 초과해도 아무런 상관이 없다. 루트 디렉토리의 상위 디렉토리는 루트 디렉토리이기 때문이다. 즉, 정확한 현재 경로를 파악하기 어렵다면 ../을 많이 입력해도 상관없다.

접근 통제 취약점 공격 대응법

  1. IDOR Attack 대응법
    • 웹 애플리케이션은 사용자로부터 전달하는 모든 입력값을 신뢰해서는 안된다.
    • 사용자 입력값이 정상적인 값인지 입력값 검증을 거쳐야 한다.
    • 클라이언트로부터 전달받을 필요가 없는 정보는 웹 내부에서 직접 설정해서 파라미터 조작 가능성을 차단하자.
  2. 관리자 페이지 우회 공격 대응법
    • 서버가 제공하는 기능에는 요청하는 사용자가 해당 기능을 실행할 권한을 가지고 있는지 확인하는 루틴이 필요하다.
    • /admin/과 같이 추측 가능한 디렉토리를 사용하는 것도 자제하자.
    • 관리자 페이지는 HTTPS 프로토콜을 이용하도록 구현하여 전송되는 메시지가 노출되지 않도록 하자.
  3. Directory Traversal Attack 대응법
    • IDOR Attack과 마찬가지로 화이트리스트나 블랙리스트를 사용해 입력값 검증을 수행하자.

'Web Hacking > 기타' 카테고리의 다른 글

자바 역직렬화 취약점 공격  (0) 2024.07.07
알려진 취약점을 이용한 공격  (0) 2024.07.06
민감한 데이터 노출 사례 실습  (0) 2024.07.01