본문 바로가기
728x90

Portswigger65

Portswigger - JWT authentication bypass via jku header injection solution 이번 문제는 JKU 헤더 삽입으로 인한 JWT 우회 문제이다. JKU란? JWT(Json Web Token)에서 사용되는 헤더 파라미터 중 하나로, "JWK Set URL"의 약자이며 JWT의 서명을 검증할 때 사용할 공개 키 집합(JWK Set)이 위치한 URL을 명시하는 데 사용된다. 서버는 이 URL에 접근해 JWK Set(JSON Web Key Set)을 받아오고, 그중에서 JWT의 kid(Key ID)와 일치하는 공개 키를 사용해 서명을 검증한다. 이때 JKU에 대한 검증이 없어 공격자가 임의의 JKU 값을 넣고, 자신이 제어하는 URL을 지정한다면, 서버가 이 URL에서 키를 받아 검증하게 되어 보안 취약점이 발생할 수 있다. 먼저 Burp suite의 JWT Editor를 이용하여 RSA 키.. 2025. 4. 1.
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.
728x90