목록웹 해킹/Request Forgeries(CSRF) (4)
Oh! JUN
1. JSESSIONID와 CSRF 토큰을 활용해서 로그인 시도해보기 로그인하면 Cookie를 전송하는 것 처럼 보이지만, 사실 이전에 로그아웃 하고 서버에서 무효화 시킨 세션이고 웹 브라우저에서는 바로 삭제되지 않을 수 있습니다. 그래서 위에 burp suite 처럼 쿠키가 요청되는것 처럼 보이는거고 서버에서 세션을 생성하고 세션에 대한 고유 식별자를 JSESSIONID 쿠키에 저장하여 브라우저로 전송하게 됩니다. 로그인을 성공하게 되면 서버한테 새로 응답받은 JSESSIONID를 확인할 수 있습니다. 그래서 기존에 사용하는 크롬 웹 브라우저 말고 다른 웹 브라우저로 JSESSIONID를 사용해서 로그인을 시도해보자 했지만, CSRF 토큰도 사용중이어서 토큰을 알아보자 시도해봤습니다. XSS 취약점을 ..
1. 문제설명 CSRF 및 Content-Type 이전 섹션에서 우리는 Content-Type 에 의존하는 것이 CSRF에 대한 보호가 아니라는 것을 보았습니다. 이 섹션에서는 CSRF로부터 보호되지 않는 API에 대해 CSRF 공격을 수행할 수 있는 또 다른 방법을 살펴보겠습니다. 이 과제에서는 다음 JSON 메시지를 엔드포인트에 게시해야 합니다. 2. 문제풀이 name, email, subject, message에 dummy값 넣어서 burp로 요청을 캡쳐해서 살펴봤습니다. Content-Type : application/Json로 되어있는걸로 봐서 Content-Type을 변경해서 CSRF공격을 수행하는것 같습니다. Content-Type을 enctype="text/plain"로 변경해주고 JSON..
1. 문제설명 다른 사람을 대신하여 리뷰 게시 아래 페이지는 댓글/리뷰 페이지를 시뮬레이션합니다. 여기서 차이점은 CSRF 공격과 마찬가지로 이전 연습과 마찬가지로 다른 곳에서 제출을 시작해야 한다는 것입니다. 생각보다 쉽습니다. 대부분의 경우 더 까다로운 부분은 CSRF 공격을 실행하려는 위치를 찾는 것입니다. 전형적인 예는 누군가의 은행 계좌로의 계좌/전신 송금입니다. 하지만 여기서는 간단하게 설명하겠습니다. 이 경우 현재 로그인한 사용자를 대신하여 리뷰 제출을 실행하기만 하면 됩니다. 2. 문제풀이 이전 문제와 해결방법은 거의 똑같습니다. 하지만 stars의 값의 데이터형과 validataReq값을 올바르게 설정해줘야 문제를 해결할 수 있습니다. 이전 문제와 동일하게 코드를 생성하고 댓글을 달면 문..
1. 문제설명 기본 CSRF 가져오기 연습 로그인한 동안 외부 소스에서 아래 양식을 트리거합니다. 응답에는 '플래그'(숫자 값)가 포함됩니다. 플래그 확인 아래 이전 페이지에서 획득했어야 하는 플래그를 확인하세요. 2. 풀이 제출 버튼을 클릭하면 [그림 - 1]와 같은 응답값을 확인할 수 있습니다. 메시지를 살펴보면, "요청이 원래 호스트로 부터 온것으로 나타난다" 문구를 확인할 수 있고 결과적으로 실패한것을 확인할 수 있습니다. 그렇다면, 해당 문제를 해결하기 위해서는 요청이 원래의 호스트가 아닌 타 호스트로 부터 오도록 설정해줘야 합니다. 제출 버튼을 누르면 요청을 보내는 주소와 요청방식을 동일하게 "http://127.0.0.1:5555/WebGoat/csrf/basic-get-flag"와 POST..