728x90 Portswigger64 Portswiger - SameSite Lax bypass via method override solution 이번 문제는 매소드 재정의에 의한 SameSite Lax 우회에 대한 취약점이 포함된 문제다. samesite에 대한 내용을 정리해봤다. https://jh-hack.tistory.com/110 [개념정리] SameSite 쿠키에 별도로 설정을 가하지 않는다면, 크롬을 제외한 브라우저들은 모든 HTTP 요청에 대해서 쿠키를 전송하게 된다. 그 요청에는 HTML 문서 요청, HTML 문서에 포함된 이미지 요청, XHR 혹은 Form을 jh-hack.tistory.com 우선 로그인 후 이메일 변경 패킷을 burpsuite로 잡아 repeater로 보냈다. 요청을 보아 session퀴키의 samesite속성이 정의되지 않을 걸로 보아 Lax로 설정되었을 것을 알 수 있다. 그 후 change request .. 2023. 10. 25. Portswigger - CSRF where token is duplicated in cookie solution 이번 문제는 토큰이 쿠키에 복제되는 상황에서 CSRF취약점을 발생시키면 된다. 먼저 확인을 위해 로그인해서 쿠키값을 변경해 보자 그 후, 새로고침 후 csrf토큰을 확인해 보면 토큰도 같은 값으로 변경되는 걸 확인할 수 있다. 그럼 상대방의 쿠키값을 변경하고 그 값을 토큰값으로 넣은 후 이메일을 변경하면 변경되지 않을까? 저번 문제 코드랑 크게 달라진 점은 없는 것 같다. 2023. 10. 23. Portswigger - CSRF where token is tied to non-session cookie solution 이번 문제는 세션에 연결되지 않은 쿠키값에 대한 CSRF취약점이 포함되어 있다. wiener계정으로 로그인했을때 쿠키값을 보면 session값과 함께 csrfKey라는 쿠키값이 존재하는 걸 확인할 수 있다. 만약 csrfKey값을 임의로 바꾼뒤 이메일을 변경해 보면 허용되지 않은 토큰이라며 변경되지 않는다. 그럼 만약 carlos계정의 쿠키값과 토큰값을 넣으면 어떻게 될까? 이메일이 변경되는 걸 볼 수 있다. 그러면 내 토큰값과 쿠키값을 상대에게 주입한 후 이메일을 변경하면 상대방의 토큰과 쿠키값 없이도 변경이 가능하다. 브라우저에서 서버로 요청을 전송할 때 그 요청에 대한 응답에 Set-Cookie 헤더가 포함되어 있는 경우, 브라우저는 Set-Cookie에 있는 데이터를 저장하고, 이 저장된 데이터를.. 2023. 10. 18. Portswigger - CSRF where token is not tied to user session solution 이번 문제는 이메일 변경 기능에 취약점이 존재하고 CSRF 공격을 방지하지만 사이트의 세션 처리 시스템에 통합되지 않는다고 한다. 또한 로그인할 수 있는 계정을 2개 준다. 사이트의 세션 처리 시스템에 통합되지 않는다 이게 이 문제의 핵심인데 서버에서는 유저들을 구분해야 하기 때문에 세션을 저장할 서버가 필요하다. 위 그림은 sticky session 방식으로 고정된 세션을 의미하는데 User1 이 1번부터 3번까지의 서버 중 1번 서버에 세션을 생성하였다면, 이후에 User1이 보내는 모든 요청은 1번 서버로만 보내지게 된다. 즉, Load Balancer는 User가 첫 번째 세션을 생성한 서버로 모든 요청을 리다이렉트 하여 고정된 세션만 사용하게 한다. CSRF 토큰은 유저를 판별하는 기능은 없기 .. 2023. 10. 14. Portswigger - CSRF where token validation depends on token being present solution 이번 문제는 존재하는 토큰에 따라 유효성 검사가 달라지는 CSRF이다. 우선 문제 구성은 지난 문제와 동일하고 우선 확인을 위해 변경 email만 적어 요청을 보내봤다. ??? 문제가 풀렸다...? 왜 풀렸는지 몰라서 다시 찾아보던 결과 csrf토큰을 입력한 후 시도했을 때도 email이 변경되었지만 csrf토큰을 임의값으로 변경해서 넣으면 무효한 csrf 토큰이라는 경고문과 함께 변경되지 않는다. 아마 이러한 csrf토큰의 기능을 알려주기 위한 문제 같다. 2023. 10. 13. Portswigger - CSRF where token validation depends on request method 이번 문제는 이메일 변경에 CSRF 취약점이 있고 특정 유형의 요청에서만 방어한다고 한다. 우선 이메일 변경 방식은 저번문제랑 동일하고 저번 문제와 같은 형식의 코드를 전송했더니 csrf 파라미터가 없다고 오류 메시지가 출력된다. 이는 csrf 토큰을 의미하는데 csrf 토큰이란? 서버에 들어온 요청이 실제 서버에서 허용한 요청이 맞는지 확인하기 위한 토큰으로 서버 측 애플리케이션에서 생성되고 클라이언트와 공유되는 인증 값이다. 이번 문제에서는 문제 이름에서 힌트를 얻을 수 있는데 특정 유형의 요청에서만 방어하는 csrf이므로 요청 방식을 postdptj get으로 바꿔봤다. 어라? 이메일이 변경되었다. 왜 get방식에서는 csrf토큰이 없어도 이메일이 변경되는 것일까? 왜냐하면 CSRF 토큰 필터는 G.. 2023. 10. 11. Portswigger - CSRF vulnerability with no defensesAPPRENTICELAB solution 이번 문제는 이메일 변경 기능에 CSRF 취약점이 존재하고 피해자에게 HTML을 노출시켜 이메일 변경 공격을 수행한다. 우선 기본으로 제공된 계정에 로그인하면 이메일 변경하는 공간이 나오는데 여기서 자유롭게 이메일을 변경할 수 있다. 임의의 이메일 값을 넣고 패킷을 탈취해 보면 POST형식으로 email값이 전송되는 걸 볼 수 있다. 이를 이용해 form태그를 작성해보면 form태그 안에 내가 바꾸고 싶은 email값을 input태그로 작성하고 script태그로 전송하는 방식이다. 이러한 코드를 전송하면 피해자가 이 코드가 적힌 페이지에 접속하는 순간 form태그가 전송되면서 email이 변경되게 된다. 확인을 위해 직접 접속해 보면 내가 입력한 email값으로 패킷이 전송되고 email 변경 페이지로 .. 2023. 10. 11. 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. 이전 1 2 3 4 5 6 7 다음 728x90