도움이 필요합니다,,!
어떻게 풀어야 할 지 감이 잘 오지 않습니다..
제가 현재 찾아낸 부분은 다음과 같습니다
- /validate 에서 content-type을 변조하였을 때, error의 detail내에 source code가 노출됨
- /에서 제공되는 guest 계정으로 로그인 시, jwt안에 uid가 guest임을 확인할 수 있음
이를 이용하여 문제를 푸는건가요..? 잘 모르겠습니다 ㅜㅜ
#web
작성자 정보
답변
2
c3po
컴퍼니
발견하신 내용으로 충분히 풀 수 있는 문제입니다. 어떻게 uid가 admin인 변조된 jwt를 만들 수 있을지 잘 생각해보세요
Rootsquare
해결사
index.js의 소스 코드의 64번째 줄을 보시면: jwt = await cryptolib.generateJWT(req.body["id"], "FAKE_KEY");
이처럼 jwt 토큰에 사용할 비밀 키가 소스 코드에 들어가 있습니다! 이 소스 코드 근처의 코드에서 고의로 오류를 발생시키면, 비밀 키를 탈취할 수 있게 됩니다.
실제로 개발을 할 때는 jwt 비밀 키와 같이 유출되면 안 되는 정보들은 코드로 제어하면 안 됩니다! .env와 같은 환경 변수 파일을 따로 만들어 그곳에서 관리해야 합니다.