====== Vulnerabilidad de escritura apache de Orfeo ====== ===== Descripción ===== Es una exploit dirigido exclusivamente a orfeo que coloca un javascript o algun ejecutable en la bodega.\\ \\ Estan explotando varias cosas ..(creo)\\ \\ - Directorios r/w por apache para salvar un archivo\\ - Ejecucion de un archivo php que han colocado .. qsql.php  o error.php  (ahora inclusive estan poniendo un archivo llamado espacio " " o asterisco "*" )\\ - Cambian los nombres en la tabla dependencia\\ - Y dejan un ejecutable para ser incluido cuando se listan las dependencia. Los navegadores dicen que son mineros de criptomonedas\\ \\ - Ademas de la vulnerabilidad en la libreria tcpdf/error.php que le permite botar una terminal.   (Nuestros orfeos ya no usan esta libreria)\\ ===== Identificación ===== Hemos encontrado i.js en /bodega  o en /bodega/tmp/i.js  o /bodega/1.txt o /bodega/" " o /bodega/"*"\\ \\ Las nuevas versiones .. parecen apoderarse de una sesion.\\ \\ Tambien estan ejecutando un proceso corriendo dede /tmp y /var/tmp llamado cron (para disimularlo) .. y es un minero .. correo como apache tambien y se come la maquina y pone el CPU al 100\\ \\ $> ps aux  | grep cron\\ /var/tmp/cron -o pool.webchain.network:3333 -u 0x31ebc1b180f3b9f510c585604f158f78fb272bfd -p x\\ \\ Vaya a [[egroupware/index.php?menuaction=wiki.wiki_ui.view&page=Vulnerabilidad+de+criptomonedas+de+Orfeo|Vulnerabilidad de criptomonedas de Orfeo]]\\ \\ En la bitacora el proceso de ataque es:\\ \\ 104.244.75.153 - - [18/Sep/2020:12:53:45 -0500] "GET /orfeo/tcpdf/qsql.php HTTP/1.1" 200 269 "-" "Mozilla/5.0 (Windows NT 10.0; rv:68.0) Gecko/20100101 Firefox/68.0"\\ 104.244.75.153 - - [18/Sep/2020:12:53:46 -0500] "GET /orfeo/estilos/orfeo.css HTTP/1.1" 200 7583 "http:%%//%%190.144.239.251/orfeo/tcpdf/qsql.php" "Mozilla/5.0 (Windows NT 10.0; rv:68.0) Gecko/20100101 Firefox/68.0"\\ 104.244.75.153 - - [18/Sep/2020:12:53:47 -0500] "GET /favicon.ico HTTP/1.1" 404 290 "-" "Mozilla/5.0 (Windows NT 10.0; rv:68.0) Gecko/20100101 Firefox/68.0"\\ 104.244.75.153 - - [18/Sep/2020:12:53:56 -0500] "GET /orfeo%%//%%iconos/flechaasc.gif HTTP/1.1" 200 402 "http:%%//%%190.144.239.251/orfeo/tcpdf/qsql.php" "Mozilla/5.0 (Windows NT 10.0; rv:68.0) Gecko/20100101 Firefox/68.0"\\ 104.244.75.153 - - [18/Sep/2020:12:53:54 -0500] "POST /orfeo/tcpdf/qsql.php HTTP/1.1" 200 1156958 "http:%%//%%190.144.239.251/orfeo/tcpdf/qsql.php" "Mozilla/5.0 (Windows NT 10.0; rv:68.0) Gecko/20100101 Firefox/68.0"\\ 104.244.75.153 - - [18/Sep/2020:12:54:02 -0500] "GET /orfeo%%//%%adodb/compfile.png HTTP/1.1" 200 4616 "http:%%//%%190.144.239.251/orfeo/tcpdf/qsql.php" "Mozilla/5.0 (Windows NT 10.0; rv:68.0) Gecko/20100101 Firefox/68.0"\\ 104.244.75.153 - - [18/Sep/2020:12:54:02 -0500] "GET /orfeo%%//%%adodb/spreadsheet.png HTTP/1.1" 200 7613 "http:%%//%%190.144.239.251/orfeo/tcpdf/qsql.php" "Mozilla/5.0 (Windows NT 10.0; rv:68.0) Gecko/20100101 Firefox/68.0"\\ 104.244.75.153 - - [18/Sep/2020:12:54:31 -0500] "POST /orfeo/tcpdf/qsql.php HTTP/1.1" 200 445 "http:%%//%%190.144.239.251/orfeo/tcpdf/qsql.php" "Mozilla/5.0 (Windows NT 10.0; rv:68.0) Gecko/20100101 Firefox/68.0"\\ 104.244.75.153 - - [18/Sep/2020:12:54:38 -0500] "POST /orfeo/tcpdf/qsql.php HTTP/1.1" 200 1156959 "http:%%//%%190.144.239.251/orfeo/tcpdf/qsql.php" "Mozilla/5.0 (Windows NT 10.0; rv:68.0) Gecko/20100101 Firefox/68.0"\\ 104.244.75.153 - - [18/Sep/2020:12:54:55 -0500] "POST /orfeo/tcpdf/qsql.php HTTP/1.1" 200 52870 "http:%%//%%190.144.239.251/orfeo/tcpdf/qsql.php" "Mozilla/5.0 (Windows NT 10.0; rv:68.0) Gecko/20100101 Firefox/68.0"\\ 104.244.75.153 - - [18/Sep/2020:12:55:12 -0500] "GET /orfeo/**bodega/i.js** HTTP/1.1" 404 296 "-" "Mozilla/5.0 (Windows NT 10.0; rv:68.0) Gecko/20100101 Firefox/68.0"\\ \\ Pero en el error.log .. esta encuentra uno intentos de acceso a muchos archivos\\ \\ [Thu Sep 17 15:16:46.191612 2020] [:error] [pid 6372] [client 185.220.100.252:19070] PHP Notice:  Undefined variable: isql in /bodega/bodega/qsql.php on line 13\\ [Thu Sep 17 15:16:55.585106 2020] [:error] [pid 1087] [client 185.220.100.252:15272] PHP Warning:  include:q_once(..%%//%%include/db/ConnectionHandler.php): failed to open stream: No such file or directory in /bodega/bodega/qsql.php on line 23, referer: https:%%//%%52.23.220.110/orfeo/bodega/qsql.php\\ [Thu Sep 17 15:16:55.585154 2020] [:error] [pid 1087] [client 185.220.100.252:15272] PHP Warning:  include_once(): Failed opening '..%%//%%include/db/ConnectionHandler.php' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /bodega/bodega/qsql.php on line 23, referer: https:%%//%%52.23.220.110/orfeo/bodega/qsql.php\\ [Thu Sep 17 15:16:55.585172 2020] [:error] [pid 1087] [client 185.220.100.252:15272] PHP Fatal error:  Class 'ConnectionHandler' not found in /bodega/bodega/qsql.php on line 24, referer: https:%%//%%52.23.220.110/orfeo/bodega/qsql.php\\ [Thu Sep 17 15:17:07.235946 2020] [:error] [pid 16637] [client 185.220.100.252:17068] PHP Warning:  include_once(..%%//%%include/db/ConnectionHandler.php): failed to open stream: No such file or directory in /bodega/bodega/qsql.php on line 23, referer: https:%%//%%52.23.220.110/orfeo/bodega/qsql.php\\ [Thu Sep 17 15:17:07.235992 2020] [:error] [pid 16637] [client 185.220.100.252:17068] PHP Warning:  include_once(): Failed opening '..%%//%%include/db/ConnectionHandler.php' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /bodega/bodega/qsql.php on line 23, referer: https:%%//%%52.23.220.110/orfeo/bodega/qsql.php\\ [Thu Sep 17 15:17:07.236010 2020] [:error] [pid 16637] [client 185.220.100.252:17068] PHP Fatal error:  Class 'ConnectionHandler' not found in /bodega/bodega/qsql.php on line 24, referer: https:%%//%%52.23.220.110/orfeo/bodega/qsql.php\\ \\ \\ \\ ===== Victimas ===== Hasta ahora todas las victimas han sido sistemas corriendo\\ \\ - Todos los Orfeos  de 3.8 a 6\\ - Sobre PHP 5.4 y 7.3\\ - Pobres permisos sobre los directorios.\\ - Sin las restricciones del orfeo.conf de -Indexes\\ ===== Mitigacion ===== ==== 1. Configuracion de apache ==== Aun cuando aun no identificamos exactamente el proceso de ingreso, Restringir el acceso a la bodega y a la ejecucion de archivos alla ( y todo directorio lectura escritura de apache)\\ \\ \\     Options FollowSymLinks MultiViews\\     Options -Indexes\\     AllowOverride None\\     Order allow,deny\\     allow from all\\ \\ \\ \\     Options FollowSymLinks MultiViews\\     Options -Indexes\\     AllowOverride None\\     Order allow,deny\\     allow from all\\     \\             Order Deny,Allow\\             Deny from All\\     \\     php_admin_value engine Off\\ \\ \\ \\     Options FollowSymLinks MultiViews\\     Options -Indexes\\     AllowOverride None\\     Order allow,deny\\     allow from all\\     \\             Order Deny,Allow\\             Deny from All\\     \\     php_admin_value engine Off\\ \\ \\ \\     Options FollowSymLinks MultiViews\\     Options -Indexes\\     AllowOverride None\\     Order allow,deny\\     allow from all\\     \\             Order Deny,Allow\\             Deny from All\\     \\     php_admin_value engine Off\\ \\ \\ \\ $$$ OJO asi tenga la bodega en otro lado, apache accede a esta como si fuera /var/www/html/*/bodega\\ $$$ Si pone otro directorio la restriccion no funciona.\\ ====   2.  Asegurese que el directorio de orfeo no tiene permisos innecesarios ==== \\ A. El directorio de orfeo no puede pertenecer a apache\\ \\ $>  chown -R admin:admin  directorio_de_orfeo\\ \\ B. La bodega que ya la protegimos con le reporte pasado, pero nos faltan dos librerias que escriben temporales\\ \\ B.1 Adodb:  En el config.php en las ultimas lineas debe tener el temporal apuntando a la bodega\\ \\ $ADODB_CACHE_DIR="$DIR_RAIZ/bodega/tmp";\\ \\ B.2 tcpdf:  Debe mover el cache a ese directorio a la bodega\\ \\ $> cd directorio_de_orfeo/include/tcpdf\\ $> mv cache directorio_de_orfeo/bodega\\ $> ln -s directorio_de_orfeo/bodega/cache\\ \\ C. Si usa quixplorer, las plantillas tambien pueden poner problema\\ \\ $> cd directorio_de_orfeo/quixplorer\\ $> mv orfeo directorio_de_orfeo/bodega/quixplorer\\ $> ln -s directorio_de_orfeo/bodega/quixplorer orfeo\\ \\ D. Quitar todos los permisos de escritura y dejar todo Read/Only\\ \\ $>  find directorio_de_orfeo -type d -exec chmod 555 {} \\;\\ $>  find directorio_de_orfeo -type f -exec chmod 444 {} \\;\\ \\  E.  Corrija los permisos de la bodega para que pueda seguir escribiendo en ella.\\ \\ $>  chown -R root:root  directorio_de_orfeo\\ $>  find directorio_de_orfeo/bodega -type d -exec chmod 755 {} \\;\\ $>  find directorio_de_orfeo/bodega -type f -exec chmod 644 {} \\;\\ ==== 3. La vulnerabilidad de tcpdf ==== \\ Hay una vulnerabilidad que explotan en el tcpdf para ejecutar comandos del sistema sin como root .. QUE LOCO\\ \\ 51.178.83.144 - - [23/Nov/2020:10:10:34 -0500] "POST /orfeo/tcpdf/error.php?x=terminal&xa=terminals-curdir&cmd=mv%20/var/www/html/orfeo/png/col.jpg%20/var/www/html/orfeo/png/col.php HTTP/1.1" 200 27\\ \\ Entonces .. voy a comentar en el codigo de error.php todo lo necesario.\\ \\ - Linea 920 o cerca .. comente la opcion en el menu\\ - Linea 2161 o cerca .. donde ejecuta la opcione "terminal"  .. pues deje "terminl" para que no reconozca la opcion\\ \\ Esperamos sirva lo suficiente\\ \\ === 4. Fail2ban === Deberia poner un fail2ban para bloquear la busqueda de permisos .. del tipo\\ \\ Trying to get property of non-object  y bloquear\\ ===== Problemas ===== ==== 1. Si el instale_mrtg.sh no le funciona ==== - ===== Referencias ===== - FIN ---- __**Advertencia**__ Este documento es privado y es de u so exclusivo de sus autores y de SKINA TECH. Cualquier uso sin una autorización escrita es contra la ley de derechos de autor y de propiedad intelectual, y será motivo de una acción legal. ----   ============================================================== 15-Marzo-2006 J.E.Gomez v1.0 Primera version