SPARQL Injection attacking the triple store

Documenti analoghi
Linguaggi di Interrogazione per il Web Semantico SPARQL

Linguaggio SQL seconda parte

Secure Code Review: dalla teoria alla pratica

Enrico Fagnoni BOTK IN A NUTSHELL

SQL - Structured Query Language

Banking Cybercrime: Attacchi e scenari di banking malware in Italia IEEE-DEST The OWASP Foundation. Giorgio Fedon Owasp Italy Technical Director

Linked Open Data Introduzione e nuovi punti di vista Silvia Mazzini Antonella Pagliarulo smazzini@regesta.com apagliarulo@regesta.

3.2 RDF e RDFS. Informatica Applicata. Antonella Poggi DIPARTIMENTO DI SCIENZE DOCUMENTARIE LINGUISTICO FILOLOGICHE. Anno Accademico

Creare ontologie ONTOLOGIE, DESCRIPTION LOGIC, PROTÉGÉ STEFANO DE LUCA

Guida alla realizzazione di un'antenna a stilo con cavo coassiale. Drosophila -

Guida alla realizzazione di un'antenna collineare omnidirezionale a 21 dipoli. Drosophila -

Basi di Dati: Corso di laboratorio

OWASP Day IV: introduzione

Web Semantico e Linked (Open) Data: dal Web dei documenti al Web dei dati. Tommaso Di Noia

SQL quick reference. piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013)

DUE GRUPPI DI COMANDI

Oracle Database 11g: Introduzione a SQL Release 2

Basi di Dati: Corso di laboratorio

Database Lezione 1. Sommario. - Introduzione - Tabelle e chiave primaria - Query - Calcoli ed alias - Ordinamento

SQL - Sottointerrogazioni

SPARQL: Simple Protocol and RDF Query Language

3.1 Introduzione al Web Semantico

Bozza Guida ufficiale vs 1.0

Interrogare una base di dati: algebra relazionale e SQL. Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor

Linked Open Data: pubblicazione, arricchimento semantico e linking di dataset pubblici attraverso il sistema MOMIS

PROGETTAZIONE DI DATABASE Linguaggio SQL

Corso sul linguaggio SQL

VisualStore Guida Attivazione Licenze. Guida Utente

ELAD FDM-S1. Manuale Installazione Componenti Per Linux

Protocolli di Sessione TCP/IP: una panoramica

Caratteristiche dei linguaggi per Database

Structured. Language. Basi di Dati. Introduzione. DDL: Data Definition Language. Tipi di dato. Query. Modifica dei Dati

Eprogram ITIS V anno Unità 4 - Il linguaggio SQL

DATABASE PER IL WEB. Programmazione Web 1

L'analisi di sicurezza delle applicazioni web: come realizzare un processo nella PA. The OWASP Foundation. Stefano Di Paola. CTO Minded Security

Linked (Open) Data. Fabrizio Celli 04/06/2012

SQL e algebra relazionale

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R:

ESERCITAZIONE SU RDF E SPARQL. Prof. Riccardo Torlone Università Roma Tre

SQL Sintassi Dei Comandi

SQL: Structured Query Language. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

Introduzione al Semantic Web

Fondamenti di programmazione OpenOffice.org Basic. a cura di nizan Soluzioni Open Source

The OWASP Foundation

Ontologie e dati per il Web semantico

Basi di Dati: Corso di laboratorio

********************* MODIFICA STRUTTURA DI UNA TABELLA (inserimento di un nuovo campo) ALTER TABLE Personale ADD Nascita date;

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

Esercizi Ontologie. Esercizio 8. Parte 1:

Istruzioni per utilizzare la BCD 2000 con Traktor 3 e 2

SELECT s.nome, e.data Studenti s, Esami e WHERE e.materia = 'BD' AND e.voto = 30 AND e.matricola = s.matricola

Storia. Corso di Basi di Dati Spaziali. Componente DDL. Funzionalità. Esempio. Creazione di schema. Linguaggi: SQL. Storia:

SQL: DDL, VI, Aggiornamenti e Viste

Business Intelligence

Introduzione al Semantic Web Linguaggi per la rappresentazione di ontologie. L idea del Semantic Web.

Access. P a r t e t e r z a

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

Esperienze di linked data e web semantico in BNCF

RDF RDFS RDF/XML. Dott.sa Vincenza Anna Leano Basi di Dati II mod. B Prof. F. Cutugno A.A. 2010/2011

Structured Query Language parte 1

Semantic Web: linguaggi e tecnologie

Esercitazione di riepilogo sulle Query MySQL Giugno 2011 Classe VB Informatica

SQL Injection The dark side of webapplication *** Siamo davvero certi che chi gestisce i nostri dati sensibili lo faccia in modo sicuro?

Sicurezza Informatica: Tecniche di SQL INJECTION

Il linguaggio SQL: le basi

The world s most advanced class on PostgreSQL o quasi! 4 Marzo 8 Aprile L'Antipasto 11 Marzo

SQL PER LA DEFINIZIONE DI BASI DI DATI

