세션은 웹사이트에서 서비스를 제공할 때 사용자의 로그인을 유지하기 위하여 사용
▶ 관리 소홀시 세션을 가로채서 재사용하는 공격 가능
▶정상적 프로세스가 진행되는 과정에서 발생
▶자동 진단 도구에서 특정한 패턴 매칭으로 도출할 수 없는 취약점
8.1 관리자 페이지 접근
'smgmt_admin_portal.php'에서 관리자 권한을 체크하는 전달 값을 수정하여 관리자 인증 없이 내부 페이지에 접근 가능한지 점검.
URL 'admin' 변수를 노출
▶URL 정보나 쿠키값에 admin 같은 추측 쉬운 변수 존재 시 여러 값으로 조작 시도
#난이도 하
URL에 admin 변수가 0으로 존재한다. 0을 1로 변경해보겠다.
공격 성공. 페이지 잠금 해제 메시지가 뜨며 관리자만 접근 가능한 페이지에 접근한 모습을 볼 수 있다.
#난이도 중
-실습을 위한 버프스위트 설치는 이전 글에 존재, 본격적인 사용 방법은 아래 블로그를 참고하였다.
https://tkdrms568.tistory.com/132
버프스위트로 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정보에 변수 등을 노출 시키는 것이 세션관리 미흡 시 발생할 수 있는 상황이다.
[Bee-Box] 서버 측 요청 변조 (0) | 2022.08.04 |
---|---|
[Bee-Box] 반사된 XSS 취약점 (0) | 2022.08.02 |
[Bee-Box] Blind SQL 인젝션 5.2 - Time Based (0) | 2022.07.12 |
[Bee-Box] Blind SQL 인젝션 5.1 - Boolean Based (0) | 2022.07.07 |
[Bee-Box] 실습환경 구축 (0) | 2022.07.07 |