이 글은 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를 해제할수 없었다면 이와 같은방법을 써보시길..
'Security > About Hacking' 카테고리의 다른 글
WEB-INF/web.xml 접근 가능 취약점 (0) | 2021.11.12 |
---|---|
Web Hacking - Javascript 난독화 (0) | 2021.07.31 |
PHP로 제작한 웹쉘 : 사용한 윈도우 실행기 (0) | 2020.10.13 |
[PHP 서버]디렉터리 리스팅 설정 (0) | 2020.09.20 |
XSS(Cross-Site-Script)란? (0) | 2020.09.06 |