English
◀◁ 뒤로
취약점ID 22172
위험도 40
포트 80, ...
프로토콜 TCP
분류 WWW
상세설명 해당 Oracle 9i 어플리케이션 서버는 OWA_UTIL PL/SQL 패키지를 통해 Stored Procedure들을 임의로 액세스(access)하도록 허용한다.
Oracle9i 어플리케이션 서버에는 PL/SQL(Procedural Language/Structured Query Language) 툴킷(Toolkit)의 일부인 OWA_UTIL 패키지가 설치되는 데, 이는 웹을 통해서 많은 Stored Procedure 들을 액세스(access)할 수 있도록 해 준다. 그러나, 디폴트 설정의 경우, 이 OWA_UTIL PL/SQL 패키지는 웹을 통해 Procedure 들을 액세스(access)하는 과정에서 어떠한 인증절차도 필요로 하지 않기 때문에 임의의 사용자들이 자유롭게 사용할 수 있다. 다음은 OWA_UTIL 패키지를 통해서 디폴트로 임의의 액세스(access)가 가능한 Procedure 들과 그에 따른 위험성에 대한 설명이다:

* OWA_UTIL.signature :
signature 의 경우는 단순히 돌아오는 메시지에 따라 OWA_UTIL 에 대한 액세스(access) 권한을 확인하기 위해 이용된다. 보통의 경우, http://oracle_server/pls/dadname/owa_util.signature URL 요청을 전달하는 데, 보호 메커니즘이 설정되어 있는 경우 이러한 보호를 우회하기 위해서 다음과 같이 스페이스(space), 탭(tab), 뉴 라인 문자(new line character) 등을 삽입한 URL을 요청하기도 한다.

http://oracle_server/pls/dadname/%20owa_util.signature
http://oracle_server/pls/dadname/%0aowa_util.signature
http://oracle_server/pls/dadname/%08owa_util.signature

* OWA_UTIL.showsource :
showsource는 "http://oracle_server/pls/dadname/owa_util.showsource?cname=books" 같은 URL 요청을 통해 특정 PL/SQL 어플리케이션의 소스 코드를 획득하기 위해 이용된다. 이 URL 요청에 대한 응답으로 book 패키지에 대한 소스 코드가 반환된다.

* OWA_UTIL.cellsprint :
cellsprint는 임의의 SELET SQL 질의(query)를 실행한다. 데이터베이스 링크 테이블인 sys.link는 다른 데이터베이스 서버에 대한 목록과 그에 대한 연결 정보(사용자 ID, Password 등등)를 포함하다. 공격자들은 다음과 같이 sys.link$ 에 대한 질의를 통해서 데이터베이스 서버가 다른 데이터베이스 서버를 검색하고 명시된 사용자 ID와 패스워드를 가지고 이 서버에 연결을 설정하도록 할 수 있다.

http://oracle_server/pls/dadname/owa_util.cellsprint?p_theQuery=select * from sys.dba_users@other.world

* OWA_UTIL.listprint :
list 는 cellsprint 와 같이 임의의 SQL 질의(query)를 실행할 수 있으나 단지 특정한 column 만을 반환한다.

* OWA_UTIL.show_query_columns :
show_query_columns 는 데이터베이스 테이블의 columns 이름 목록을 획득하기 위해 사용된다.
http://oracle_server/pls/dadname/owa_util.show_query_columns?ctable=sys.dba_users

액세스(access)되는 Procedure 들은 시스템 상의 중요한 정보들을 노출할 수 있기 때문에, 원격지 공격자들은 이를 통해서 PL/SQL 어플리케이션의 소스 코드나 신용정보(credential) 등을 획득할 수 있고 다른 데이터베이스 서버에 액세스하거나 액세스 가능한 데이터베이스 서버에게 SQL 질의(query)를 전달할 수 있다.

* 참고 사이트:
http://online.securityfocus.com/bid/4294
http://www.nextgenss.com/papers/hpoas.pdf

* 영향을 받는 플랫폼:
All(*nix, Windows) with Oracle9i Application Server 1.0.2.X
해결책 PL/SQL Procedure 들과 어플리케이션에 대한 액세스를 제한하거나 금지하여야 한다:

1. Oracle 홈 디렉토리 내에서 PL/SQL gateway 설정 파일인 /Apache/modplsql/cfg/wdbsvr.app 를 찾아서 연다.
2. 파일에 다음과 같은 룰(rule)을 추가한다.
exclusion_list = *(*, account*, sys*, dbms_*, owa.*, htp.*, htf.*
관련 URL CVE-2002-0560 (CVE)
관련 URL (SecurityFocus)
관련 URL (ISS)