SlideShare una empresa de Scribd logo
1 de 40
Descargar para leer sin conexión
NoSQL Security
    José Ramón Palanco
Agenda
✦   Introducción NoSQL
     ✦   NoSQL vs RDBMS
     ✦   Arquitectura NoSQL
     ✦   Implementaciones de NoSQL
✦   Vectores de ataque
     ✦   Injections
     ✦   Key Bruteforce
     ✦   HTTP Protocol Based Attacks en listeners
     ✦   Cassandra security y Thrift security
     ✦   Denial of Service (connection pollution, evil queries)
Introducción
  NOSQL
¿Qué es NoSQL?

✦   Por lo general, no requieren
    de un esquema de la tabla
    fija ni utiliza join

✦   Todas las soluciones de
    NoSQL no implementan
    una o más de las
    propiedades ACID
Teorema de CAP
✦   Propiedades: consistencia,
    disponibilidad (availability) y
    particiones

✦   Al menos son necesarias 2

✦   Para escalar es necesario
    particiones

✦   En la mayoría de los casos
    primará disponibilidad sobre
    consistencia
Arquitectura NoSQL
  RDBMS                                   NoSQL
     Cliente                                        Cliente




Servidor HTTP                        Servidor HTTP

   SQL                       REST, JSON, XML, ...




    Connector         BBDD                     Connector                   BBDD

         ODBC, ADO, JDBC                                  Binario, HTTP, ...
NoSQL vs RDBMS
✦   Las RDBMS modernas muestran pobre
    desempeño y escalabilidad en aplicaciones que
    hacen un uso intensivo de los datos
     ✦   Cloud Computing (SaaS)
     ✦   Redes sociales
✦   Para consultas complejas es inviable utilizar
    algo diferente a RDBMS
Ejemplos de entornos
✦   En muchos entornos es necesario distribuir las
    escrituras en clusters, MapReduce, ..
     ✦   Facebook necesita almacenar 135 mil
         millones de mensajes cada mes
     ✦   Twitter almacena 7 TB diarios (duplica
         varias veces al año)
Desventajas NoSQL

✦   OLTP
✦   SQL
✦   Ad-Hoc queries
✦   Relaciones complejas
Arquitecturas NoSQL
✦   Almacen de documentos
✦   Grafos
✦   Clave/Valor y Tupla
✦   Multivalor
✦   Objetos
✦   Tabular
Almacén de documentos
✦   CouchDB:

✦   MongoDB

✦   Terrastore

✦   ThruDB

✦   OrientDB

✦   RavenDB
Grafos
✦   Neo4J

✦   Sones

✦   InfoGrid

✦   HypergraphDB

✦   AllegroGraph

✦   BigData
Clave/Valor y Tupla
✦   Redis

✦   Riak

✦   Tokio Cabinet

✦   MemcacheDB

✦   Membase

✦   Azure
Multivalor


✦   U2
✦   OpenInsight
✦   OpenQM
Objetos
✦   db4o          ✦   Objetivity

✦   Versant       ✦   NEO
MongoDB

✦   Protocolo: Binario (BSON)

✦   API: varios lenguajes

✦   Query: JavaScript/JSON

✦   Lenguaje: C++
•   Schema-Free (JSON)
                              Features
                         CouchDB
    •   Document Oriented,
        Not Relational

    • Highly Concurrent
✦    Protocolo: REST
    • RESTful HTTP API

✦    API: JSON
    • JavaScript-Powered

✦     Map/Reduce
     Query: MapReduce (JS)

✦ •     Lenguaje: Erlang
         N-Master Replication

    •   Robust Storage
{"couchdb":"Welcome","version":"0.11.0"}
$ telnet 172.16.163.129 5984
Trying 172.16.163.129...
Connected to 172.16.163.129.
Escape character is '^]'.
GET /rooted/ HTTP/1.1
Host: localhost

HTTP/1.1 200 OK
Server: CouchDB/0.11.0 (Erlang OTP/R14B)
Date: Sat, 19 Feb 2011 05:20:28 GMT
Content-Type: text/plain;charset=utf-8
Content-Length: 188
Cache-Control: must-revalidate

{"db_name":"rooted","doc_count":1,"doc_del_count":0,"update_seq":1,"purge_seq":
0,"compact_running":false,"disk_size":
4182,"instance_start_time":"1298092462502662","disk_format_version":5}
{"couchdb":"Welcome","version":"0.11.0"}
$ telnet 172.16.163.129 5984
Trying 172.16.163.129...
Connected to 172.16.163.129.
Escape character is '^]'.
GET /rooted/f34aae022f67a23ac56dba5b4e000cf2 HTTP/1.1
Host: localhost

HTTP/1.1 200 OK
Server: CouchDB/0.11.0 (Erlang OTP/R14B)
Etag: "1-2512702fff02fe841adecde4a22c62b5"
Date: Sat, 19 Feb 2011 05:20:47 GMT
Content-Type: text/plain;charset=utf-8
Content-Length: 155
Cache-Control: must-revalidate

