작은 메모장
17. XSS 취약점 본문
XSS(Cross Site Scripting) 취약점
사용자의 브라우저에서 동작하는 스크립트를 삽입하여 사용자에게 악의적인 URL로 유도하는 공격
주로 JS, HTML, CSS등을 노리며, 게시물 입력, 댓글 입력, 쪽지보내기 등 "모든 입력 값"에 대해 이 공격이 수행됨.
사이트에 따라 다르지만, HTML 입력을 허용하는 사이트들도 존재한다. 이런 사이트들을 노리고 코드를 주입하는 공격을 시도해 볼 것이다.
위와같이 alert가 실행되는 모습을 확인할 수 있다.
이를 응용하면 이런 코드로도 작성할 수 있으며, 들키지 않고 코드가 주입되는지 확인할 수 있다.
iframe 헤더 특성상 정보를 특정 사이트 혹은 주소에서 가져오는 태그다.
즉, 이 글을 보는 순간 무조건 저 특정 사이트로 접속하게 되는 것.
그말인 즉 특정 사이트가 악성 코드를 주입하는 사이트라면, 글을 읽는 것만으로도 감염이 될 수 있는 것이다.
이것이 iframe으로 공격한다고 하는 것이다.
자주 사용하는 Burp Suite도 XSS 주입 코드를 제공하고 있다.
XSS가 통하는 사이트에서 이걸 사용한다면 설명한 동작이 실행될 것이다.
즉, XSS 검증에 매우 유용하게 사용할 수 있는 것이다.
BxssHunter
XSS 주입 코드를 만드는 것은 상당히 귀찮은 일이다.
단순하게 HTML을 속이는 것 뿐 아니라,
때문에 이 모든 과정을 자동으로 해주는 서비스가 BussHunter이다.
Payload에 진입하면 커스터마이징 된 스크립트 삽입 링크가 보인다.
이걸 왜 사용하느냐?
통상적으로 사용자의 정보를 탈취한다고 하면 아래의 3가지를 사용한다.
1. 사용자의 쿠키 정보 획득 및 권한 획득 (쿠키 재사용 공격, Reply Attack)
2. 악성코드(exe, dll)를 배포 및 권한 획득
3. 피싱 사이트 유도 및 계정 정보 획득
이 중, XSS는 상단의 JS 코드를 실행하여 악성 페이지로 유도하는 공격으로, 특정 헤더를 이용하여 자연스럽게 접속을 유도하는것이 핵심이다.
문제는 공격자가 원하는 헤더를 전부 집어넣어서 공격하면 관리자에게 들킬 것이 뻔하기 때문에, 원하는 명령을 JS 스크립트 파일 하나로 묶어서 그것만 실행하게 하면 되는 것이다.
위 링크는 그것을 노리고 만든 것이다. 즉, 저 링크에 해당하는 스크립트 파일은 온갖 정보를 빼내기 위한 헤더와 코드들의 뭉치라는 것.
이걸 방금의 게시물 쪽으로 주입하여 실행하면, 게시물에는 당연히 아무것도 안보이겠지만 공격자의 Bxss Hunter상에서는 좀 다르게 보인다.
저 게시물에 접속한 사용자의 정보가 매우 상세하게 보인다.
세션값부터 시작하여 접속 IP, 접속 시간, 브라우저 정보 등 다양한 정보를 긁어온다.
심지어 스크린샷까지 찍어서 전송하는 모습.
이 모든것을 코드 한줄 주입으로 가능하게 하였다.
모의해킹 시나리오
지금까지 배운 내용을 토대로 악성 공격을 진행해보자.
공격 시나리오는 다음과 같다.
1. 웹 서버의 XSS 취약점을 이용
2. 사용자, 관리자가 스크립트가 삽입된 게시물에 접근
3. 공격자는 피싱사이트(adobe flash)로 유도하여 계정 정보 탈취
4. 공격자는 악성코드를 배포 (exe 파일)
5. 관리자가 감염되어 시스템 권한 탈취
6. 공격자는 PC의 중요정포 탈취, 윈도우의 계정정보 탈취
이제 시작해보자.
일단 Adobe Flash 업데이트 파일로 위장한 악성 코드를 생성한다. 생성에는 msfvenom을 사용한다.
8000번 포트로 웹 서버를 하나 연다.
오픈한 서버를 다른 클라이언트에서 접속하면, 잘 접속이 되는 것을 확인할 수 있다.
아까 생성한 flash.exe 파일도 잘 보인다.
즉, http://192.168.88.128:8000/flash.exe의 파일을 배포하면 되는 것.
그럼 사용자가 이 flash.exe를 다운받아서 실행시키기만 하면 되는 것인가, 그건 또 아니다.
flash.exe 파일을 만들 때, 악성 파일을 실행하면 공격자의 5555번 포트 번호로 공격이 성공했음을 전송하도록 하고 있다.
그렇기 때문에, 공격자는 이 성공여부를 파악할 5555번 포트를 열어두고 신호를 기다려야한다.
공격자 환경에서 msfconsole로 접속한 후
flash.exe파일을 만들 때 변수로 넣었던 값들(페이로드, 호스트, 포트 등)을 넣어준다.
이제 BeEF 환경에서 지정된 환경과 경로를 입력하고 실행을 시키면
이렇게 가짜 Adobe 업데이트 창이 올라오게 된다.
이 업데이트 창은 이미지라서 어디를 누르던 다운이 받아지게 된다.
업데이트 파일(처럼 보이는 악성파일)을 실행시키면
타겟 입장에서는 아무런 변화도 없지만
공격자는 권한을 얻어 CLI 환경으로 진입한 것을 확인할 수 있다.
스크린샷 찍기 같은 것도 가능하다.
명심해야할 것은 무슨 이유에서든 서비스의 실행이 1순위가 되어야한다.
보안이 아무리 중요하다 한들 서비스가 중지되면 무용지물이다.
때문에 서비스의 가용성을 해치지 않는 선에서 보안 테스트가 진행되어야한다.
위의 경우에는 고의적인 악성 XSS가 진행된 게시글을 최대한 빨리 테스트하고 지워야 할 것이다.
'실더스 루키즈 교육' 카테고리의 다른 글
19. 파일 업로드 취약점 (0) | 2023.12.21 |
---|---|
18. SQL Injection (0) | 2023.12.20 |
16. BeeBox와 인증처리미흡 취약점 (0) | 2023.12.18 |
15. 웹 쉘 (0) | 2023.12.15 |
14. GoogleDork (0) | 2023.12.14 |