반응형

WebHacking 15

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: Username enumeration via account lock 문제 풀이(WriteUp)

문제 설명브루트 포스 공격을 통해 주어진 사용자 이름과 비밀번호로 로그인에 성공하면 문제가 해결된다.문제 풀이로그인 페이지에 접근한 후 로그인 요청을 수행한다. 버프스위트 Intruder 기능을 사용하여 브루트 포스 공격을 시도한 결과 arkansas 계정만 로그인이 1분 지연이 되었다. 이를 통해 해당 계정이 존재하는 것을 유추할 수 있다. password 브루트 포스 공격을 수행한다. 응답 결과에서 1분 지연에 대한 내용을 제외하고 확인한 결과 password가 tigger일 경우에만 아무런 에러 값이 존재하지 않는다. arkansas:tigger로 로그인한 결과 로그인에 성공하여 문제를 해결하였다.

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 response timing 문제 풀이(WriteUp)

문제 설명주어진 사용자 이름과 비밀번호를 통해 로그인에 성공하면 문제를 해결할 수 있다.문제 풀이로그인 페이지에 접근한 후 로그인을 수행한다. 로그인 실패 시 Invalid username or password 에러가 발생한다. 버프스위트 Intruder 기능을 사용하여 브루트 포스한 결과 너무 많은 로그인 시도를 해서 30분 차단을 당하였다. X-Forwarded-For 헤더를 추가하여 IP 우회가 가능하다. password 길이를 길게 설정한 후 브루트 포스 공격을 진행한다. 브루트 포스 공격 결과 아이디 ar 계정만 응답 시간이 오래걸렸으므로 사용자 아이디가 ar인것을 유추할 수 있다. 사용자 아이디를 ar로 설정한 후 password를 브루트 포스한다. password 브루트 포스 결과 비밀번호가..

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

문제 설명주어진 사용자 계정과 비밀번호를 통해 로그인에 성공하면 문제가 해결된다.문제 풀이로그인 페이지에서 로그인 요청을 수행한다. 로그인에 실패할 경우 Invalid username or password. 라는 에러를 응답에 반환한다.버프스위트 Intruder 기능을 사용하여 브루트 포스 공격 진행한 결과 하나의 패킷의 응답이 미묘하게 다른 것을 확인할 수 있다. 로그인 실패 시 Invalid username or password. 에러를 반환하는데 하나의 패킷만 Invalid username or password를 반환한다. 따라서 acceso 계정이 존재한다는 것을 유추한다. 주어진 비밀번호 리스트를 브루트 포스 공격을 진행한다. password 브루트 포스 공격 결과 비밀번호가 maggie일 때 ..

Lab: CSRF with broken Referer validation 문제 풀이(WriteUp)

문제 설명피해자의 이메일을 변경하면 문제를 해결할 수 있다.문제 풀이My Account 페이지에 접근한 후 이메일 변경 요청을 수행한다. 이메일 변경 요청 시 CSRF 토큰이 존재하지 않는다. Referer 헤더를 제거한 후 이메일 변경 요청을 수행할 시 Referer 검증을 통해 에러를 반환한다. Referer 헤더에 google.com?같은 사이트 와 같이 전송하면, Referer 검증을 우회할 수 있다. POCmeta 태그 referrer 속성을 unsafe-url로 설정한다.history.pushState()를 사용하여 페이지를 reload하지 않고 url만 변경한 후 CSRF 공격을 진행한다. 공격 코드를 피해자에게 전송하여 문제를 해결하였다.

Lab: CSRF where Referer validation depends on header being present 문제 풀이(WriteUp)

문제 설명피해자의 이메일을 변경하면 문제를 해결할 수 있다.문제 풀이My Account 페이지에 접근하여 이메일 변경 요청을 진행한다. 이메일 변경 요청시 CSRF 토큰이 존재하지 않는다. Referer 헤더 변조 시 Referer 검증 로직이 존재하여 에러가 발생한다. Referer 헤더가 포함되지 않은 요청에 대해서도 서버가 정상적으로 응답하므로, Referer 검증이 수행되지 않는 것으로 판단된다. POCmeta 태그 no-referrer 설정을 통해 referrer를 전송하지 않고 CSRF 공격을 수행한다. 공격 코드를 피해자에게 전송하여 문제를 해결하였다.

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: SameSite Strict bypass via sibling domain 문제 풀이(WriteUp)

문제 설명피해자 계정으로 로그인하면 문제를 해결할 수 있다.문제 풀이/chat 경로에 접속할 시 READY라는 데이터를 서버에 전송하여 기존의 메시지 내용을 불러온다. /resources/js/chat.js 경로에서 Access-Control-Allow-Origin 헤더에 [cms-사이트 주소]가 설정되어 있다. Access-Control-Allow-Origin 헤더가 설정되어 있는 경우 다른 도메인이라도 자원에 접근할 수 있게된다. CMS 페이지에 접근할 경우 로그인 페이지가 표시되며, 이 로그인 페이지의 Username 입력 필드에서 XSS(크로스사이트 스크립팅) 취약점이 발생 한다. CMS 페이지의 로그인 기능에서 username 파라미터에 XSS(크로스사이트 스크립팅) 공격 구문을 삽입할 경우, ..

반응형