
CVE-2023-22432 (web2py) PoC
2023년 1월 31일(미국 시간)에 web2py의 취약점(CVE-2023-22432)이 공개되었습니다. 이 글은 해당 취약점에 대한 논의와 검증 결과를 설명합니다.
이 취약점은 web2py의 오픈 리다이렉트 취약점으로, 관리자 페이지 URL에서 콜백 대상 URL로 임의의 URL을 지정할 수 있습니다. 원래 오픈 리다이렉트에 대한 대책이 구현되어 있었지만, 특별한 우회 방법을 URL에 적용하면 취약점이 재현됩니다. 이로 인해 악성 사이트로 유도될 수 있습니다.
2022년에 web2py에서 오픈 리다이렉트 취약점(CVE-2022-33146)이 발견되었고, CVE-2022-33146과 유사한 다른 취약점이 있는지 궁금하여 web2py의 소스 코드를 확인한 결과 오픈 리다이렉트 방지를 우회하는 방법을 찾았습니다. Aeye Security Lab의 Takuto Yoshikai(저자)가 이 사실을 IPA와 web2py 개발팀에 보고했습니다.
이 저장소에서 build.sh를 실행하세요. 그러면 web2py가 시작됩니다.
bash build.sh
http://localhost:8000/admin/default/index/?send=//example.com에 접속합니다.
비밀번호 "password123"을 입력하고 로그인을 클릭합니다.
example.com으로 리다이렉트되지 않았으므로 오픈 리다이렉트 방지가 잘 작동했습니다.
http://localhost:8000/admin/default/index/?send=\/\/example.com에 접속합니다.
페이로드는 \/\/example.com입니다.
비밀번호 "password123"을 입력하고 로그인을 클릭합니다.
example.com으로 리다이렉트되었으므로 오픈 리다이렉트 방지가 제대로 작동하지 않았습니다.
검토 및 검증 결과, 관리자 페이지 URL을 조작하여 관리자를 악성 웹 사이트로 유도할 수 있음을 확인했습니다. 가능한 한 빨리 시스템을 업데이트할 것을 권장합니다.