Weakness
blind sql injection
Description
개요
회원가입 id 중복체크 도중 SQL injection이 발생
재현 과정
현재 가입되어 있지 않은 아이디와 sql injection payload를 이용하여 중복체크 시도
invaild id란 메세지와 함께 해당 아이디가 이미 존재한다는 메세지를 확인할 수 있음
id가 존재한다고 했지만 정상적으로 회원가입이 되는 것을 확인할 수 있음
sleep이 포함된 페이로드를 전송할 시 무한 로딩이 걸리게 됨
예상되는 취약점 발생 원인
id 중복체크 이전에 특수문자 포함여부를 확인하지만 이후 특수문자가 포함되있어도 처리를 중단하지 않고
그대로 중복체크를 진행하였고 이때 별다른 필터링이 존재하지 않아서 sql injection이 발생하게 됨.
패치 방법
중복체크 이전에 필터링 진행 후 sql injection에 사용되는 문자가 발견되었을 경우 exit이나 die함수를 이용하여 처리를 함.
해당 취약점은 중복체크 이후 실제 회원가입을 진행할 때도 동일하게 발생할 것으로 예상됨.
Prepared statement를 사용하거나 모든 파라미터에 대해 mysql_real_escape_string함수나 addslashes함수를 사용하여 sql injection에 사용되는 문자에 대해 백슬래시 처리를 함
예상 결과 및 파급력
blind sql injection을 이용하여 database에서 회원정보 탈취, 악성 데이터 삽입 등 추가적인 공격 진행 가능
기타사항 및 레퍼런스
[그 외에 추가할 내용이 있다면 이곳에 작성해주세요.(스크린샷, 로그 등)]
- [첨부파일 / 레퍼런스]
현재 로그인 기능이 잘 작동하지 않는 것 같습니다. 제 세션에서 무한 로딩이 걸리는 것 같습니다