


사용자이름은 admin@juice-sh.op 라는 것은 지난 단계의 SQLi 공격을 통해 획득했다.
이를 바탕으로 burp-suite에서 FUZZ을 하여 brute-force 공격을 통해 비밀번호를 획득하려고 한다.
비밀번호 목록은 SecLists 를 사용하였다.







상점(Juice Shop)이 절대로 사용해서는 안 되는 방식으로 사용하고 있는 알고리즘 또는 라이브러리에 대해 알려주세요.
라고 적혀있다.
- 최소 80% 이상의 할인을 제공하는 쿠폰 코드 위조: 쿠폰 코드에 z85 (Zero-MQ Base85 구현) 라이브러리를 사용하고 있다는 점을 악용합니다.
- 챌린지 #999 해결: hashid 라이브러리를 사용하여 유효한 해시를 생성해야 합니다.
- Users 테이블의 비밀번호: Salt가 없는 MD5로 해시되어 있습니다.
- Google 계정 사용자 비밀번호: Base64 인코딩을 포함하는 매우 어설픈 기본 비밀번호를 받게 됩니다.
이 챌린지는 OWASP Juice Shop에서 비밀번호 저장에 사용된 취약한 알고리즘을 찾아내는 문제입니다. 일반적으로 웹 애플리케이션에서는 사용자의 비밀번호를 보호하기 위해 **해싱(Hashing)**을 사용해야 하며, 특히 salt를 적용하고 느린(Slow) 알고리즘을 사용해야 합니다.
Juice Shop은 이 챌린지에서 의도적으로 취약한 알고리즘을 사용하고 있습니다.
Juice Shop이 사용해서는 안 될 방식대로 사용하고 있는 알고리즘 또는 라이브러리는 MD5와 같은 안전하지 않은(Insecure) 해싱 알고리즘입니다.
왜 MD5를 사용하면 안 되나요?
- 속도: MD5는 매우 빠른 알고리즘입니다. 빠른 해싱은 파일 무결성 검사에는 좋지만, 비밀번호 해싱에는 공격자가 무차별 대입(Brute-Force) 공격이나 **사전 공격(Dictionary Attack)**을 매우 빠르게 시도할 수 있게 해 주기 때문에 치명적입니다.
- 충돌 위험 (Collision Risk): MD5는 암호학적 충돌(Cryptographic Collision) 취약점이 발견된 지 오래되었기 때문에, 두 개의 다른 입력(비밀번호)이 동일한 해시 값을 생성할 수 있습니다.
- Salt 미적용: Juice Shop은 종종 MD5를 Salt 없이 사용하여, 미리 계산된 해시 값 목록인 레인보우 테이블(Rainbow Table) 공격에 매우 취약하게 만듭니다.
💡 대신 사용해야 하는 알고리즘
상점은 반드시 BCrypt, Scrypt, 또는 Argon2와 같이 Salt를 자동으로 적용하고 의도적으로 느리게 작동하도록 설계된 강력한 비밀번호 해싱 함수를 사용해야 합니다.
- 알고리즘: MD5를 비밀번호 해싱에 사용하는 것은 절대로 피해야 합니다.
/#/contact에서 Feedback을 통해 개발자에게 md5와 관련하여 취약점에 대해 알려준다.














