30. [16주차]-1 인가 취약점

* 과제
1. 인가 취약점 정리
2. 문제 풀기


 

1. 인가 취약점 정리

인증: Athentication: 그 사람이 본인이 맞는지 확인하는 작업

인가: Athorization: 특정 권한을 부여하는 것

 

1.1 인증 취약점 대표 케이스

  • 쿠키를 통한 인증
  • process 점프
    • 회원가입 시 step1.php, step2.php, step3.php 같은 페이지들....
  • 파라미터 응답값 변조
    • 응답값에 따라 분기해서 보여주는 경우가 많은 모바일앱에서 많이 보임

 

1.2 인가 취약점 대표 케이스

  • 주석으로 접근 제한
  • 인가 체크를 클라이언트 측에서 하는 경우
  • guessing 공격
  • 파라미터 변조

 

 

2. 문제 풀기

 

 

 

2.1 authorization 1

로그인을 했더니 위의 화면이 나타났다.

어떻게 할 까 고민하다가 혹시...? 싶어 확인했더니...

 

발사 버튼의 주석을 해제하고 플래그를 얻을 수 있었다.

 

 

2.2 authorization 2

해당 문제는 발사버튼을 클릭하면 goMenu 라는 함수를 호출한다.

해당 함수는 다음과 같으며, php페이지를 직접 호출해도 되고 goMenu('1018', '')을 goMenu('1018', 'admin')으로 고쳐도 된다.

그렇게 플래그를 얻을 수 있었다.

 

 

2.3 authorization 3

위 문제가 같은 방식이다. 단지 이번에는 url이 난독화 돼있어서 바로 호출을 하지 못한다,

goMenu('9999', 'admin')으로 수정해서 발사버튼을 클릭해 플래그를 얻을 수 있었다.

 

 

2.4 authorization 4

이번에는 게시글을 남겨야 하는 문제이다.

게시글은 하나만 있고 수정하는 것도 없다.

여기서 고민하다가 URL을 보니 notice_read.php로 되어있다.

그렇다면, notice_write.php는 어떨까 싶었다.

게시글을 쓰는 화면이 나타났고 게시글을 쓰고 플래그를 얻을 수 있었다.

 

 

2.5 authorization 5

 

이번에는 공지글을 읽는 문제이다.

확인해보니, 일단 글은 읽을 수 없었다.

 

그래서 다른 일반 게시글의 수정 기능을 통해 42번 게시글을 읽으려 했다.

처음에는 경고창이 떠서 실패한 줄 알았는데

버프스위트로 보니 내용은 응답받았는데, 스크립트 때문에 못 본것이였다.

아래로 내려보니 플래그를 얻을 수 있었다.

 

 

2.6 authorization 6

이번에는 관리자의 정보를 얻는 문제다.

 

바로 마이페이지로 왔고 확인해보니 URL에서 ID 값으로 마이페이지를 보여주는 건가 싶었다.

해당 값을 admin으로 바꿔봤고 플래그를 얻을 수 있었다.

 

 

 

 

 

반응형

댓글()