상세 컨텐츠

본문 제목

[Bee-Box] 세션 관리 취약점

해킹공부/웹해킹 실습

by 밍구21 2022. 7. 19. 04:17

본문

세션은 웹사이트에서 서비스를 제공할 때 사용자의 로그인을 유지하기 위하여 사용

▶ 관리 소홀시 세션을 가로채서 재사용하는 공격 가능

▶정상적 프로세스가 진행되는 과정에서 발생

▶자동 진단 도구에서 특정한 패턴 매칭으로 도출할 수 없는 취약점

 

8.1 관리자 페이지 접근

'smgmt_admin_portal.php'에서 관리자 권한을 체크하는 전달 값을 수정하여 관리자 인증 없이 내부 페이지에 접근 가능한지 점검.

 

URL 'admin' 변수를 노출

▶URL 정보나 쿠키값에 admin 같은 추측 쉬운 변수 존재 시 여러 값으로 조작 시도

 

#난이도 하

URL에 admin 변수가 0으로 존재한다. 0을 1로 변경해보겠다.

 

공격 성공. 페이지 잠금 해제 메시지가 뜨며 관리자만 접근 가능한 페이지에 접근한 모습을 볼 수 있다.

 

 

 

#난이도 중

    -실습을 위한 버프스위트 설치는 이전 글에 존재, 본격적인 사용 방법은 아래 블로그를 참고하였다.

    https://tkdrms568.tistory.com/132

 

버프스위트와 beebox 사용하기(Windows)

책을 읽다보니 버프스위트를 설치해야 한다고 나와있길래 버프스위트를 설치해서 사용해 보기로 하였다. 1. burpsuite 다운로드 https://portswigger.net/burp/communitydownload Download Burp Suite Community E..

tkdrms568.tistory.com

 

버프스위트로 HTTP요청을 가로채서 요청 헤더를 확인. 쿠키 값에 admin변수가 있음을 볼 수 있다.

admin값을 1로 바꾸고 수정한 내용을 요청한다.

쿠키 값이 변조되어 페이지 잠금이 풀린 걸 확인할 수 있다.

 

#대응방안

 

 

 

 

 


8.2 URL 주소 조작을 통한 세션 우회

 

smgmt_sessionid_url.php 페이지는 세션아이디를 노출하면 안된다는 메시지가 뜨지만 URL에 세션아이디가 노출되어 있다.

 

-시나리오 : 공격자용으로 사용하던 현재 웹브라우저 외에 공격대상이 될 웹브라우저로 비박스 로그인 페이지에 접속한다. 그 다음 공격자용 웹브라우저에서 버프스위트를 이용해 공격대상의 세션 아이디로 smgmt_sessionid_url.php 페이지에 연결을 요청한다.

 

 자세히 설명을 하면 공격자용 웹브라우저에서 비박스 로그인 페이지를 접속 또는 새로고침 하는 등 요청을 보낸다. 그리고 버프스위트를 이용해 해당 로그인 페이지의 요청 패킷을 가로채서 Host헤더와 Cookie헤더를 수정한다. Host 헤더더는 smgmt_sessionid_url.php로, Cookie헤더는 공격대상의 sessionID로 변경하면 된다.

 

 

해당 페이지를 새로고침 시켜 로그인 페이지의 요청 패킷을 보내도록 했다.

 

 

버프스위트를 통해 가로챈 해당 패킷이다.

 

 

 

Host 헤더에서 요청 php주소와 Cookie헤더에서 sessionID를 수정해준 뒤 Forward를 클릭해 요청을 전송시켰다.

 

 

 

그 결과, 버프스위트에서 smgmt_sessionid_url.php 페이지 요청 세션을 한 번 더 가로챈다. (이때 페이지에서 보이는 변화는 없다.) 

 

그대로 sessionID를 공격대상의 세션 아이디 값으로 한 번 더 수정해준다.

 

 

그 결과, 따로 로그인 등 인증 단계를 거치지 않고 공격대상의 세션 아이디로 페이지 접근에 성공하게 되었다.

 

 

 

 

#스터디 퀴즈 오답노트

오답 선택 이유: 취약점 도출에 대한 개념을 잘못이해했다. 세션 처리 미흡 시 문제에서 말한 취약점 도출. 즉, 이 글에서 다룬 것과 같이 취약점이 발생한다는 사실은 알고 있었다. 하지만 문제를 풀 때 이해한 취약점 도출은 방어자의 입장에서 취약점을 발견한 것이라고 생각했다. 책에서 session취약점이 자동진단도구로 "도출"할 수 없는 취약점이라고 언급을 했어서 두 개념을 나눠 생각했기 때문이다.

 

정답 이유: URL정보 자체는 노출이 되는 것이고, URL정보에 변수 등을 노출 시키는 것이 세션관리 미흡 시 발생할 수 있는 상황이다.

관련글 더보기