Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
SPARQL Injection                          attacking the triple store                              Simone                  ...
Agenda!     Introduzione al Web Semantico!     Cos’è SPARQL!     SPARQL Injection!     Demo!     Oltre la SPARQL Injection...
Chi siamo!   Simone Onofri               !   Luca Napolitano    10 anni di consulenza         8 anni di consulenza    in...
Introduzione            al       Web SemanticoOWASP-Italy Day 2012   OWASP
Web Semantico – Cenni storici!   Teorizzato da Tim Berners-Lee negli anni ‘90!   In teoria    Estende il web attuale    ...
Web Semantico – RDF: Struttura        Io mi chiamo SimoneOWASP-Italy Day 2012             OWASP
Web Semantico – RDF: Soggetto                  Io         <http://onofri.org/>              SoggettoOWASP-Italy Day 2012  ...
Web Semantico – RDF: Predicato                       Mi chiamo                       foaf:name                       Predi...
Web Semantico – RDF: Oggetto                        Simone                       “Simone”                       OggettoOWA...
Web Semantico – Triplette: foaf:name <http://onofri.org/>      foaf:name                       “Simone”.OWASP-Italy Day 20...
Web Semantico: Triple StoreOWASP-Italy Day 2012          OWASP
Web Semantico - TecnologieOWASP-Italy Day 2012         OWASP
Web Semantico – Prospettive: Open DataOWASP-Italy Day 2012               OWASP
Web Semantico – Prospettive: Big Data     BIG     DATAOWASP-Italy Day 2012                OWASP
Cos’è SPARQLOWASP-Italy Day 2012   OWASP
SPARQL - AcronimoSPARQL ProtocolAnd RDF Query   LanguageOWASP-Italy Day 2012   OWASP
SPARQL – Un linguaggio completo (v1.1)!   Tipologie di Query    SELECT, CONSTRUCT, ASK, DESCRIBE, UPDATE,    DROP , COPY,...
SPARQL – Sintassi: Literals e IRI! Literals: Stringhe      All’interno di virgolette doppie (“) o singole (‘)      Lingu...
SPARQL – Sintassi: Commento (in linea)  “I commenti nelle query SPARQL hanno laforma di un #, al di fuori di un IRI o di u...
SPARQL – Query di basePREFIX foaf: <http://xmlns.com/foaf/0.1/>SELECT ?name # query patternWHERE {?person foaf:name ?name ...
SPARQL – Risposta di base?nameSabrinaSestioSimone…OWASP-Italy Day 2012        OWASP
SPARQL InjectionOWASP-Italy Day 2012   OWASP
SPARQL Injection – cenni storici!   2005-2008 – SPARQL 1.0!   2008 (Aprile) – SPARQL Injection!   2009-presente – SPARQL 1...
SPARQL Injection – Cheatsheet!   All’interno del WHERE con un literals    “# Commento con virgoletta doppie    ‘# Commen...
SPARQL Injection – Struttura di una appOWASP-Italy Day 2012                 OWASP
SPARQL Injection – Dove?PREFIX dbpedia: <http://dbpedia.org/ontology/>PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>...
SPARQL Injection – Conclusioni!   L’impatto varia secondo    La struttura della query    Dov’è possibile inserire il cod...
DemoOWASP-Italy Day 2012          OWASP
Demo – Semantic Login: SchermataOWASP-Italy Day 2012               OWASP
Demo – Semantic Login: CodiceOWASP-Italy Day 2012            OWASP
Demo – Semantic Login: richiesta (legit)OWASP-Italy Day 2012                  OWASP
Demo – Semantic Login: risposta (legit)OWASP-Italy Day 2012                 OWASP
Demo – Semantic Login: richiesta (injection)OWASP-Italy Day 2012                  OWASP
Demo – Semantic Login: risposta (injection)OWASP-Italy Day 2012                 OWASP
SPARQL Injection – Dov’è il bugOWASP-Italy Day 2012              OWASP
Oltre la SPARQL         InjectionOWASP-Italy Day 2012   OWASP
Oltre la SPARQL Injection – dietro…OWASP-Italy Day 2012                  OWASP
Oltre la SPARQL Injection – SQL InjectionOWASP-Italy Day 2012                 OWASP
Oltre la SPARQL Injection - Query SPARQLPREFIX iam: <http://x>SELECT * WHERE {   ?user iam:user "lol*/ OR (SELECTsleep(5))...
Oltre la SPARQL Injection - Query SQLSELECT     T_0_0_0.s AS `user`,     T_0_0_0.s_type AS `user type`FROM arc_tests_tripl...
Bonus – Dov’è il bugOWASP-Italy Day 2012   OWASP
Oltre la SPARQL Injection – Dettagli         ARC v2011-12-01 Multiple              vulnerabilities            http://onofr...
ConclusioniOWASP-Italy Day 2012          OWASP
Grazie! Domande?!   Simone Onofri            !   Luca Napolitano   simone.onofri@gmail.com      beinux3@gmail.com   @simon...
Riferimenti!   Tim Berners-Lee - Weaving the Web   http://www.w3.org/People/Berners-Lee/Weaving/Overview.html!   W3 - SPAR...
Upcoming SlideShare
Loading in …5
×

