인젝션 기법 중 에러 기반 인젝션은 쉽고 빠르기에 많은 분들이 알고 계시지만, 많은 분들이 MSSQL 에서만 가능한

 것으로 알고 있기도 합니다. 오라클에서의 에러 인젝션은 의외로(?) 잘 모르는 경우가 많습니다. 
(물론 알 사람들은 다 알지만..)

오라클에서도 마찬가지로 에러 인젝션 취약점이 존재하면 손쉽게 DB 정보를 취득할 수 있기에 오라클 기반의

웹애플리케이션 에서도 상당히 중요한 취약점이라 할 수 있습니다.

어쩃든! 오라클 에러 기반 인젝션에 대해 간단히 적어보겠습니다. 

기본적인 인젝션 개념을 알고 계신다는 전제 하에 설명은 간략히 하겠습니다.


# 예제 페이지 
 - list.jsp  :  id 값을 입력 받아 정보를 뿌려주는 페이지

# 예제 페이지 소스

- 소스를 보면 간단히 id 값을 입력 받아 "select * from users where ID=입력값" 으로 쿼리를 수행하는 것을 알 수 있습니다.


# 에러 발생 유도

- 소스에서 별다른 필터링을 하지 않기 때문에 ' 를 입력하면  쿼리문은 아래와 같이 입력되어 에러를 유발합니다.

  select * from users where ID=' 3 ' '  

 위에서와 같이 오라클 예외 에러 메시지(ORA-xx) 가 발생한다면 이 페이지에는 에러 기반 인젝션이 가능합니다.



# 인젝션 가능성 확인

위와 같이 입력하여 3 일때와 동일하게 결과가 출력된다면 확실하게 인젝션이 가능합니다.


# 에러 기반 인젝션에 이용할 패키지

에러기반 인젝션을 위해 에러 메시지를 뿌려줄 특별한 패키지를 사용합니다. 

위 말고도 몇가지 다른 패키지도 있습니다.

utl_inaddr.get_host_name() 은 해당 호스트를 질의할 수 없으면 에러 메시지로 해당 문자열을 출력합니다.



# 에러 메시지 확인


해당 패키지 안의 문자열이 표시됨을 알 수 있습니다. 

즉, 해당 () 안에 원하는 쿼리문을 실행시켜 쿼리 결과값이 보이도록 할 수 있다는 것을 확인 할 수 있습니다.


# 에러기반 인젝션 수행


 - 위와 같이 알수없는 "쿼리 결과값" 호스트 라는 형식으로 쿼리 결과값을 확인 할 수 있습니다 ^^


   지금까지 짧은 인젝션 팁이었습니다. 

+ Recent posts