728x90 Portswigger/XSS22 Portswigger - Exploiting XSS to perform CSRF solution 이번 문제는 댓글 기능에 취약점이 존재하며 XSS를 활용하여 CRSF공격을 수행하는 게 목표다. 우선 나는 CSRF 문제들을 풀어봤기에 form태그를 이용해 댓글을 작성해봤다. 작성 후 게시글로 돌아가보면 csrf파라미터가 없다고 나온다. 이를 통해 csrf 토큰이 존재하는 걸 알 수 있고 이메일 변경 페이지에 가면 csrf토큰을 확인할 수 있다. ` csrf 토큰을 넣고 다시 댓글을 작성하면 게시글을 열람했을 때 이메일 변경 페이지로 이동되며 이메일이 변경되는 걸 볼 수 있다. 하지만 이 방법은 내 csrf토큰을 내가 알기 때문에 가능한 방법이고 실제 상황에서는 상대방의 csrf토큰을 알 수 없기 때문에 csrf 토큰을 탈취해서 작성해야 된다. 그러면 어떻게 csrf토큰을 탈취해야 될까? 아까 확인했듯.. 2023. 12. 20. Portswigger - Reflected XSS into a template literal with angle brackets, single, double quotes, backslash and backticks Unicode-escaped solution 이번 문제는 검색기능에서 태그()와 싱글 쿼터('), 더블 쿼터("), 백틱(`)이 유니코드로 변환된다. "'\을 입력하면 유니코드로 변환되는걸 볼 수 있다. 또한 message 변수는 백틱(`)으로 감싸져 있어 이를 이용하면 alert함수를 호출할 수 있다. 이번 문제는 혹시..?하고 넣어봤던 게 정답이어서 문제를 풀고 난 후 방법을 찾았던 문제다.ㅎㅎ 우선 백틱에 대해 알아보기전 먼저 알아야 될 것이 템플릿 리터럴이다. 탬플릿 리터럴이란? 자바스크립트에서 쓰이는 ES6부터 새로 도입된 문자열 표기법이다. 문자열 생성시 따옴표 대신 사용되는 게 백틱(`)이다. ex) var str_01 = `hello world`; 이런 탬플릿 리터럴에 기능이 크게 두가지가 있는데 1. 줄바꿈 위에 사진을 보면 줄 바.. 2023. 10. 10. Portswigger - Stored XSS into onclick event with angle brackets and double quotes HTML-encoded and single quotes and backslash escaped solution 이번 문제는 onclick 이벤트에서 태그()와 더블쿼터(")는 HTML인코딩이 되어 있고 싱글쿼터(')와 백슬래쉬(\)는 이스케이프 처리가 되어 있다. 우선 onclick 이벤트가 어디 있는지 찾아야 한다. 찾아보니 각 게시물에 댓글 기능에서 댓글 작성 시 작성자 id를 누르면 등록된 웹사이트로 이동되는 onclick 이벤트가 존재한다. 더블쿼터(")와 태그()는 작동을 안 하고 싱글쿼터(')와 백슬래쉬(\)는 이스케이프 처리 된 걸 확인할 수 있다. id를 누를 시 onclick으로 인해 tracker함수가 실행되고 웹사이트 주소에 입력한 주소값이 호출되게 된다. 그럼 임의 주소를 입력(www.naver.com)을 입력하고 뒤에 alert함수를 입력하여 회출하면 될 것 같다. 그러려면 싱글쿼터(')를.. 2023. 10. 10. Portswigger - Reflected XSS into a JavaScript string with angle brackets and double quotes HTML-encoded and single quotes escaped solution 이번 문제는 HTML로 태그()와 더블쿼터(")가 인코딩 되어 필터링되고 싱글쿼터(')가 이스케이프 처리 된다. 이번 문제는 매우 간단하고 많이 풀어봤던 기법이다. script는 지난 문제와 동일하고 우리가 지금까지 문제를 풀면서 백슬래쉬(\)가 앞에 있으면 특수문자가 문자열 취급받는 것을 알았다. 지난 문제에서는 백슬래쉬(\)도 이스케이프 처리 당해서 사용하지 못했지만 이번 문제에서는 필터링이 되지 않으므로 \';alert(0);//을 입력하면 싱글쿼터(')앞에 백슬래쉬(\)가 추가될 것이고 이러한 형식으로 작성될 것이다. '\\';alert(0);//'; 싱글쿼터 앞에 추가된 백슬래쉬는 우리가 입력했던 백슬래쉬에 의해 문자열 취급을 당하게 되고 그러면 싱글쿼터가 특수문자의 기능을 가지기 때문에 ale.. 2023. 10. 5. Portswigger - Reflected XSS into a JavaScript string with single quote and backslash escaped solution 이번 문제는 검색기능에 XSS 취약점이 있으며 싱글쿼터(')와 백슬래쉬(\)가 이스케이프 처리되는 문제로 alert함수를 호출하면 된다. '\을 검색했을 때 script를 보면 각각 앞에 \가 붙으며 문자열로 처리되는 게 보인다. 이번 script를 보면 지난번에 풀었던 문제와 비슷한데 https://jh-hack.tistory.com/89 Portswigger - Reflected XSS into a JavaScript string with angle brackets HTML encoded solution. 이번 문제는 자바스크립트 내부에서 발생하는 취약점을 찾아 alert함수를 호출하면 된다. 검색기능에 취약점이 존재하므로 임의의 검색어(123)를 검색한 결과 searchTerms를 받아와 img태그.. 2023. 10. 5. Portswigger - Reflected XSS in canonical link tag solution 이번 문제는 표준 링크 태그에 사용자입력을 반영하고 꺽쇠()를 이스케이프 처리한다. 또한 사용자가 세 가지의 키 조합을 누르는 걸 가정한다. ALT+SHIFT+X CTRL+ALT+X Alt+X 표준링크란 위에 사진에서 rel="canonical"로 표시된 링크로 Google이 사이트의 중복된 페이지 중 가장 대표적이라고 간주하는 페이지의 URL을 말한다. 예를 들어, 동일한 페이지의 URL이 여러 개 있는 경우(example.com?dress=1234 및 example.com/dresses/1234) Google은 하나를 표준 URL로 선택한다. https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls?hl.. 2023. 10. 4. Portswigger - Reflected XSS with some SVG markup allowed solution 이번 문제는 relaected XSS 취약점이 있지만 일반 태그들을 모두 차단하고 있고 일부 SVG태그와 이벤트만 누락되어 있다. 우선 SVG태그란? 웹상에서 벡터 이미지를 구현하기 위해 사용하는 마크업 태그이다. SVG 이미지를 구현하기 위해서는 태그로 시작하는데 width, height 속성을 사용하여 이미지의 가로와 세로 길이를 조절할 수 있다. 검색창에 2023. 10. 3. Portswigger - Reflected XSS into HTML context with all tags blocked except custom ones solution 이번 문제는 custom 태그를 제외하고 모든 태그가 필터링되어 있고 document.cookie를 사용해 공격을 수행해야 된다. 우선 모든 태그가 막혔으므로 커스텀 태그를 작성해야 된다. onfocus 이벤트를 사용하여 초점이 맞을 때 alert 함수를 호출하고 (마우스로 클릭하거나 tab을 사용하여 선택될 때 초점이 맞았다고 한다.) autofocus속성을 사용해 페이지가 로드될 때 자동으로 초점이 맞춰지게 한다. 또한 tabindex를 부여하여 초점을 받을 수 없는 에 초점을 받을수 있도록 해준다. 이렇게 입력하면 페이지가 로드됨과 동시에 알림이 호출되는 걸 볼 수 있다. 커스텀 태그의 작동 여부가 확인되었으므로 피해자에게 보내면 해결되는 걸 볼 수 있다. 2023. 10. 2. Portswigger - Reflected XSS into HTML context with most tags and attributes blocked solution 이번 문제는 WAF로 인해 태그와 속성이 필터링되어 있는 상황에서 WAF를 우회해 print() 함수를 피해자에게 호출하면 된다. WAF란? 웹 응용 프로그램 방화벽은 웹 서비스에서 들어오고 나가는 HTTP 트래픽을 필터링, 모니터링 및 차단하는 특정 형태의 응용 프로그램 방화벽이다. 우선 홈페이지 검색창에 , , , ...등 다양한 태그를 입력해 본 결과 에러 메세지와 함께 동작하지 않았다. 사실 여기서 여러 태그를 시도해 보고 js코드와 소스코드, 태그 없이 xss를 실행할 수 있는 방법이 있는지 찾아봤지만 끝내 찾아내지 못해 솔루션을 확인했다. 설루션에서는 Brute force를 이용해 xss에서 사용되는 태그를 무차별 적으러 넣어 작동하는 태그를 확인했다. 검색 패킷을 탈취후 검색어를 타깃으로 지.. 2023. 9. 26. Portswigger - Stored DOM XSS 이번 문제는 stored DOM XSS로 댓글기능에서 취약점이 발생된다. 각 게시글마다 댓글 기능이 있고 댓글 작성 시 상대방에게 노출되게 된다. iframe을 이용해 alert함수를 출력해보려했지만 실행되지 않는 걸 확인할 수 있다. js코드를 확인해보니 replace함수로 인해 들이 html로 인코딩 되고 있다. 여기서 취약점이 발생하는데 replace함수는 문자열에서 변경하려는 문자열이 여러 번 반복될 경우, 첫 번째로 발견한 문자열만 치환해 준다. 예를 들어 사과, 바나나, 바나나에서 replace("바나나", "사과");를 하면 사과, 사과, 바나나로 한 번만 바꿔준다. 이를 이용하여 빈 태그()를 먼저 입력해준뒤 iframe태그를 입력해 주면 iframe태그가 실행되며 alert함수가 호출된다. 2023. 9. 22. 이전 1 2 3 다음 728x90