본문 바로가기
728x90

Portswigger64

Portswigger - DOM XSS using web messages and JSON.parse solution 이번 문제는 웹 메시지를 JSON으로 구문분석하고 print함수를 호출하면 문제가 풀린다. 사이트의 script문을 보면 createElement로 ifame 태그를 생성하고 iframe변수로 선언한다 그리고 appendChild를 이용해 iframe 변수를 body안에 넣는다. 그다음 JSON.parse를 이용해 e.data 즉, 메시지의 내용을 자바스크립트 객체로 만들어준다. 이로써 메시지를 JSON형태로 작성하면 되는 걸 알 수 있다. 그 아래 switch문을 봐보자 3가지의 case로 나눠져 있는데 이중 우리가 주목해야 될 case는 두 번째다. 만약 d.type 즉, JSON형태의 메시지에서 type키를 가진 값이 load-channel일 때 ACMEplayer.element.src(iframe.. 2024. 1. 18.
Portswigger - DOM XSS using web messages and a JavaScript URL solution 이번 문제는 웹 메시지와 자바스크립트 url을 이용한 DOM XSS문제다. 사이트 script를 보면 메시지로 받은 내용을 url변수에 저장 후 url에서 http:나 https:가 존재한다면 url주소로 리다이렉트 시켜준다. print() 함수를 출력해야 하므로 javascript를 url에서 실행시켜야 된다. https://jh-hack.tistory.com/85 Portswigger - DOM XSS in jQuery anchor href attribute sink using location.search source solution 문제를 해석하면 anchor 요소를 찾아서 href를 바꿔라 그래서 back링크가 document.cookie를 alert함수로 호출하면 문제가 풀리는 것 같다. 우선 .. 2024. 1. 17.
Portswigger - DOM XSS using web messages solution 이번 문제는 웹 메시지를 이용한 DOM XSS 문제다. 사이트의 html을 살펴보면 addEventListener함수를 이용해 message를 수신을 받아 ads라는 id를 가진 div자리에 넣어주는 것 같다. 그럼 message를 수신받으려면 송신하는 방법도 알아야 되는 여기서 사용되는것이 window.postMessage이다. https://developer.mozilla.org/ko/docs/Web/API/Window/postMessage Window.postMessage() - Web API | MDN window.postMessage() 메소드는 Window 오브젝트 사이에서 안전하게 cross-origin 통신을 할 수 있게 합니다. 예시로, 페이지와 생성된 팝업 간의 통신이나, 페이지와 페이.. 2024. 1. 15.
Portsiwgger - Multistep clickjacking solution 이번 문제는 클릭재킹으로 보호하기 위해 확인 버튼이 생겼고 click me first와 click me next 문자를 통해 버튼을 두 번 누르게 만들어 계정을 삭제되게 만들면 된다. 사이트에 접속후 로그인을 하면 계정 삭제 버튼이 보이고 삭제버튼을 누르면 확인 절차가 하나 더 생겼다. 이번 문제는 뭐 다른 개념이나 기술이 필요 없이 그냥 click me next 문자만 더 추가해 주면 된다. (하나씩 나타나야되는줄 알고 CSS 열심히 찾았는데....) Click me first Click me next 2024. 1. 13.
Portswigger - Exploiting clickjacking vulnerability to trigger DOM-based XSS solution 이번 문제는 XSS 취약점을 포함하고 있으며 사용자가 click 문자를 눌러 print() 함수가 출력되게 하면 된다. 우선 페이지에 들어가게 되면 Submit feedback이라는 못보던 페이지가 보인다. 들어가면 피드백을 제출하는 페이지가 보이는데 여기서 XSS 취약점이 존재하는 것 같다. 시험 삼아 hello라는 이름으로 피드백을 제출해 봤다. 그랬더니 피드백 제출에 고맙다는 말과 함께 입력했던 이름이 출력되었다. 그동안의 XSS 문제를 풀어본 결과 이 부분에서 취약점이 발생할 것이란 예상이 들었다. 바로 이름에 를 넣어봤더니 alert함수가 실행되진 않았지만 다른 필터링이 존재하지 않는걸 확인하였고 img 태그를 이용해 한번 더 alert함수를 호출해 보았다. 그 결과 alert함수가 호출되었다... 2024. 1. 12.
Portswigger - Clickjacking with a frame buster script solution 이번 문제는 지난 문제들과 같이 click 문자를 누르는 사용자를 속여 이메일을 변경시키면 되는데 frame buster(or frame killer)로 인해 frame의 사용이 막혀있다. 문제 사이트를 보면 script문으로 top != self (최상위 브라우저인지 확인) 조건문으로 막아놓은걸 볼 수 있다. 저번 문제와 동일한 코드로 확인해보면 막혀있는 걸 확인할 수 있다. 그럼 여기서 어떻게 우회를 해야 할까? https://en.wikipedia.org/wiki/Framekiller Framekiller - Wikipedia From Wikipedia, the free encyclopedia Technique used by websites to prevent loading in frames A f.. 2024. 1. 11.
Portswigger - Clickjacking with form input data prefilled from a URL parameter solution 이번 문제는 저번 문제의 확장으로 URL 매개변수를 사용하여 양식을 미리 채우고 사용자가 실수로 "이메일 업데이트" 버튼을 클릭하도록 유도하여 사용자의 이메일 주소를 변경하는 것이다. 문제가 풀리는 방식은 저번문제와 동일하게 click문자를 클릭하는 사용자를 속이면 된다. 우선 로그인을 하면 이메일 업데이트 버튼이 보이므로 저 버튼을 누르게 만들면 된다. 또한 url 매개변수를 사용하여 양식을 미리 채워야 되기 때문에 파라미터를 작성하여 양식이 채워지는지 확인해 본다. url뒤에 email파라미터를 123으로 추가한 결과 이메일 입력칸에 123이 자동으로 채워지는 걸 확인할 수 있다. 이제 그럼 exploit 서버에서 사용자에게 보내면 된다 저번 문제와 동일하게 click 버튼을 이메일 업데이트 버튼 위.. 2024. 1. 8.
Portsiwgger - Basic clickjacking with CSRF token protection 이번 문제는 클릭재킹 문제로 사용자는 click이라는 단어를 클릭한다는 조건과 계정을 삭제하게 만들어야되는 문제다. 클릭재킹에 대한 내용은 아래 링크에 있다. https://jh-hack.tistory.com/124 [개념정리] Click jacking Click jacking 이란? Click jacking은 웹 보안 공격 중 하나로, 공격자가 웹 페이지를 조작하여 사용자가 의도하지 않은 동작을 수행하도록 속이는 공격 형태이다. Click jacking은 웹 애플리케이션의 사용 jh-hack.tistory.com 사이트에 로그인하게 되면 아래에 delete account 버튼이 존재한다. 이제 이 페이지를 이용해 click버튼을 누르게 설정되있는 사용자를 눈속임하여 이메일을 삭제하게 만들면 된다. 우선.. 2024. 1. 4.
Portsiwgger - SQL injection with filter bypass via XML encoding solution 이번 문제는 재고확인 기능에 취약점이 존재하고 union을 이용해 XML에서 필터링을 우회하여 sql injection을 하면 된다. 재고 확인 기능에서 union을 넣어본 결과 필터링으로 막혀있는 걸 확인할 수 있다. 확인해 보니 union , select, 싱글쿼터('), - 가 블랙리스트 형식으로 필터링되어 있었다. 그럼 이 필터링을 어떻게 우회해야 하는가? 바로 유니코드를 이용했다. 10진수 형식으로 필터링된 문자들을 하나씩 바꿔주면 칼럼수가 1인걸 알 수 있고 테이블은 users로 문제에 나와 있으므로 username과 password를 알아낼 수 있다. 이로써 관리자 계정으로 로그인하면 2024. 1. 3.
Portswigger - Exploiting blind XXE to retrieve data via error messages solution 이번 문제는 에러 메시지를 통한 XXE 문제다. 우선 일반적인 엔티티는 막혀있는 상태이다. 그럼 외부엔티티로 passwd 파일을 불러와보자 exploit 서버에 아래 코드를 입력하고 %ex; %file; 위 코드가 작동하는 원리는 두 번째 줄이 핵심이다. 1. ex라는 내부 엔티티를 선언하고 file이라는 외부 엔티티 내용이 담긴 내용을 호출한다. 2. 호출된 file 외부 엔티티에 경로를 일부러 에러가 나게끔 설정하고 첫 번째 줄에 선언한 pw 외부엔티티를 호출한다. 여기서 file엔티티를 선언할 때 %를 넣은 이유는 file 엔티티가 ex엔티티 안에 있으므로 %를 사용할 시 엔티티 호출로 인식한다. 그러므로 특수문자 기능이 없는 문자 %를 넣으려면 hex로 넣어야 된다. 3. 경로 에러가 생기면서 에.. 2024. 1. 3.
728x90