lhywk 님의 블로그

[TryHackMe] OWASP Juice Shop 본문

TryHackMe

[TryHackMe] OWASP Juice Shop

lhywk 2026. 2. 8. 14:51

서버의 IP로 웹 브라우저를 통해 접속한다.

문제에 주어진 대로 admin의 이메일 주소를 찾아낸다.

해당 주소 admin@juice-sh.op를 찾아낸다.

찾은 이메일주소를 입력하여 문제를 풀이한다.

두 번째 문제인 검색 파라미터를 찾아내기 위해 검색 아이콘을 눌러 apple을 검색해 본다.

해당 파라미터는 q임을 확인한다.

두 번째 문제도 풀이한다.

세 번째 문제는 Jim이 리뷰에서 인용한 TV쇼를 찾아내는 것이다.

Jim의 리뷰에 Fresh out of a replicator를 볼 수 있는데 구글에 검색해 본다.

Star Trek에 나오는 장치이다.

해당 답을 입력하여 문제를 풀이한다.

SQLI를 이용하여 admin으로 로그인해야 한다.

아무 이메일과 패스워드를 넣으면 일치하지 않는다고 나온다.

‘ or 1==1--을 입력하여 -- 뒤에 구문을 모두 주석 처리하여 로그인 인증을 우회한다.

우회에 성공하여 플래그를 획득한다.

획득한 플래그를 입력하여 문제를 풀이한다.

이번엔 bender의 계정으로 로그인을 해야 한다.

로그아웃을 하고 다시 한번 로그인을 시도하는데 bender@juice-sh.op’--을 입력하여 뒤에 구문을 주석으로 처리하여 로그인을 우회한다. email이 bender@juice-sh.op인 계정으로 로그인에 성공한다.

인증 우회를 성공하면 플래그를 획득한다.

획득한 플래그를 입력하여 문제를 풀이한다.

이번엔 admin@juice-sh.op 으로 로그인해야 한다. 아무 패스워드를 입력하면 당연히 Invalid가 뜬다.

Burp Suite를 사용하여 패킷을 분석해 본다. 입력한 email과 password를 확인할 수 있다.

공격에 사용할 패스워드 목록을 다운로드 받기 위해 seclists 패키지를 설치한다.

설치한 wordlist를 찾기 위해 find 명령을 사용한다.

brute force 공격을 수행하기 위해 Intruder창으로 넘어가 공격을 준비한다.

설치한 best1050.txt 파일을 로드한다.

패스워드 목록 중에 admin123이 응답 코드 200으로 성공했다.

로그인에 성공했으니 플래그를 획득한다.

획득한 플래그를 입력하여 문제를 풀이한다.

다음 문제는 Jim의 패스워드를 리셋하는 것이다.

Forget your password를 눌러 변경을 시도하는데 Security Question에 가장 나이가 많은 형제자매의 미들네임을 입력하라고 한다.

해당 답을 찾기 위해 구글링을 시도한다. 형의 이름을 확인할 수 있고 Middle name이 Samuel임을 확인한다.

알아낸 미들네임 정보를 입력하고 새로운 패스워드 12345를 설정한다.

비밀번호 리셋에 성공했으니 플래그를 획득한다.

획득한 플래그를 입력하여 문제를 풀이한다.

About US 내용 중에 링크가 있는데 이 링크를 클릭한다.

링크를 눌러 접속하면 ftp 사이트에서 파일을 저장하고 있다.

파일 이름을 지우고 ftp 웹페이로 넘어가면 파일목록을 볼 수 있다.

이때 acquisitions.md 파일을 다운로드 받는다.

다운로드에 성공하면 플래그를 획득한다.

획득한 플래그를 입력하여 문제를 풀이한다.

비디오를 확인하면 40초쯤에 자신의 패스워드가 Mr.Noodles 인데 이 패스워드의 모음들을 숫자 0으로 바꿨다고 한다. 그렇다면 패스워드는 Mr. N00dles일 것이다.

메일의 주소는 mc.safesearch@juice-sh.op이다.

해당 메일과 비밀번호를 입력하여 로그인을 시도한다.

로그인을 성공하면 플래그를 획득한다.

다시 ftp 디렉토리에 가서 package.json.bak 파일을 다운로드해본다.

다운로드를 시도하면 403 에러가 발생한다. 확장자가 md 혹은 pdf만을 허용하는 것 같다.

이를 우회하기 위해 Poison Null Byte 공격을 시도한다. %2500(%00)을 뒤에 붙이고 필터를 통과할 확장자인 md를 붙인다.

다운로드에 성공하면 플래그를 획득한다.

획득한 플래그를 입력하여 문제를 풀이한다.

개발자 도구를 열어 Dubugger 탭을 선택하고 main.js 파일의 소스코드를 확인해 본다.

문자열 검색 기능을 활용해 admin을 검색해 본다.

11번째 검색 결과에 administration이라는 경로가 존재한다.

해당 경로로 접속을 시도하면 403 에러가 발생한다.

관리자로 로그인하기 위해 저번에 획득한 admin의 메일과 비밀번호를 입력한다.

해당 경로를 재진입하면 이번엔 403 에러가 아니고 성공접으로 웹 페이지 접속에 성공한다.

관리자 페이지 접근에 성공하면 플래그를 획득하고 문제를 풀이한다.

basket으로 이동하여 장바구니 페이지에 접속한다.

패킷을 확인해 본다.

basket 번호를 2로 변경해서 다른 장바구니에 접속을 시도해 보니 성공했다.

접근에 성공하면 플래그를 획득한다.

획득한 플래그를 입력하여 문제를 풀이한다.

문제를 풀기 위해 별 5점짜리 피드백을 삭제한다.

삭제에 성공하고 플래그를 획득한다.

획득한 플래그를 입력하여 문제를 풀이한다.

DOM XSS을 실행하기 위해 검색창에 <iframe src=”javascript:alert(’XSS’)”>을 입력한다.

Account의 Privacy & Security에서 Last Login IP을 클릭하면 마지막 로그인 IP 창이 표시된다.

해당 패킷을 Burp suite를 통해 찾아본다.

Repeater 탭에서 요청 헤더를 확장하기 위해 +을 눌러 항목을 추가한다.

키는 True-Client-IP 값은 <iframe src=”javascript:alert(’XSS’)”>라고 입력한다.

헤더에 값이 잘 들어갔는지 확인한 뒤 패킷을 전송한다.

응답이 왔는지 확인하고 응답 패킷에 우리가 입력한 페이로드가 삽입되어 있다.

다시 해당 탭을 눌러보면 XSS 알림창이 띄워져 XSS 공격이 성공한다.

이번엔 Reflect XSS실행해보기 위해 Orders & payment 탭의 Order History로 이동한다.

트럭을 클릭한다.

URL에 id 파라미터 값에 <iframe src=”javascript:alert(’XSS’)”>을 입력하여 Reflect XSS 공격을 시도한다. 하지만 XSS 알림창이 나오지 않았다.

score-board 페이지에 접속하여 문제 풀이 개수를 확인한다.

'TryHackMe' 카테고리의 다른 글

[TryHackMe] Retro  (0) 2026.02.08
[TryHackMe] The Cod Caper  (0) 2026.02.08
[TryHackMe] ICE  (0) 2026.02.06
[TryHackMe] Blue  (0) 2026.02.06
[TryHackMe] RootMe  (0) 2026.02.05