OverTheWire WriteUp

OverTheWire Natas [Level5] - WriteUp

Roronoa 2023. 6. 11. 05:42
반응형

문제 정보

Username: natas5
Password: Z0NsrtIkJoKALBCLi5eqFfcRN82Au2oD
URL:      http://natas5.natas.labs.overthewire.org

 

[그림 1] natas5 사이트 접속

그림1은 natas5에 접속한 화면이다. 권한이 부여되지 않았고 로그인이 되지 않았다고 알려주고 있다.

우리는 이 문제를 해결하기 위해서는 로그인을 하여 권한을 부여받으면 되는 문제인 것 같다.

 

[그림 2] request 확인

해당 사이트에 재접속을 할 때 어떤 헤더들을 보내고 있는지 확인을 하였다.

헤더 아래부분에 Cookie라는 값을 담이서 요청을 하고 있다.

HTTP 통신은 신뢰적인 TCP 통신을 하여 request를 요청하면 3번의 handshake를 하여 연결을 맺고 response를 한 후 4 handshake를 하여 연결을 끝는다.

그리고 통신을 끝나면 상태를 유지 하지 않기 때문에 로그인을 하고 페이지를 이동할때마다 다시 로그인을 하여야 한다. 이러한 HTTP 통신의 단점을 보완하기 위해 쿠키가 등장하였다.

쿠키는 key와 value 값을 가지는 작은 데이터이다. 쿠키에 인증정보나 다양한 값을 저장하여 웹 사이트에 요청할 때 이 쿠키값을 보고 사용자가 로그인 되었는지 확인 할 수 있다.

 

그림 2에서는 loggedin이라는 쿠키의 값이 0으로 설정되어 있다.

loggedin이 0일때 어떤 결과가 나오는지 확인 해보겠다.

 

[그림 3] response 확인

그림 3은 response를 확인을 한 결과이다. loggedin 쿠키가 0으로 설정되어 있고, 아래에 그림 1과 같이 권한이 부여되지 않았다고 되어있다.

loggedin의 값이 0으로 false로 설정되어 로그인이 되지 않다고 추측할 수 있다. loggein의 값을 1이나 다른 수로 바꾸면 true가 되어 로그인을 할 수 있을것같다.

 

[그림 4] loggedin 쿠키 값 변경

loggedin의 쿠키 값을 1로 변경하여 response를 확인해 보겠다.

 

[그림 5] response 확인(쿠키 변조 후)

그림 5는 loggedin의 쿠키 값을 1로 변조한 후 response를 확인한 결과이다.

아래에 보면 권한을 부여 받았으며, natas6의 비밀번호 또한 알려주고 있다.

 

natas6 Credentials

Username : natas6

Password : fOIvE0MDtPTgRhqmmvvAOt2EfXR6uQgR

 

결론

위 문제처럼 쿠키를 변조하여 쉽게 로그인 권한을 얻을 수 있다. 따라서 단순한 쿠키값을 부여하는것이 아니라 랜덤 값을 부여하는 식으로 보안을 해나가야 할 것이라고 생각한다. 또한 쿠키가 xss공격, 스니핑 공격, 공용 pc에 의한 쿠키 유출 등 다양한 방식으로 쿠키가 유출되어 로그인 권한을 획득 할 수 있기 때문에 이러한 공격에 해당하는 대응 기법들도 알아야 한다.

 

레퍼런스

https://interconnection.tistory.com/74

 

 

 

반응형