반응형

취약점 분석 12

Lab: Password reset broken logic 문제 풀이(WriteUp)

문제 설명패스워드 리셋 기능에서 취약점이 존재한다. 이를 이용하여 carlos의 계정에 로그인하면 문제가 해결된다.문제 풀이로그인 페이지에 접속하면 로그인 기능과 패스워드 찾기 기능이 존재한다. 먼저 로그인을 수행한다. 로그인에 성공하면 My Account 페이지에 접근된다. forgot-password 페이지에 접근하면 입력창에 username 또는 email을 입력 받는다. 이메일을 확인하면 비밀번호 재설정 링크가 존재한다. 해당 링크를 클릭한다. 비밀번호 재설정 링크 접속 시 비밀번호를 변경할 수 있다. 비밀번호를 1234로 재설한 한 후 패킷 확인 결과 username 파라미터에 사용자 계정인 wiener이 존재한다. username 파라미터를 carlos로 변경하여 전송한다. carlos:123..

Lab: 2FA simple bypass 문제 풀이(WriteUp)

문제 설명carlos 계정 페이지에 접근하면 문제가 해결된다.문제 풀이wiener 계정으로 로그인을 성공하면 2차 인증으로 4자리 코드를 입력해야한다. 이메일에서 4자리 코드를 확인한다. 4자리 코드를 입력할 경우 My Account 페이지에 접근된다. carlos 계정으로 로그인을 수행한다. carlos 계정으로 로그인할 때도 /login2 페이지로 이동하여 2차 인증을 요청한다. 하지만 응답에 세션이 존재하는것을 보고 2차 인증을 하지 않고 My Account 페이지에 접근을 시도해보았다. 2차 인증을 하지 않고도 My Account 페이지에 접근이 되었으며, 문제가 해결되었다.

Lab: Broken brute-force protection, multiple credentials per request 문제 풀이(WriteUp)

