억대 연봉을 위한 인간수업
article thumbnail
반응형

이 글은 web.xml, apache의 httpd.conf로도 HTTP Only 옵션을 false 혹은 제거를 해도 없어지지 않는 경우를 위해 작성합니다.

 

웹해킹을 진행하다보면  다음과 같은 경우가 존재할 수 있습니다.

바로 "Cookie"가 alert 되지 않는 것이죠.

예를들어 PHP SESSION 또는 JSESSIONID가 있음에도 불구하고 alert, 공격자 서버로 전송이 되지 않는 경우 입니다.

아래는 웹해킹 연습을 위해 구축한 저의 웹 서버입니다. 예시를 보면 다음과 같습니다.

 

 

 

 

 

1. 웹 페이지 확인

다음과 같이 정상적인 웹페이지가 존재한다.

 

공격자는 XSS를 실행하기 위해 <script>alert(document.cookie)></script>를 입력한다.

 

그러나 결과값엔 아무것도 출력되지 않는다!

 

 

 

 

이런 경우 크롬의 경우 CTRL + SHIFT + i 를 누르면 개발자 메뉴를 실행할 수 있다.

여기서 Application 탭의 들어가면 다음과 같이 쿠키값을 확인할 수 있는데, HttpOnly라는 옵션에 다음과 같이 체크박스가 존재하는것을 확인할 수 있다.

 

 

바로 저 HttpOnly 옵션으로 인해 cookie alert이 되지 않았던 것이다.

HTTP Only는 서버로 요청을 한 후 response값에만 세션 값을 사용할 수 있다는 의미를 가지고 있다.

따라서 외부에서 <script>를 사용하거나 alert을 사용할 때 값을 출력/탈취 할 수 없었던것이다.

 

 

 

 

그렇다면 HTTP Only를 해제하는 방법은 무엇일까?

방법은 두가지이다.

1. web.xml 에서 false 혹은 옵션값 삭제

1번의 경우는 web.xml 에서 다음과 같이 옵션을 수정해 준다.

 <session-config>
   <cookie-config>
      <http-only>false</http-only>
      <secure>false</secure>
   </cookie-config>
</session-config>

 

 

2. 크롬 웹에서 http only 해제

이방법은 크롬 웹에서 다음과 같이 진행한다.

크롬 개발자 도구에 Application의 Cookies로 이동한다.

그 뒤 HttpOnly의 체크 모양을 더블클릭 하면 체크박스 모양으로 변하는것을 볼 수 있다.

여기서 체크를 해제하면 Http only를 해제할 수 있다.

아래 사진은 해제한 모습이다.

 

 

 

 

이처럼 HTTP Only를 간단하게 종료하는 방법이존재한다.

혹시라도 나처럼 web.xml옵션으로도  Http only를 해제할수 없었다면 이와 같은방법을 써보시길..

 

 

 

 

 

 

반응형
profile

억대 연봉을 위한 인간수업

@회뜨는참치

이 글이 당신에게 조금이라도 도움이 된다면 좋겠습니다.