Owasp italy day sparql injection attacking triple store semantic web application security sql injection

1,735 views

Published on

Era il gennaio 2008 quando il W3 quando una scintilla ha dato alla luce SPARQL - il linguaggio per interrogare RDF - una delle raccomandazioni più importanti per le attività legate al web semantico. Dopo pochi mesi, ad aprile dello stesso anno, viene presentata la prima ricerca sulle potenziali problematiche legate al linguaggio SPARQL. Come una SQL Injection permette di accedere a un Database, le SPARQL Injection permettono di accedere allo storage semantico, rientrando nei rischi di tipo “Injection” classificati nella OWASP TOP 10 2010.

Published in: Technology
  • Be the first to comment

Owasp italy day sparql injection attacking triple store semantic web application security sql injection

  1. 1. SPARQL Injection attacking the triple store Simone Luca Onofri NapolitanoOWASP-Italy Day2012Rome, 23° November 2012 Copyright © 2008 - The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License. The OWASP Foundation http://www.owasp.org
  2. 2. Agenda!   Introduzione al Web Semantico!   Cos’è SPARQL!   SPARQL Injection!   Demo!   Oltre la SPARQL Injection!   ConclusioniOWASP-Italy Day 2012 OWASP
  3. 3. Chi siamo!   Simone Onofri !   Luca Napolitano  10 anni di consulenza  8 anni di consulenza in ambito sicurezza, in ambito sicurezza, applicazioni, web applicazioni, reti… semantico…  Sviluppo di strumenti  Attivo in associazioni e a supporto della organizzazioni per la gestione delle sicurezza e tematiche vulnerabilità affini  Network & Security  Senior Consultant / Specialist per grandi Project Manager per aziende Techub S.p.A.OWASP-Italy Day 2012 OWASP
  4. 4. Introduzione al Web SemanticoOWASP-Italy Day 2012 OWASP
  5. 5. Web Semantico – Cenni storici!   Teorizzato da Tim Berners-Lee negli anni ‘90!   In teoria  Estende il web attuale  Una rete di dati che descrive dati!   In pratica  Si basa su asserzioni  Utilizza la logica dei predicati del primo ordine  Triplette di dati (soggetto, predicato, oggetto)  RDF (Resource Description Framework)OWASP-Italy Day 2012 OWASP
  6. 6. Web Semantico – RDF: Struttura Io mi chiamo SimoneOWASP-Italy Day 2012 OWASP
  7. 7. Web Semantico – RDF: Soggetto Io <http://onofri.org/> SoggettoOWASP-Italy Day 2012 OWASP
  8. 8. Web Semantico – RDF: Predicato Mi chiamo foaf:name PredicatoOWASP-Italy Day 2012 OWASP
  9. 9. Web Semantico – RDF: Oggetto Simone “Simone” OggettoOWASP-Italy Day 2012 OWASP
  10. 10. Web Semantico – Triplette: foaf:name <http://onofri.org/> foaf:name “Simone”.OWASP-Italy Day 2012 OWASP
  11. 11. Web Semantico: Triple StoreOWASP-Italy Day 2012 OWASP
  12. 12. Web Semantico - TecnologieOWASP-Italy Day 2012 OWASP
  13. 13. Web Semantico – Prospettive: Open DataOWASP-Italy Day 2012 OWASP
  14. 14. Web Semantico – Prospettive: Big Data BIG DATAOWASP-Italy Day 2012 OWASP
  15. 15. Cos’è SPARQLOWASP-Italy Day 2012 OWASP
  16. 16. SPARQL - AcronimoSPARQL ProtocolAnd RDF Query LanguageOWASP-Italy Day 2012 OWASP
  17. 17. SPARQL – Un linguaggio completo (v1.1)!   Tipologie di Query  SELECT, CONSTRUCT, ASK, DESCRIBE, UPDATE, DROP , COPY, MOVE, ADD!   Modificatori  ORDER BY, OFFSET, LIMIT, HAVING!   Espressioni  IF, COALESCE, EXISTS, IN, NOT, logiche!   Pattern  FILTER, OPTIONAL!   Funzioni  Stringhe, date, numeri, hash, xpath, xqueryOWASP-Italy Day 2012 OWASP
  18. 18. SPARQL – Sintassi: Literals e IRI! Literals: Stringhe  All’interno di virgolette doppie (“) o singole (‘)  Lingua (es. @it) opzionale  Tipo di dato, tramite un IRI (es. ^^xsd:integer) opzionale (es. “Simone”@it oppure “2012-11-23”^^xsd:date)!   IRI: Internationalized Resource Identifier  All’interno di parentesti angolari (es. <http:// owasp.org/>)  oppure attraverso i prefissi (es. PREFIX foaf: <http://xmlns.com/foaf/0.1/> e foaf:name sta per <http://xmlns.com/foaf/0.1/name>)OWASP-Italy Day 2012 OWASP
  19. 19. SPARQL – Sintassi: Commento (in linea) “I commenti nelle query SPARQL hanno laforma di un #, al di fuori di un IRI o di unastringa, i commenti sono solo in linea (finoai caratteri 0x0D o 0x0A) oppure fino alla fine del file se non ci sono nuove righe.”OWASP-Italy Day 2012 OWASP
  20. 20. SPARQL – Query di basePREFIX foaf: <http://xmlns.com/foaf/0.1/>SELECT ?name # query patternWHERE {?person foaf:name ?name . FILTERregex(?name, "^S", ”i")}LIMIT 10 # query modifiersOWASP-Italy Day 2012 OWASP
  21. 21. SPARQL – Risposta di base?nameSabrinaSestioSimone…OWASP-Italy Day 2012 OWASP
  22. 22. SPARQL InjectionOWASP-Italy Day 2012 OWASP
  23. 23. SPARQL Injection – cenni storici!   2005-2008 – SPARQL 1.0!   2008 (Aprile) – SPARQL Injection!   2009-presente – SPARQL 1.1OWASP-Italy Day 2012 OWASP
  24. 24. SPARQL Injection – Cheatsheet!   All’interno del WHERE con un literals  “# Commento con virgoletta doppie  ‘# Commento con virgoletta!   All’interno del WHERE con un IRI  ># Parentesi angolare!   All’interno dei FILTER  ‘) # e “)# Vengono usate le parentesi, una o più  All’interno di una regex!   In generale  . Terminazione di tripletta  ; Per annidare le tripletteOWASP-Italy Day 2012 OWASP
  25. 25. SPARQL Injection – Struttura di una appOWASP-Italy Day 2012 OWASP
  26. 26. SPARQL Injection – Dove?PREFIX dbpedia: <http://dbpedia.org/ontology/>PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>SELECT ?film ?dateWHERE {?film rdf:type dbpedia:Film .?film rdfs:label ?title .?film dbpedia:releaseDate ?date .FILTER ((?date >= "2000-01-01"^^xsd:date)&& (?date < "2012-02-01"^^xsd:date) &&regex(str(?title), "^R"))}OWASP-Italy Day 2012 OWASP
  27. 27. SPARQL Injection – Conclusioni!   L’impatto varia secondo  La struttura della query  Dov’è possibile inserire il codice  Utilizzo di comandi dai vari dialetti (es. LOAD)!   Non solo SPARQL Injection  Xquery  Xpath  Regex!   Mitigazione  Query Parametriche  Validazione dei dati  Scrivere SPARQL correttamenteOWASP-Italy Day 2012 OWASP
  28. 28. DemoOWASP-Italy Day 2012 OWASP
  29. 29. Demo – Semantic Login: SchermataOWASP-Italy Day 2012 OWASP
  30. 30. Demo – Semantic Login: CodiceOWASP-Italy Day 2012 OWASP
  31. 31. Demo – Semantic Login: richiesta (legit)OWASP-Italy Day 2012 OWASP
  32. 32. Demo – Semantic Login: risposta (legit)OWASP-Italy Day 2012 OWASP
  33. 33. Demo – Semantic Login: richiesta (injection)OWASP-Italy Day 2012 OWASP
  34. 34. Demo – Semantic Login: risposta (injection)OWASP-Italy Day 2012 OWASP
  35. 35. SPARQL Injection – Dov’è il bugOWASP-Italy Day 2012 OWASP
  36. 36. Oltre la SPARQL InjectionOWASP-Italy Day 2012 OWASP
  37. 37. Oltre la SPARQL Injection – dietro…OWASP-Italy Day 2012 OWASP
  38. 38. Oltre la SPARQL Injection – SQL InjectionOWASP-Italy Day 2012 OWASP
  39. 39. Oltre la SPARQL Injection - Query SPARQLPREFIX iam: <http://x>SELECT * WHERE { ?user iam:user "lol*/ OR (SELECTsleep(5))=1--" .}LIMIT 100OWASP-Italy Day 2012 OWASP
  40. 40. Oltre la SPARQL Injection - Query SQLSELECT T_0_0_0.s AS `user`, T_0_0_0.s_type AS `user type`FROM arc_tests_triple T_0_0_0WHERE (T_0_0_0.p = 0) /* http://xuser*/ AND (T_0_0_0.o = 0) /* lol*/ OR(SELECT sleep(5))=1-- */LIMIT 100OWASP-Italy Day 2012 OWASP
  41. 41. Bonus – Dov’è il bugOWASP-Italy Day 2012 OWASP
  42. 42. Oltre la SPARQL Injection – Dettagli ARC v2011-12-01 Multiple vulnerabilities http://onofri.org/u/arc2012 http://onofri.org/u/vm2012OWASP-Italy Day 2012 OWASP
  43. 43. ConclusioniOWASP-Italy Day 2012 OWASP
  44. 44. Grazie! Domande?!   Simone Onofri !   Luca Napolitano simone.onofri@gmail.com beinux3@gmail.com @simoneonofri @beinux3 http://onofri.org/u/sparqli2012OWASP-Italy Day 2012 OWASP
  45. 45. Riferimenti!   Tim Berners-Lee - Weaving the Web http://www.w3.org/People/Berners-Lee/Weaving/Overview.html!   W3 - SPARQL Query Language for RDF http://www.w3.org/TR/rdf-sparql-query/!   SPARQL 1.1 Query Language http://www.w3.org/TR/sparql11-query/!   Code Injection http://www.morelab.deusto.es/code_injection/OWASP-Italy Day 2012 OWASP

×