해킹/XSS(12)
-
XSS 3번 문제 취약점 정리
이번 문제 같은 경우에는 사용자 입력값이 스크립트 태그 안에 들어가나, htmlspecialchars로 인해 이스케이프 된 상태다. 하지만 mypage에 잘 보면 id 파라미터가 있다. id 파라미터를 조작하면 그 파라미터로 id란이 변경되는 모습을 볼 수 있다. 소스코드를 보면, placeholder에 들어간다. ' " >을 넣어도 문제 없이 잘 된다. 취약점 발견완료. 이제 공격을 시도한다. user=hello"%20onclick%20="%20alert(%27ss%27); 를 입력해서 테스트 한다. 이벤트 핸들러도 정상적으로 작동한다. 이제 자동으로 스크립트를 실행 할 방법을 찾아야한다. user=hello%22%20autofocus%20onfocus%20=%22alert(%27ss%27)%22%20..
2023.05.25 -
XSS 2번문제 취약점 정리
게시판에 글을 검색하면검색어가 존재하지 않습니다. 라고 알람창이 뜬다. 이말은 즉 사용자 입력값이 스크립트 태그 안에 들어갈 수 있다는 소리이다. 페이지 소스를 보면이런식으로 스크립트가 실행되는것을 볼 수 있다. 괄호를 맞추고 새로운 스크립트를 검색하면(넣으면) 삽입한 스크립트가 실행되는것을 볼 수 있다. 하지만 검색은 post 방식으로 진행되고 있다. 우리의 목적은 url에 악성 코드를 담은 링크를 공유해서 해킹하는것이다. 따라서 프록시 툴을 이용해서 메소드를 Get 방식으로 보내본다.정상적으로 처리가 된다. Reflected XSS 취약점이다. 이제 쿠키를 털어보자. (실제로는 httponly 속성이 적용되어있지만 여기서는 해제하고 테스트) 안녕?'); var img = new Image(); img..
2023.05.25 -
게시판 DOM Based XSS 공격과 취약점 고치기
게시판 검색 창 하단 script 란에 이러한 코드를 넣습니다.window.onload = function(){ var urlParams = new URLSearchParams(window.location.search); var paramValue = urlParams.get('search'); var div = document.getElementById("hack"); paramValue = (paramValue != "" ? paramValue : "없음!"); div.innerHTML = "사용자님의 검색어 : " + paramValue; };html에는 이러한 코드를 삽입합니다.이제 이 게시판은 DOM 취약점이 존재합니다. url을 보고 get 파라미터중 search 파라미터를 가져옵니다. sea..
2023.05.21 -
Dom based XSS 학습
웹 페이지는 Dom구조로 되어있습니다. DOM 이란 Document Object Model입니다. 여기서 DOM 구조란 document - element - attribute - text로 되어있는 계층 구조입니다. JavaScript는 이런 문서같은 웹 페이지를 동적으로 구현하기 위해 DOM 에 접근하는 언어입니다. document는 최상위 구조체로 현재 웹 페이지를 나타냅니다. document 객체로 구조,스타일,이벤트 등 다양한 곳에 접근이 가능합니다. 웹 개발을 하다 보면 document.getElementById(); 같은것을 많이 써보았습니다. 이런 등등이 Element입니다. Attribute도 많이 써보았습니다. Attribute는 이렇게 src 같은 속성을 뜻합니다. text는 말 그대로..
2023.05.21 -
XSS 다양한 공격 기법
제가 순서를 잘못했습니다.. 왜 htmlspacialchars를 사용해서 이스케이프를 해야하는지 .. 왜 이것이 중요한지에 대해서 봅시다. 이스케이프를 안하고 단순히 필터링만 한다고 가정한다면 그 필터링을 우회하는 다양한 공격 기법들이 있습니다. 1. 스크립트를 필터링 하는 경우. 스크립트를 입력할시 필터링 당하고 스크립트 태그 안에 사용자 입력이 들어가지 않습니다. 1-1. 이런식으로 대소문자를 섞어서 필터링을 피해갑니다. 1-2.포함된 문자만 빼서 처리하는경우. 만약 사용자가 안녕하세요 script 입니다. 라고 입력시 필터링해서 안녕하세요 입니다. 만 출력되는 경우에 사용하는 기법입니다. scscriptript 를 입력하면. 가운데 script가 필터링되서 sc , ript만 남습니다. 즉 scri..
2023.05.20 -
게시판 Reflected XSS 공격과 취약점 고치기 - 3
저번 시간에는 사용자 입력값이 스크립트 태그 안에 들어가지 않는 경우를 배웠습니다. 해커는 직접 스크립트 태그 혹은 모종의 태그를 써야지 해킹을 시도할 수가 있는데요. 이것을 htmlspecialchars 로 태그 등 각종 특수문자들을 html 엔티티,이스케이프 문자로 바꾸면서 막아보았죠 하지만 이것은 사용자 입력값이 스크립트 태그에 들어간다면 소용이 없습니다. 다른 방법으로 막아보도록 합시다. 1.문자열 체크 자바스크립트로 사용자가 입력한 문자열을 체크 해 봅시다.. 이것을 필터링이라고 하는데요. 필터링에는 블랙 리스트 기반,화이트 리스트 기반의 필터링이 있습니다. 블랙 리스트는 설정된 값을 못넘어가게 하는 필터링이고 화이트 리스트는 설정된 값만 넘어가게 하는 필터링 입니다. 설정된 값만 통과되니까 화..
2023.05.20