728x90 Portswigger65 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. Portwigger - Reflected DOM XSS solution 이번 문제는 reflected DOM XSS 취약점이 있고 서버가 요청 데이터를 처리하고 응답 데이터를 반영할 때 발생한다, 우선 reflected 이므로 검색창에 취약점이 있을거라 예상하고 임의값을 넣은 후 요청 데이터와 응답 데이터를 확인했다. 123을 검색했을때 json형태로 응답데이터가 오는 것을 확인할 수 있다. 우리는 저 응답 데이터를 이용해여 alert함수를 호출하면 되는데 serchTerm 키값을 이용하면 될것 같다. 우선 searchTerm값을 닫은 후 alert함수를 입력하기 위해 더블쿼터(")를 입력한 결과 응답값에 \가 붙어있는것이 확인되었다. \가 앞에 붙을시 더블쿼터(")는 문자열로 처리되어 기능을 잃게 된다. \만 입력했을때 \앞에는 \가 추가로 붙지 않는 것을 확인할 수 있다.. 2023. 9. 15. Portwigger - DOM XSS in AngularJS expression with angle brackets and double quotes HTML-encoded 이번 문제는 angular js를 이용하여 가 인코딩 될 때 DOM based XSS를 해야 된다. 우선 angular js는 SPA 프레임워크로 자바스크립트를 기반으로 둔다. React와 비슷하다 보면 된다. 이번 문제를 풀 때는 angular js의 표현식을 이용할 것인데 https://jundol.me/65 [튜토리얼/번역] AngularJS Expressions (AngularJS 표현식) AngularJS ExpressionsAngularJS 표현식은 두개의 중괄호 안에 작성됩니다 : {{ 표현식 }}. AngularJS 표현식의 HTML 데이터 바인딩은 ng-bind 지시자와 같은 역할을 합니다. AngularJS 표현식이 사용된곳에 정확하 jundol.me angular js는 html 내부.. 2023. 9. 11. Portswigger - DOM XSS in document.write sink using source location.search inside a select element solution 이번 문제 재고 확인 기능에서 DOM based XSS 취약점이 포함되어 있다. 재고 확인 스크립트를 확인하면 get방식으로 storeId를 받고 stores에 없는 store면 추가가 되는 걸 확인할 수 있다. 여기서 주의할것은 Check stock 버튼은 post방식으로 get방식으로 보내려면 url에 직접 입력해야 된다. 처음에 burpsuite로 패킷 탈취해서 보내려다가 삽질했다... storeId 파리미터를 추가해 임의값을 넣어본 결과 목록에 추가된 걸 볼 수 있다. 이렇게 목록이 추가된걸 볼 수 있는데 우리는 이 목록을 이용해 script문을 작성할 것이다. 를 입력하면 option태그를 닫고 script태그를 추가할 수 있다. 2023. 9. 10. 이전 1 2 3 4 5 6 7 다음 728x90