SQL non è solo un linguaggio di interrogazione (Query Language), ma. Un linguaggio per la definizione di basi di dati (Data-definition language (DDL))

GerbView. 25 novembre 2015

Oracle Database 10g: Introduction to SQL - LVC

Transcript:

SPARQL Injection attacking the triple store Simone Onofri Luca Napolitano -Italy Day2012 Rome, 23 November 2012 Copyright 2008 - The Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License. The Foundation http://www.owasp.org

Agenda! Introduzione al Web Semantico! Cos è SPARQL! SPARQL Injection! Demo! Oltre la SPARQL Injection! Conclusioni -Italy Day 2012

Chi siamo! Simone Onofri 10 anni di consulenza in ambito sicurezza, applicazioni, web semantico Attivo in associazioni e organizzazioni per la sicurezza e tematiche affini Senior Consultant / Project Manager per Techub S.p.A.! Luca Napolitano 8 anni di consulenza in ambito sicurezza, applicazioni, reti Sviluppo di strumenti a supporto della gestione delle vulnerabilità Network & Security Specialist per grandi aziende -Italy Day 2012

Introduzione al Web Semantico -Italy Day 2012

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) -Italy Day 2012

Web Semantico RDF: Struttura Io mi chiamo Simone -Italy Day 2012

Web Semantico RDF: Soggetto Io <http://onofri.org/> Soggetto -Italy Day 2012

Web Semantico RDF: Predicato Mi chiamo foaf:name Predicato -Italy Day 2012

Web Semantico RDF: Oggetto Simone Simone Oggetto -Italy Day 2012

Web Semantico Triplette: foaf:name <http://onofri.org/> foaf:name Simone. -Italy Day 2012

Web Semantico: Triple Store -Italy Day 2012

Web Semantico - Tecnologie -Italy Day 2012

Web Semantico Prospettive: Open Data -Italy Day 2012

Web Semantico Prospettive: Big Data BIG DATA -Italy Day 2012

Cos è SPARQL -Italy Day 2012

SPARQL - Acronimo SPARQL Protocol And RDF Query Language -Italy Day 2012

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, xquery -Italy Day 2012

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>) -Italy Day 2012

SPARQL Sintassi: Commento (in linea) I commenti nelle query SPARQL hanno la forma di un '#', al di fuori di un IRI o di una stringa, i commenti sono solo in linea (fino ai caratteri 0x0D o 0x0A) oppure fino alla fine del file se non ci sono nuove righe. -Italy Day 2012

SPARQL Query di base PREFIX foaf: <http://xmlns.com/ foaf/0.1/> SELECT?name # query pattern WHERE {?person foaf:name?name. FILTER regex(?name, "^S", i") } LIMIT 10 # query modifiers -Italy Day 2012

SPARQL Risposta di base?name Sabrina Sestio Simone -Italy Day 2012

SPARQL Injection -Italy Day 2012

SPARQL Injection cenni storici! 2005-2008 SPARQL 1.0! 2008 (Aprile) SPARQL Injection! 2009-presente SPARQL 1.1 -Italy Day 2012

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 triplette -Italy Day 2012

SPARQL Injection Struttura di una app -Italy Day 2012

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?date WHERE {?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")) } -Italy Day 2012

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 correttamente -Italy Day 2012

Demo -Italy Day 2012

Demo Semantic Login: Schermata -Italy Day 2012

Demo Semantic Login: Codice -Italy Day 2012

Demo Semantic Login: richiesta (legit) -Italy Day 2012

Demo Semantic Login: risposta (legit) -Italy Day 2012

Demo Semantic Login: richiesta (injection) -Italy Day 2012

Demo Semantic Login: risposta (injection) -Italy Day 2012

SPARQL Injection Dov è il bug -Italy Day 2012

Oltre la SPARQL Injection -Italy Day 2012

Oltre la SPARQL Injection dietro -Italy Day 2012

Oltre la SPARQL Injection SQL Injection -Italy Day 2012

Oltre la SPARQL Injection - Query SPARQL PREFIX iam: <http://x> SELECT * WHERE {?user iam:user "lol*/ OR (SELECT sleep(5))=1--". } LIMIT 100 -Italy Day 2012

Oltre la SPARQL Injection - Query SQL SELECT T_0_0_0.s AS `user`, T_0_0_0.s_type AS `user type` FROM arc_tests_triple T_0_0_0 WHERE (T_0_0_0.p = 0) /* http://xuser */ AND (T_0_0_0.o = 0) /* lol*/ OR (SELECT sleep(5))=1-- */ LIMIT 100 -Italy Day 2012

Bonus Dov è il bug -Italy Day 2012

Oltre la SPARQL Injection Dettagli ARC v2011-12-01 Multiple vulnerabilities http://onofri.org/u/arc2012 http://onofri.org/u/vm2012 -Italy Day 2012

Conclusioni -Italy Day 2012

Grazie! Domande?! Simone Onofri simone.onofri@gmail.com @simoneonofri! Luca Napolitano beinux3@gmail.com @beinux3 http://onofri.org/u/sparqli2012 -Italy Day 2012

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/ -Italy Day 2012