디미고 인트라넷, IT 소양인증제 취약점 제보
2주일 정도 전에 디미고 인트라넷 중 하나인 IT 소양인증제 사이트의 취약점을 찾게 되어 담당 선생님께 제보를 한 적이 있다. 내가 IT 소양인증제 사이트의 취약점을 찾은 것을 보고서로 남기려 블로그에 정리를 하게 되었다.
해당 파일은 내가 선생님께 넘길 때 사용했던 파일이다.
IT 소양인증제 Bug Hunting Report
(SQL Injection)
취약점 유형은 SQL Injection이다. SQL Injection 뿐만 아니라, 500에러로 인한 Source Leak이 가능했다.
해당 취약점으로 할 수 있는 것들이 꽤 많았다. 기본적으로 SQL Injection이 가능했기 때문에, 데이터베이스에 접속해서 모든 데이터들을 읽을 수 있었다. 만약에 선생님들 계정 정보를 알아내서 로그인했었다면, 내가 IT소양인증제의 포인트를 조작해서 '그랜드 마스터' 등급까지 올라갈 수 있었다. SQL Injection을 연계해서 load_file() 함수를 이용하면 파일 내용까지 볼 수 있었기 때문에 생각보다 파급력이 큰 취약점이었다.
아래는 시연 영상이다.
공격 벡터 (Vector)
학생 IT 점수 순위에서 자신의 이름을 클릭하게 되면 자신의 학생 정보를 볼 수 있다.
다른 학생들의 정보는 안타깝게도 내 권한으로 볼 수 없다.
target url : http://student.dimigo.hs.kr/total-achieve/personal-view?user_id=1368&year=2017&term=2
여기에서 user_id 에서 SQL Injeciton 및 Source Leak이 된다.
PoC (Proof of Concept) : http://student.dimigo.hs.kr/total-achieve/personal-view?user_id=1368%20AND%20(SELECT%208973%20FROM(SELECT%20COUNT(*),CONCAT(0x7178706271,(SELECT%20(ELT(8973=8973,1))),0x71717a6a71,FLOOR(RAND(0)*2))x%20FROM%20INFORMATION_SCHEMA.CHARACTER_SETS%20GROUP%20BY%20x)a)&year=2017&term=2
해결책 (Solution)
사용자에게서 받은 user_id 값은 모두 int형이므로 intval() 함수를 이용해서 형 변환을 하게 되면 완벽히 취약점을 패치할 수 있다. 내가 취약점을 신고하자마자 바로 취약점이 패치되었다.
'리얼월드 (Real world)' 카테고리의 다른 글
네이버 잠재 DDoS 취약점 제보 (4) | 2017.12.09 |
---|---|
웃긴대학 XSS 취약점 (0) | 2017.12.07 |
ch4n3 world 취약점 (0) | 2017.11.22 |
지금까지 찾았던 베네듀 취약점 총정리 (1) | 2017.11.12 |
디미고 대나무숲 조금 심각한 버그? (0) | 2017.06.30 |