문제 설명Carlos의 계정으로 로그인에 성공하면 문제가 해결된다.문제 풀이로그인 실패 시 Invalid username or password 에러가 발생한다. password를 브루트 포스 공격한 결과 1분 동안 로그인 차단이 된다. 다음과 같이 비밀번호를 리스트 형식으로 여러 패스워드를 전송할 경우 로그인에 성공하였다.["123456", "password", "12345678", "qwerty", "123456789", "12345", "1234", "111111", "1234567", "dragon", "123123", "baseball", "abc123", "football", "monkey", "letmein", "shadow", "master", "666666", "qwertyuiop", "1..

Lab: Broken brute-force protection, IP block 문제 풀이(WriteUp)

문제 설명브루트 포스 공격을 통해 피해자의 계정에 로그인하면 문제가 해결된다.문제 풀이로그인 페이지에 접근한 후 로그인 요청을 수행한다. 로그인을 여러번 시도 후 로그인에 실패할 경우 1분동안 로그인을 할 수 없다. 하지만 로그인 실패와 성공을 번갈아서 하면 차단당하지 않는 다는것을 발견하였다. 이를 적용해 브루트 포스 공격 페이로드를 제작하였다.해당 코드를 통해 아이디와 패스워드 리스트를 생성하였다.def create_username_list(): for i in range(200): with open("username.txt", "a") as fa: fa.write("wiener\n") fa.write("carlos\n")def create_n..

Lab: Username enumeration via different responses 문제 풀이(WriteUp)

문제 설명주어진 사용자 이름, 비밀번호 리스트를 사용하여 로그인하면 문제가 해결된다.문제 풀이로그인 페이지에 접속하여 로그인 요청을 수행한다. 로그인 실패 시 Invalid username 에러가 발생한다. 버프스위트 Intruder 기능을 사용하여 주어진 사용자 이름으로 username을 브루트 포스 공격을 수행한다. 응답 값이 다른 요청을 확인한 결과 ai라는 username으로 로그인 요청을 시도하였을 때 Incorrect password 에러가 발생한다. 이를 통해 ai 라는 아이디가 존재한다는 것을 유추할 수 있다. username을 ai로 설정하고, 주어진 패스워드 리스트를 사용하여 password를 브루트 포스 공격한다. Status code가 302이고, length가 다른 요청을 확인할 ..

Lab: SameSite Lax bypass via cookie refresh 문제 풀이(WriteUp)

문제 설명패해자의 email 주소를 변경하면 문제를 해결할 수 있다.문제 풀이로그인 시 social-login 페이지에 접근되며 몇 초후에 login 페이지로 리다이렉트 된다. 로그인 시 session의 samesite 값이 설정되어 있지 않다. samesite가 설정되어 있지 않은 경우 크롬 브라우저에서 2분 후에 Samesite를 Lax로 설정한다. 2분동안 POST 전송시 쿠키가 포함된다. 이메일 변경 요청이 POST 방식으로 처리되며, CSRF 토큰이 존재하지 않아 CSRF 공격이 가능한 것으로 판단된다. CSRF 공격 시 social-login 페이지로 리다이렉트되어 정상적으로 공격이 수행되지 않는다. POC본 코드는 window.onclick 함수를 활용하여 사용자가 공격자 페이지를 클릭하면 ..

Lab: Manipulating the WebSocket handshake to exploit vulnerabilities 문제 풀이(WriteUp)

문제 설명XSS 필터가 존재하는 라이브 채팅 페이지에서 XSS를 통해 alert 구문을 트리거하면 문제가 해결된다.문제 풀이Live chat 페이지에서 XSS 구문 삽입 시 필터링되며 해당 IP가 차단된다. 차단된 IP는 X-Forwarded-For 헤더를 추가하여 IP 우회가 가능하다.POCIP를 우회한 후 iframe srcdoc 속성을 통해 XSS 필터링 우회에 성공하였다.'> XSS 필터링을 우회하여 alert(1) 구문을 트리거하여 문제를 해결하였다.

Lab: Cross-site WebSocket hijacking 문제 풀이(WriteUp)

문제 설명크로스 사이트 웹소켓 하이재킹 공격을 통해 피해자의 채팅 기록을 유출한 다음 피해자의 계정을 탈취하면 문제가 해결된다.문제 풀이Live chat 페이지에 웹 소켓을 통한 채팅이 이루어진다. Live chat 페이지 접근시 먼저 웹 소켓으로 READY를 전송하여 채팅 기록을 가져온다. POC1. 피해자가 공격자 페이지 접근2. 웹 소켓 연결이 성공할 경우 onopen 핸들러를 통해 READY 데이터 전송3. 웹 소켓 onmessage 핸들러를 메시지가 수신될 경우 fetch 함수를 통해 기존 채팅 기록을 base64로 인코딩하여 유출 POC 전송 후 로그 확인 결과 base64로 인코딩된 데이터를 확인할 수 있다. base64 디코딩하여 carlos의 비밀번호를 확인할 수 있다. carlos 계정..

Lab: Manipulating WebSocket messages to exploit vulnerabilities 문제 풀이(WriteUp)

문제 설명WebSocket 메시지를 사용하여 담당자 브라우저에 alert()를 띄우면 문제가 해결된다.문제 풀이Live chat 페이지에 접근하여 alert()를 페이지에 띄우는 XSS 공격 구문을 입력한다. XSS 구문 입력 시 가 html 엔티티로 치환되어 웹 소켓 메시지가 전송된다. 웹 소켓을 변조하여 XSS 구문을 전송한다. 웹 소켓 메시지 재전송 시 alert(1) 구문이 발생하면서 문제가 해결된다.

Lab: SameSite Strict bypass via client-side redirect 문제 풀이(WriteUp)

문제 설명CSRF 공격을 통해 사용자 email을 변경하면 문제가 해결된다.문제 풀이로그인 시 session의 SameSite 값이 Strict로 설정되어 있다. My Account 페이지에 접근한 후 이메일 변경을 요청한다. 이메일 요청 결과 Burpsuite 패킷에서 csrf 토큰이 존재하지 않는다. GET 메소드로 변환하여 전송할 시 csrf 토큰 없이도 이메일 변경이 가능하다. 하지만 SameSite가 Strict로 설정되어 다른 Origin에서 CSRF 공격을 성공할 수 없기 때문에 같은 Origin에서 CSRF 공격을 성공할 수 있는 취약점을 찾아 연계하여야한다. 블로그 포스트에 접근한 후 Comment를 작성한다. 블로그 Comment 작성 후 /post/comment/confirmation..

반응형