30
1 Red-Database-Security Härten des Oracle Application Server 9i Rel1, 9i Rel.2 und 10g Alexander Kornbrust 10-Nov-2004

Haerten des Oracle Application Server 9i Rel1, 9i Rel 2 und 10g · 2009. 5. 7. · Red-Database-SecurityRed-database-security, Alexander Kornbrust, 10-11-2004 1 Härten des Oracle

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

  • Red-database-security, Alexander Kornbrust, 10-11-2004 1Red-Database-Security

    Härten des Oracle ApplicationServer 9i Rel1, 9i Rel.2 und 10g

    Alexander Kornbrust10-Nov-2004

  • Red-database-security, Alexander Kornbrust, 10-11-2004 2Red-Database-Security

    1. Einführung

    2. Härten des Betriebssystems

    3. Verwendete Architektur

    4. Patching

    5. Infrastrukturdatenbank

    6. Apache

    7. Webcache

    8. Forms

    9. Reports

    Überblick:

  • Red-database-security, Alexander Kornbrust, 10-11-2004 3Red-Database-Security

    Warum den Application Server schützen?

    Weil...

    Sicherheit auf allen Ebenen einer Anwendung notwendig ist (OS, DB, iAS, Anwendung und Client)

    Ein gehärteter Application Server oftmals weniger Patches benötigt

    Dadurch höhere Verfügbarkeit und geringere Kosten entstehen

    Einführung

  • Red-database-security, Alexander Kornbrust, 10-11-2004 4Red-Database-Security

    Härten des Betriebssystems

    Aktuelle Betriebssystem-Patches einspielen

    Nicht benötigte bzw. unsichere Dienste deaktivieren (R*-Dienste, FTP, Telnet, …)

    Beispiele und Demoanwendungen löschen

    Nicht benötigte Benutzer und nicht benötigten Code entfernen

    Sichere Passworte für Betriebssystem-Benutzer wählen

    Niemals xhost+ verwenden

  • Red-database-security, Alexander Kornbrust, 10-11-2004 5Red-Database-Security

    Anwendungs-Architektur

    Die Installation des Application Servers sollte der Architektur der Anwendung angepasst werden

    Typische Fragen vor der Installation

    Infrastruktur-Datenbank Ja / Nein

    SSO Ja / Nein

    Upload von Dateien notwendig

    Verwendete Komponenten (Forms/Reports/Discoverer/…)

  • Red-database-security, Alexander Kornbrust, 10-11-2004 6Red-Database-Security

    Anwendungs-Architektur

    Einige Tipps

    Verzicht auf die Infrastruktur-Datenbank vereinfacht Handling, ist aber wegen des Verzichts auf SSO/Portal u.U. weniger sicher (Reports Server Secure Mode)

    Niemals den Upload von Dateien (z.B. via Webdav oder Webutil) auf den iAS erlauben, wenn Forms/Reports verwendet werden

    Minimale Anzahl an Komponenten installieren und verwenden

  • Red-database-security, Alexander Kornbrust, 10-11-2004 7Red-Database-Security

    Patching

    Korrektes Patchen des iAS ist die Grundlage eines sicheren Systems

    Details siehe Metalink-Notes 179240.1 [1.0.2.2.x], 215882.1 [9.0.x])

    Infrastruktur-Datenbank / OID

    iAS Infrastruktur

    iAS Home

    Jinitiator

    Webutil

    Security Patches Oracle

  • Red-database-security, Alexander Kornbrust, 10-11-2004 8Red-Database-Security

    Infrastrukturdatenbank

    Default Passworte ändern (Scott, ODS, …)

    TNS Listener sichern

    TNS_ADMIN_RESTRICTIONS und Listener Passwort setzen

    IP Restriction verwenden, wenn möglich

    Extproc entfernen

    PUBLIC-Rechte an mächtigen DB Objekten entziehen (utl_*, dbms_lob, …)

  • Red-database-security, Alexander Kornbrust, 10-11-2004 9Red-Database-Security

    Apache

    Nicht benötigte Module deaktivieren

    Nicht benötigte Apache-Direktivenentfernen

    Administrative URLs via URL-Rewrite schützen

    Log-Files verwenden und regelmäßig auf Probleme kontrollieren

    Apache-Banner entfernen

    Standard Error Seiten ersetzen

    Demo-Programme entfernen

  • Red-database-security, Alexander Kornbrust, 10-11-2004 10Red-Database-Security

    Apache – Config-Dateien bereinigen

    oracle_apache.conf Nicht benötigte Komponenten deaktivieren (z.B. oradav, xml, aq, …)

    httpd.conf Konfiguration absichern(server-status deaktivieren, UseWebcacheIP aktivieren, ServerSignature & ServerTokens modifizieren)

    mod_oc4j.conf Beispielprogramme deaktivieren(z.B. j2ee, repdemo, …)

  • Red-database-security, Alexander Kornbrust, 10-11-2004 11Red-Database-Security

    Webcache

    Einsatz von Webcache kann zu Problemen mit allow/deny Direktiven führen

    http://ias/server-status/ ist nicht über Apache direkt zugreifbar, aber über Webcache

    Setzen des Wertes UseWebCacheIp On in der httpd.conf löst das Problem

    SetHandler server-statusOrder deny,allowDeny from allAllow from localhost

  • Red-database-security, Alexander Kornbrust, 10-11-2004 12Red-Database-Security

    Forms

    Absichern von Oracle Forms

    SQL Injection verhindern

    TMP/TEMP/TMP_DIR in ein sicheres Verzeichnis umleiten, da Forms dort z.T. unverschlüsselte Tabellendaten ablegt(iAS Default: \tmp, lesbar für alle)

    Neuste Jinitiator-Version verwenden

  • Red-database-security, Alexander Kornbrust, 10-11-2004 13Red-Database-Security

    Forms & SQL Injection

    Enter-Query-Modus erlaubt die Modifikation von Forms-AbfragenDie speziellen Zeichen :, & und # erlauben es jedem Benutzer, die WHERE-Bedingung zu verändern

    Abhängig von der Implementierung innerhalb der Formsanwendung ist die Umgehung des Berechtigungskonzeptes möglich

    Transfer von sensiblen Daten ohne Verwendung der Formsmasken nach außen möglich (z.B. via utl_http)

  • Red-database-security, Alexander Kornbrust, 10-11-2004 14Red-Database-Security

    Forms & SQL Injection – Beispiel 1

    Enter-Query-Modus

  • Red-database-security, Alexander Kornbrust, 10-11-2004 15Red-Database-Security

    Forms & SQL Injection – Beispiel 2

    Enter-Query-Modus

  • Red-database-security, Alexander Kornbrust, 10-11-2004 16Red-Database-Security

    Forms & SQL Injection – Beispiel 3

    Senden des SYS-Hashkeys zum Webserver des Hackers

    Auszug aus dem Apache error_log des Hackers

    [Sun Oct 17] [error] [client 192.168.120.254] [ecid: 3093883128448,1] File does not exist: c:/oracle/orafr/apache/apache/htdocs/af8c688c9aabab74

  • Red-database-security, Alexander Kornbrust, 10-11-2004 17Red-Database-Security

    Forms & SQL Injection – Lösung 1

    Setzen der Umgebungsvariablen FORMSxx_RESTRICT_ENTER_QUERY=true

    (wobei 60 für Forms 6i und 90 für Forms9i/10g verwendet wird)

    Verhindert die Verwendung der Query/Where-Option

  • Red-database-security, Alexander Kornbrust, 10-11-2004 18Red-Database-Security

    Forms & SQL Injection – Lösung 2

    Query/Where via Pre-Query-Trigger deaktivieren (Metalink Doc.id: 163305.1)

    Metalink-Note ist jedoch unvollständig, da eine Überprüfung auf & und # fehlt.

    Pre-Query-Trigger

    :GLOBAL.pre := 'pq';IF (instr(:dname,':') > 0) OR (instr(:dname,'&') > 0) OR (instr(:dname,'#') > 0) then

    :dname := Null;end if;IF (instr(: deptno,':') > 0) OR (instr(:dname,'&') > 0) OR (instr(:dname,'#') > 0) then

    :deptno := Null;end if;

  • Red-database-security, Alexander Kornbrust, 10-11-2004 19Red-Database-Security

    Reports

    Absichern von Oracle Reports

    Verwendeter Reports Modus (mit/oder Portal)

    Absichern der cgicmd.dat

    Environment settings schützen

    Getobjid / showjobs schützen

    Schützen sensibler URLs mit URL-Rewrite

    Google Hacking

  • Red-database-security, Alexander Kornbrust, 10-11-2004 20Red-Database-Security

    Reports – Sensible URLs

    Reports-URLs mit sensiblem Inhalt

    http://ias/reports/rwservlet/showenv

    http://ias/reports/rwservlet/showmap

    http://ias/reports/rwservlet/showjobs

    http://ias/reports/rwservlet/getjobid7?server=myrep

    http://ias/reports/rwservlet/showenvhttp://ias/reports/rwservlet/showmaphttp://ias/reports/rwservlet/showjobshttp://ias/reports/rwservlet/getjobid7?server=myrephttp://ias/reports/rwservlet/getjobid7?server=myrep

  • Red-database-security, Alexander Kornbrust, 10-11-2004 21Red-Database-Security

    Reports – Sensible URL - showenv

  • Red-database-security, Alexander Kornbrust, 10-11-2004 22Red-Database-Security

    Reports - Sensible URL - showmap

  • Red-database-security, Alexander Kornbrust, 10-11-2004 23Red-Database-Security

    Reports - Sensible URL - showjobs

  • Red-database-security, Alexander Kornbrust, 10-11-2004 24Red-Database-Security

    Reports - Sensible URL - getjobid

  • Red-database-security, Alexander Kornbrust, 10-11-2004 25Red-Database-Security

    Reports – Schutz der sensiblen URLs

    Schützen der sensiblen URLs

    Setzen der UmgebungsvariablenREPORTSxx_CGINODIAG=No(Testen der Anwendung auf Seiteneffektexx= 60 für Forms 6i und 90 für 9i/10g)

    und/oder

    Blocken der URL mit URL-Rewrite

    RewriteEngine on

    RewriteRule ^/reports/rwservlet/showenv(.*)$ /forbidden.htm [R] [NV]

  • Red-database-security, Alexander Kornbrust, 10-11-2004 26Red-Database-Security

    Google Hacking – Beispiel 1

    Google-Suche nach verwundbaren Reports-Servern

  • Red-database-security, Alexander Kornbrust, 10-11-2004 27Red-Database-Security

    Google Hacking – Beispiel 2

    Environment zeigenhttp://server/reports/rwservlet/showenv

    cgicmd.dat anzeigenhttp://server/reports/rwservlet/showmap

    Jobs anzeigenhttp://server/reports/rwservlet/showjobs

    Sensible Inhalte anzeigen, falls der Default-Reportsserver gesetzt ist.

    http://server/reports/rwservlet/showenvhttp://server/reports/rwservlet/showmaphttp://server/reports/rwservlet/showjobs

  • Red-database-security, Alexander Kornbrust, 10-11-2004 28Red-Database-Security

    Google Hacking – Beispiel 3

    Paramform an einen bestehenden Report anhängen

    http://server/reports/rwservlet?business.rdf+2004+0+HTML+cache+paramform=yes

    Reportsserver generiert eine HTML-Parameterform-Seite, deren HTML-Source folgende Zeile enthält

    cgicmd.dat anzeigen klappt nun

    http://server/servlet/RWServlet/showmap?server=rep90_srvr2

    Falls kein Default-Server gesetzt ist, lässt sich dieser sehr einfach herausfinden

  • Red-database-security, Alexander Kornbrust, 10-11-2004 29Red-Database-Security

    Weiterführende Links

    Oracle Security Alertshttp://www.oracle.com/technology/deploy/security/alerts.htm

    Liste mit vielen Dokumenten zum Thema Oracle Security (DB, iAS & Entwicklung)http://www.petefinnigan.com/orasec.htm

    SANS Step-by-Step Guides http://www.sans.com

    http://www.oracle.com/technology/deploy/security/alerts.htmhttp://www.oracle.com/technology/deploy/security/alerts.htmhttp://www.petefinnigan.com/orasec.htmhttp://www.sans.com/

  • Red-database-security, Alexander Kornbrust, 10-11-2004 30Red-Database-Security

    Red-Database-Security GmbHBliesstraße 1666538 Neunkirchen

    Telefon: +49 (0)6821 – 95 17 637Fax: +49 (0)6821 – 91 27 354E-Mail: [email protected]

    Kontaktadresse:

    Überblick:EinführungHärten des BetriebssystemsAnwendungs-ArchitekturAnwendungs-ArchitekturPatchingInfrastrukturdatenbankApacheApache – Config-Dateien bereinigenWebcacheFormsForms & SQL InjectionForms & SQL Injection – Beispiel 1Forms & SQL Injection – Beispiel 2Forms & SQL Injection – Beispiel 3Forms & SQL Injection – Lösung 1Forms & SQL Injection – Lösung 2ReportsReports – Sensible URLsReports – Sensible URL - showenvReports - Sensible URL - showmapReports - Sensible URL - showjobsReports - Sensible URL - getjobidReports – Schutz der sensiblen URLsGoogle Hacking – Beispiel 1Google Hacking – Beispiel 2Google Hacking – Beispiel 3Weiterführende Links