구글 gruyere 해킹해보기 1편

사랑해요·2026년 2월 13일

서론

이론만 막 배우니 머리에 들어오는게 없는거 같아 찾아본게 이 gruyere이다.
앞에 나오는 이상한 영어들은 일찌감치 집어치우고 실습부터 했다.

시작


먼저 들어가니 이런 사이트가 있었다.
밑으로 내려가서 Continue >>버튼을 누르고 들어가니

또 이런 영어들이 나를 반겨주는데 앞에서 말했듯이 집어치우고
https://google-gruyere.appspot.com/start를 눌러 본격적으로 시작한다.



이렇게 게시판같은 페이지가 뜨는데 일단 로그인부터 해보자.


회원가입창에서 가입을 해주고


로그인을 한다.


로그인을 해주면 이런 화면이 뜨는걸 볼 수 있다.
그리고 시작부터 gruyere의 허술함이 들어난다.
https://google-gruyere.appspot.com/469790294992189573147013988367009809944/login?uid=junnyontop-pixel&pw=124QWEasd
이렇게 url에 id와 pw노출시킨 것이다.

위에 newSnippet을 눌러보니 게시글을 올릴 수 있는거 같다.
Limited HTML is now supported in snippets (e.g., <b>, <i>, etc.)!이렇게 html태그를 허용해주는거 같다.
그래서 바로 script태그로 테스트 해보니 script태그는 안먹히는거 같다.


차례로 My Snippets을 눌러주니
https://google-gruyere.appspot.com/469790294992189573147013988367009809944/snippets.gtl주소가 이렇게 생겼다.
혹시나 https://google-gruyere.appspot.com/469790294992189573147013988367009809944/snippets.gtl?uid=이렇게 아무거나 찍어 보니

https://google-gruyere.appspot.com/469790294992189573147013988367009809944/snippets.gtl?uid=cheddar
여기서


이렇게 다른 사람의 게시글을 훔쳐볼 수 있었다.

?uid=cheddar이걸 유용하게 써먹을 수 있을듯 하다.


혹시 관리자의 글도 볼 수 있을까 싶어,
?uid=admin,?uid=Admin이런걸 시도해 보니
대소문자 구분은 안하는거 같고 많은 걸 시도해 보던 도중...

?uid=administrator이걸 시도해보면
주소창은 https://google-gruyere.appspot.com/469790294992189573147013988367009809944/snippets.gtl?uid=administrator인데

화면엔

Admin으로 표시되어있다.

뭔가 힌트를 얻은거 같지만 관리자의 게시글을 훔쳐볼순없었다.


다음으로 옆에있는 Profile을 누르니

이렇게 프로필을 수정할 수 있었다.

https://google-gruyere.appspot.com/469790294992189573147013988367009809944/editprofile.gtl여긴 주소가 이런데 아까 봤던 그걸 사용해 보자.

https://google-gruyere.appspot.com/469790294992189573147013988367009809944/editprofile.gtl?uid=cheddar


역시 맞았다!
이걸로 다른사람의 프로필도 수정할 수 있다.

그리고 여기에 Private Snippet이란 항목이 있다.
여기에 uid=administrator를 사용해보면 게시글을 볼 수 있을지도 모른다.


성공이다.
추가로 My password is secret. Get it?라는 정보도 획득했다.
이 정보에 따르면 관리자의 pw는secret같다.


로그아웃을 해주고
로그인 창에서 User name:administrator,Password:secret으로 작성해주니
관리자로 로그인을 성공했다!


관리자로 로그인한 상태의 페이지이다.

이제 xss공격을 해볼거다.
아까 html태그를 허용했지만 script태그는 안되던 New Snippet을 클릭하고,

<img src="" onerror="alert('xss')">

이렇게 작성해주면

You are not an author.라고 뜨면서 안된다.
Profile에 들어가면

이렇게 선택지가 더 생긴걸 볼 수 있다.

Is author을 Yes로 변경해주고 다시 작성해주면

잘 뜨는것을 볼 수 있다.


추가로 쿠키까지 가져가 비밀번호 없이 로그인하는 것 까지 해보겠다.

<img src="" onerror="alert('쿠키: ' + document.cookie);">

아까처럼 스니펫에 이걸 추가하면

GRUYERE=31131337|administrator|admin|; GRUYERE_ID=404477456041413703389788683660411129398
쿠키가 나온다 이렇게 나온 쿠키를

로그아웃 후,

document.cookie = "GRUYERE=31131337|administrator|admin|";

콘솔창에 입력하면 로그인이 된다.


💡 이번 실습으로 배운 점

  1. 파라미터는 믿을 게 못 된다: 클라이언트가 보내는 uid 같은 값은 누구나 수정할 수 있으므로, 서버에서 반드시 세션 기반의 검증을 거쳐야 한다.
  2. 비밀번호 힌트의 위험성: 관리자라면 유추하기 쉬운 비밀번호나 힌트를 남기지 말아야 한다.
  3. XSS의 위력: script 태그가 막혔더라도 onerror 같은 이벤트 핸들러를 통해 얼마든지 공격이 가능하다는 것을 깨달았다.
profile
중등해커

0개의 댓글