{"_id":"f34aae022f67a23ac56dba5b4e000cf2","_rev":"1-2512702fff02fe841adecde4a2
2c62b5","Nombre":"Jose","DNI":"9393948K","telefono":999999999}
Connection closed by foreign host.
Redis

✦   Protocolo: Telnet plano

✦   API: Varios lenguajes

✦   Query: Comandos

✦   Lenguaje: C/C++
Cassandra

✦   Protocolo: Binario (Thrift)

✦   API: Thrift

✦   Query: Columna/rangos

✦   Lenguaje: Java
Cassandra

✦   Columna (tuple/triplet)
✦   Supercolumna (compuesto por columnas)
✦   Familia de Columna (contiene supercolumnas)
✦   Keyspace (alberga familias de columnas)
Cassandra

<Keyspace Name="BloggyAppy">
      <!-- CF definitions -->
      <ColumnFamily CompareWith="BytesType" Name="Authors"/>
      <ColumnFamily CompareWith="BytesType" Name="BlogEntries"/>
      <ColumnFamily CompareWith="TimeUUIDType" Name="TaggedPosts"/>
      <ColumnFamily CompareWith="TimeUUIDType" Name="Comments"
          CompareSubcolumnsWith="BytesType" ColumnType="Super"/>
  </Keyspace>




                     storage-conf.xml
Vectores de ataque
Introducción
✦   Diversos conceptos de
    bases de datos

✦   Diversas implementaciones

✦   Por lo tanto los vectores de
    ataque son muy específicos
    y dependerán de cada
    implementación
HTTP Based Attacks
✦   ¿Quien usa HTTP?

     ✦   CouchDB

     ✦   HBASE

     ✦   Riak

✦   ¿Como localizar
    vulnerabilidades?

     ✦   fuzzing: hzzp
Explotación de listeners
✦   Al funcionar sobre   $ telnet server.com 80
    HTTP, se pueden      Trying X.X.X.X...
    utilizar proxies     Connected to server.com.
    caché mal            Escape character is '^]'
    configurados para     GET /_all_dbs
    acceder a ellos      Host: 192.168.2.18
JSON Injection
   De la misma manera que en se
 escapa el SQL, cuando trabajamos
    con MongoDB ó CouchDB,
       debemos hacerlo igual


db.foo.find( { $or : [ { a : 1 } , { b : 2 } ] } )




db.foo.find( { $or : [ { a : 1 } , { b : 2 },
{ c : /.*/ } ] } )
Array Injection
                                                              <?
                                                              $collection->find(array(
                  MongoDB + PHP                                   "username" => $_GET
                                                              ['username'],
                                                                  "passwd" => $_GET
✦   En PHP es posible que una variable sea un                 ['passwd']
    array simplemente añadiendo corchetes                     ));

                                                              ?>
✦   Si la passwd de admin Not Equal , podremos
    acceder
                                                       /login.php?username=admin&passwd[$ne]=1
✦   Además de $ne, podremos injectar:
                                                          <?
     ✦   $or, $exists, $nin, $in, $lt, ... (lógicos)      $collection->find(array(
                                                              "username" => "admin",
                                                              "passwd" => array("$ne" => 1)
     ✦   &var[‘$regex’]=/privileged/i (regex)             ));
                                                          ?>
View Injection
✦   CouchDB usa SpiderMonkey como motor de scripting
✦   Los js se cargan como views


$ ldd /usr/lib/couchdb/bin/couchjs
	

 libcurl.so.4 => /usr/lib/libcurl.so.4 (0x00007f7124325000)
	

 libmozjs.so.2d => /usr/lib/libmozjs.so.2d (0x00007f7124063000)
    ...
View Injection

✦   Hay vistas predefinidas y
    temporales
     ✦   Para hacer MapReduce
     ✦   Obtener datos arbitarios,
         modificar valores para
         alterar el flujo de
         ejecución
REST INJECTION
<?
$dbname = $_GET["db"];
$doc_id = $_GET["d_id"];
$resp = $couch->send("GET", "/" . $dbname ."/" . $doc_id);
?>
          ✦   Cross Database:
              ✦   /?db=_all_dbs
              ✦   /?db=usuarios
CouchDB info

✦   http://172.16.163.129:5984/_config
✦   http://172.16.163.129:5984/_all_dbs
✦   http://172.16.163.129:5984/_stats
✦   http://172.16.163.129:5984/_utils
CouchDB cmd exec.
GQL Injection

✦   Se puede a llegar inyectar GQL, pero en un
    entorno bastante controlado
✦   No existe el operador negación “!”
✦   El set de comandos GQL es muy limitado
Key Bruteforce
✦   Al no existir esquemas, no tenemos
    porque averiguarlo

✦   Los id son de gran tamaño, pero no
    se generan de forma aleatoria:

    e479f720ff9a05fb2f441fef97000c87

    e479f720ff9a05fb2f441fef97000b61
Cassandra Security
                         <?
                              ...
                              $columnParent = new cassandra_ColumnParent();
                              $columnParent->super_column = NULL;

                              if(isset($_GET[‘CF’]))
                              $columnParent->column_family = $_GET[‘CF’].“_myfam”;

✦   Si podemos                $sliceRange = new cassandra_SliceRange();
    modificar el nombre        $sliceRange->start = "";
                              $sliceRange->finish = "";

    de una familia,           $predicate = new cassandra_SlicePredicate();
                              list() = $predicate->column_names;

    podremos obtener          $predicate->slice_range = $sliceRange;

                              $consistency_level = cassandra_ConsistencyLevel::ONE;
    elementos de otra      $keyUserId = 1;
    familia                $result = $client->get_slice($keyspace, $keyUserId,
                         $columnParent, $predicate, $consistency_level);


                              print_r($result);
                              ...

                         ?>
Denial of Service
✦   Connection polution

        ✦   Couchdb-> implementación
            interface = restfull

✦   Con GQL, es posible generar DoS al
    crear consultas maliciosas que
    consuman mucha CPU y se de de baja
    de GAE ó que se facture por esa CPU
    extra
✦   q
Preguntas
Preguntas

Más contenido relacionado

La actualidad más candente

Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]
Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]
Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]RootedCON
 
Javier Saez - Una panorámica sobre la seguridad en entornos web [rootedvlc2]
Javier Saez - Una panorámica sobre la seguridad en entornos web [rootedvlc2]Javier Saez - Una panorámica sobre la seguridad en entornos web [rootedvlc2]
Javier Saez - Una panorámica sobre la seguridad en entornos web [rootedvlc2]RootedCON
 
Gabriel Gonzalez - Man-In-Remote: PKCS11 for fun and non-profit [RootedCON 2011]
Gabriel Gonzalez - Man-In-Remote: PKCS11 for fun and non-profit [RootedCON 2011]Gabriel Gonzalez - Man-In-Remote: PKCS11 for fun and non-profit [RootedCON 2011]
Gabriel Gonzalez - Man-In-Remote: PKCS11 for fun and non-profit [RootedCON 2011]RootedCON
 
Introducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRIntroducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRJuan Belón Pérez
 
