본문 바로가기
3. 웹 애플리케이션 취약점 진단/비박스를 활용한 웹 애플리케이션 취약점 진단

[비박스를 활용한 웹 취약점 진단] 6-1.세션 관리 취약점 [URL 주소 조작을 통한 세션 우회]

by Robert8478 2023. 12. 13.

이 페이지에서는 다른 사용자의 세션 정보를 이용해서 권한을 획득 할 수 있는지에 대해 검사한다.
실무에서는 게시판에 스크립트를 삽입해서 사용자의 정보를 획득하거나 네트워크 스푸핑을 통해 획득한다.

[난이도 하]
https://chrome.google.com/webstore/detail/editthiscookie/fngmhnnpilhplaeedifhccceomclgfbg/related?hl=ko

 

EditThisCookie

EditThisCookie는 쿠키 관리자입니다. 이것을 이용하여 쿠키를 추가하고, 삭제하고, 편집하고, 찾고, 보호하거나 막을 수 있습니다!

chrome.google.com

쿠키값을 변경할 수 있는 크롬 확장프로그램을 다운받아서 쿠키값을 변경할 수 있도록 하자.

URL 주소 부분에 떡하니 PHP 세션값이 나와있다. 이 세션값을 복사하면 다른 사용자가 이 페이지에 대한 어드민 권한을 얻을 수 있을 것이다. 다른 사용자로 로그인하기 위해 새 브라우저를 열고 bWAPP login 페이지로 간다.

login 페이지에서 쿠키 변경 확장프로그램을 열고 PHPSESSID 값을 아까 노출되었던 세션값을 넣어주고 아래 초록 버튼을 눌러준다.

아직 로그인 창인 상태에서 smgmt_sessionid_url.php 주소로 이동해주면 로그인 하지 않았는데도 해당 페이지로 이동한 것을 볼 수 있다.

[난이도 중,상]

난이도 중에서는 URL에 세션값이 노출되지는 않았으나 버프슈트에서는 노출되었다.
난이도 중에서 로그인한 세션값을 얻어서 똑같은 방식으로 이동해보자.

그랬더니 전과 똑같이 권한을 얻은것을 확인할 수 있다. 난이도 상도 똑같다. 세션 값을 탈취하게 되면 막기 힘들어지지만
URL 같은 곳에 노출시키는 것은 꼭 막아야만 하는 일이다.

난이도 하의 소스코드를 확인해 보았을 때 PHP의 header 함수를 사용해서 HTTP 헤더를 서버로 보냈다.
header 함수에 사용된 location은 콜론 뒤에 있는 주소로 리다이렉션 하는 헤더 메시지이다. 즉, 세션 아이디를 URL에 노출되도록 한 것이다.

난이도 중,상에서는 저러한 코드가 없기 때문에 노출되지 않았다.