Wenn man seine APEX Anwendung am ersten Tag im Internet frei verfügbar macht, wird man sich gleich über den großen Traffic auf dem Server freuen.
Nur, wenn man nachdenkt, fällt einem beim Betrachten der Logfiles schnell auf, dass die meisten Zugriffe Hackerangriffe sind.
Hier ein paar Auszüge aus unserem Apache Log-File
(1)
POST /wordpress/xmlrpc.php
POST /wp/xmlrpc.php
/blog/xmlrpc.php
/?XDEBUG_SESSION_START=phpstorm
/wp-login.php
/index.php?s=/Index/\\think\\app/invokefunction&function=call_user_func_array&vars[0]=md5&vars[1][]=Hello
/phpMyAdmin/scripts/setup.php
(2)
/oracle/f?p=SCHULUNG:1001::Oracle_ORDS_Installation_f%C3%BCr_APEX:::P1001_TIPPAUSWAHL:563'\"
/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php
/ords/f?p=SCHULUNG%3A1001%3A%3AOracle_ORDS_Installation_f%C3%BCr_APEX%3A%3A%3AP1001_TIPPAUSWAHL%3A563 400
/ords/f?p=SCHULUNG%3A1001%3A%3AOracle_ORDS_Installation_f%C3%BCr_APEX%3A%3A%3AP1001_TIPPAUSWAHL%3A563%27%20AnD%20sLeep%283%29%20ANd%20%271 400
/ords/f?p=SCHULUNG%3A1001%3A%3AOracle_ORDS_Installation_f%C3%BCr_APEX%3A%3A%3AP1001_TIPPAUSWAHL%3A563%27%26%26sLEEp%283%29%26%26%271 400
/ords/f?p=SCHULUNG%3A1001%3A%3AOracle_ORDS_Installation_f%C3%BCr_APEX%3A%3A%3AP1001_TIPPAUSWAHL%3A563%00%27%7C%7CSLeeP%283%29%26%26%271 400
/ords/f?p=SCHULUNG%3A1001%3A%3AOracle_ORDS_Installation_f%C3%BCr_APEX%3A%3A%3AP1001_TIPPAUSWAHL%3A563%27%20aND%20BeNChMaRK%282999999%2CMd5%28NoW%28%29%29%29%20AnD%20%271 400
/ords/f?p=SCHULUNG%3A1001%3A%3AOracle_ORDS_Installation_f%C3%BCr_APEX%3A%3A%3AP1001_TIPPAUSWAHL%3A563%27%26%26BeNChMaRK%282999999%2CmD5%28NOW%28%29%29%29%26%26%271 400
/ords/f?p=SCHULUNG%3A1001%3A%3AOracle_ORDS_Installation_f%C3%BCr_APEX%3A%3A%3AP1001_TIPPAUSWAHL%3A563%27%20AnD%20sLeep%283%29%20ANd%20%270%27%3D%270 400
/ords/f?p=SCHULUNG:1001::Oracle_ORDS_Installation_f%C3%BCr_APEX:::P1001_TIPPAUSWAHL:563%20and%201%3D1
/ords/f?p=SCHULUNG:1001::Dynamic_Actions_f%C3%BCr_Reportspalten:::P1001_TIPPAUSWAHL:256999999.1 union
/ords/f?p=SCHULUNG%3A61%3A17151203403405%3A%3ANO%3A%3A%3A
/ords/f?p=11000%3A30%3A8476665195031
(3)
/ords/f?p=SCHULUNG:1001::Oracle_ORDS_Installation_f%C3%BCr_APEX:::P1001_TIPPAUSWAHL:563%22%20or%20(1,2)=(select*from(select%20name_const(CHAR(111,108,111,108,111,115,104,101,114),1),name_const(CHAR(111,108,111,108,111,115,104,101,114),1))a)%20--%20%22x%22=%22x HTTP/1.1" 301 493 "-" "-"
(4)
/arx/license.txt
CONNECT ip.ws.126.net:443
Schmunzeln mussten wir schon, wie 90% der Angriffe ablaufen. Ein großer Teil sind versucht php Attacken (1), die bei einer reinen APEX-Installation ins Leere laufen.
Die Angriffsgruppe (2) versucht mit SQL-Injection einen Fuß in die (Datenbank-) Türe zu bekommen.
Beim Angriff (3) waren wir auch verwundert, was die Funktion name_const denn bei Oracle macht. Relativ schnell stellte sich heraus, das ist gar keine Oracle Funktion, sondern gehört zu einer MySQL Datenbank und läuft damit ins leere... :-)
Da sich die Angriffe sehr oft wiederholen (von anderen IP Adressen) gehen wir davon aus, dass es fertige Hacker-Kits gibt, die hier zum Einsatz kommen.
So was können wir tun gegen diese Angriffe?
1. Seine Hausaufgaben machen und alle Variablen/Items immer lieber einaml zu oft prüfen auf Länge, Datentyp und Logic.
2. Prüfsummen in der URL aktivieren
3. Apache/Nginx Logfiles regelmäßig auswerten
4. Apache mod_security installieren
5. Unseren APEX Security Kurs besuchen. Wir haben ihn um die Kapitel Apache und Nginx Security erweitert
Wir haben uns noch eine weitere Abwehrroutine überlegt, ein Shell Script mit Namen blockip.
Es hat die Aufruf-Parameter:
blockip <ip> [-h -d -l -apache -nginx]
-s <ip> [hours] Set IP on Blocked List [for x hours]
-d <ip>|[all] Drop [all] Blocked IP
-l Which IP are blocked
-l -history Which IP were blocked last
-l -apache Which IP would Blocked from Apache
-l -nginx Which IP would Blocked from nginx
-apache Block all Apache hacking IPs for 2 hours
-apache -auto Look for last 50 new Entries in Log (only Crontab)
-nginx Block all Nginx hacking IPs for 2 hours
<ip> in aaa.bbb.ccc.ddd for example 185.172.4.126
Es kann IP-Adressen blocken/entblocken manuell oder autmatisch, wenn es im Apache Logfile verdächtige Aktionen bemerkt. Bei uns läuft es via Crontab regelmäßig und sperrt die Hacker für 1 -x Stunden aus.
Alle unsere APEX Schulungteilnehmer erhalten das Shell-Script von uns kostenlos auf Anfrage.