Pablo González - Jugando a lo Super Mario entre túneles y máquinas [rooted2018]
Pablo González - Jugando a lo Super Mario entre túneles y máquinas [rooted2018]Pablo González - Jugando a lo Super Mario entre túneles y máquinas [rooted2018]
Pablo González - Jugando a lo Super Mario entre túneles y máquinas [rooted2018]RootedCON
 
Abel Valero - VM + VFS = The Wooden Horse [rooted2018]
Abel Valero - VM + VFS = The Wooden Horse [rooted2018]Abel Valero - VM + VFS = The Wooden Horse [rooted2018]
Abel Valero - VM + VFS = The Wooden Horse [rooted2018]RootedCON
 
David López Paz - Global Warfare [RootedCON 2011]
David López Paz - Global Warfare [RootedCON 2011]David López Paz - Global Warfare [RootedCON 2011]
David López Paz - Global Warfare [RootedCON 2011]RootedCON
 
Informe minishell
Informe minishellInforme minishell
Informe minishellAlex Pin
 
Elias Grande - Dagda [rootedvlc4]
Elias Grande - Dagda [rootedvlc4]Elias Grande - Dagda [rootedvlc4]
Elias Grande - Dagda [rootedvlc4]RootedCON
 
PHPVigo #19 - Lightning variables de entorno
PHPVigo #19 - Lightning variables de entornoPHPVigo #19 - Lightning variables de entorno
PHPVigo #19 - Lightning variables de entornoRolando Caldas
 
Linux basico-6.PDF
Linux basico-6.PDFLinux basico-6.PDF
Linux basico-6.PDFULEAM
 

La actualidad más candente (19)

Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]
Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]
Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]
 
Introducción a Groovy
Introducción a GroovyIntroducción a Groovy
Introducción a Groovy
 
Javier Saez - Una panorámica sobre la seguridad en entornos web [rootedvlc2]
Javier Saez - Una panorámica sobre la seguridad en entornos web [rootedvlc2]Javier Saez - Una panorámica sobre la seguridad en entornos web [rootedvlc2]
Javier Saez - Una panorámica sobre la seguridad en entornos web [rootedvlc2]
 
Gabriel Gonzalez - Man-In-Remote: PKCS11 for fun and non-profit [RootedCON 2011]
Gabriel Gonzalez - Man-In-Remote: PKCS11 for fun and non-profit [RootedCON 2011]Gabriel Gonzalez - Man-In-Remote: PKCS11 for fun and non-profit [RootedCON 2011]
Gabriel Gonzalez - Man-In-Remote: PKCS11 for fun and non-profit [RootedCON 2011]
 
Introducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRIntroducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGR
 
Grails
GrailsGrails
Grails
 
3 curso php
3 curso php3 curso php
3 curso php
 
Pablo González - Jugando a lo Super Mario entre túneles y máquinas [rooted2018]
Pablo González - Jugando a lo Super Mario entre túneles y máquinas [rooted2018]Pablo González - Jugando a lo Super Mario entre túneles y máquinas [rooted2018]
Pablo González - Jugando a lo Super Mario entre túneles y máquinas [rooted2018]
 
Groovy
GroovyGroovy
Groovy
 
Abel Valero - VM + VFS = The Wooden Horse [rooted2018]
Abel Valero - VM + VFS = The Wooden Horse [rooted2018]Abel Valero - VM + VFS = The Wooden Horse [rooted2018]
Abel Valero - VM + VFS = The Wooden Horse [rooted2018]
 
Practicas programacion 1 10
Practicas programacion 1 10Practicas programacion 1 10
Practicas programacion 1 10
 
David López Paz - Global Warfare [RootedCON 2011]
David López Paz - Global Warfare [RootedCON 2011]David López Paz - Global Warfare [RootedCON 2011]
David López Paz - Global Warfare [RootedCON 2011]
 
NASL
NASLNASL
NASL
 
NASL
NASLNASL
NASL
 
Semana 6 Módulos en Python Entrega 2
Semana 6   Módulos en Python Entrega 2Semana 6   Módulos en Python Entrega 2
Semana 6 Módulos en Python Entrega 2
 
Informe minishell
Informe minishellInforme minishell
Informe minishell
 
Elias Grande - Dagda [rootedvlc4]
Elias Grande - Dagda [rootedvlc4]Elias Grande - Dagda [rootedvlc4]
Elias Grande - Dagda [rootedvlc4]
 
PHPVigo #19 - Lightning variables de entorno
PHPVigo #19 - Lightning variables de entornoPHPVigo #19 - Lightning variables de entorno
PHPVigo #19 - Lightning variables de entorno
 
Linux basico-6.PDF
Linux basico-6.PDFLinux basico-6.PDF
Linux basico-6.PDF
 

Destacado

Rubén Santamarta - SCADA Trojans: Attacking the Grid [Rooted CON 2011]
Rubén Santamarta - SCADA Trojans: Attacking the Grid [Rooted CON 2011]Rubén Santamarta - SCADA Trojans: Attacking the Grid [Rooted CON 2011]
Rubén Santamarta - SCADA Trojans: Attacking the Grid [Rooted CON 2011]RootedCON
 
