DomBasedXSS
ex)javascript가 DOM을 조작할때 발생ex) 쿠키,세션 등로 스크립트가 전달됨ex)
<script>
//search 파라미터에서 나온 데이터를 바로 img 태그로 만드는 함수
funtion Search(query){
document.write(
'<img src="/resourues/image/aaa.gif?searchItem='+query+'">');
}
//경로에 있는 search라는 파라미터를 가져오는 코드
let query = (new URLsearchParams(window.location.search)).get('search');
// query 변수가 잇으면 track함수 실행하는 코드
if(query){
track(query);
}
<script>
클라이언트 측에서 발생: 악성 스크립트는 서버 응답이 아니라 클라이언트 측 JavaScript 코드에서 실행
서버 응답(반응)과 무관: 서버에서 반환하는 HTML에 영향을 받지 않고, 클라이언트 측 코드에서 DOM 조작 시 발생
#과 같은 Fragment사용할때도 있음
| 입력값이 화면에 나오는지 확인 |
|---|
![]() |
| Burp Suite에서 확인 |
|---|
![]() |
사용법
입력값을 넣는 곳을 찾은후 사용한 자바스크립트를 Keyword 위주로 분석한다. Burp Suite의 Response창에서 입력값이 보이지 않더라도 Keyword를 사용한 곳에 script가 삽입가능할 수도 있다.
HTML 특수문자ex)<'">를 HTML Entity로 표현을 치환한다.
| 내가 입력한 데이터 | 컴퓨터가 입력한 데이터 | 컴퓨터가 출력하는 데이터 |
|---|---|---|
| 1 + 1 | 1+%2B1+1 | 1 + 1 |
| +는 띄어쓰기 | ||
| %2B는 + |
공통 point
나의 입력값이 어느곳에든 출력이 된다면 쫒아가야한다.
종류별 piont
| Stored | Reflected | Dom based |
|---|---|---|
저장하는부분 ex)글쓰기를 주의깊게 살펴봐야함 | GET방식의 Parameter가 Burp Sutie안에 Responsed에서 출력되는지 확인 | 해당 웹서버의 Javascript 코드를 Keyword위주 분석이 가능해야함 |
Normaltic Study 10주차