사용자 삽입 이미지

지금까지 오라클은 Union와 Blind SQL Injection만 가능한 것으로 알고 있었지만 작년에 red database security에서 해당 기법을 발표한 자료를 보고 알게되었다. 정말 획기적인 방법인거 같다. 그동안 MSSQL만 Error-Based 가 가능한 것으로만 알고 있었는데.. 그렇게 찾아도 찾지 못했는데 정말 좋은 정보인거 같다. 그럼 방법에 대해서 하나하나 알아보자.


0x01 Error-Based SQL Injection 방법

Oracle은 아래와 같이 utl_inaddr 패키지를 지원하며 get_host_name은 호스트 명을 가져오는 기능을 수행하는 패키지가 있다.
Default는 public 권한 : UTL_INADDR.get_host_name

질의를 통해서 호스트 명을 획득한 화면이다.

사용자 삽입 이미지

get_host_name은 에러가 발생하면 다음과 같은 현상이 발생한다.

사용자 삽입 이미지

여기에서 보면 get_host_name에서는 에러가 나는 데이터에 대해서 화면에 출력해 준다는 것을 알 수 있다. 여기에서 get_host_name에서 SQL Query가 실행 된다면 하나의 칼럼에서 하나의 데이터만 호출한다면 위와 같이 에러가 발생이 가능하다.

select utl_inaddr.get_host_name((select banner from v$version where rownum=1)) from dual

사용자 삽입 이미지

위와 같이 에러 구문이 발생하였다. 해당 에러는 최대 길이는 4000byte까지 출력이 가능하다고 한다.


0x02 Error 유발 가능한 패키지

아래는 오라클에서 정보를 포함된 에러 메세지를 생성한다.

UTL_INADDR.GET_HOST_NAME((select banner from v$version where rownum=1));
UTL_INAADR.GET_HOST_ADDRESS((select banner from v$version where rownum=1));
ORDSYS.ORD_DICOM.GETMAPPINGXPATH((select banner from v$version where rownum=1),user,user);
CTXSYS.DRITHSX.SN(user,(select banner from v$version where rownum=1));


0x03 자동화 툴을 이용하여 DB 획득 화면

위의 방법을 이용하여 SQL Injection 툴을 생성한 화면이다.

사용자 삽입 이미지

Error-Based SQL Injection을 통해서 많은 양의 데이터를 단시간에 획득이 가능하다.


0x04 마무리

해당 취약점을 차단하기 위해서는 가장 중요한 것은 SQL injection 취약점이 발생하지 않도록 취약점을 제거하는 것이 가장 좋다. 기본적이긴 하지만 Error-based를 통해서 대량으로 DB의 데이터가 노출되는 문제는 에러처리만 잘 하여도 차단을 할 수 있다.

대부분은 부적절한 에러처리가 발생하였을 경우 권고하면 잘 제거를 하는 편이지만 간혹 크게 문제가 되지 않는다면서 방치를 하는 경우가 있는데 다시한번 재고해 보는 게 좋을거 같다. ^^;
Posted by n3015m
:
BLOG main image
'네오이즘'의 보안LAB 블로그입니다........... n3oism@gmail.com by n3015m

카테고리

분류 전체보기 (228)
[ HappyDevTool ] (29)
[ HappyToolRelease ] (4)
[Book] (6)
[ Security Studies ] (0)
- CII (2)
- BigData (2)
- Web Hacking (10)
- SQL Injection (25)
- Mobile Security (9)
- Network (6)
- OperatingSystem (4)
- Malware & Reversing (4)
- Phishing (5)
- Compliance (0)
- Programming (13)
- Tools (13)
- IoT (6)
- etc (21)
[Pentration Testing] (3)
[OS X] (4)
[ Security Trends ] (16)
[ Fixing Guideline ] (7)
My Way, My Life (34)
About Me (2)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

Total :
Today : Yesterday :