David Pérez + José Picó - Un ataque práctico contra comunicaciones móviles [R...
David Pérez + José Picó - Un ataque práctico contra comunicaciones móviles [R...David Pérez + José Picó - Un ataque práctico contra comunicaciones móviles [R...
David Pérez + José Picó - Un ataque práctico contra comunicaciones móviles [R...RootedCON
 
Marisol Salanova - Seguridad informática y cibersexo [RootedCON 2011]
Marisol Salanova - Seguridad informática y cibersexo [RootedCON 2011]Marisol Salanova - Seguridad informática y cibersexo [RootedCON 2011]
Marisol Salanova - Seguridad informática y cibersexo [RootedCON 2011]RootedCON
 
Gianluca D'Antonio - La Gestión de la Seguridad de la Información ante las nu...
Gianluca D'Antonio - La Gestión de la Seguridad de la Información ante las nu...Gianluca D'Antonio - La Gestión de la Seguridad de la Información ante las nu...
Gianluca D'Antonio - La Gestión de la Seguridad de la Información ante las nu...RootedCON
 
{RootedPanel] Grupo de Hackers Históricos: Apòstols [RootedCON 2010]
{RootedPanel] Grupo de Hackers Históricos: Apòstols [RootedCON 2010]{RootedPanel] Grupo de Hackers Históricos: Apòstols [RootedCON 2010]
{RootedPanel] Grupo de Hackers Históricos: Apòstols [RootedCON 2010]RootedCON
 
Alejandro Martín + Chema Alonso - Pulveriza tus publicaciones con Dust [Roote...
Alejandro Martín + Chema Alonso - Pulveriza tus publicaciones con Dust [Roote...Alejandro Martín + Chema Alonso - Pulveriza tus publicaciones con Dust [Roote...
Alejandro Martín + Chema Alonso - Pulveriza tus publicaciones con Dust [Roote...RootedCON
 
Antonio Ramos - La asimetría en el mercado de la seguridad [RootedCON 2011]
Antonio Ramos - La asimetría en el mercado de la seguridad [RootedCON 2011]Antonio Ramos - La asimetría en el mercado de la seguridad [RootedCON 2011]
Antonio Ramos - La asimetría en el mercado de la seguridad [RootedCON 2011]RootedCON
 
Joxean Koret - Database Security Paradise [Rooted CON 2011]
Joxean Koret - Database Security Paradise [Rooted CON 2011]Joxean Koret - Database Security Paradise [Rooted CON 2011]
Joxean Koret - Database Security Paradise [Rooted CON 2011]RootedCON
 
Raúl Siles - Browser Exploitation for Fun and Profit Revolutions [RootedCON 2...
Raúl Siles - Browser Exploitation for Fun and Profit Revolutions [RootedCON 2...Raúl Siles - Browser Exploitation for Fun and Profit Revolutions [RootedCON 2...
Raúl Siles - Browser Exploitation for Fun and Profit Revolutions [RootedCON 2...RootedCON
 
Blueliv - Information Tracking with Optos [Rooted CON 2011]
Blueliv - Information Tracking with Optos [Rooted CON 2011]Blueliv - Information Tracking with Optos [Rooted CON 2011]
Blueliv - Information Tracking with Optos [Rooted CON 2011]RootedCON
 
Francisco Jesús Gómez + Carlos Juan Diaz - Cloud Malware Distribution: DNS wi...
Francisco Jesús Gómez + Carlos Juan Diaz - Cloud Malware Distribution: DNS wi...Francisco Jesús Gómez + Carlos Juan Diaz - Cloud Malware Distribution: DNS wi...
Francisco Jesús Gómez + Carlos Juan Diaz - Cloud Malware Distribution: DNS wi...RootedCON
 
Vins Villaplana - Seguridad en capa de enlace [RootedCON 2011]
Vins Villaplana - Seguridad en capa de enlace [RootedCON 2011]Vins Villaplana - Seguridad en capa de enlace [RootedCON 2011]
Vins Villaplana - Seguridad en capa de enlace [RootedCON 2011]RootedCON
 
Sergi Álvarez + Roi Martín - radare2: From forensics to bindiffing [RootedCON...
Sergi Álvarez + Roi Martín - radare2: From forensics to bindiffing [RootedCON...Sergi Álvarez + Roi Martín - radare2: From forensics to bindiffing [RootedCON...
Sergi Álvarez + Roi Martín - radare2: From forensics to bindiffing [RootedCON...RootedCON
 
José Miguel Esparza - Obfuscation and (non-)detection of malicious PDF files ...
José Miguel Esparza - Obfuscation and (non-)detection of malicious PDF files ...José Miguel Esparza - Obfuscation and (non-)detection of malicious PDF files ...
José Miguel Esparza - Obfuscation and (non-)detection of malicious PDF files ...RootedCON
 
Jaime Blasco & Pablo Rincón - Lost in translation: WTF is happening inside m...
Jaime Blasco & Pablo Rincón -  Lost in translation: WTF is happening inside m...Jaime Blasco & Pablo Rincón -  Lost in translation: WTF is happening inside m...
Jaime Blasco & Pablo Rincón - Lost in translation: WTF is happening inside m...RootedCON
 
Hernan Ochoa - WCE Internals [RootedCON 2011]
Hernan Ochoa - WCE Internals [RootedCON 2011]Hernan Ochoa - WCE Internals [RootedCON 2011]
Hernan Ochoa - WCE Internals [RootedCON 2011]RootedCON
 
Eloi Sanfelix - Hardware security: Side Channel Attacks [RootedCON 2011]
Eloi Sanfelix - Hardware security: Side Channel Attacks [RootedCON 2011]Eloi Sanfelix - Hardware security: Side Channel Attacks [RootedCON 2011]
Eloi Sanfelix - Hardware security: Side Channel Attacks [RootedCON 2011]RootedCON
 
Alejandro Ramos - Know your ******: 4dv4nc3d P@55w0rd$ (r4c|&lt;1ng [RootedCO...
Alejandro Ramos - Know your ******: 4dv4nc3d P@55w0rd$ (r4c|&lt;1ng [RootedCO...Alejandro Ramos - Know your ******: 4dv4nc3d P@55w0rd$ (r4c|&lt;1ng [RootedCO...
Alejandro Ramos - Know your ******: 4dv4nc3d P@55w0rd$ (r4c|&lt;1ng [RootedCO...RootedCON
 

Destacado (18)

Rubén Santamarta - SCADA Trojans: Attacking the Grid [Rooted CON 2011]
Rubén Santamarta - SCADA Trojans: Attacking the Grid [Rooted CON 2011]Rubén Santamarta - SCADA Trojans: Attacking the Grid [Rooted CON 2011]
Rubén Santamarta - SCADA Trojans: Attacking the Grid [Rooted CON 2011]
 
David Pérez + José Picó - Un ataque práctico contra comunicaciones móviles [R...
David Pérez + José Picó - Un ataque práctico contra comunicaciones móviles [R...David Pérez + José Picó - Un ataque práctico contra comunicaciones móviles [R...
David Pérez + José Picó - Un ataque práctico contra comunicaciones móviles [R...
 
Marisol Salanova - Seguridad informática y cibersexo [RootedCON 2011]
Marisol Salanova - Seguridad informática y cibersexo [RootedCON 2011]Marisol Salanova - Seguridad informática y cibersexo [RootedCON 2011]
Marisol Salanova - Seguridad informática y cibersexo [RootedCON 2011]
 
Gianluca D'Antonio - La Gestión de la Seguridad de la Información ante las nu...
Gianluca D'Antonio - La Gestión de la Seguridad de la Información ante las nu...Gianluca D'Antonio - La Gestión de la Seguridad de la Información ante las nu...
Gianluca D'Antonio - La Gestión de la Seguridad de la Información ante las nu...
 
{RootedPanel] Grupo de Hackers Históricos: Apòstols [RootedCON 2010]
{RootedPanel] Grupo de Hackers Históricos: Apòstols [RootedCON 2010]{RootedPanel] Grupo de Hackers Históricos: Apòstols [RootedCON 2010]
{RootedPanel] Grupo de Hackers Históricos: Apòstols [RootedCON 2010]
 
Alejandro Martín + Chema Alonso - Pulveriza tus publicaciones con Dust [Roote...
Alejandro Martín + Chema Alonso - Pulveriza tus publicaciones con Dust [Roote...Alejandro Martín + Chema Alonso - Pulveriza tus publicaciones con Dust [Roote...
Alejandro Martín + Chema Alonso - Pulveriza tus publicaciones con Dust [Roote...
 
Antonio Ramos - La asimetría en el mercado de la seguridad [RootedCON 2011]
Antonio Ramos - La asimetría en el mercado de la seguridad [RootedCON 2011]Antonio Ramos - La asimetría en el mercado de la seguridad [RootedCON 2011]
Antonio Ramos - La asimetría en el mercado de la seguridad [RootedCON 2011]
 
Joxean Koret - Database Security Paradise [Rooted CON 2011]
Joxean Koret - Database Security Paradise [Rooted CON 2011]Joxean Koret - Database Security Paradise [Rooted CON 2011]
Joxean Koret - Database Security Paradise [Rooted CON 2011]
 
Raúl Siles - Browser Exploitation for Fun and Profit Revolutions [RootedCON 2...
Raúl Siles - Browser Exploitation for Fun and Profit Revolutions [RootedCON 2...Raúl Siles - Browser Exploitation for Fun and Profit Revolutions [RootedCON 2...
Raúl Siles - Browser Exploitation for Fun and Profit Revolutions [RootedCON 2...
 
Blueliv - Information Tracking with Optos [Rooted CON 2011]
Blueliv - Information Tracking with Optos [Rooted CON 2011]Blueliv - Information Tracking with Optos [Rooted CON 2011]
Blueliv - Information Tracking with Optos [Rooted CON 2011]
 
Francisco Jesús Gómez + Carlos Juan Diaz - Cloud Malware Distribution: DNS wi...
Francisco Jesús Gómez + Carlos Juan Diaz - Cloud Malware Distribution: DNS wi...Francisco Jesús Gómez + Carlos Juan Diaz - Cloud Malware Distribution: DNS wi...
Francisco Jesús Gómez + Carlos Juan Diaz - Cloud Malware Distribution: DNS wi...
 
Vins Villaplana - Seguridad en capa de enlace [RootedCON 2011]
Vins Villaplana - Seguridad en capa de enlace [RootedCON 2011]Vins Villaplana - Seguridad en capa de enlace [RootedCON 2011]
Vins Villaplana - Seguridad en capa de enlace [RootedCON 2011]
 
Sergi Álvarez + Roi Martín - radare2: From forensics to bindiffing [RootedCON...
Sergi Álvarez + Roi Martín - radare2: From forensics to bindiffing [RootedCON...Sergi Álvarez + Roi Martín - radare2: From forensics to bindiffing [RootedCON...
Sergi Álvarez + Roi Martín - radare2: From forensics to bindiffing [RootedCON...
 
José Miguel Esparza - Obfuscation and (non-)detection of malicious PDF files ...
José Miguel Esparza - Obfuscation and (non-)detection of malicious PDF files ...José Miguel Esparza - Obfuscation and (non-)detection of malicious PDF files ...
José Miguel Esparza - Obfuscation and (non-)detection of malicious PDF files ...
 
Jaime Blasco & Pablo Rincón - Lost in translation: WTF is happening inside m...
Jaime Blasco & Pablo Rincón -  Lost in translation: WTF is happening inside m...Jaime Blasco & Pablo Rincón -  Lost in translation: WTF is happening inside m...
Jaime Blasco & Pablo Rincón - Lost in translation: WTF is happening inside m...
 
Hernan Ochoa - WCE Internals [RootedCON 2011]
Hernan Ochoa - WCE Internals [RootedCON 2011]Hernan Ochoa - WCE Internals [RootedCON 2011]
Hernan Ochoa - WCE Internals [RootedCON 2011]
 
Eloi Sanfelix - Hardware security: Side Channel Attacks [RootedCON 2011]
Eloi Sanfelix - Hardware security: Side Channel Attacks [RootedCON 2011]Eloi Sanfelix - Hardware security: Side Channel Attacks [RootedCON 2011]
Eloi Sanfelix - Hardware security: Side Channel Attacks [RootedCON 2011]
 
Alejandro Ramos - Know your ******: 4dv4nc3d P@55w0rd$ (r4c|&lt;1ng [RootedCO...
Alejandro Ramos - Know your ******: 4dv4nc3d P@55w0rd$ (r4c|&lt;1ng [RootedCO...Alejandro Ramos - Know your ******: 4dv4nc3d P@55w0rd$ (r4c|&lt;1ng [RootedCO...
Alejandro Ramos - Know your ******: 4dv4nc3d P@55w0rd$ (r4c|&lt;1ng [RootedCO...
 

Similar a NoSQL Security: Vectores de ataque en implementaciones NoSQL

Cloud Computing: las nuevas Capas de Persistencia
Cloud Computing: las nuevas Capas de PersistenciaCloud Computing: las nuevas Capas de Persistencia
Cloud Computing: las nuevas Capas de PersistenciaDavid J. Brenes
 
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryJavier P.
 
PHPAJAX
PHPAJAXPHPAJAX
PHPAJAXrodasc
 
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryJavier P.
 
Desarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQueryDesarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQueryJavier P.
 
Base de Datos por Gustavo V.M
Base de Datos por Gustavo V.MBase de Datos por Gustavo V.M
Base de Datos por Gustavo V.MGustavo
 
node-db: La excusa perfecta para hablar de C++ y Node.js
node-db: La excusa perfecta para hablar de C++ y Node.jsnode-db: La excusa perfecta para hablar de C++ y Node.js
node-db: La excusa perfecta para hablar de C++ y Node.jsMariano Iglesias
 
LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)Emanuel Calvo
 
Mongodb administración
Mongodb administraciónMongodb administración
Mongodb administraciónJuan Ladetto
 
Ruby on rails Introducción
Ruby on rails Introducción Ruby on rails Introducción
Ruby on rails Introducción Daryl Moreno
 

Similar a NoSQL Security: Vectores de ataque en implementaciones NoSQL (20)

Cloud Computing: las nuevas Capas de Persistencia
Cloud Computing: las nuevas Capas de PersistenciaCloud Computing: las nuevas Capas de Persistencia
Cloud Computing: las nuevas Capas de Persistencia
 
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQuery
 
32773 php-basico
32773 php-basico32773 php-basico
32773 php-basico
 
PHPAJAX
PHPAJAXPHPAJAX
PHPAJAX
 
Php
PhpPhp
Php
 
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQuery
 
Desarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQueryDesarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQuery
 
Php!
Php!Php!
Php!
 
Base de Datos por Gustavo V.M
Base de Datos por Gustavo V.MBase de Datos por Gustavo V.M
Base de Datos por Gustavo V.M
 
Ruby para Java Developers
Ruby para Java DevelopersRuby para Java Developers
Ruby para Java Developers
 
node-db: La excusa perfecta para hablar de C++ y Node.js
node-db: La excusa perfecta para hablar de C++ y Node.jsnode-db: La excusa perfecta para hablar de C++ y Node.js
node-db: La excusa perfecta para hablar de C++ y Node.js
 
Tema2 3
Tema2 3Tema2 3
Tema2 3
 
Php1
Php1Php1
Php1
 
Php1 sesión 6
Php1 sesión 6Php1 sesión 6
Php1 sesión 6
 
LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)
 
Nosqlcp
NosqlcpNosqlcp
Nosqlcp
 
Nosqlcp
NosqlcpNosqlcp
Nosqlcp
 
Mongodb administración
Mongodb administraciónMongodb administración
Mongodb administración
 
Segunda sesion
Segunda sesionSegunda sesion
Segunda sesion
 
Ruby on rails Introducción
Ruby on rails Introducción Ruby on rails Introducción
Ruby on rails Introducción
 

Más de RootedCON

Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro Villaverde
Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro VillaverdeRooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro Villaverde
Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro VillaverdeRootedCON
 
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...RootedCON
 
Rooted2020 hunting malware-using_process_behavior-roberto_amado
Rooted2020 hunting malware-using_process_behavior-roberto_amadoRooted2020 hunting malware-using_process_behavior-roberto_amado
Rooted2020 hunting malware-using_process_behavior-roberto_amadoRootedCON
 
Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_
Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_
Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_RootedCON
 
Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...
Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...
Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...RootedCON
 
Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...
Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...
Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...RootedCON
 
Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...
Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...
Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...RootedCON
 
Rooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguer
Rooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguerRooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguer
Rooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguerRootedCON
 
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...RootedCON
 
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemy
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemyRooted2020 stefano maccaglia--_the_enemy_of_my_enemy
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemyRootedCON
 
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...RootedCON
 
Rooted2020 virtual pwned-network_-_manel_molina
Rooted2020 virtual pwned-network_-_manel_molinaRooted2020 virtual pwned-network_-_manel_molina
Rooted2020 virtual pwned-network_-_manel_molinaRootedCON
 
Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...
Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...
Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...RootedCON
 
Rooted2020 todo a-siem_-_marta_lopez
Rooted2020 todo a-siem_-_marta_lopezRooted2020 todo a-siem_-_marta_lopez
Rooted2020 todo a-siem_-_marta_lopezRootedCON
 
Rooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valero
Rooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valeroRooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valero
Rooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valeroRootedCON
 
Rooted2020 live coding--_jesus_jara
Rooted2020 live coding--_jesus_jaraRooted2020 live coding--_jesus_jara
Rooted2020 live coding--_jesus_jaraRootedCON
 
Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...
Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...
Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...RootedCON
 
Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...
Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...
Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...RootedCON
 
Rooted2020 evading deep-learning_malware_detectors_-_javier_yuste
Rooted2020 evading deep-learning_malware_detectors_-_javier_yusteRooted2020 evading deep-learning_malware_detectors_-_javier_yuste
Rooted2020 evading deep-learning_malware_detectors_-_javier_yusteRootedCON
 
Rooted2020 encontrando 0days-en_2020_-_antonio_morales
Rooted2020 encontrando 0days-en_2020_-_antonio_moralesRooted2020 encontrando 0days-en_2020_-_antonio_morales
Rooted2020 encontrando 0days-en_2020_-_antonio_moralesRootedCON
 

Más de RootedCON (20)

Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro Villaverde
Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro VillaverdeRooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro Villaverde
Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro Villaverde
 
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...
 
Rooted2020 hunting malware-using_process_behavior-roberto_amado
Rooted2020 hunting malware-using_process_behavior-roberto_amadoRooted2020 hunting malware-using_process_behavior-roberto_amado
Rooted2020 hunting malware-using_process_behavior-roberto_amado
 
Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_
Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_
Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_
 
Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...
Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...
Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...
 
Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...
Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...
Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...
 
Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...
Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...
Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...
 
Rooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguer
Rooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguerRooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguer
Rooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguer
 
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...
 
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemy
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemyRooted2020 stefano maccaglia--_the_enemy_of_my_enemy
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemy
 
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...
 
Rooted2020 virtual pwned-network_-_manel_molina
Rooted2020 virtual pwned-network_-_manel_molinaRooted2020 virtual pwned-network_-_manel_molina
Rooted2020 virtual pwned-network_-_manel_molina
 
Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...
Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...
Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...
 
Rooted2020 todo a-siem_-_marta_lopez
Rooted2020 todo a-siem_-_marta_lopezRooted2020 todo a-siem_-_marta_lopez
Rooted2020 todo a-siem_-_marta_lopez
 
Rooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valero
Rooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valeroRooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valero
Rooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valero
 
Rooted2020 live coding--_jesus_jara
Rooted2020 live coding--_jesus_jaraRooted2020 live coding--_jesus_jara
Rooted2020 live coding--_jesus_jara
 
Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...
Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...
Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...
 
Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...
Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...
Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...
 
Rooted2020 evading deep-learning_malware_detectors_-_javier_yuste
Rooted2020 evading deep-learning_malware_detectors_-_javier_yusteRooted2020 evading deep-learning_malware_detectors_-_javier_yuste
Rooted2020 evading deep-learning_malware_detectors_-_javier_yuste
 
Rooted2020 encontrando 0days-en_2020_-_antonio_morales
Rooted2020 encontrando 0days-en_2020_-_antonio_moralesRooted2020 encontrando 0days-en_2020_-_antonio_morales
Rooted2020 encontrando 0days-en_2020_-_antonio_morales
 

NoSQL Security: Vectores de ataque en implementaciones NoSQL

  • 1. NoSQL Security José Ramón Palanco
  • 2. Agenda ✦ Introducción NoSQL ✦ NoSQL vs RDBMS ✦ Arquitectura NoSQL ✦ Implementaciones de NoSQL ✦ Vectores de ataque ✦ Injections ✦ Key Bruteforce ✦ HTTP Protocol Based Attacks en listeners ✦ Cassandra security y Thrift security ✦ Denial of Service (connection pollution, evil queries)
  • 4. ¿Qué es NoSQL? ✦ Por lo general, no requieren de un esquema de la tabla fija ni utiliza join ✦ Todas las soluciones de NoSQL no implementan una o más de las propiedades ACID
  • 5. Teorema de CAP ✦ Propiedades: consistencia, disponibilidad (availability) y particiones ✦ Al menos son necesarias 2 ✦ Para escalar es necesario particiones ✦ En la mayoría de los casos primará disponibilidad sobre consistencia
  • 6. Arquitectura NoSQL RDBMS NoSQL Cliente Cliente Servidor HTTP Servidor HTTP SQL REST, JSON, XML, ... Connector BBDD Connector BBDD ODBC, ADO, JDBC Binario, HTTP, ...
  • 7. NoSQL vs RDBMS ✦ Las RDBMS modernas muestran pobre desempeño y escalabilidad en aplicaciones que hacen un uso intensivo de los datos ✦ Cloud Computing (SaaS) ✦ Redes sociales ✦ Para consultas complejas es inviable utilizar algo diferente a RDBMS
  • 8. Ejemplos de entornos ✦ En muchos entornos es necesario distribuir las escrituras en clusters, MapReduce, .. ✦ Facebook necesita almacenar 135 mil millones de mensajes cada mes ✦ Twitter almacena 7 TB diarios (duplica varias veces al año)
  • 9. Desventajas NoSQL ✦ OLTP ✦ SQL ✦ Ad-Hoc queries ✦ Relaciones complejas
  • 10. Arquitecturas NoSQL ✦ Almacen de documentos ✦ Grafos ✦ Clave/Valor y Tupla ✦ Multivalor ✦ Objetos ✦ Tabular
  • 11. Almacén de documentos ✦ CouchDB: ✦ MongoDB ✦ Terrastore ✦ ThruDB ✦ OrientDB ✦ RavenDB
  • 12. Grafos ✦ Neo4J ✦ Sones ✦ InfoGrid ✦ HypergraphDB ✦ AllegroGraph ✦ BigData
  • 13. Clave/Valor y Tupla ✦ Redis ✦ Riak ✦ Tokio Cabinet ✦ MemcacheDB ✦ Membase ✦ Azure
  • 14. Multivalor ✦ U2 ✦ OpenInsight ✦ OpenQM
  • 15. Objetos ✦ db4o ✦ Objetivity ✦ Versant ✦ NEO
  • 16. MongoDB ✦ Protocolo: Binario (BSON) ✦ API: varios lenguajes ✦ Query: JavaScript/JSON ✦ Lenguaje: C++
  • 17. Schema-Free (JSON) Features CouchDB • Document Oriented, Not Relational • Highly Concurrent ✦ Protocolo: REST • RESTful HTTP API ✦ API: JSON • JavaScript-Powered ✦ Map/Reduce Query: MapReduce (JS) ✦ • Lenguaje: Erlang N-Master Replication • Robust Storage
  • 18. {"couchdb":"Welcome","version":"0.11.0"} $ telnet 172.16.163.129 5984 Trying 172.16.163.129... Connected to 172.16.163.129. Escape character is '^]'. GET /rooted/ HTTP/1.1 Host: localhost HTTP/1.1 200 OK Server: CouchDB/0.11.0 (Erlang OTP/R14B) Date: Sat, 19 Feb 2011 05:20:28 GMT Content-Type: text/plain;charset=utf-8 Content-Length: 188 Cache-Control: must-revalidate {"db_name":"rooted","doc_count":1,"doc_del_count":0,"update_seq":1,"purge_seq": 0,"compact_running":false,"disk_size": 4182,"instance_start_time":"1298092462502662","disk_format_version":5}
  • 19. {"couchdb":"Welcome","version":"0.11.0"} $ telnet 172.16.163.129 5984 Trying 172.16.163.129... Connected to 172.16.163.129. Escape character is '^]'. GET /rooted/f34aae022f67a23ac56dba5b4e000cf2 HTTP/1.1 Host: localhost HTTP/1.1 200 OK Server: CouchDB/0.11.0 (Erlang OTP/R14B) Etag: "1-2512702fff02fe841adecde4a22c62b5" Date: Sat, 19 Feb 2011 05:20:47 GMT Content-Type: text/plain;charset=utf-8 Content-Length: 155 Cache-Control: must-revalidate {"_id":"f34aae022f67a23ac56dba5b4e000cf2","_rev":"1-2512702fff02fe841adecde4a2 2c62b5","Nombre":"Jose","DNI":"9393948K","telefono":999999999} Connection closed by foreign host.
  • 20. Redis ✦ Protocolo: Telnet plano ✦ API: Varios lenguajes ✦ Query: Comandos ✦ Lenguaje: C/C++
  • 21. Cassandra ✦ Protocolo: Binario (Thrift) ✦ API: Thrift ✦ Query: Columna/rangos ✦ Lenguaje: Java
  • 22. Cassandra ✦ Columna (tuple/triplet) ✦ Supercolumna (compuesto por columnas) ✦ Familia de Columna (contiene supercolumnas) ✦ Keyspace (alberga familias de columnas)
  • 23. Cassandra <Keyspace Name="BloggyAppy"> <!-- CF definitions --> <ColumnFamily CompareWith="BytesType" Name="Authors"/> <ColumnFamily CompareWith="BytesType" Name="BlogEntries"/> <ColumnFamily CompareWith="TimeUUIDType" Name="TaggedPosts"/> <ColumnFamily CompareWith="TimeUUIDType" Name="Comments" CompareSubcolumnsWith="BytesType" ColumnType="Super"/> </Keyspace> storage-conf.xml
  • 25. Introducción ✦ Diversos conceptos de bases de datos ✦ Diversas implementaciones ✦ Por lo tanto los vectores de ataque son muy específicos y dependerán de cada implementación
  • 26. HTTP Based Attacks ✦ ¿Quien usa HTTP? ✦ CouchDB ✦ HBASE ✦ Riak ✦ ¿Como localizar vulnerabilidades? ✦ fuzzing: hzzp
  • 27. Explotación de listeners ✦ Al funcionar sobre $ telnet server.com 80 HTTP, se pueden Trying X.X.X.X... utilizar proxies Connected to server.com. caché mal Escape character is '^]' configurados para GET /_all_dbs acceder a ellos Host: 192.168.2.18
  • 28. JSON Injection De la misma manera que en se escapa el SQL, cuando trabajamos con MongoDB ó CouchDB, debemos hacerlo igual db.foo.find( { $or : [ { a : 1 } , { b : 2 } ] } ) db.foo.find( { $or : [ { a : 1 } , { b : 2 }, { c : /.*/ } ] } )
  • 29. Array Injection <? $collection->find(array( MongoDB + PHP "username" => $_GET ['username'], "passwd" => $_GET ✦ En PHP es posible que una variable sea un ['passwd'] array simplemente añadiendo corchetes )); ?> ✦ Si la passwd de admin Not Equal , podremos acceder /login.php?username=admin&passwd[$ne]=1 ✦ Además de $ne, podremos injectar: <? ✦ $or, $exists, $nin, $in, $lt, ... (lógicos) $collection->find(array( "username" => "admin", "passwd" => array("$ne" => 1) ✦ &var[‘$regex’]=/privileged/i (regex) )); ?>
  • 30. View Injection ✦ CouchDB usa SpiderMonkey como motor de scripting ✦ Los js se cargan como views $ ldd /usr/lib/couchdb/bin/couchjs libcurl.so.4 => /usr/lib/libcurl.so.4 (0x00007f7124325000) libmozjs.so.2d => /usr/lib/libmozjs.so.2d (0x00007f7124063000) ...
  • 31. View Injection ✦ Hay vistas predefinidas y temporales ✦ Para hacer MapReduce ✦ Obtener datos arbitarios, modificar valores para alterar el flujo de ejecución
  • 32. REST INJECTION <? $dbname = $_GET["db"]; $doc_id = $_GET["d_id"]; $resp = $couch->send("GET", "/" . $dbname ."/" . $doc_id); ?> ✦ Cross Database: ✦ /?db=_all_dbs ✦ /?db=usuarios
  • 33. CouchDB info ✦ http://172.16.163.129:5984/_config ✦ http://172.16.163.129:5984/_all_dbs ✦ http://172.16.163.129:5984/_stats ✦ http://172.16.163.129:5984/_utils
  • 35. GQL Injection ✦ Se puede a llegar inyectar GQL, pero en un entorno bastante controlado ✦ No existe el operador negación “!” ✦ El set de comandos GQL es muy limitado
  • 36. Key Bruteforce ✦ Al no existir esquemas, no tenemos porque averiguarlo ✦ Los id son de gran tamaño, pero no se generan de forma aleatoria: e479f720ff9a05fb2f441fef97000c87 e479f720ff9a05fb2f441fef97000b61
  • 37. Cassandra Security <? ... $columnParent = new cassandra_ColumnParent(); $columnParent->super_column = NULL; if(isset($_GET[‘CF’])) $columnParent->column_family = $_GET[‘CF’].“_myfam”; ✦ Si podemos $sliceRange = new cassandra_SliceRange(); modificar el nombre $sliceRange->start = ""; $sliceRange->finish = ""; de una familia, $predicate = new cassandra_SlicePredicate(); list() = $predicate->column_names; podremos obtener $predicate->slice_range = $sliceRange; $consistency_level = cassandra_ConsistencyLevel::ONE; elementos de otra $keyUserId = 1; familia $result = $client->get_slice($keyspace, $keyUserId, $columnParent, $predicate, $consistency_level); print_r($result); ... ?>
  • 38. Denial of Service ✦ Connection polution ✦ Couchdb-> implementación interface = restfull ✦ Con GQL, es posible generar DoS al crear consultas maliciosas que consuman mucha CPU y se de de baja de GAE ó que se facture por esa CPU extra ✦ q