Wargame | CTF/WebHacking

    Juice Shop - XSS Tier 2(★★★) 풀이

    지속형 XSS 공격을 하는 문제 입니다. 클라이언트 단에서만 검증하는 매커니즘을 우회하면 된다고 하네요. 지속형은 비지속형인 Reflected XSS 와 달리 한번 공격자가 주입한 데이터가 서버에 저장된 다음 다른 사용자에게 노출되어서 계속 발생하게 됩니다. 대표적으로 게시판이 있습니다.계정을 등록하는 과정에서는 클라이언트 단에서만 검사를 하고, 서버단에서는 검사를 하지 않습니다. 그 예로 전송할때, email 부분을 조작하여 요청을 보낼 수 있습니다. 정상적으로 클라이언트 단의 보안 매커니즘을 우회하였고, 계정이 생성되었습니다. 이 계정정보를 administration 페이지에서 Registered Users 를 통해서 다시 한번 게시판 형식으로 뿌려지는데, 여기서 스크립트가 작동하게 됩니다. 게시판은..

    Juice Shop - Payback Time(★★★) 풀이

    주문하면 부자가 된다고 하네요. 주문에서 뭔가를 조작하면 될 것 같습니다. 먼저 하나를 장바구니에 담습니다. 버프슈트의 인터셉트 기능을 켜고 플러스 버튼을 눌러줍니다. 개수를 전송하는 부분에 마이너스 값을 넣어준 후, 주문을 합니다. 가격이 마이너스가 된걸 확인할 수 있네요.

    Juice Shop - Admin Registration(★★★) 풀이

    어드민으로 계정을 만드는 문제입니다. 먼저 그냥 계정을 생성해 보겠습니다. Request 에는 없던 필드가 Response에 있네요 isAdmin 이라는 필드 입니다. 해당 값이 false로 되어있습니다. Response 필드에 isAdmin:true 를 추가하여 요청하였더니 어드민 계정이 성공적으로 만들어 졌습니다.

    Juice Shop - Upload Type(★★★) 풀이

    pdf 형식이 아닌 파일을 업로드 하는 문제입니다. 한줄 웹쉘을 작성한 후, 확장자를 pdf로 변경하고 업로드를 해줍니다. 버프슈트로 인터셉트를 잡아주고, 파일이름을 webshell.php로 변경해 줍니다. 성공적으로 다른 확장자를 가진 파일을 업로드 하였습니다.

    Juice Shop - CAPTCHA Bypass Tier 1(★★★) 풀이

    캡차를 우회하여서 피드백을 10초안에 10개이상 보내는 문제입니다. 먼저 인터럽트를 걸고 피드백을 보내는 요청을 잡아줍시다. 잡은 요청을 반복해서 보내기 위해 버프슈트 내 Repeater 기능을 사용할건데요. 피드백을 보내는 http 요청 전체를 복사해줍니다.repeater의 Request 부분에 복사한 헤더를 붙여넣기 해주시고, 타겟은 localhost 포트는 3000번으로 해줍니다. 그리고 Go 버튼을 빠르게 눌러서 요청을 여러번 보냅니다. 정상적으로 요청이 보내졌고, 서버에서도 201로 응답하였습니다.

    Juice Shop - Forged Review(★★★) 풀이

    다른사람이 쓴 리뷰를 수정하거나 다른 사람의 이름으로 리뷰를 등록하라는 문제입니다. author 파라미터를 수정해 줍니다. 다른사람의 이름으로 리뷰가 등록되었습니다.

    Juice Shop - Login Jim(★★★) 풀이

    역시 똑같은 문제입니다. Jim 계정으로 로그인 하여야 합니다. Jim 계정명을 확인해 줍니다. 계정을 입력하고 싱글쿼터로 닫아준 뒤에, 패스워드 필드를 모두 주석처리 해줍니다. Jim 의 계정으로 성공적으로 로그인 되었습니다.

    Juice Shop - Login Bender(★★★) 풀이

    관리자계정에 로그인 하는것과 같은 문제 입니다. administration 페이지에서 계정을 확인합니다. 계정을 입력해 주고 싱글쿼터를 닫아 준 후, 패스워드 필드를 주석처리 해줍니다. 로그인 성공

    Juice Shop - Forged Feedback(★★★) 풀이

    다른 유저의 이름으로 피드백을 작성하는 문제입니다. 먼저 피드백을 작성하고, 버프슈트로 인터럽트를 걸어줍니다.요청을 보내는 필드에 UserId라는 파라메터가 있네요. 현재 값은 1입니다. 이 값을 3으로 바꿔서 포워드 해줍니다. 정상적으로 다른 유저 이름으로 피드백이 등록된걸 확인할 수 있습니다.

    Juice Shop - Login Admin(★★) 풀이

    관리자 계정으로 로그인하는 문제 입니다. 특별한 조건이 붙여있지 않는걸로 봐서 SQL 인젝션을 이용하면 될것같네요. 아까 administration 페이지에서 회원목록을 볼 수 있었습니다. 가입 순으로 정렬이 되는것 같고, 제일 처음 가입된 계정인 admin 이라는 이메일이 아마도 어드민 계정인것 같네요. 패스워드 쪽에서는 SQL 인젝션이 방어 되어있는것 같고, 이메일 쪽에서 아까 오류를 핸들링 해주지 못하는 모습이 보였으므로 이메일쪽에서 시도해 줍니다. 어드민 계정을 입력하고, 싱글쿼터로 닫아준후, -- (주석) 을 입력해서 뒤의 패스워드 필드를 모두 주석처리 해줍니다. 정상적으로 SQL Injection이 성공한 모습을 볼 수 있습니다.

    Juice Shop - Five-Star Feedback (★★) 풀이

    별점 5점의 피드백을 삭제하는 문제입니다. 별 한개짜리 문제에서 administration 페이지에 접근이 가능했습니다. 휴지통 아이콘이 있는걸로 봐서는 삭제도 가능한가 봅니다. 별점 5점짜리 피드백을 삭제해줍시다.

    Juice Shop - Basket Access Tier 1(★★) 풀이

    다른사람의 장바구니를 들어가 보라고 합니다. 먼저 제 장바구니를 요청할 때 어떻게 서버에 요청을 하는지 확인해 보면 조작이 가능할 것 같습니다. 역시 버프슈트를 사용하였구요. 장바구니를 요청할 때, 뭔가 숫자가 붙어있는걸로 봐서 이 숫자가 아마 각 장바구니에 부여된 숫자 같습니다. 해당 숫자 4를 1로 바꾸어서 포워드 해주었습니다. 제 장바구니가 아닌 다른 사람의 장바구니가 나왔네요.

    Juice Shop - Zero Stars(★) 풀이

    피드백을 보낼때 별점을 0점으로 보내라고 하네요. Contact us 를 통해서 Feedback을 보낼 수 있습니다. 하지만 별점은 1이상만 가능하네요 버프슈트를 이용하여 요청을 가로채줍시다. 현재 서버가 로컬에 있기때문에 로컬로의 요청을 잡기 위해서는 localhost 옆에 .(점) 을 붙여 주어야 버프슈트에 잡힙니다. http://localhost.:3000 이런식으로 요청을 해줘야 합니다.다시 문제로와서 rating 부분을 0으로 바꿔준 뒤, 포워드 해줍니다. 0점의 피드백이 정상적으로 전송되었네요.

    Juice Shop - XSS Tier 1(★) 풀이

    또 크로스 사이트 스크립팅 문제입니다. 이 문제는 DOM XSS 공격을 요구하는데요 DOM(Document Object Model) XSS 공격이란 DOM 환경에서 악성 URL을 통해 사용자의 브라우저를 공격하는 방식입니다. 검색을 하는 부분에 XSS 공격이 가능합니다. XSS 공격이 성공하였고, Search의 결과로 iframe 창이 조그맣게 생겼네요

    Juice Shop - XSS Tier 0(★) 풀이

    크로스 사이트 스크립팅 문제입니다. XSS중 reflected XSS 관한 문제인데요. 말그대로 반사되서 나오는, 즉각적인 반응을 보이는 그런 XSS 공격 기법을 수행하면 됩니다. 여러 페이지에 접근하여 XSS를 시도 했는데요. reflected XSS에 적합한 페이지는 track-order 입니다. 제일 잘 알려진 는 개발자가 슬러쉬를 예외처리 해놓았는지 작동하지 않아서 문제에 나와있는 iframe을 사용하였습니다. reflected XSS 공격이 성공하였네요.