id 파라미터를 통한 sql injection

Writer as3617 Program webhacking.kr

WEB Resolved Critical 1,000,000 Created: Aug 2, 2021 (3 years ago) Last Updated: Aug 2, 2021 (3 years ago)

Weakness

blind sql injection

Description

개요

회원가입 id 중복체크 도중 SQL injection이 발생

재현 과정

현재 가입되어 있지 않은 아이디와 sql injection payload를 이용하여 중복체크 시도
image.png

image.png
invaild id란 메세지와 함께 해당 아이디가 이미 존재한다는 메세지를 확인할 수 있음

image.png

image.png
image.png
id가 존재한다고 했지만 정상적으로 회원가입이 되는 것을 확인할 수 있음

image.png
sleep이 포함된 페이로드를 전송할 시 무한 로딩이 걸리게 됨

예상되는 취약점 발생 원인

id 중복체크 이전에 특수문자 포함여부를 확인하지만 이후 특수문자가 포함되있어도 처리를 중단하지 않고
그대로 중복체크를 진행하였고 이때 별다른 필터링이 존재하지 않아서 sql injection이 발생하게 됨.

패치 방법

중복체크 이전에 필터링 진행 후 sql injection에 사용되는 문자가 발견되었을 경우 exit이나 die함수를 이용하여 처리를 함.
해당 취약점은 중복체크 이후 실제 회원가입을 진행할 때도 동일하게 발생할 것으로 예상됨.
Prepared statement를 사용하거나 모든 파라미터에 대해 mysql_real_escape_string함수나 addslashes함수를 사용하여 sql injection에 사용되는 문자에 대해 백슬래시 처리를 함

예상 결과 및 파급력

blind sql injection을 이용하여 database에서 회원정보 탈취, 악성 데이터 삽입 등 추가적인 공격 진행 가능

기타사항 및 레퍼런스

[그 외에 추가할 내용이 있다면 이곳에 작성해주세요.(스크린샷, 로그 등)]

  • [첨부파일 / 레퍼런스]

Timeline

as3617 submitted ticket. August 2, 2021 (3 years ago)
rubiya MANAGER changed the status from 'Submitted' to 'In Progress'. August 2, 2021 (3 years ago)
as3617 posted a comment. August 2, 2021 (3 years ago)

현재 로그인 기능이 잘 작동하지 않는 것 같습니다. 제 세션에서 무한 로딩이 걸리는 것 같습니다

as3617 posted a comment. August 2, 2021 (3 years ago)

방금까지 info 수정도 됬었는데 갑자기 무한로딩 때문에 아무것도 못하고 있습니다.

rubiya MANAGER posted a comment. August 2, 2021 (3 years ago)

수정했습니다. 잘 패치되었는지 확인 부탁드립니다.

as3617 posted a comment. August 2, 2021 (3 years ago)

잘 패치된 것 같습니다. 빠른 처리 감사합니다!

rubiya MANAGER posted a comment. August 2, 2021 (3 years ago)

확인 감사합니다.
코멘트로 말씀주신 info 수정이 가능했다는건 어떤 이슈를 말씀하시는건가요?

as3617 posted a comment. August 2, 2021 (3 years ago)

아 제가 새로운 취약점을 찾아보기 위해서 info 페이지에서 제 정보를 수정했을 때 정상적으로 됬었는데 갑자기 무한로딩이 걸려서 페이지가 작동을 안한다는 말이였습니다. 지금은 정상적으로 동작합니다

rubiya MANAGER posted a comment. August 2, 2021 (3 years ago)

확인 감사합니다.
현재 업무중이어서 바운티 책정을 비롯한 나머지 프로세스는 저녁에 이어서 진행하도록 하겠습니다.
심각도는 매우 높음 그대로 유지될 것 같습니다.

as3617 posted a comment. August 2, 2021 (3 years ago)

감사합니다

rubiya MANAGER rewarded 1,000,000 credit. August 2, 2021 (3 years ago)
rubiya MANAGER posted a comment. August 2, 2021 (3 years ago)

webhacking.kr의 회원가입 과정에서 입력값에 이상이 있을 경우 ID 중복 확인 후 프로세스가 중단되어 SQL Injection 취약점이 발생했습니다.
회원가입 과정에서 입력값에 이상이 있을 경우 ID 중복 확인 역시 수행하지 않도록 패치하였습니다.
멋진 제보 감사드리며, 앞으로도 많은 관심 부탁드립니다.

rubiya MANAGER changed the status from 'In Progress' to 'Resolved'. August 2, 2021 (3 years ago)
rubiya MANAGER changed the disclosure from 'Closed' to 'Disclosed (Full)'. August 2, 2021 (3 years ago)
as3617 posted a comment. August 2, 2021 (3 years ago)

감사합니다!