<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.owasp.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Luca+Carettoni</id>
		<title>OWASP - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.owasp.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Luca+Carettoni"/>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php/Special:Contributions/Luca_Carettoni"/>
		<updated>2026-04-22T22:57:11Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.27.2</generator>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Italy&amp;diff=194922</id>
		<title>Italy</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Italy&amp;diff=194922"/>
				<updated>2015-05-16T21:37:35Z</updated>
		
		<summary type="html">&lt;p&gt;Luca Carettoni: /* WordPress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;[[Image:OWASP-Italy.PNG]] &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== WELCOME  ====&lt;br /&gt;
&lt;br /&gt;
{{Chapter Template|chaptername=Italy|extra=The chapter leader is [mailto:matteo.meucci@gmail.com Matteo Meucci]|mailinglistsite=http://lists.owasp.org/mailman/listinfo/owasp-italy|emailarchives=http://lists.owasp.org/pipermail/owasp-italy}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;paypal&amp;gt;Italy&amp;lt;/paypal&amp;gt; &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Adopt OSS. First Edition ==&lt;br /&gt;
&lt;br /&gt;
OWASP Italy is pleased to announce a new initiative: '''Adopt''' '''O'''pen'''S'''ource'''S'''oftware&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Given OWASP’s mission to help organizations with application security, we have established a new initiative to provide free, voluntary-based support to open source software projects.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Thanks to Adopt OSS, security enthusiasts are paired with participating open source projects, thus gaining exposure to real-life security engineering challenges and the opportunity for career growth. In turn, the participating projects are able to obtain free professional expertise to better improve their security posture, and ultimately build secure software. Over a six months period, OWASP Italy will facilitate the effort by coordinating the initiative and providing support when needed.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
The first edition of this initiative will take place between ''May and November 2015'', and will see the participation of '''7 OWASP Italy members''' and '''3 major OpenSource projects'''. At the end of the six months period, OWASP Italy will publish results and feedback from both volunteers and OSS maintainers.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
The official flyer can be [https://www.owasp.org/images/0/07/AdoptOSSManifest-OWASPItaly.pdf downloaded from here].&lt;br /&gt;
&lt;br /&gt;
===Ntopng===&lt;br /&gt;
''Alessio Petracca, Mattia Folador''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://www.ntop.org/products/traffic-analysis/ntop/ Ntop] is the de-facto standard for real-time network traffic monitoring. OWASP Italy wants to help the project by increasing the security level of ntopng, performing security testing activities and supporting the remediation process.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We will act in two steps:&lt;br /&gt;
* First, a penetration test targeting the web interface of ntopng will be performed, following the [https://www.owasp.org/index.php/OWASP_Testing_Guide_v3_Table_of_Contents OWASP Testing Methodology]&lt;br /&gt;
* Secondly, source code review of ntopng main components (such as the C++ core engine) will be statically reviewed. The objective is to address all relevant checks contained within the [https://www.owasp.org/index.php/OWASP_Code_review_V2_Table_of_Contents OWASP Code Review Guide]&lt;br /&gt;
&lt;br /&gt;
In case the activities above are completed before the end of the six-months period, additional activities (such as the development of security plugins) will be discussed.&lt;br /&gt;
Luca Deri and Arianna Avanzini will support Alessio Petracca and Mattia Folador in these activities, by providing guidance and insights.&lt;br /&gt;
&lt;br /&gt;
===WordPress===&lt;br /&gt;
''Paolo Perego, Sandro Zaccarini''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://wordpress.org/ WordPress] is the facto standard for web publishing. If you need a blog, if you need a new showcase website for your portfolio or a tiny e-commerce web site for your small company you will look at WordPress to start.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Paying the cost to be the boss, WordPress during the years suffered tons of security issues, 3 major issues only in the beginning of May 2015. Either the core, plugins and themes are developed with easy to use in mind and they need to be hardened.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OWASP Italy wants to support WordPress adopting it with the &amp;quot;Stand by WordPress&amp;quot; initiative. We will deploy the software in three different standard configurations: blog, company's portfolio and e-commerce.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We will do continuous appsec during development of 4.3 version in order to quickly spot security issues before the August release. In addition, we will take care of hardening guidelines and both plugins and themes subsystems in order to improve the overall architecture.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can follow the progress of the &amp;quot;Stand by WordPress&amp;quot; initiative here: [https://standbywordpress.wordpress.com https://standbywordpress.wordpress.com]&lt;br /&gt;
&lt;br /&gt;
===GlobaLeaks===&lt;br /&gt;
''Luca Carettoni, Giovanni Cerrato, Marco Lancini''&lt;br /&gt;
&lt;br /&gt;
[https://www.globaleaks.org/ GlobaLeaks] is the first open-source whistleblowing framework. It empowers anyone to easily set up and maintain an anonymous whistleblowing platform.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Considering the potential hostile environments in which the application may be hosted, security vulnerabilities and abuses are primary concerns for GlobaLeaks’ maintainers.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We want to help the team in their excellent application security practices, by performing vulnerability research activities in order to discover unknown bugs within the boundaries of their specific [https://docs.google.com/document/d/1niYFyEar1FUmStC03OidYAIfVJf18ErUFwSWCmWBhcA/pub threat model]. In particular, we will be focusing on two main software components (GLBackend and GLClient) and new security-relevant changes (upcoming authentication re-factoring and end-to-end encryption).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For more information on '''Adopt OSS''', please send an email to [mailto:owasp-italy@lists.owasp.org owasp-italy@lists.owasp.org]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OWASP-Isaca Conference @ Rome 11-12th December 2014 ==&lt;br /&gt;
The agenda is online! &amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.isacaroma.it/images/owasp_agenda_11-12-12-2014.JPG&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OWASP-Isaca Conference @ Venice 3rd October 2014 ==&lt;br /&gt;
The agenda: &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Venice2014.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Here is the [https://www.owasp.org/images/d/d3/OWASPVenice2014.pdf flyer]&lt;br /&gt;
&lt;br /&gt;
== OWASP-Italy Day @ the University of Genova (14th May 2014) ==&lt;br /&gt;
Thank to the collaboration with [http://www.ai-lab.it/armando Prof. Alessandro Armando] and to the availability of Gary McGraw, Ph.D. CTO, Cigital we are planning an incredible [https://www.owasp.org/index.php/Italy_OWASP_Day_2014_Genova OWASP Day next 14th May].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== OWASP Italy  @ Security Summit 2014 ==&lt;br /&gt;
OWASP Italy participated to the Security Summit 2014 in Milan with 3 talks.&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.securitysummit.it/milano-2014/seminari-associazioni/talk-34/ See here for all the details]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OWASP EU Tour 2013 - 27th June - Rome==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{:EUTour2013 header}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thanks to the collaboration with Università Degli Studi Roma Tre, next 27th June we will have the OWASP EU Tour Rome Conference.&amp;lt;br&amp;gt;&lt;br /&gt;
OWASP Europe TOUR, is an event across the European region that promotes awareness about application security, so that people and organizations can make informed decisions about true application security risks. &amp;lt;br&amp;gt;Everyone is free to participate in OWASP and all of our materials are available under a free and open software license.&lt;br /&gt;
&lt;br /&gt;
The conference will be held at Università Degli Studi Roma Tre. Address: Via Vito Volterra, 62, Rome.&lt;br /&gt;
&lt;br /&gt;
[https://www.owasp.org/index.php/EUTour2013_Rome_Agenda Here you can find the agenda and all the information to participate]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OWASP Italy  @ Security Summit 2013 ==&lt;br /&gt;
&lt;br /&gt;
OWASP Italy participated to the Security Summit 2013 in Milan with 2 talks.&amp;lt;br&amp;gt;&lt;br /&gt;
[http://milano2013.securitysummit.it/eventi/view/35 See here for all the details]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OWASP Italy Day 2012: &amp;quot;Web Security in a Mobile World&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;[[File:OWASPITDay2012.jpg]] &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We are pleased to announce that the [http://www.owasp.org/index.php/Italy OWASP Italy chapter] will host the OWASP Italy Day 2012 conference in Rome, Italy at the University of Rome La Sapienza next 23rd November 2012.&lt;br /&gt;
&lt;br /&gt;
More information [https://www.owasp.org/index.php?title=Italy_OWASP_Day_2012 here]&lt;br /&gt;
&lt;br /&gt;
== OWASP-Italy Board  ==&lt;br /&gt;
&lt;br /&gt;
*This is the '''OWASP-Italy Board''':&lt;br /&gt;
Founder and Chair: Matteo Meucci (Jan 2005)&amp;lt;br&amp;gt;&lt;br /&gt;
OWASP Italy Board: Paolo Perego, Luca Carettoni, Antonio Parata, Giorgio Fedon, Stefano Di Paola, Mauro Bregolin, Claudio Merloni, Raoul Chiesa.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Partnerships  ====&lt;br /&gt;
&lt;br /&gt;
*ISC2-Italian Chapter: Thanks to Marco Misitano, Paolo Ottolino and Claudio Sasso, OWASP Italy collaborates with the ISC2-Italian Chapter for new initiatives regarding Security Conferences, articles and contentes regarding SDLC.&lt;br /&gt;
&lt;br /&gt;
[http://www.isc2chapter-italy.it https://www.owasp.org/images/a/a3/ISC2Italy.jpg]&lt;br /&gt;
&lt;br /&gt;
*CSA Italy Partnership&lt;br /&gt;
&lt;br /&gt;
[http://chapters.cloudsecurityalliance.org/italy/ https://www.owasp.org/images/6/6a/CSAItalylogo.gif]&lt;br /&gt;
&lt;br /&gt;
Thanks to Alberto Manfredi (CSA Italy President) we are starting a collaboration with the Italian Chapter of the Cloud Security Alliance.&lt;br /&gt;
&lt;br /&gt;
*IsecLab Partnership&lt;br /&gt;
&lt;br /&gt;
[http://www.iseclab.org http://www.owasp.org/images/4/4b/LogoIsecLab.png]&lt;br /&gt;
&lt;br /&gt;
We are beginning a collaboration with David Balzarotti and Marco Balduzzi of International Secure Systems Lab(IsecLab) with the goal of sharing and improving new WebAppSec projects.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*CLUSIT Member&lt;br /&gt;
&lt;br /&gt;
http://www.clusit.it/logo_clusit/clusit_logo_b130.gif &lt;br /&gt;
&lt;br /&gt;
Thanks to CLUSIT and OWASP Foundation we have established a cross-membership between the two organizations. So OWASP-Italy is now a [http://www.clusit.it/soci.htm CLUSIT member] and CLUSIT is an OWASP Educational Member.&lt;br /&gt;
&lt;br /&gt;
*ISACA Rome&lt;br /&gt;
&lt;br /&gt;
[http://www.isacaroma.it http://www.owasp.org/images/9/98/Isacaroma.gif]&lt;br /&gt;
&lt;br /&gt;
Thanks to Ugo Spaziani, we are developing seminars and new ideas with ISACA Rome. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== News  ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Security Summit 2012 ==&lt;br /&gt;
- 21st March 2012, OWASP Italy will present 3 talks:&lt;br /&gt;
&lt;br /&gt;
- Antonio Parata e Paolo Perego:&amp;quot;Security Testing for developers&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
- Giorgio Fedon: &amp;quot;Banking Malware evolution in Italy: defense approach&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
- Stefano Di Paola:&amp;quot;DOM Xss: la nuova generazione di vulnerabilità applicative&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
Please subscribe for free here: https://www.securitysummit.it/eventi/view/21&lt;br /&gt;
&lt;br /&gt;
== Security Summit 2011 ==&lt;br /&gt;
- 15th March 2011, OWASP-Italy presented a seminar about OWASP news. &amp;lt;br&amp;gt;&lt;br /&gt;
Here you can download the presentations:&amp;lt;br&amp;gt;&lt;br /&gt;
- Matteo Meucci: &amp;quot;[http://www.owasp.org/images/5/51/Security_Summit_2011_-_Meucci.pdf OWASP Future and the OWASP Guidelines: how your company can adopt it to obtain best results]&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
- Paolo Perego: &amp;quot;[http://www.owasp.org/images/2/20/I_tool_OWASP_per_la_sicurezza_del_software_20110315.pdf OWASP tools for the Software Security]&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
- Giorgio Fedon: &amp;quot;[http://www.owasp.org/images/a/a0/Owasp_at_Security_Summit_2011_-_Mythbreaking_Automatic_Code_review_Tools.pdf Myth Busting Automatic Code Review tools]&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
More information here: https://www.securitysummit.it/eventi/view/24&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
'''OWASP Books are out!'''&lt;br /&gt;
&lt;br /&gt;
Now you can download or buy a book on the OWASP Projects. Check it here: http://stores.lulu.com/owasp &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Activities  ====&lt;br /&gt;
&lt;br /&gt;
*(Jun 10): OWASP Testing Guide presentation at FBK (Fondazione Bruno Kessler). &lt;br /&gt;
&lt;br /&gt;
*(May 10): OWASP Training at London: last 28th May in London, OWASP leaders deliver a course focused on the main OWASP Projects. This course aims to change that by providing a selection of mature and enterprise ready projects together with practical examples of how to use them. &lt;br /&gt;
This Course was FREE for OWASP Members. &lt;br /&gt;
http://www.owasp.org/index.php/London/Training/OWASP_projects_and_resources_you_can_use_TODAY&lt;br /&gt;
&lt;br /&gt;
*(Jan 09) OWASP Testing Guide v3 is finished! You can download or browse it [http://www.owasp.org/index.php/Category:OWASP_Testing_Project here]&lt;br /&gt;
&lt;br /&gt;
*(Mar 07) Luca Carettoni has published an interview to OWASP-Italy (OWASP interviews OWASP&amp;amp;nbsp;:) )&lt;br /&gt;
&lt;br /&gt;
[http://blog.html.it/archivi/2007/02/26/quattro-chiacchiere-con-owasp-italia.php Here] the full article. &lt;br /&gt;
&lt;br /&gt;
*(Oct 06) ISACA Roma has published several interview with OWASP-Italy members:&lt;br /&gt;
&lt;br /&gt;
[[http://www.isacaroma.it/html/newsletter/node/276 Matteo Meucci]] [[http://www.isacaroma.it/html/newsletter/node/287 Alberto Revelli]] [[http://www.isacaroma.it/html/newsletter/node/282 Antonio Parata]] [[http://www.isacaroma.it/html/newsletter/node/285 Paolo Perego]] [[http://www.isacaroma.it/html/newsletter/node/328 Carlo Pelliccioni]]&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*(Sep 06) Paolo Perego has created the new '''OWASP Orizon Project'''. Go to [http://www.owasp.org/index.php/Category:OWASP_Orizon_Project OWASP Orizon Project]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*(Sep 06) Matteo Meucci has been selected as the new editor of the '''OWASP Testing Guide v2'''. See OWASP [http://www.owasp.org/index.php/OWASP_Autumn_Of_Code_2006_:_Selected_Projects_Press_Release press release] and go to [http://www.owasp.org/index.php/OWASP_Autumn_of_Code_2006_-_Projects:_Testing_Guide OWASP Testing Project v2]&lt;br /&gt;
&lt;br /&gt;
*(Sep 06) Carlo Pelliccioni is writing an article about the [http://www.owasp.org/index.php/Analysis_about_error_codes analysis of error codes] received by web servers.&lt;br /&gt;
&lt;br /&gt;
*Top10 Vulnerabilities - OWASP-Italy survey:&lt;br /&gt;
&lt;br /&gt;
[[Image:Top 10 vulnerabilities-mini.GIF]] &lt;br /&gt;
&lt;br /&gt;
*(21 Jun 06) '''Infosecurity 2006''': the event is organized and managed by the CLUSIT.&lt;br /&gt;
&lt;br /&gt;
Alberto Revelli and Matteo Meucci will partecipate as speakers at the seminar: &amp;quot;Web Application Security: guidelines and security auditing for web applications&amp;quot;. [http://www.infosecurity.it/Roma/programma.php More info here] &lt;br /&gt;
&lt;br /&gt;
*(1 Jun 06) '''&amp;quot;Quaderno CLUSIT&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
CLUSIT has published a book entitled: &amp;quot;La verifica della sicurezza di applicazioni Web-based e il progetto OWASP&amp;quot;. Several OWASP-Italy members (R.Chiesa, L.De Santis, M.Graziani, L.Legato, M.Meucci, A.Revelli) have contributed to the writing. The document is now reserved to CLUSIT members, but will be made public in about 3 months. &lt;br /&gt;
&lt;br /&gt;
*(31 May 06) Luca Carettoni has published the article '''&amp;quot;La sicurezza delle applicazioni Web secondo l'Open Web Application Security Project&amp;quot;.''' [http://sicurezza.html.it/articoli/leggi/1721/la-sicurezza-delle-applicazioni-web-secondo-lopen-/ Here]you can read the full article.&lt;br /&gt;
&lt;br /&gt;
*(1 Mar 06) '''OWASP-Boston, Microsoft'''&lt;br /&gt;
&lt;br /&gt;
Thanks to Jim Weiler, Matteo Meucci has presented &amp;quot;Anatomy of two web attacks&amp;quot; at the OWASP-Boston meeting. [http://www.owasp.org/local/boston.html More info here] &lt;br /&gt;
&lt;br /&gt;
*(18 Nov 05) '''IDC - European Banking Forum'''&lt;br /&gt;
&lt;br /&gt;
Thanks to Raoul Chiesa (Director of Communication OWASP-Italy), we will have a great speech at the [http://www.idc.com/italy/events/banking05/banking05_agenda.jsp IDC European IT Banking Forum 2005]. Agenda: - New standards for the ICT security auditing in the italian banking scenario: OSSTMM and OWASP. Raoul Chiesa, Director of Communications, ISECOM/OWASP-Italy and Matteo Meucci, OWASP-Italy Chair - Workshop: unusual form of attacks and banking system violation: live experience. Raoul Chiesa, Director of Communications, ISECOM/OWASP-Italy &lt;br /&gt;
&lt;br /&gt;
*(Oct 05) '''SMAU 2005''' is the 42a International ICT &amp;amp;amp; Consumer Electronics Exhibition for Italy.&lt;br /&gt;
&lt;br /&gt;
SMAU has accepted our submission! [http://www.webb.it/event/eventview/4488/1/progetto_owasp__case_study_di_applicativi_web_vulnerabili More info here] &lt;br /&gt;
&lt;br /&gt;
*(Giu 05) Thanks to Massimiliano Graziani we have translated in italian the '''&amp;quot;OWASP Pen Test Checklist v.1.1&amp;quot;'''. You can download it [http://www.owasp.org/documentation/testing.html here.]&lt;br /&gt;
&lt;br /&gt;
Thanks to the collaboration with CLUSIT, this doc is available also [http://www.clusit.it/whitepapers.htm here.] &lt;br /&gt;
&lt;br /&gt;
*(May 05) '''ISACA Roma Newsletter''' has published an [http://www.isacaroma.it/html/newsletter/?q=node/78 interview to OWASP-Italy]&lt;br /&gt;
&lt;br /&gt;
*(Apr 05) We have written an article describing the OWASP projects, Web Application Security and the next challenges. '''ICT Security'''.(the italian magazine about Information Security) has published the article on the number 33 - April 2005.&lt;br /&gt;
&lt;br /&gt;
*The presentation of the seminar we have done in '''ISACA Rome''' (31th March 2005) is now available [http://www.isacaroma.it/pdf/050331/meucci.zip here.]&lt;br /&gt;
&lt;br /&gt;
*(Apr 05) We have published a presentation describing a detailed case study of a web application vulnerabilty [http://www.owasp.org/images/7/72/MMS_Spoofing.ppt (MMS Spoofing)].&lt;br /&gt;
&lt;br /&gt;
*(Mar 05) Thanks to Matteo Paolelli we have translated the '''&amp;quot;OWASP Top Ten Vulnerabilties in Web Application Security&amp;quot;''' in italian language. You can download it [http://www.owasp.org/docroot/owasp/projects/topten/OWASPTopTen2004-ITA.pdf here].&lt;br /&gt;
&lt;br /&gt;
*[http://www.isacaroma.it/html/newsletter/?q=node/78 Here] you can read an interview talking about OWASP. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Events  ====&lt;br /&gt;
&lt;br /&gt;
=== 15th March, 2011 - OWASP-Italy@Security Summit ===&lt;br /&gt;
&lt;br /&gt;
- 15th March 2011, OWASP-Italy presented a seminar about OWASP news. &amp;lt;br&amp;gt;&lt;br /&gt;
Here you can download the presentations:&amp;lt;br&amp;gt;&lt;br /&gt;
- Matteo Meucci: &amp;quot;[http://www.owasp.org/images/5/51/Security_Summit_2011_-_Meucci.pdf OWASP Future and the OWASP Guidelines: how your company can adopt it to obtain best results]&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
- Paolo Perego: &amp;quot;[http://www.owasp.org/images/2/20/I_tool_OWASP_per_la_sicurezza_del_software_20110315.pdf OWASP tools for the Software Security]&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
- Giorgio Fedon: &amp;quot;[http://www.owasp.org/images/a/a0/Owasp_at_Security_Summit_2011_-_Mythbreaking_Automatic_Code_review_Tools.pdf Myth Busting Automatic Code Review tools]&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
More information here: https://www.securitysummit.it/eventi/view/24&lt;br /&gt;
&lt;br /&gt;
=== November, 2010 - OWASP-Italy Day V  ===&lt;br /&gt;
&lt;br /&gt;
- OWASP Day for E-Gov 2010: 9th November 2010 - Rome. &amp;lt;br&amp;gt;&lt;br /&gt;
An event organized by Consip. More information [http://www.owasp.org/index.php/Italy_OWASP_Day_E-Gov_10 here]&lt;br /&gt;
&lt;br /&gt;
=== November, 2009 - OWASP-Italy Day IV  ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Following on from the great success of last OWASP Days the forth conference has taken place in November 2009 in Milan. &amp;lt;br&amp;gt;&lt;br /&gt;
More information [http://www.owasp.org/index.php/Italy_OWASP_Day_4 here]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OWASP Day for E-Gov 2009: 5th November 2009 - Rome. &amp;lt;br&amp;gt;&lt;br /&gt;
More information [http://www.owasp.org/index.php/Italy_OWASP_Day_E-Gov_09 here]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 31st March, 2009 - OWASP-Italy @ PCI Milan  ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Matteo Meucci was invited to talk about OWASP Testing Guide and PCI-DSS Standard at the [http://www.pci-portal.com/lang-en/events/event-info/pcimilan PCI Milan event] last 31st March. &lt;br /&gt;
&lt;br /&gt;
The presentation is published [http://www.owasp.org/images/3/38/MeucciPciMilan09.pdf here] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 23rd February, 2009 - OWASP Day III  ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[http://www.owasp.org/index.php/Italy_OWASP_Day_3 &amp;quot;Web Application Security: research meets industry&amp;quot;] &amp;lt;br&amp;gt; Presentations are online! &lt;br /&gt;
&lt;br /&gt;
=== 10th October, 2008 - Isaca Roma PCM 2008 ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Matteo Meucci presented the new OWASP Projects and the Application Security in the Italian Companies. More information [http://www.isacaroma.it/html/ArchivioEventi-081010.html here] &lt;br /&gt;
&lt;br /&gt;
=== 31st March, 2008 - OWASP Day II  ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[http://www.owasp.org/index.php/Italy_OWASP_Day_2 &amp;quot;The State of the Art of the Web Application Security and the OWASP guidelines in the Companies&amp;quot;] Presentations are online! &lt;br /&gt;
&lt;br /&gt;
=== February 2008 - OWASP Italy at InfoSecurity 2008  ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
5th February: &lt;br /&gt;
&lt;br /&gt;
*14:30 - The Owasp Orizon project: internals and hands on&lt;br /&gt;
&lt;br /&gt;
[http://www.infosecurity.it/IT/eventi-sicurezza-informatica/convegni_94.aspx Paolo Perego] &lt;br /&gt;
&lt;br /&gt;
6th February: &lt;br /&gt;
&lt;br /&gt;
*14:30 - Costruire Software Sicuro dalle Fondamenta&lt;br /&gt;
&lt;br /&gt;
[http://www.infosecurity.it/IT/eventi-sicurezza-informatica/convegni_128.aspx Antonio Parata] &lt;br /&gt;
&lt;br /&gt;
7th February: &lt;br /&gt;
&lt;br /&gt;
*10:30 - Tu programmi. Io buco.&lt;br /&gt;
&lt;br /&gt;
[http://www.infosecurity.it/IT/eventi-sicurezza-informatica/convegni_137.aspx Luca Carettoni] &lt;br /&gt;
&lt;br /&gt;
[http://www.infosecurity.it Here] you can read more information about it. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== November 30th, 2007 - OWASP-Italy @ Elsag Datamat Security Forum  ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Matteo Meucci was invited to talk about OWASP Guidelines and SDLC Security at the Elsag Datamat Security Forum 2007 &amp;lt;br&amp;gt;Where: Pescara &amp;lt;br&amp;gt;When: 30th November 2007, h.12.30 &lt;br /&gt;
&lt;br /&gt;
=== October 20th, 2007 - OWASP Italy at SMAU E-Academy 2007  ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Last 20th October 2007 we had 5 speeches at SMAU E-Academy 2007, here you can download our presentations: &lt;br /&gt;
&lt;br /&gt;
*Giorgio Fedon, COO at Minded Security:&lt;br /&gt;
&lt;br /&gt;
[http://www.owasp.org/.pdf &amp;quot;Dove sono finiti i miei soldi? Internet Banking e Cross Site Scripting&amp;quot;] (coming soon) [[Image:FedonSMAU07.pdf]] &lt;br /&gt;
&lt;br /&gt;
*Paolo Perego, Senior Security Consultant at Spike Reply:&lt;br /&gt;
&lt;br /&gt;
[https://www.owasp.org/images/7/79/PeregoSMAU07.ppt &amp;quot;The Owasp Orizon project - bring security at the source&amp;quot;] &lt;br /&gt;
&lt;br /&gt;
*Antonio Parata, Security Consultant at eMaze:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Valutazione del rischio tramite la logica fuzzy&amp;quot; (coming soon) [[Image:ParataSMAU07.pdf]] &lt;br /&gt;
&lt;br /&gt;
*Alberto Revelli, Senior Security Consultant at Portcullis Security:&lt;br /&gt;
&lt;br /&gt;
[http://www.owasp.org/images/9/9f/RevelliSMAU07.pdf &amp;quot;Anti-Anti-XSS: bypass delle difese del browser&amp;quot;] &lt;br /&gt;
&lt;br /&gt;
*Stefano Di Paola, CTO at Minded Security:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Cros-site Flashing! Gli attacchi Web di ultima generazione parlano multipiattaforma&amp;quot; (coming soon) [[Image:DiPaolaSMAU07.pdf]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== September 10th, 2007 - OWASP Day WorldWide: &amp;quot;Privacy in the 21st Century&amp;quot;  ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Italy_OWASP_Day_1 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== May 29th, 2007 - Seminar: &amp;quot;Software Security&amp;quot;  ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
*Stefano Di Paola, Paolo Perego and Matteo Meucci will talk at the Seminar: [http://www.sicurinfo.it/informazioni/visinf.asp?IDInfo=246&amp;amp;CAT=53 &amp;quot;Which approaches to Software Security&amp;quot;] organized by Firenze Tecnologia.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== May 15th-17th, 2007 - 6th OWASP AppSec Conference in Italy  ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
*We are in the initial planning stages for the next OWASP Europe conference, which we plan to hold in Italy in May 2007.&lt;br /&gt;
&lt;br /&gt;
[http://www.owasp.org/index.php/6th_OWASP_AppSec_Conference_-_Italy_2007 Here] you can find all the details about the conference, cfp and sponsorship. &lt;br /&gt;
&lt;br /&gt;
=== April 14th, 2007 - Master on Information Security, University of Rome &amp;quot;La Sapienza&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
*We have done a 4h seminar for the students of [http://mastersicurezza.uniroma1.it/ Master on Information Security at &amp;quot;La Sapienza&amp;quot;] for the [http://icsecurity.di.uniroma1.it/dokuwiki/doku.php?id=projects:asp Application Security Project of &amp;quot;La Sapienza&amp;quot; University.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== March 30th, 2007 - University of Rome &amp;quot;La Sapienza&amp;quot;  ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
*Thanks to Prof. Mancini and Roberto D'Addario, we will talk about OWASP at the convention &amp;quot;Institutions, Companies and Information Security: comparing the problems&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[http://w3.uniroma1.it/security/Eventi/eventi.html Here] you can find more details. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== March 1st, 2007 - EuSecWest 07  ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Alberto Revelli and Matteo Meucci presented the new OWASP Testing Guide at [http://www.eusecwest.com/agenda.html EUSecWest]. [http://www.owasp.org/images/e/e9/OWASP_Testing_Guide_Presentation_EUSecWest07.zip Here] you take a look at the presentation. &lt;br /&gt;
&lt;br /&gt;
=== February 6th-8th, 2007 - InfoSecurity  ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
*February 6th:15.30&lt;br /&gt;
&lt;br /&gt;
After the great success obtained form CCC at Berlin, Stefano Di Paola and Giorgio Fedon will talk about:&amp;quot; Web Security Client Side: attacks at Web 2.0&amp;quot; More information [http://www.infosecurity.it/it/infosecurity.aspx?ID_Portale=Z6skuJTSHr%2fjF7janL35RA%3d%3d&amp;amp;ID_Pagina=fF%2b7etXTY34nfmtRTL8Shw%3d%3d&amp;amp;ID_MenuLvl1=mllS8ehP3VwfAOVCVR5ckw%3d%3d&amp;amp;ID_MenuLvl2=fF%2b7etXTY34nfmtRTL8Shw%3d%3d&amp;amp;ID_MenuLvl3=fPsJu6gF%2blBE8LaUGEMYLw%3d%3d&amp;amp;Lang=l51VDVQfL9BdevTm%2fsJx0Q%3d%3d&amp;amp;ID_Evento=aqfi82GOKd6I748s1evI8Q%3d%3d&amp;amp;ExtControl=FQQ52p7AGBUZth0l9Qw6MSOcqIebAeaBYiSFezT6eKEvZkQfILymgy7truUG7ii4 here]. &lt;br /&gt;
&lt;br /&gt;
*February 6th:16.30&lt;br /&gt;
&lt;br /&gt;
After the great effort on the Testing Guide Project, Matteo Meucci and Alberto Revelli will present: &amp;quot;The new OWASP Testing Guide&amp;quot; More Information [http://www.infosecurity.it/it/infosecurity.aspx?ID_Portale=Z6skuJTSHr%2fjF7janL35RA%3d%3d&amp;amp;ID_Pagina=fF%2b7etXTY34nfmtRTL8Shw%3d%3d&amp;amp;ID_MenuLvl1=mllS8ehP3VwfAOVCVR5ckw%3d%3d&amp;amp;ID_MenuLvl2=fF%2b7etXTY34nfmtRTL8Shw%3d%3d&amp;amp;ID_MenuLvl3=fPsJu6gF%2blBE8LaUGEMYLw%3d%3d&amp;amp;Lang=l51VDVQfL9BdevTm%2fsJx0Q%3d%3d&amp;amp;ID_Evento=nq6tSIuRoPVJBanBSsRiSQ%3d%3d&amp;amp;ExtControl=FQQ52p7AGBUZth0l9Qw6MSOcqIebAeaBYiSFezT6eKEvZkQfILymgy7truUG7ii4 here]. &lt;br /&gt;
&lt;br /&gt;
*February 7th:12.30&lt;br /&gt;
&lt;br /&gt;
Authors of innovative SQL injection tools, Alberto Revelli and Antonio Parata will show: &amp;quot;Advanced SQL Injection: testing tools and defensive strategies.&amp;quot; More Information [http://www.infosecurity.it/it/infosecurity.aspx?ID_Portale=Z6skuJTSHr%2fjF7janL35RA%3d%3d&amp;amp;ID_Pagina=fF%2b7etXTY34nfmtRTL8Shw%3d%3d&amp;amp;ID_MenuLvl1=mllS8ehP3VwfAOVCVR5ckw%3d%3d&amp;amp;ID_MenuLvl2=fF%2b7etXTY34nfmtRTL8Shw%3d%3d&amp;amp;ID_MenuLvl3=fPsJu6gF%2blBE8LaUGEMYLw%3d%3d&amp;amp;Lang=l51VDVQfL9BdevTm%2fsJx0Q%3d%3d&amp;amp;ID_Evento=3z04F5BgZRgfU0YX8JRYtA%3d%3d&amp;amp;ExtControl=FQQ52p7AGBUZth0l9Qw6MSOcqIebAeaBYiSFezT6eKEvZkQfILymgy7truUG7ii4 here] &lt;br /&gt;
&lt;br /&gt;
*February 7th:13.30&lt;br /&gt;
&lt;br /&gt;
Author of the new OWASP Orizon project, Paolo Perergo will present:&amp;quot;Secure programming: from theory to practice&amp;quot; More Information [http://www.infosecurity.it/it/infosecurity.aspx?ID_Portale=Z6skuJTSHr%2fjF7janL35RA%3d%3d&amp;amp;ID_Pagina=fF%2b7etXTY34nfmtRTL8Shw%3d%3d&amp;amp;ID_MenuLvl1=mllS8ehP3VwfAOVCVR5ckw%3d%3d&amp;amp;ID_MenuLvl2=fF%2b7etXTY34nfmtRTL8Shw%3d%3d&amp;amp;ID_MenuLvl3=fPsJu6gF%2blBE8LaUGEMYLw%3d%3d&amp;amp;Lang=l51VDVQfL9BdevTm%2fsJx0Q%3d%3d&amp;amp;ID_Evento=9HePIzyo5p29ylpGBl6CiA%3d%3d&amp;amp;ExtControl=FQQ52p7AGBUZth0l9Qw6MSOcqIebAeaBYiSFezT6eKEvZkQfILymgy7truUG7ii4 here]. &lt;br /&gt;
&lt;br /&gt;
=== January 25th, 2007 - Isaca Rome  ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Matteo Meucci will discuss the new [http://www.owasp.org/index.php/Category:OWASP_Testing_Project OWASP Testing Guide v2]&amp;lt;br&amp;gt; For more information:&amp;lt;br&amp;gt; http://www.isacaroma.it/html/GiornateDiStudio.html &lt;br /&gt;
&lt;br /&gt;
=== October 7th, 2006 - SMAU 2006  ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
- &amp;quot;''The quest for secure code: code review and fundamental of secure coding.''&amp;quot; Matteo Meucci will present an introduction to the new OWASP Projects and OWASP-Italy activities. Paolo Perego (sp0nge) will speak about safe coding and the importance of code periodic review as natural software life cycle. Paolo will give a vision on code review and its phases http://www.webb.it/event/eventview/5772 &lt;br /&gt;
&lt;br /&gt;
Here are the presentations: &amp;lt;br&amp;gt; [[Image:Meucci SMAU06.pdf|Meucci_SMAU06]] &amp;lt;br&amp;gt; [[Image:Perego SMAU06.pdf|Perego_SMAU 06]] &lt;br /&gt;
&lt;br /&gt;
- &amp;quot;''Advanced SQL Injection.''&amp;quot; Antonio Parata (S4tan) will explain SQL Injection, and how SQL Inference works on PHP/MySql platform. He will present an open source tool to support the testing. Alberto Revelli (icesurfer) will focus on Microsoft SQL Server: he will perform a live demo of sqlninja (http://sqlninja.sf.net), explaining how to obtain a pseudo-shell over SQL, how to escalate privileges, and how to play with the exotic equation: &amp;quot;SQL Injection + debug.exe + DNS = DOS prompt&amp;quot;&amp;amp;nbsp;! http://www.webb.it/event/eventview/5774 &lt;br /&gt;
&lt;br /&gt;
[[Image:Revelli SMAU06.pdf|Revelli_SMAU06]] &amp;lt;br&amp;gt; [[Image:Parata SMAU06.pdf|Parate_SMAU06]] &amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Image:OWASP-Italy at SMAU06 2.JPG]] Luca, Carlo, Alberto, Antonio, Stefano &amp;lt;br&amp;gt; Matteo, Paolo, Giorgio &lt;br /&gt;
&lt;br /&gt;
=== September 29th, 2006 - OpenExp 2006  ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
September 30th, at 10:45 Antonio Parata (S4tan) will speak about SQL Injection: techniques, tools and practical examples. &lt;br /&gt;
&lt;br /&gt;
Abstract: Antonio will introduce some basic concepts about software security. It will be shown how SQL Inference works on PHP/MySql platform and presented an open source tool to support the testing. Finally will be listed some advises to avoid common bugs. http://www.openexp.it/ &lt;br /&gt;
&lt;br /&gt;
OWASP-Italy will have a stand from September 29th to October 1st. &lt;br /&gt;
&lt;br /&gt;
[[Image:Antonio Matteo Carlo.JPG]] [[Image:Antonio speech.JPG]] [[Image:Carlo.JPG]] [[Image:Claudio Luca.JPG]] [[Image:Mayhem Matteo.JPG]] [[Image:OWASP Banner2.JPG]] [[Image:OWASP Banner.JPG]] &lt;br /&gt;
&lt;br /&gt;
=== June 21th, 2006 - InfoSecurity 2006  ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Alberto Revelli and Matteo Meucci will partecipate as speakers at the seminar: &amp;quot;Web Application Security: guidelines and security auditing for web applications&amp;quot;. The event is organized and managed by the CLUSIT. &lt;br /&gt;
&lt;br /&gt;
Where: Sheraton Roma Hotel - Viale Del Pattinaggio, 100 When: 10,30 - 17,00 Who: Matteo Meucci and Alberto Revelli Link: http://www.infosecurity.it/Roma/programma.php &lt;br /&gt;
&lt;br /&gt;
Agenda: -- I Session -- Introduction to Web Application Security • Which are the risks? • Risk assessment of a web application • Core pillars of web security How to develop secure web applications: • Guidelines and case-studies &lt;br /&gt;
&lt;br /&gt;
-- II Session -- How to realize a security audit of a web application • The methodology OWASP Penetration Testing • The tools: OWASP WebScarab • Hands-on web application vulnerabilities: OWASP WebGoat • Advanced SQL Injection. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== March 1st, 2006 - OWASP-Boston, Microsoft  ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Thanks to Jim Weiler (OWASP-Boston Chair), Matteo Meucci has presented &amp;quot;Anatomy of two web attacks&amp;quot; at the OWASP-Boston meeting of march. [http://www.owasp.org/index.php/Boston More info here] &lt;br /&gt;
&lt;br /&gt;
=== November 5th, 2005 - IDC - European Banking Forum  ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Thanks to Raoul Chiesa (Director of Communication OWASP-Italy), we have had a great speech at the IDC European IT Banking Forum 2005 (18 Nov 2005). http://www.idc.com/italy/events/banking05/banking05_agenda.jsp Agenda: &lt;br /&gt;
&lt;br /&gt;
*New standards for the ICT security auditing in the italian banking scenario: OSSTMM and OWASP. Raoul Chiesa, Director of Communications, ISECOM/OWASP-Italy and Matteo Meucci, OWASP-Italy Chair &lt;br /&gt;
*Workshop: unusual form of attacks and banking system violation: live experience. Raoul Chiesa, Director of Communications, ISECOM/OWASP-Italy.&lt;br /&gt;
&lt;br /&gt;
You can download the report [http://cdn.idc.com/italy/downloads/report_banking05_eng.pdf here]. &lt;br /&gt;
&lt;br /&gt;
You can download the Case-Study of a vulnerable Home Banking Web Application [http://www.owasp.org/docroot/owasp/misc/IDC_BankingForum05v1.ppt here]. &lt;br /&gt;
&lt;br /&gt;
=== October 5th, 2005 - OWASP-Italy@SMAU2005  ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
SMAU is the 42a International ICT &amp;amp;amp; Consumer Electronics Exhibition for Italy. Alberto Revelli (our Technical Director) and Matteo Meucci have conducted a seminar talking about Web Application Security. Alberto has presented his new project: [http://sqlninja.sourceforge.net sqlninja]. Very cool!! &lt;br /&gt;
&lt;br /&gt;
http://www.webb.it/event/eventview/4488/1/progetto_owasp__case_study_di_applicativi_web_vulnerabili &lt;br /&gt;
&lt;br /&gt;
=== May 25th, 2005 - ISACA Rome 2nd meeting  ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
May 25th we'll be in ISACA Rome to present OWASP WebGoat and a real case of a Web Application Vulnerability. Every one is invited to join the meeting. &lt;br /&gt;
&lt;br /&gt;
Here is the agenda: 14.30 Registration 14.45 Matteo Meucci - Web Application Security Phase II - OWASP WebScarab and PenTest Checklist &lt;br /&gt;
&lt;br /&gt;
*A case-study of a Web Application Vulnerability: MMS Spoofing&lt;br /&gt;
&lt;br /&gt;
--- Web Application analysis --- Authentication and Billing of the MMS service --- Vulnerabilities --- Attack Analysis &lt;br /&gt;
&lt;br /&gt;
*Learning the most common web application vulnerabilities: OWASP WebGoat&lt;br /&gt;
&lt;br /&gt;
--- Http Basics --- HTML Clues --- Hidden Field Tampering --- How to spoof a Session Cookie --- Stored Cross Site Scripting --- Command Injection --- SQL Injection --- Fail Open Authentication &lt;br /&gt;
&lt;br /&gt;
The meeting is hold at: Via Volturno, 65 (Rome) - Auditorium ATAC &lt;br /&gt;
&lt;br /&gt;
You can download the presentation [http://www.isacaroma.it/pdf/050525/OWASP.zip here]. &lt;br /&gt;
&lt;br /&gt;
=== May 18th, 2005 - Workshop on Computer Crime 2005  ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; May 18th, 2005 OWASP-Italy is invited to present OWASP Top 10 to the &amp;quot;Workshop on Computer Crime 2005&amp;quot; titled: &amp;quot;EVOLUZIONI NORMATIVE E RECENTI PROBLEMATICHE DI SICUREZZA&amp;quot; &lt;br /&gt;
&lt;br /&gt;
The meeting is held at: Sala delle conferenze dell'Istituto Centrale della Banche Popolari Italiane Via Verziere, 11 &lt;br /&gt;
&lt;br /&gt;
You can download the presentation [http://www.owasp.org/images/a/aa/Top10-ComputerCrimes.ppt here]. &lt;br /&gt;
&lt;br /&gt;
=== March 31th, 2005 - ISACA Rome meeting  ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
March 31th we'll be in ISACA Rome to present OWASP and the Web Application Security. Every one is invited to join the meeting. &lt;br /&gt;
&lt;br /&gt;
Here is the agenda: 14.15 Registration 14.30 Matteo Meucci - Web Application Security - OWASP Guide: how to build secure web application - How to test your Web Application: WebScarab and the WebApp PenTest Checklist - How to learn the most common web application vulnerability: WebGoat - The Top Ten WebApp vulnerabilities - Common error on developing Web Application: Authentication mechanisms not &amp;quot;secure&amp;quot; Buffer Overflow and crash of the service Thief of identity: Cross Site Scripting Manipulation of company data: SQL Injection Reserved information: misconfiguration Bad session management and thief of identity - OWASP-Italy: projects and next challenges &lt;br /&gt;
&lt;br /&gt;
The meeting is hold at: Via Volturno, 65 (Rome) - Auditorium ATAC http://www.isacaroma.it/html/GiornateDiStudio.html &lt;br /&gt;
&lt;br /&gt;
You can download the presentation [http://www.isacaroma.it/pdf/050331/meucci.zip here]. &lt;br /&gt;
&lt;br /&gt;
=== March 21th, 2005 - OWASP-Italy conducts a seminar in AlmaWeb  ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
March, the 21th OWASP-Italy has been invited at the University of Bologna to conduct a seminar regards to [http://www.almaweb.unibo.it/830.dyn Master in Management and Information Technology] titled “Web Application Security and OWASP”. &lt;br /&gt;
&lt;br /&gt;
Here is the agenda: - OWASP &amp;amp;amp; Web Application Security - Common Web Application Vulnerabilities - A real case of web application vulnerability: MMS Spoofing&amp;amp;amp;Billing - Training: WebGoat &lt;br /&gt;
&lt;br /&gt;
==== Publications  ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== October 2009 Interview on &amp;quot;Il sole 24 ore&amp;quot;  ===&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[http://www.owasp.org/images/5/5c/Nova09.pdf Gary McGraw and Matteo Meucci] interviewed by NOVA, talking about BSIMM and OWASP.&lt;br /&gt;
&lt;br /&gt;
=== March, 2007 Interview on HTML.it  ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Luca Carettoni has published an interview to OWASP-Italy (OWASP interviews OWASP&amp;amp;nbsp;:) ) [http://blog.html.it/archivi/2007/02/26/quattro-chiacchiere-con-owasp-italia.php Here] the full article. &lt;br /&gt;
&lt;br /&gt;
=== October, 2006 ISACA Roma interviews OWASP-Italy  ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
After the speeches that OWASP-Italy has done at [http://www.smau.it/catnews.asp?l=2&amp;amp;codcat=385 SMAU E-Academy 2006], ISACA Roma has interviewed some of the people of the Italian chapter. Follow the links for the full interviews (in italian): &amp;lt;br&amp;gt; [[http://www.isacaroma.it/html/newsletter/node/276 Matteo Meucci]] [[http://www.isacaroma.it/html/newsletter/node/287 Alberto Revelli ]] [[http://www.isacaroma.it/html/newsletter/node/282 Antonio Parata]] [[http://www.isacaroma.it/html/newsletter/node/285 Paolo Perego]] [[http://www.isacaroma.it/html/newsletter/node/322 Stefano Di Paola &amp;amp;amp; Giorgio Fedon]] &lt;br /&gt;
&lt;br /&gt;
=== Aug, 2006 - Article on Banca Finanza magazine  ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Banca Finanza, the italian magazine about finance and banking, has interviewed Raoul Chiesa talking about the new risks for the on-line banking security. Raoul speaks about OWASP and web application security [[Media:042006BF.pdf]] &lt;br /&gt;
&lt;br /&gt;
=== June, 2006 - Quaderno CLUSIT  ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
CLUSIT has published a book entitled: &amp;quot;La verifica della sicurezza di applicazioni Web-based e il progetto OWASP&amp;quot;. Several OWASP-Italy members (R.Chiesa, L.De Santis, M.Graziani, L.Legato, M.Meucci, A.Revelli) have contributed to the writing. The document is now reserved to CLUSIT members, but it will be public in about 3 months. &lt;br /&gt;
&lt;br /&gt;
=== June, 2006 - Paper on SQL Injection and Inference on PHP/MySQLInference  ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Antonio &amp;quot;s4tan&amp;quot; Parata has published an article about SQL Injection based on Inference for testing web application on PHP/MySQL platform. [http://www.ictsc.it/papers/sqlInferenceOnMySql.html Here]you can read the full article. &lt;br /&gt;
&lt;br /&gt;
=== May, 2006 - Published an article about OWASP and Top-10 Vulnerabilities  ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Luca Carettoni has published the article &amp;quot;La sicurezza delle applicazioni Web secondo l'Open Web Application Security Project&amp;quot;. [http://sicurezza.html.it/articoli/leggi/1721/la-sicurezza-delle-applicazioni-web-secondo-lopen-/ Here]you can read the full article. &lt;br /&gt;
&lt;br /&gt;
=== June, 2005 - OWASP Pen Test Checklist v 1.1 in Italian  ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Thanks to Massimiliano Graziani we have translated in italian the &amp;quot;OWASP Pen Test Checklist v.1.1&amp;quot;. You can download it [http://www.owasp.org/documentation/testing.html here.] Thanks to the collaboration with CLUSIT, this doc is available also [http://www.clusit.it/whitepapers.htm here.] &lt;br /&gt;
&lt;br /&gt;
=== May, 2005 - Isaca Roma Newsletter about OWASP-Italy  ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
ISACA Roma Newsletter has published an [http://www.isacaroma.it/html/newsletter/?q=node/78 interview to OWASP-Italy] &lt;br /&gt;
&lt;br /&gt;
=== April, 2005 - Published &amp;quot;MMS Spoofing&amp;quot;  ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
We have published a presentation describing a detailed case study of a web application vulnerabilty [http://www.owasp.org/images/7/72/MMS_Spoofing.ppt (MMS Spoofing)]. &lt;br /&gt;
&lt;br /&gt;
Jim Hewitt, CISSP PMP working at CGI-AMS, affirms (slide#78): &amp;quot;Very interesting analysis of spoofed cell phone messaging and fraudulent billing&amp;quot;. See: www.techvalleynyissa.org/Resources/2005_07_WebApplicationSecurity.ppt &lt;br /&gt;
&lt;br /&gt;
=== April, 2005 - Published an article on ICT Security magazine  ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
We have written an article describing the OWASP projects, Web Application Security and the next challenges. '''ICT Security'''.(the italian magazine about Information Security) has published the article on the number 33 - April 2005. &lt;br /&gt;
&lt;br /&gt;
=== March, 2005 - OWASP Top-10 in Italian  ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Thanks to Matteo Paolelli we have translated the '''&amp;quot;OWASP Top Ten Vulnerabilties in Web Application Security&amp;quot;''' in italian language. You can download it [http://www.owasp.org/docroot/owasp/projects/topten/OWASPTopTen2004-ITA.pdf here]. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Tools &amp;amp;amp; Research  ====&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Nov, 2007 - sqlmap v0.5  ===&lt;br /&gt;
&lt;br /&gt;
Bernardo Damele and Daniele Bellucci have released the fifth versions of the tool [http://sqlmap.sourceforge.net sqlmap]. sqlmap is an automatic SQL injection tool entirely developed in Python. It is capable to perform an extensive database management system back-end fingerprint, retrieve remote DBMS databases, usernames, tables, columns, enumerate entire DBMS, read system files and much more taking advantage of web application programming security flaws that lead to SQL injection vulnerabilities. &lt;br /&gt;
&lt;br /&gt;
You can download the latest stable version from its [https://sourceforge.net/project/showfiles.php?group_id=171598&amp;amp;package_id=196107 SourceForge File List page] or the latest development version from its [https://sqlmap.svn.sourceforge.net/svnroot/sqlmap SourceForge SVN repository]. &lt;br /&gt;
&lt;br /&gt;
=== Dec, 2006 - sqlmap v0.2  ===&lt;br /&gt;
&lt;br /&gt;
Bernardo Damele and Daniele Bellucci have released a second version of the tool &amp;quot;sqlmap&amp;quot; for Automatic Blind SQL Injection. [http://sqlmap.sourceforge.net/ Here] you can download the tool &lt;br /&gt;
&lt;br /&gt;
=== September, 2006 - Wisec Project  ===&lt;br /&gt;
&lt;br /&gt;
Stefano Di Paola is developing Wisec - The Wiki Security Project [http://www.wisec.it Here] you can accesses the project. &lt;br /&gt;
&lt;br /&gt;
=== July, 2006 - Sqlmap v0.0.1  ===&lt;br /&gt;
&lt;br /&gt;
Daniele Bellucci has developed a first version of the tool &amp;quot;sqlmap&amp;quot; for Automatic Blind SQL Injection. [http://www.linux.it/~belch/?p=17 Here] you can download the tool &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP_Chapter]]&lt;br /&gt;
[[Category:Europe]]&lt;/div&gt;</summary>
		<author><name>Luca Carettoni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_MS_Access&amp;diff=157632</id>
		<title>Testing for MS Access</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_MS_Access&amp;diff=157632"/>
				<updated>2013-09-01T06:55:45Z</updated>
		
		<summary type="html">&lt;p&gt;Luca Carettoni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
== Short Description of the Issue == &lt;br /&gt;
As explained in the generic [[SQL injection]] section, SQL injection vulnerabilities occur whenever user-supplied input is used during the construction of a SQL query without being adequately constrained or sanitized. This class of vulnerabilities allows an attacker to execute SQL code under the privileges of the user that is used to connect to the database.&lt;br /&gt;
&lt;br /&gt;
In this section, relevant SQL injection techniques that utilize specific features of [http://en.wikipedia.org/wiki/Microsoft_Access Microsoft Access] will be discussed.&lt;br /&gt;
&lt;br /&gt;
== Black Box Testing and Example ==&lt;br /&gt;
&lt;br /&gt;
=== Fingerprinting ===&lt;br /&gt;
&lt;br /&gt;
Fingerprinting the specific database technology while testing SQL-powered application is the first step to properly asses potential vulnerabilities.&lt;br /&gt;
A common approach involves injecting standard SQL injection attack patterns (e.g. single quote, double quote, ...) in order to trigger database exceptions.&lt;br /&gt;
 &lt;br /&gt;
Assuming that the application does not handle exceptions with custom pages, it is possible to fingerprint the underline DBMS by observing error messages. &lt;br /&gt;
Depending on the specific web technology used, MS Access driven applications will respond with one of the following errors:&lt;br /&gt;
&lt;br /&gt;
 Fatal error: Uncaught exception 'com_exception' with message Source: Microsoft JET Database Engine&lt;br /&gt;
&lt;br /&gt;
or &lt;br /&gt;
&lt;br /&gt;
 Microsoft JET Database Engine error '80040e14'&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
 Microsoft Office Access Database Engine&lt;br /&gt;
&lt;br /&gt;
In all cases, we have a confirmation that we're testing an application using MS Access database.&lt;br /&gt;
&lt;br /&gt;
=== Basic Testing ===&lt;br /&gt;
&lt;br /&gt;
Unfortunately, MS Access doesn't support typical operators that are traditionally used during SQL injection testing, including:&lt;br /&gt;
&lt;br /&gt;
* No comments characters&lt;br /&gt;
* No stacked queries&lt;br /&gt;
* No LIMIT operator&lt;br /&gt;
* No SLEEP or BENCHMARK alike operators&lt;br /&gt;
* and many others&lt;br /&gt;
&lt;br /&gt;
Nevertheless, it is possible to emulate those functions by combining multiple operators or by using alternative techniques.&lt;br /&gt;
&lt;br /&gt;
As mentioned, it is not possible to use the trick of inserting the characters &amp;lt;code&amp;gt;/*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; in order to truncate the query. However, we can fortunately bypass this limitation by injecting a 'null' character. Using a null byte &amp;lt;code&amp;gt;%00&amp;lt;/code&amp;gt; within &lt;br /&gt;
a SQL query results in MS Access ignoring all remaining characters. This can be explained by considering that all strings are NULL terminated in the internal representation used by the database. It is worth mentioning that the 'null' character can sometimes cause troubles too as it may truncate strings at the web server level. In those situations, we can however employ another character: 0x16 (%16 in URL encoded format).&lt;br /&gt;
&lt;br /&gt;
Considering the following query:&lt;br /&gt;
&lt;br /&gt;
 SELECT [username],[password] FROM users WHERE [username]='$myUsername' AND [password]='$myPassword'&lt;br /&gt;
&lt;br /&gt;
We can truncate the query with the following two URLs:&lt;br /&gt;
&lt;br /&gt;
 http://www.example.com/page.asp?user=admin'%00&amp;amp;pass=foo&lt;br /&gt;
 http://www.example.com/page.app?user=admin'%16&amp;amp;pass=foo&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;LIMIT&amp;lt;/code&amp;gt; operator is not implemented in MS Access, however it is possible to limit the number of results by using the &amp;lt;code&amp;gt;TOP&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;LAST&amp;lt;/code&amp;gt; operators instead.&lt;br /&gt;
&lt;br /&gt;
 http://www.example.com/page.app?id=2'+UNION+SELECT+TOP+3+name+FROM+appsTable%00&lt;br /&gt;
&lt;br /&gt;
By combining both operators, it is possible to select specific results.&lt;br /&gt;
&lt;br /&gt;
String concatenation is possible by using &amp;lt;code&amp;gt;&amp;amp; (%26)&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;+ (%2b)&amp;lt;/code&amp;gt; characters. &lt;br /&gt;
&lt;br /&gt;
There are also many other functions that can be used while testing SQL injection, including but not limited to:&lt;br /&gt;
* ASC: Obtain the ASCII value of a character passed as input&lt;br /&gt;
* CHR: Obtain the character of the ASCII value passed as input&lt;br /&gt;
* LEN: Return the length of the string passed as parameter&lt;br /&gt;
* IIF: Is the IF construct, for example the following statement IIF(1=1, 'a', 'b') return 'a'&lt;br /&gt;
* MID: This function allows you to extract substring, for example the following statement mid('abc',1,1) return 'a'&lt;br /&gt;
* TOP: This function allows you to specify the maximum number of results that the query should return from the top. For example TOP 1 will return only 1 row.&lt;br /&gt;
* LAST: This function is used to select only the last row of a set of rows. For example the following query SELECT last(*) FROM users will return only the last row of the result.&lt;br /&gt;
&lt;br /&gt;
Some of these operators are essential to exploit blind SQL injections. For other advanced operators, please refer to the documents in the references.&lt;br /&gt;
&lt;br /&gt;
==== Attributes Enumeration ====&lt;br /&gt;
&lt;br /&gt;
In order to enumerate the column of a database table, it is possible to use a common error-based technique. &lt;br /&gt;
In short, we can obtain the attributes name by analyzing error messages and repeating the query with different selectors. For example,&lt;br /&gt;
assuming that we know the existence of a column, we can also obtain the name of the remaining attributes with the following query:&lt;br /&gt;
&lt;br /&gt;
 ' GROUP BY Id%00&lt;br /&gt;
&lt;br /&gt;
In the error message received, it is possible to observe the name of the next column. At this point, we can iterate the&lt;br /&gt;
method until we obtain the name of all attributes. If we don't know the name of the first attribute, we can still insert a fictitious column name and obtain the name of the first attribute within the error message.&lt;br /&gt;
&lt;br /&gt;
==== Obtaining Database Schema ====&lt;br /&gt;
&lt;br /&gt;
Various system tables exist by default in MS Access that can be potentially used to obtain table names and columns. Unfortunately, in the default configuration of recent MS Access database releases, these tables are not accessible. Nevertheless, it is always worth trying:&lt;br /&gt;
&lt;br /&gt;
* MSysObjects&lt;br /&gt;
* MSysACEs&lt;br /&gt;
* MSysAccessXML&lt;br /&gt;
&lt;br /&gt;
For example, if a union SQL injection vulnerability exists, you can use the following query:&lt;br /&gt;
&lt;br /&gt;
 ' UNION SELECT Name FROM MSysObjects WHERE Type = 1%00&lt;br /&gt;
&lt;br /&gt;
Alternatively, it is always possible to bruteforce the database schema by using a standard wordlist (e.g. [http://code.google.com/p/fuzzdb/ FuzzDb]).&lt;br /&gt;
&lt;br /&gt;
In some cases, developers or system administrators do not realize that including the actual ''.mdb'' file within the application webroot can allow to download the entire database. Database filenames can be inferred with the following query:&lt;br /&gt;
&lt;br /&gt;
 http://www.example.com/page.app?id=1'+UNION+SELECT+1+FROM+name.table%00&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; is the ''.mdb'' filename and &amp;lt;code&amp;gt;table&amp;lt;/code&amp;gt; is a valid database table. &lt;br /&gt;
In case of password protected databases, multiple software utilities can be used to crack the password. Please refer to the references.&lt;br /&gt;
&lt;br /&gt;
=== Blind SQL Injection Testing ===&lt;br /&gt;
&lt;br /&gt;
[[Blind SQL Injection]] vulnerabilities are by no means the most easily exploitable SQL injections while testing real-life applications. In case of recent versions of MS Access, it is also not feasible to execute shell commands or read/write arbitrary files. &lt;br /&gt;
&lt;br /&gt;
In case of blind SQL injections, the attacker can only infer the result of the query by evaluating time differences or application responses. It is supposed that the reader already knows the theory behind blind SQL injection attacks, as the remaining part of this section will focus on MS Access specific details.&lt;br /&gt;
&lt;br /&gt;
The following example is used:&lt;br /&gt;
&lt;br /&gt;
 http://www.example.com/index.php?myId=[sql]&lt;br /&gt;
&lt;br /&gt;
where the id parameter is used within the following query:&lt;br /&gt;
&lt;br /&gt;
 SELECT * FROM orders WHERE [id]=$myId&lt;br /&gt;
&lt;br /&gt;
Let's consider the &amp;lt;code&amp;gt;myId&amp;lt;/code&amp;gt; parameter vulnerable to blind SQL injection. As an attacker, we want to extract the content of column 'username' in the table 'users', assuming that we have already disclosed the database schema.&lt;br /&gt;
&lt;br /&gt;
A typical query that can be used to infer the first character of the username of the 10th rows is:&lt;br /&gt;
&lt;br /&gt;
 http://www.example.com/index.php?id=IIF((select%20MID(LAST(username),1,1)%20from%20(select%20TOP%2010%20username%20from%20users))='a',0,'no') &lt;br /&gt;
&lt;br /&gt;
If the first character is 'a', the query will return 0 or otherwise the string 'no'.&lt;br /&gt;
&lt;br /&gt;
By using a combination of the IFF, MID, LAST and TOP functions, it is possible to extract the first character of the username on a specifically selected row. As the inner query returns a set of records, and not just one, it is not possible to use it directly. Fortunately, we can combine multiple functions to extract a specific string. &lt;br /&gt;
&lt;br /&gt;
Let's assume that we want to retrieve the username of the 10th row. First, we can use the TOP function to select the first ten rows using the following query:&lt;br /&gt;
&lt;br /&gt;
 SELECT TOP 10 username FROM users&lt;br /&gt;
&lt;br /&gt;
Then, using this subset, we can extract the last row by using the LAST function. Once we have only one row and exactly the row containing our string, we can use the IFF, MID and LAST functions to infer the actual value of the username. In our example, we employ IFF to return a number or a string. Using this trick, we can distinguish whether we have a true response or not, by observing application error responses. As &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; is numeric, the comparison with a string results in a SQL error that can be potentially leaked by &amp;lt;code&amp;gt;500 Internal Server Error pages&amp;lt;/code&amp;gt;. Otherwise, a standard &amp;lt;code&amp;gt;200 OK&amp;lt;/code&amp;gt; page will be likely returned.&lt;br /&gt;
&lt;br /&gt;
For example, we can have the following query:&lt;br /&gt;
&lt;br /&gt;
 http://www.example.com/index.php?id='%20AND%201=0%20OR%20'a'=IIF((select%20MID(LAST(username),1,1)%20from%20(select%20TOP%2010%20username%20from%20users))='a','a','b')%00&lt;br /&gt;
&lt;br /&gt;
that is TRUE if the first character is 'a' or false otherwise.&lt;br /&gt;
&lt;br /&gt;
As mentioned, this method allows to infer the value of arbitrary strings within the database:&lt;br /&gt;
&lt;br /&gt;
# By trying all printable values, until we find a match&lt;br /&gt;
# By inferring the length of the string using the LEN function, or by simply stopping after we have found all characters&lt;br /&gt;
&lt;br /&gt;
Time-based blind SQL injections are also possible by abusing [http://technet.microsoft.com/it-it/library/cc512676%28en-us%29.aspx heavy queries].&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html&lt;br /&gt;
* http://packetstormsecurity.com/files/65967/Access-Through-Access.pdf.html&lt;br /&gt;
* http://seclists.org/pen-test/2003/May/74&lt;br /&gt;
* http://www.techonthenet.com/access/functions/index_alpha.php&lt;br /&gt;
* http://en.wikipedia.org/wiki/Microsoft_Access&lt;/div&gt;</summary>
		<author><name>Luca Carettoni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_MS_Access&amp;diff=157631</id>
		<title>Testing for MS Access</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_MS_Access&amp;diff=157631"/>
				<updated>2013-09-01T06:24:00Z</updated>
		
		<summary type="html">&lt;p&gt;Luca Carettoni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
== Short Description of the Issue == &lt;br /&gt;
As explained in the generic [[SQL injection]] section, SQL injection vulnerabilities occur whenever user-supplied input is used during the construction of a SQL query without being adequately constrained or sanitized. This class of vulnerabilities allows an attacker to execute SQL code under the privileges of the user that is used to connect to the database.&lt;br /&gt;
&lt;br /&gt;
In this section, relevant SQL injection techniques that utilize specific features of [http://en.wikipedia.org/wiki/Microsoft_Access Microsoft Access] will be discussed.&lt;br /&gt;
&lt;br /&gt;
== Black Box Testing and Example ==&lt;br /&gt;
&lt;br /&gt;
=== Fingerprinting ===&lt;br /&gt;
&lt;br /&gt;
Fingerprinting the specific database technology while testing SQL-powered application is the first step to properly asses potential vulnerabilities.&lt;br /&gt;
A common approach involves injecting standard SQL injection attack patterns (e.g. single quote, double quote, ...) in order to trigger database exceptions.&lt;br /&gt;
 &lt;br /&gt;
Assuming that the application does not handle exceptions with custom pages, it is possible to fingerprint the underline DBMS by observing error messages. &lt;br /&gt;
Depending on the specific web technology used, MS Access driven applications will respond with one of the following errors:&lt;br /&gt;
&lt;br /&gt;
 Fatal error: Uncaught exception 'com_exception' with message Source: Microsoft JET Database Engine&lt;br /&gt;
&lt;br /&gt;
or &lt;br /&gt;
&lt;br /&gt;
 Microsoft JET Database Engine error '80040e14'&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
 Microsoft Office Access Database Engine&lt;br /&gt;
&lt;br /&gt;
In all cases, we have a confirmation that we're testing an application using MS Access database.&lt;br /&gt;
&lt;br /&gt;
=== Basic Testing ===&lt;br /&gt;
&lt;br /&gt;
Unfortunately, MS Access doesn't support typical operators that are traditionally used during SQL injection testing, including:&lt;br /&gt;
&lt;br /&gt;
* No comments characters&lt;br /&gt;
* No stacked queries&lt;br /&gt;
* No LIMIT operator&lt;br /&gt;
* No SLEEP or BENCHMARK alike operators&lt;br /&gt;
* and many others&lt;br /&gt;
&lt;br /&gt;
Nevertheless, it is possible to emulate those functions by combining multiple operators or by using alternative techniques.&lt;br /&gt;
&lt;br /&gt;
As mentioned, it is not possible to use the trick of inserting the characters &amp;lt;code&amp;gt;/*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; in order to truncate the query. However, we can fortunately bypass this limitation by injecting the 'null' character. Using a null byte &amp;lt;code&amp;gt;%00&amp;lt;/code&amp;gt; within &lt;br /&gt;
a SQL query will result in MS Access ignoring all remaining characters. This can be explained by considering that all strings are NULL terminated in the internal representation used by the database. It is worth mentioning that the 'null' character can sometimes cause troubles too as it may truncate strings at the web server level. In those situations, we can however employ another character: 0x16 (%16 in URL encoded format).&lt;br /&gt;
&lt;br /&gt;
Considering the following query:&lt;br /&gt;
&lt;br /&gt;
 SELECT [username],[password] FROM users WHERE [username]='$myUsername' AND [password]='$myPassword'&lt;br /&gt;
&lt;br /&gt;
We can truncate the query with the following two URLs:&lt;br /&gt;
&lt;br /&gt;
 http://www.example.com/page.asp?user=admin'%00&amp;amp;pass=foo&lt;br /&gt;
 http://www.example.com/page.app?user=admin'%16&amp;amp;pass=foo&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;LIMIT&amp;lt;/code&amp;gt; operator is not implemented in MS Access, however it is possible to limit the number of results by using the &amp;lt;code&amp;gt;TOP&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;LAST&amp;lt;/code&amp;gt; operators instead.&lt;br /&gt;
&lt;br /&gt;
 http://www.example.com/page.app?id=2'+UNION+SELECT+TOP+3+name+FROM+appsTable%00&lt;br /&gt;
&lt;br /&gt;
By combining both operators, it is possible to select specific results.&lt;br /&gt;
&lt;br /&gt;
String concatenation is possible by using &amp;lt;code&amp;gt;&amp;amp; (%26)&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;+ (%2b)&amp;lt;/code&amp;gt; characters. &lt;br /&gt;
&lt;br /&gt;
There are also many other functions that can be used while testing SQL injection, including but not limited to:&lt;br /&gt;
* ASC: Obtain the ASCII value of a character passed as input&lt;br /&gt;
* CHR: Obtain the character of the ASCII value passed as input&lt;br /&gt;
* LEN: Return the length of the string passed as parameter&lt;br /&gt;
* IIF: Is the IF construct, for example the following statement IIF(1=1, 'a', 'b') return 'a'&lt;br /&gt;
* MID: This function allows you to extract substring, for example the following statement mid('abc',1,1) return 'a'&lt;br /&gt;
* TOP: This function allows you to specify the maximum number of results that the query should return from the top. For example TOP 1 will return only 1 row.&lt;br /&gt;
* LAST: This function is used to select only the last row of a set of rows. For example the following query SELECT last(*) FROM users will return only the last row of the result.&lt;br /&gt;
&lt;br /&gt;
Some of these functions are essential to exploit blind SQL injections. For other advanced operators, please refer to the references.&lt;br /&gt;
&lt;br /&gt;
==== Attributes Enumeration ====&lt;br /&gt;
&lt;br /&gt;
In order to enumerate the attributes of a query, it is possible to use a common error-based technique. &lt;br /&gt;
In short, we can obtain the attributes name by analyzing error messages and repeating the query with different selectors. For example,&lt;br /&gt;
assuming that we know the existence of a parameter, we can also obtain the name of the remaining attributes with the following query:&lt;br /&gt;
&lt;br /&gt;
 ' GROUP BY Id%00&lt;br /&gt;
&lt;br /&gt;
In the error message received we can see that the name of the next attribute is shown. At this point, we iterate the&lt;br /&gt;
method until we obtain the name of all attributes. If we don't know the name of at least&lt;br /&gt;
one attribute, we can insert a fictitious column name and obtain the name of the first attribute within the error message.&lt;br /&gt;
&lt;br /&gt;
==== Obtaining Database Schema ====&lt;br /&gt;
&lt;br /&gt;
Various system tables exist by default in MS Access that can be potentially used to obtain table names. Unfortunately, in the default configuration of recent MS Access database releases, these tables are not accessible. Nevertheless, it is always worth trying.&lt;br /&gt;
&lt;br /&gt;
* MSysObjects&lt;br /&gt;
* MSysACEs&lt;br /&gt;
* MSysAccessXML&lt;br /&gt;
&lt;br /&gt;
For example, if a union SQL injection vulnerability exists, you can use the following query:&lt;br /&gt;
&lt;br /&gt;
 ' UNION SELECT Name FROM MSysObjects WHERE Type = 1%00&lt;br /&gt;
&lt;br /&gt;
Alternatively, it is always possible to bruteforce the database schema by using a standard wordlist (e.g. [http://code.google.com/p/fuzzdb/ FuzzDb]).&lt;br /&gt;
&lt;br /&gt;
In some cases, developers or system administrators do not realize that including the actual ''.mdb'' file within the application webroot can allow to download to entire database. Database filename can be inferred with the following query:&lt;br /&gt;
&lt;br /&gt;
 http://www.example.com/page.app?id=1'+UNION+SELECT+1+FROM+name[i].table%00&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;code&amp;gt;name[i]&amp;lt;/code&amp;gt; is the .mdb filename and &amp;lt;code&amp;gt;table&amp;lt;/code&amp;gt; is a valid database table. &lt;br /&gt;
In case of password protected databases, multiple software utilities can be used to crack the password. Please refer to the references.&lt;br /&gt;
&lt;br /&gt;
=== Blind SQL Injection Testing ===&lt;br /&gt;
&lt;br /&gt;
[[Blind SQL Injection]] vulnerabilities are by no means the most frequent type of vulnerability that you will find while testing real-life vulnerabilities. Generally, you find an SQL injection in a parameter where no union query is possible. In case of MS Access, it is also not possible to execute shell commands or easily read/write arbitrary file. &lt;br /&gt;
&lt;br /&gt;
In case of blind SQL injections, the attacker can only infer the result of the query by evaluating time differences or application responses. It is supposed that the reader already knows the theory behind blind SQL injection attacks, as the remaining part of this section will focus on MS Access specific details.&lt;br /&gt;
&lt;br /&gt;
For our test we take the following example:&lt;br /&gt;
&lt;br /&gt;
 http://www.example.com/index.php?myId=[sql]&lt;br /&gt;
&lt;br /&gt;
where the id parameter is used in the following query:&lt;br /&gt;
&lt;br /&gt;
 SELECT * FROM orders WHERE [id]=$myId&lt;br /&gt;
&lt;br /&gt;
Let's consider the &amp;lt;code&amp;gt;myId&amp;lt;/code&amp;gt; parameter vulnerable to blind SQL injection. As an attacker, we want to extract the content of column 'username' in the table 'users', assuming that we have already disclosed the database schema thanks to the techniques discussed above).&lt;br /&gt;
&lt;br /&gt;
A typical query that can be used to infer the first character of the username of the 10th rows is:&lt;br /&gt;
&lt;br /&gt;
 http://www.example.com/index.php?id=IIF((select%20MID(LAST(username),1,1)%20from%20(select%20TOP%2010%20username%20from%20users))='a',0,'ko') &lt;br /&gt;
&lt;br /&gt;
If the first character is 'a', the query will return 0 (&amp;quot;true response&amp;quot;), otherwise a 'ko' string.&lt;br /&gt;
&lt;br /&gt;
By using a combination of the IFF, MID, LAST and TOP functions, it is possible to extract the first character of the username on a specifically selected row. As the inner query returns a set of records, and not just one, it is not possible to use it directly. Fortunately, we can combine multiple functions to extract the exact string. &lt;br /&gt;
&lt;br /&gt;
Let's assume that we want to infer the username of the 10th row. First, we use the TOP function to select the first ten rows using the following query:&lt;br /&gt;
&lt;br /&gt;
 SELECT TOP 10 username FROM users&lt;br /&gt;
&lt;br /&gt;
Then, using this subset, we extract the last row by using the LAST function. Once we have only one row and exactly the row containing our string, we can use the IFF, MID and LAST functions to infer the actual value of the username. In our example, we employ IFF to return a number or a string. Using this trick we can distinguish whether we have a true response or not, by observing application error responses. As &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; is of a numeric type, the comparison with a string results in a SQL error that can be potentially leaked by &amp;lt;code&amp;gt;500 Internal Server Error pages&amp;lt;/code&amp;gt;. Otherwise, a standard &amp;lt;code&amp;gt;200 OK&amp;lt;/code&amp;gt; returns.&lt;br /&gt;
&lt;br /&gt;
For example, we can have the following query:&lt;br /&gt;
&lt;br /&gt;
 http://www.example.com/index.php?id='%20AND%201=0%20OR%20'a'=IIF((select%20MID(LAST(username),1,1)%20from%20(select%20TOP%2010%20username%20from%20users))='a','a','b')%00&lt;br /&gt;
&lt;br /&gt;
that is true if the first character is 'a' or false otherwise.&lt;br /&gt;
&lt;br /&gt;
As mentioned, this method allows to infer the value of arbitrary strings within the database:&lt;br /&gt;
&lt;br /&gt;
# By trying all the printable values, until we find a match&lt;br /&gt;
# By inferring the length of the string using the LEN function, or by simply stopping after we have found all the characters&lt;br /&gt;
&lt;br /&gt;
Time-based blind SQL injections are also possible, by abusing [http://technet.microsoft.com/it-it/library/cc512676%28en-us%29.aspx heavy queries].&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html&lt;br /&gt;
* http://packetstormsecurity.com/files/65967/Access-Through-Access.pdf.html&lt;br /&gt;
* http://seclists.org/pen-test/2003/May/74&lt;br /&gt;
* http://www.techonthenet.com/access/functions/index_alpha.php&lt;br /&gt;
* http://en.wikipedia.org/wiki/Microsoft_Access&lt;/div&gt;</summary>
		<author><name>Luca Carettoni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_MS_Access&amp;diff=157629</id>
		<title>Testing for MS Access</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_MS_Access&amp;diff=157629"/>
				<updated>2013-08-31T20:49:59Z</updated>
		
		<summary type="html">&lt;p&gt;Luca Carettoni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
== Short Description of the Issue == &lt;br /&gt;
As explained in the generic [SQL injection] section, SQL injection vulnerabilities occur whenever user-supplied input is used during the construction of a SQL query without being adequately constrained or sanitized. This class of vulnerabilities allows an attacker to access the SQL servers and execute SQL code under the privileges of the user used to connect to the database.&lt;br /&gt;
&lt;br /&gt;
In this section some SQL Injection techniques that utilize specific features of [http://en.wikipedia.org/wiki/Microsoft_Access Microsoft Access] will be discussed.&lt;br /&gt;
&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
&lt;br /&gt;
=== Fingerprinting ===&lt;br /&gt;
&lt;br /&gt;
Fingerprinting the specific database technology while testing SQL-powered application is the first step to properly asses potential vulnerabilities.&lt;br /&gt;
A common approach involves injecting standard SQL injection attack patterns (e.g. single quote, double quote, ...) in order to trigger database exceptions.&lt;br /&gt;
 &lt;br /&gt;
Assuming that the application does not handle exceptions with custom pages, it is possible to fingerprint the underline DBMS by observing typical error messages. &lt;br /&gt;
Depending on the specific web technology used, MS Access driven applications will result in the following errors:&lt;br /&gt;
&lt;br /&gt;
(Apache/PHP)&lt;br /&gt;
&lt;br /&gt;
 Fatal error: Uncaught exception 'com_exception' with message '&amp;lt;b&amp;gt;Source:&amp;lt;/b&amp;gt; Microsoft JET Database Engine&amp;lt;br/&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(IIS/ASP)&lt;br /&gt;
&lt;br /&gt;
 Microsoft JET Database Engine error '80040e14'&lt;br /&gt;
&lt;br /&gt;
In both cases, we have a confirmation that we're testing an application using MS Access database.&lt;br /&gt;
&lt;br /&gt;
=== Basic Testing ===&lt;br /&gt;
&lt;br /&gt;
Unfortunately, MS Access doesn't support typical operators that are traditionally used during SQL injection testing, including:&lt;br /&gt;
&lt;br /&gt;
* No comments characters&lt;br /&gt;
* No stacked queries&lt;br /&gt;
* No LIMIT operator&lt;br /&gt;
* No SLEEP or BENCHMARK alike operators&lt;br /&gt;
* and many others&lt;br /&gt;
&lt;br /&gt;
Nevertheless, it is possible to emulate those functions by combining multiple operators or by using alternative techniques.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As mentioned, it is not possible to use the trick of inserting the characters &amp;lt;code&amp;gt;/*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; in order to truncate the query. However, we can fortunately bypass this limitation by injecting the 'null' character. Using a null byte &amp;lt;code&amp;gt;%00&amp;lt;/code&amp;gt; within &lt;br /&gt;
a SQL query will result in MS Access ignoring all remaining characters. This can be explained by considering that all strings are NULL terminated in the internal representation used by the database. It is worth mentioning that the 'null' character can sometimes cause troubles too as it may truncate strings at the web server level. In those situations, we can however employ another character: 0x16 (%16 in URL encoded format).&lt;br /&gt;
&lt;br /&gt;
Considering the following query:&lt;br /&gt;
&lt;br /&gt;
 SELECT [username],[password] FROM users WHERE [username]='$myUsername' AND [password]='$myPassword'&lt;br /&gt;
&lt;br /&gt;
We can truncate the query with the following two URLs:&lt;br /&gt;
&lt;br /&gt;
 http://www.example.com/page.asp?user=admin'%00&amp;amp;pass=foo&lt;br /&gt;
 http://www.example.com/page.app?user=admin'%16&amp;amp;pass=foo&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;LIMIT&amp;lt;/code&amp;gt; operator is not implemented in MS Access, however it is possible to limit the number of results by using the &amp;lt;code&amp;gt;TOP&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;LAST&amp;lt;/code&amp;gt; operators instead.&lt;br /&gt;
&lt;br /&gt;
 http://www.example.com/page.app?id=2'+UNION+SELECT+TOP+3+name+FROM+appsTable%00&lt;br /&gt;
&lt;br /&gt;
By combining both operators, it is possible to select specific results.&lt;br /&gt;
&lt;br /&gt;
String concatenation is possible by using &amp;lt;code&amp;gt;&amp;amp; (%26)&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;+ (%2b)&amp;lt;/code&amp;gt; characters. &lt;br /&gt;
&lt;br /&gt;
There are also many other functions that can be used while testing SQL injection, including but not limited to:&lt;br /&gt;
* ASC: Obtain the ASCII value of a character passed as input&lt;br /&gt;
* CHR: Obtain the character of the ASCII value passed as input&lt;br /&gt;
* LEN: Return the length of the string passed as parameter&lt;br /&gt;
* IIF: Is the IF construct, for example the following statement IIF(1=1, 'a', 'b') return 'a'&lt;br /&gt;
* MID: This function allows you to extract substring, for example the following statement mid('abc',1,1) return 'a'&lt;br /&gt;
* TOP: This function allows you to specify the maximum number of results that the query should return from the top. For example TOP 1 will return only 1 row.&lt;br /&gt;
* LAST: This function is used to select only the last row of a set of rows. For example the following query SELECT last(*) FROM users will return only the last row of the result.&lt;br /&gt;
&lt;br /&gt;
Some of these functions are essential to exploit blind SQL injections. For other advanced operators, please refer to the references.&lt;br /&gt;
&lt;br /&gt;
==== Attributes enumeration ====&lt;br /&gt;
&lt;br /&gt;
In order to enumerate the attributes of a query, it is possible to use a common error-based technique. &lt;br /&gt;
In short, we can obtain the attributes name by analyzing error messages and repeating the query with different selectors. For example,&lt;br /&gt;
assuming that we know the existence of a parameter, we can also obtain the name of the remaining attributes with the following query:&lt;br /&gt;
&lt;br /&gt;
 ' GROUP BY Id%00&lt;br /&gt;
&lt;br /&gt;
In the error message received we can see that the name of the next attribute is shown. At this point, we iterate the&lt;br /&gt;
method until we obtain the name of all attributes. If we don't know the name of at least&lt;br /&gt;
one attribute, we can insert a fictitious column name and obtain the name of the first attribute within the error message.&lt;br /&gt;
&lt;br /&gt;
==== Obtaining Database Schema ====&lt;br /&gt;
&lt;br /&gt;
Various system tables exist by default in MS Access that can be potentially used to obtain table names. Unfortunately, in the default configuration of recent MS Access database releases, these tables are not accessible. Nevertheless, it is always worth trying.&lt;br /&gt;
&lt;br /&gt;
* MSysObjects&lt;br /&gt;
* MSysACEs&lt;br /&gt;
* MSysAccessXML&lt;br /&gt;
&lt;br /&gt;
For example, if a union SQL injection vulnerability exists, you can use the following query:&lt;br /&gt;
&lt;br /&gt;
 ' UNION SELECT Name FROM MSysObjects WHERE Type = 1%00&lt;br /&gt;
&lt;br /&gt;
Alternatively, it is possible to infere the database  [HERE]&lt;br /&gt;
&lt;br /&gt;
=== Blind SQL Injection testing ===&lt;br /&gt;
[[Blind SQL Injection]] vulnerabilities are by no means the most frequent type of vulnerability&lt;br /&gt;
that you will find. Generally, you find an SQL injection in a parameter where no union &lt;br /&gt;
query is possible. Also, usually, there is no chance to execute shell commands or to read/write&lt;br /&gt;
a file. All you can do is infer the result of your query. For our test we take the&lt;br /&gt;
following example:&lt;br /&gt;
&lt;br /&gt;
 http://www.example.com/index.php?myId=[sql]&lt;br /&gt;
&lt;br /&gt;
where the id parameter is used in the following query:&lt;br /&gt;
&lt;br /&gt;
 SELECT * FROM orders WHERE [id]=$myId&lt;br /&gt;
&lt;br /&gt;
For our test, we will consider the myId parameter vulnerable to blind SQL injection.&lt;br /&gt;
We want to extract the content of the table users, in particular, of the column&lt;br /&gt;
username (we have already seen how to obtain the name of the attributes thanks&lt;br /&gt;
to the error messages and other techniques). It is supposed that the reader already knows the theory behind&lt;br /&gt;
the blind SQL injection attack, so we go straight to show some examples. A typical query that&lt;br /&gt;
can be used to infer the first character of the username of the 10th rows is:&lt;br /&gt;
&lt;br /&gt;
 http://www.example.com/index.php?id=IIF((select%20mid(last(username),1,1)%20from%20(select%20top%2010%20username%20from%20users))='a',0,'ko') &lt;br /&gt;
&lt;br /&gt;
If the first character is 'a', this query will return a 0 (a &amp;quot;true response&amp;quot;), otherwise a&lt;br /&gt;
'ko' string. Now we will explain why we have used this particular query.&lt;br /&gt;
The first thing to point out is that with the functions IFF, MID and LAST, we extract the first&lt;br /&gt;
character of the username of the selected row. Unfortunately, the original query returns a set of records and not only one record, so we can't use this methodology directly. We must first select only one row. We can use the TOP function, but it only works with the first row. To select the other&lt;br /&gt;
queries we must use a trick. We want to infer the username of the row number 10.&lt;br /&gt;
First we use the TOP function to select the first ten rows with the query:&lt;br /&gt;
&lt;br /&gt;
 SELECT TOP 10 username FROM users&lt;br /&gt;
&lt;br /&gt;
Then, we extract from this set the last row with the function LAST. Once we have only one row and &lt;br /&gt;
exactly the row that we want, we can use the IFF, MID and LAST functions to infer the value&lt;br /&gt;
of the username.&lt;br /&gt;
It may be interesting to note the use of the IFF function. In our example we use IFF to return a number or a string. With this trick we can distinguish when we have a true response or not. This is because id is of a numeric type, so if we compare it with a string we obtain a SQL error, otherwise with the 0 value we have no errors. Of course if the parameter was of type string we can use different values. For example, we can have the following query:&lt;br /&gt;
&lt;br /&gt;
 http://www.example.com/index.php?id='%20AND%201=0%20OR%20'a'=IIF((select%20mid(last(username),1,1)%20from%20(select%20top%2010%20username%20from%20users))='a','a','b')%00&lt;br /&gt;
&lt;br /&gt;
that returns a query that is always true if the first character is 'a' or a query that is always false in the other case.&lt;br /&gt;
&lt;br /&gt;
This method allows us to infer the value of the username. To understand when we have &lt;br /&gt;
obtained the complete value we have two choices:&lt;br /&gt;
&lt;br /&gt;
# We try all the printable values; when no one is valid then we have the complete value.&lt;br /&gt;
# We can infer the length of the value (if it's a string value we can use the LEN function) and stop when we have found all the characters.&lt;br /&gt;
&lt;br /&gt;
=== Advanced Tricks ===&lt;br /&gt;
Sometimes we are blocked by some filtering function. Here we see some tricks to bypass these filters.&lt;br /&gt;
&lt;br /&gt;
==== Alternative Delimiter ====&lt;br /&gt;
Some filters strip away the space from the input string. We can bypass these filters using&lt;br /&gt;
the following values as delimiter instead of the white space:&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
9&lt;br /&gt;
a&lt;br /&gt;
c&lt;br /&gt;
d&lt;br /&gt;
20&lt;br /&gt;
2b&lt;br /&gt;
2d&lt;br /&gt;
3d&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
For example we can execute the following query:&lt;br /&gt;
&lt;br /&gt;
 http://www.example.com/index.php?username=foo%27%09or%09%271%27%09=%09%271&lt;br /&gt;
&lt;br /&gt;
to bypass a hypothetical login form.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
* http://www.techonthenet.com/access/functions/index_alpha.php&lt;br /&gt;
* http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html&lt;/div&gt;</summary>
		<author><name>Luca Carettoni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_HTTP_Parameter_pollution_(OTG-INPVAL-004)&amp;diff=157311</id>
		<title>Testing for HTTP Parameter pollution (OTG-INPVAL-004)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_HTTP_Parameter_pollution_(OTG-INPVAL-004)&amp;diff=157311"/>
				<updated>2013-08-26T06:50:24Z</updated>
		
		<summary type="html">&lt;p&gt;Luca Carettoni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Brief Summary ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Supplying multiple HTTP parameters with the same name may cause an application to interpret values in unanticipated ways. By exploiting these effects, an attacker may be able to bypass input validation, trigger application errors or modify internal variables values. As HTTP Parameter Pollution (in short ''HPP'') affects a building block of all web technologies, server and client side attacks exist. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Current HTTP standards do not include guidance on how to interpret multiple input parameters with the same name. For instance, [http://www.ietf.org/rfc/rfc3986.txt RFC 3986] simply defines the term ''Query String'' as a series of field-value pairs and [http://www.ietf.org/rfc/rfc2396.txt  RFC 2396] defines classes of reversed and unreserved query string characters. Without a standard in place, web application components handle this edge case in a variety of ways (see the table below for details). &lt;br /&gt;
By itself, this is not necessarily an indication of vulnerability. However, if the developer is not aware of the problem, the presence of duplicated parameters may produce an anomalous behavior in the application that can be potentially exploited by an attacker. As often in security, unexpected behaviors are a usual source of weaknesses that could lead to HTTP Parameter Pollution attacks in this case.&lt;br /&gt;
&lt;br /&gt;
To better introduce this class of vulnerabilities and the outcome of HPP attacks, it is interesting to analyze some real-life examples that have been discovered in the past.&lt;br /&gt;
&lt;br /&gt;
=== Input Validation and filters bypass ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
In 2009, immediately after the publication of the first research on HTTP Parameter Pollution, the technique received attention from the security community as a possible way to bypass web application firewalls.&lt;br /&gt;
&lt;br /&gt;
One of these flaws, affecting ''ModSecurity SQL Injection Core Rules'', represents a perfect example of the impedance mismatch between applications and filters.  The ModSecurity filter would correctly blacklist the following string: &amp;lt;code&amp;gt;select 1,2,3 from table&amp;lt;/code&amp;gt;, thus blocking this example URL from being processed by the web server: &amp;lt;code&amp;gt;/index.aspx?page=select 1,2,3 from table&amp;lt;/code&amp;gt;. However, by exploiting the concatenation of multiple HTTP parameters, an attacker could cause the application server to concatenate the string after the ModSecurity filter already accepted the input. As an example, the URL &amp;lt;code&amp;gt;/index.aspx?page=select 1&amp;amp;page=2,3&amp;lt;/code&amp;gt; from table would not trigger the ModSecurity filter, yet the application layer would concatenate the input back into the full malicious string.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another HPP vulnerability turned out to affect ''Apple Cups'', the well-known printing system used by many UNIX systems. Exploiting HPP, an attacker could easily trigger a Cross-Site Scripting vulnerability using the following URL: &amp;lt;code&amp;gt;http://127.0.0.1:631/admin/?kerberos=onmouseover=alert(1)&amp;amp;kerberos&amp;lt;/code&amp;gt;. The application validation checkpoint could be bypassed by adding an extra &amp;lt;code&amp;gt;kerberos&amp;lt;/code&amp;gt; argument having a valid string (e.g. empty string). As the validation checkpoint would only consider the second occurrence, the first &amp;lt;code&amp;gt;kerberos&amp;lt;/code&amp;gt; parameter was not properly sanitized before being used to generate dynamic HTML content. Successful exploitation would result in Javascript code execution under the context of the hosting web site.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Authentication bypass ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
An even more critical HPP vulnerability was discovered in ''Blogger'', the popular blogging platform. The bug allowed malicious users to take ownership of the victim’s blog by using the following HTTP request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
POST /add-authors.do HTTP/1.1&lt;br /&gt;
&lt;br /&gt;
security_token=attackertoken&amp;amp;blogID=attackerblogidvalue&amp;amp;blogID=victimblogidvalue&amp;amp;authorsList=goldshlager19test%40gmail.com(attacker email)&amp;amp;ok=Invite&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The flaw resided in the authentication mechanism used by the web application, as the security check was performed on the first &amp;lt;code&amp;gt;blogID&amp;lt;/code&amp;gt; parameter, whereas the actual operation used the second occurrence.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Expected Behavior by Application Server===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The following table illustrates how different web technologies behave in presence of multiple occurrences of the same HTTP parameter.&lt;br /&gt;
&lt;br /&gt;
Given the URL and querystring: &amp;lt;code&amp;gt;http://example.com/?color=red&amp;amp;color=blue&amp;lt;/code&amp;gt;&lt;br /&gt;
{| &lt;br /&gt;
|-&lt;br /&gt;
! Web Application Server Backend !! Parsing Result !! Example&lt;br /&gt;
|-&lt;br /&gt;
| ASP.NET / IIS || All occurrences concatenated with a comma || color=red,blue&lt;br /&gt;
|-&lt;br /&gt;
| ASP / IIS || All occurrences concatenated with a comma|| color=red,blue&lt;br /&gt;
|-&lt;br /&gt;
| PHP / Apache || Last occurrence only || color=blue&lt;br /&gt;
|-&lt;br /&gt;
| PHP / Zeus || Last occurrence only || color=blue&lt;br /&gt;
|-&lt;br /&gt;
| JSP, Servlet / Apache Tomcat || First occurrence only || color=red&lt;br /&gt;
|-&lt;br /&gt;
| JSP, Servlet / Oracle Application Server 10g || First occurrence only || color=red&lt;br /&gt;
|-&lt;br /&gt;
| JSP, Servlet / Jetty || First occurrence only || color=red&lt;br /&gt;
|-&lt;br /&gt;
| IBM Lotus Domino || Last occurrence only || color=blue&lt;br /&gt;
|-&lt;br /&gt;
| IBM HTTP Server || First occurrence only || color=red&lt;br /&gt;
|-&lt;br /&gt;
| mod_perl, libapreq2 / Apache || First occurrence only || color=red&lt;br /&gt;
|-&lt;br /&gt;
| Perl CGI / Apache || First occurrence only || color=red&lt;br /&gt;
|-&lt;br /&gt;
| mod_wsgi (Python) / Apache || First occurrence only || color=red&lt;br /&gt;
|-&lt;br /&gt;
| Python / Zope || All occurrences in List data type || color=['red','blue']&lt;br /&gt;
|}&lt;br /&gt;
(source: [[Media:AppsecEU09_CarettoniDiPaola_v0.8.pdf]] )&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Luckily, because the assignment of HTTP parameters is typically handled via the web application server, and not the application code itself, testing the response to parameter pollution should be standard across all pages and actions. However, as in-depth business logic knowledge is necessary, testing HPP requires manual testing. Automatic tools can only partially assist auditors as they tend to generate too many false positives. In addition, HPP can manifest itself in client-side and server-side components.&lt;br /&gt;
&lt;br /&gt;
=== Server-side HPP ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
To test for HPP vulnerabilities, identify any form or action that allows user-supplied input. Query string parameters in HTTP GET requests are easy to tweak in the navigation bar of the browser. If the form action submits data via POST, the tester will need to use an intercepting proxy to tamper with the POST data as it is sent to the server. &lt;br /&gt;
Having identified a particular input parameter to test, one can edit the GET or POST data by intercepting the request, or change the query string after the response page loads. To test for HPP vulnerabilities simply append the same parameter to the GET or POST data but with a different value assigned. &lt;br /&gt;
&lt;br /&gt;
For example: if testing the &amp;lt;code&amp;gt;search_string&amp;lt;/code&amp;gt; parameter in the query string, the request URL would include that parameter name and value.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;http://example.com/?search_string=kittens&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The particular parameter might be hidden among several other parameters, but the approach is the same; leave the other parameters in place and append the duplicate.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;http://example.com/?mode=guest&amp;amp;search_string=kittens&amp;amp;num_results=100&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Append the same parameter with a different value&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;http://example.com/?mode=guest&amp;amp;search_string=kittens&amp;amp;num_results=100&amp;amp;search_string=puppies&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
and submit the new request. &lt;br /&gt;
&lt;br /&gt;
Analyze the response page to determine which value(s) were parsed. In the above example, the search results may show &amp;lt;code&amp;gt;kittens&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;puppies&amp;lt;/code&amp;gt;, some combination of both (&amp;lt;code&amp;gt;kittens,puppies&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;kittens~puppies&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;['kittens','puppies']&amp;lt;/code&amp;gt;), may give an empty result, or error page.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
This behavior, whether using the first, last, or combination of input parameters with the same name, is very likely to be consistent across the entire application. Whether or not this default behavior reveals a potential vulnerability depends on the specific input validation and filtering specific to a particular application. As a general rule: if existing input validation and other security mechanisms are sufficient on single inputs, and if the server assigns only the first or last polluted parameters, then parameter pollution does not reveal a vulnerability. If the duplicate parameters are concatenated, different web application components use different occurrences or testing generates an error, there is an increased likelihood of being able to use parameter pollution to trigger security vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A more in-depth analysis would require three HTTP requests for each HTTP parameter:&lt;br /&gt;
# Submit an HTTP request containing the standard parameter name and value, and record the HTTP response. E.g. &amp;lt;code&amp;gt;page?par1=val1&amp;lt;/code&amp;gt;&lt;br /&gt;
# Replace the parameter value with a tampered value, submit and record the HTTP response. E.g. &amp;lt;code&amp;gt;page?par1=HPP_TEST1&amp;lt;/code&amp;gt;&lt;br /&gt;
# Send a new request combining step (1) and (2). Again, save the HTTP response. E.g. &amp;lt;code&amp;gt;page?par1=val1&amp;amp;par1=HPP_TEST1&amp;lt;/code&amp;gt;&lt;br /&gt;
# Compare the responses obtained during all previous steps. If the response from (3) is different from (1) and the response from (3) is also different from (2), there is an impedance mismatch that may be eventually abused to trigger HPP vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
Crafting a full exploit from a parameter pollution weakness is beyond the scope of this text. See the references for examples and details.&lt;br /&gt;
&lt;br /&gt;
=== Client-side HPP ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Similarly to server-side HPP, manual testing is the only reliable technique to audit web applications in order to detect parameter pollution vulnerabilities affecting client-side components. While in the server-side variant the attacker leverages a vulnerable web application to access protected data or perform actions that either not permitted or not supposed to be executed, client-side attacks aim at subverting client-side components and technologies. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
To test for HPP client-side vulnerabilities, identify any form or action that allows user input and shows a result of that input back to the user. A search page is ideal, but a login box might not work (as it might not show an invalid username back to the user). &lt;br /&gt;
&lt;br /&gt;
Similarly to server-side HPP, pollute each HTTP parameter with &amp;lt;code&amp;gt;%26HPP_TEST&amp;lt;/code&amp;gt; and look for ''url-decoded'' occurrences of the user-supplied payload:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;HPP_TEST&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;tt&amp;gt;&amp;amp;amp;amp;HPP_TEST&amp;lt;/tt&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* … and others&lt;br /&gt;
&lt;br /&gt;
In particular,  pay attention to responses having HPP vectors within &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;href&amp;lt;/code&amp;gt; attributes or forms actions. Again, whether or not this default behavior reveals a potential vulnerability depends on the specific input validation, filtering and application business logic.&lt;br /&gt;
In addition, it is important to notice that this vulnerability can also affect query string parameters used in XMLHttpRequest (XHR), runtime attribute creation and other plugin technologies (e.g. Adobe Flash’s flashvars variables).&lt;br /&gt;
 &lt;br /&gt;
== References ==&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
HTTP Parameter Pollution - Luca Carettoni, Stefano di Paola [https://www.owasp.org/images/b/ba/AppsecEU09_CarettoniDiPaola_v0.8.pdf]&lt;br /&gt;
&lt;br /&gt;
Split and Join (Bypassing Web Application Firewalls with HTTP Parameter Pollution) - Lavakumar Kuppan [http://www.andlabs.org/whitepapers/Split_and_Join.pdf]&lt;br /&gt;
&lt;br /&gt;
Client-side Http Parameter Pollution Example (Yahoo! Classic Mail flaw) - Stefano di Paola [http://blog.mindedsecurity.com/2009/05/client-side-http-parameter-pollution.html]&lt;br /&gt;
&lt;br /&gt;
How to Detect HTTP Parameter Pollution Attacks - Chrysostomos Daniel [http://www.acunetix.com/blog/whitepaper-http-parameter-pollution/]&lt;br /&gt;
&lt;br /&gt;
CAPEC-460: HTTP Parameter Pollution (HPP) - Evgeny Lebanidze [http://capec.mitre.org/data/definitions/460.html]&lt;br /&gt;
&lt;br /&gt;
Automated Discovery of Parameter Pollution Vulnerabilities in Web Applications - Marco Balduzzi, Carmen Torrano Gimenez, Davide Balzarotti, Engin Kirda [http://www.iseclab.org/people/embyte/papers/hpp.pdf]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Tools'''&amp;lt;br&amp;gt;&lt;br /&gt;
OWASP ZAP HPP Passive/Active Scanners [https://code.google.com/p/zap-extensions/wiki/V1Extensions]&lt;br /&gt;
&lt;br /&gt;
HPP Finder (Chrome Plugin) [https://chrome.google.com/webstore/detail/hpp-finder]&lt;/div&gt;</summary>
		<author><name>Luca Carettoni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_MS_Access&amp;diff=157310</id>
		<title>Testing for MS Access</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_MS_Access&amp;diff=157310"/>
				<updated>2013-08-26T06:30:44Z</updated>
		
		<summary type="html">&lt;p&gt;Luca Carettoni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
== Short Description of the Issue == &lt;br /&gt;
This article describes how to exploit SQL Injection vulnerabilities when the&lt;br /&gt;
backend database is MS Access. In particular, the article focuses on how to exploit Blind SQL Injection.&lt;br /&gt;
After an initial introduction on the typical functions that are useful to exploit a SQL Injection vulnerability, &lt;br /&gt;
a method to exploit Blind SQL Injection will be discussed.&lt;br /&gt;
&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
&lt;br /&gt;
=== Standard Test ===&lt;br /&gt;
First of all, let's show a typical example of SQL error that can encounter when&lt;br /&gt;
a test is executed:&lt;br /&gt;
&lt;br /&gt;
 Fatal error: Uncaught exception 'com_exception' with message '&amp;lt;b&amp;gt;Source:&amp;lt;/b&amp;gt; Microsoft JET Database Engine&amp;lt;br/&amp;gt;&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That means that maybe we are testing an application with an MS Access Database backend.&lt;br /&gt;
&lt;br /&gt;
Unfortunately, MS Access doesn't support any comment character in the SQL query,&lt;br /&gt;
so it is not possible to use the trick of inserting the characters /* or -- or # to truncate the query. On the other hand, we can fortunately  bypass this limit with the NULL character. If we insert the char %00 at some place in &lt;br /&gt;
the query, all the remaining characters after the NULL are ignored. That happens&lt;br /&gt;
because, internally, strings are NULL terminated.&lt;br /&gt;
However, the NULL character can sometimes cause troubles. We can notice that there is another value that can be used in order to truncate the query.&lt;br /&gt;
The character is 0x16 (%16 in URL encoded format) or 22 in decimal. So if we have the following query:&lt;br /&gt;
&lt;br /&gt;
 SELECT [username],[password] FROM users WHERE [username]='$myUsername' AND [password]='$myPassword'&lt;br /&gt;
&lt;br /&gt;
we can truncate the query with the following two URLs:&lt;br /&gt;
&lt;br /&gt;
 http://www.example.com/index.php?user=admin'%00&amp;amp;pass=foo&lt;br /&gt;
 http://www.example.com/index.php?user=admin'%16&amp;amp;pass=foo&lt;br /&gt;
&lt;br /&gt;
==== Attributes enumeration ====&lt;br /&gt;
In order to enumerate the attributes of a query, it is possible to use the same method used for the database&lt;br /&gt;
MS SQL Server. In short, we can obtain the name of the attributes by error messages. For example,&lt;br /&gt;
if we know the existence of a parameter because we got it by an error message due to the&lt;br /&gt;
' character, we can also know the name of the remaining attributes with the following query:&lt;br /&gt;
&lt;br /&gt;
 ' GROUP BY Id%00&lt;br /&gt;
&lt;br /&gt;
In the error message received we can see that the name of the next attribute is shown. We iterate the&lt;br /&gt;
method until we obtain the name of all the attributes. If we don't know the name of at least&lt;br /&gt;
one attribute, we can insert a fictitious column name, and, just like by magic, we obtain the name of&lt;br /&gt;
the first attribute.&lt;br /&gt;
&lt;br /&gt;
==== Obtaining Database Schema ====&lt;br /&gt;
Various tables exist in MS Access that can be used to obtain the name of a table in a&lt;br /&gt;
particular database. In the default configuration these tables are not accessible, however it's&lt;br /&gt;
possible to try it. The names of these table are:&lt;br /&gt;
&lt;br /&gt;
* MSysObjects&lt;br /&gt;
* MSysACEs&lt;br /&gt;
* MSysAccessXML&lt;br /&gt;
&lt;br /&gt;
For example, if a union SQL injection vulnerability exists, you can use the following query:&lt;br /&gt;
&lt;br /&gt;
 ' UNION SELECT Name FROM MSysObjects WHERE Type = 1%00&lt;br /&gt;
&lt;br /&gt;
These are the main steps that you can use to exploit a SQL injection vulnerability on &lt;br /&gt;
MS Access. There are also some functions that can be useful to exploit custom &lt;br /&gt;
queries. Some of these functions are:&lt;br /&gt;
&lt;br /&gt;
* ASC: Obtain the ASCII value of a character passed as input&lt;br /&gt;
* CHR: Obtain the character of the ASCII value passed as input&lt;br /&gt;
* LEN: Return the length of the string passed as parameter&lt;br /&gt;
* IIF: Is the IF construct, for example the following statement IIF(1=1, 'a', 'b') return 'a'&lt;br /&gt;
* MID: This function allows you to extract substring, for example the following statement mid('abc',1,1) return 'a'&lt;br /&gt;
* TOP: This function allows you to specify the maximum number of results that the query should return from the top. For example TOP 1 will return only 1 row.&lt;br /&gt;
* LAST: This function is used to select only the last row of a set of rows. For example the following query SELECT last(*) FROM users will return only the last row of the result.&lt;br /&gt;
&lt;br /&gt;
Some of these functions will be used to exploit a blind SQL injection as we see in the next&lt;br /&gt;
paragraph. For other functions please refer to References.&lt;br /&gt;
&lt;br /&gt;
=== Blind SQL Injection testing ===&lt;br /&gt;
[[Blind SQL Injection]] vulnerabilities are by no means the most frequent type of vulnerability&lt;br /&gt;
that you will find. Generally, you find an SQL injection in a parameter where no union &lt;br /&gt;
query is possible. Also, usually, there is no chance to execute shell commands or to read/write&lt;br /&gt;
a file. All you can do is infer the result of your query. For our test we take the&lt;br /&gt;
following example:&lt;br /&gt;
&lt;br /&gt;
 http://www.example.com/index.php?myId=[sql]&lt;br /&gt;
&lt;br /&gt;
where the id parameter is used in the following query:&lt;br /&gt;
&lt;br /&gt;
 SELECT * FROM orders WHERE [id]=$myId&lt;br /&gt;
&lt;br /&gt;
For our test, we will consider the myId parameter vulnerable to blind SQL injection.&lt;br /&gt;
We want to extract the content of the table users, in particular, of the column&lt;br /&gt;
username (we have already seen how to obtain the name of the attributes thanks&lt;br /&gt;
to the error messages and other techniques). It is supposed that the reader already knows the theory behind&lt;br /&gt;
the blind SQL injection attack, so we go straight to show some examples. A typical query that&lt;br /&gt;
can be used to infer the first character of the username of the 10th rows is:&lt;br /&gt;
&lt;br /&gt;
 http://www.example.com/index.php?id=IIF((select%20mid(last(username),1,1)%20from%20(select%20top%2010%20username%20from%20users))='a',0,'ko') &lt;br /&gt;
&lt;br /&gt;
If the first character is 'a', this query will return a 0 (a &amp;quot;true response&amp;quot;), otherwise a&lt;br /&gt;
'ko' string. Now we will explain why we have used this particular query.&lt;br /&gt;
The first thing to point out is that with the functions IFF, MID and LAST, we extract the first&lt;br /&gt;
character of the username of the selected row. Unfortunately, the original query returns a set of records and not only one record, so we can't use this methodology directly. We must first select only one row. We can use the TOP function, but it only works with the first row. To select the other&lt;br /&gt;
queries we must use a trick. We want to infer the username of the row number 10.&lt;br /&gt;
First we use the TOP function to select the first ten rows with the query:&lt;br /&gt;
&lt;br /&gt;
 SELECT TOP 10 username FROM users&lt;br /&gt;
&lt;br /&gt;
Then, we extract from this set the last row with the function LAST. Once we have only one row and &lt;br /&gt;
exactly the row that we want, we can use the IFF, MID and LAST functions to infer the value&lt;br /&gt;
of the username.&lt;br /&gt;
It may be interesting to note the use of the IFF function. In our example we use IFF to return a number or a string. With this trick we can distinguish when we have a true response or not. This is because id is of a numeric type, so if we compare it with a string we obtain a SQL error, otherwise with the 0 value we have no errors. Of course if the parameter was of type string we can use different values. For example, we can have the following query:&lt;br /&gt;
&lt;br /&gt;
 http://www.example.com/index.php?id='%20AND%201=0%20OR%20'a'=IIF((select%20mid(last(username),1,1)%20from%20(select%20top%2010%20username%20from%20users))='a','a','b')%00&lt;br /&gt;
&lt;br /&gt;
that returns a query that is always true if the first character is 'a' or a query that is always false in the other case.&lt;br /&gt;
&lt;br /&gt;
This method allows us to infer the value of the username. To understand when we have &lt;br /&gt;
obtained the complete value we have two choices:&lt;br /&gt;
&lt;br /&gt;
# We try all the printable values; when no one is valid then we have the complete value.&lt;br /&gt;
# We can infer the length of the value (if it's a string value we can use the LEN function) and stop when we have found all the characters.&lt;br /&gt;
&lt;br /&gt;
== Tricks ==&lt;br /&gt;
Sometimes we are blocked by some filtering function. Here we see some tricks to bypass these filters.&lt;br /&gt;
&lt;br /&gt;
=== Alternative Delimiter ===&lt;br /&gt;
Some filters strip away the space from the input string. We can bypass these filters using&lt;br /&gt;
the following values as delimiter instead of the white space:&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
9&lt;br /&gt;
a&lt;br /&gt;
c&lt;br /&gt;
d&lt;br /&gt;
20&lt;br /&gt;
2b&lt;br /&gt;
2d&lt;br /&gt;
3d&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
For example we can execute the following query:&lt;br /&gt;
&lt;br /&gt;
 http://www.example.com/index.php?username=foo%27%09or%09%271%27%09=%09%271&lt;br /&gt;
&lt;br /&gt;
to bypass a hypothetical login form.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
* http://www.techonthenet.com/access/functions/index_alpha.php&lt;br /&gt;
* http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html&lt;/div&gt;</summary>
		<author><name>Luca Carettoni</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_HTTP_Parameter_pollution_(OTG-INPVAL-004)&amp;diff=157309</id>
		<title>Testing for HTTP Parameter pollution (OTG-INPVAL-004)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_HTTP_Parameter_pollution_(OTG-INPVAL-004)&amp;diff=157309"/>
				<updated>2013-08-26T06:26:56Z</updated>
		
		<summary type="html">&lt;p&gt;Luca Carettoni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Brief Summary ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Supplying multiple HTTP parameters with the same name may cause an application to interpret values in unanticipated ways. By exploiting these effects, an attacker may be able to bypass input validation, trigger application errors or modify internal variables values. As HTTP Parameter Pollution (in short ''HPP'') affects a building block of all web technologies, server and client side attacks exist. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Current HTTP standards do not include guidance on how to interpret multiple input parameters with the same name. For instance, [http://www.ietf.org/rfc/rfc3986.txt RFC 3986] simply defines the ''Query String'' as a series of field-value pairs and [http://www.ietf.org/rfc/rfc2396.txt  RFC 2396] defines classes of reversed and unreserved characters. Without a standard in place, web application components handle this edge case in a variety of ways (see the table below for details). &lt;br /&gt;
By itself, this is not necessarily an indication of vulnerability. However, if the developer is not aware of the problem, the presence of duplicated parameters may produce an anomalous behavior in the application that can be potentially exploited by an attacker. As often in security, unexpected behaviors are a usual source of weaknesses that could lead to HTTP Parameter Pollution attacks in this case.&lt;br /&gt;
&lt;br /&gt;
To better introduce this class of vulnerabilities and the outcome of HPP attacks, it is interesting to analyze some real-life vulnerabilities that have been discovered in the past.&lt;br /&gt;
&lt;br /&gt;
=== Input Validation and filters bypass ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
In 2009, immediately after the publication of the first research on HTTP Parameter Pollution, this technique received large attention from the security community as a possible way to bypass web application firewalls.&lt;br /&gt;
&lt;br /&gt;
One of these flaws, affecting ''ModSecurity SQL Injection Core Rules'', represents a perfect example of the impedance mismatch between applications and filters.  The ModSecurity filter would correctly blacklist the following string: &amp;lt;code&amp;gt;select 1,2,3 from table&amp;lt;/code&amp;gt;, thus blocking this example URL from being processed by the web server: &amp;lt;code&amp;gt;/index.aspx?page=select 1,2,3 from table&amp;lt;/code&amp;gt;. However, by exploiting the concatenation of multiple HTTP parameters, an attacker could cause the application server to concatenate the string after the ModSecurity filter already accepted the input. As an example, the URL &amp;lt;code&amp;gt;/index.aspx?page=select 1&amp;amp;page=2,3&amp;lt;/code&amp;gt; from table would not trigger the ModSecurity filter, yet the application layer would concatenate the input back into the full malicious string.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another HPP vulnerability turned out to affect ''Apple Cups'', the well-known printing system used by many UNIX systems. Exploiting HPP, an attacker could easily trigger a Cross-Site Scripting vulnerability using the following URL: &amp;lt;code&amp;gt;http://127.0.0.1:631/admin/?kerberos=onmouseover=alert(1)&amp;amp;kerberos&amp;lt;/code&amp;gt;. The application validation checkpoint could be bypassed by adding an extra &amp;lt;code&amp;gt;kerberos&amp;lt;/code&amp;gt; argument having a valid string (e.g. empty string). As the validation checkpoint would only consider the second occurrence, the first &amp;lt;code&amp;gt;kerberos&amp;lt;/code&amp;gt; parameter was not properly sanitized before being used to generate dynamic HTML content. Successful exploitation would result in Javascript code execution under the context of the hosting web site.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Authentication bypass ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
An even more critical HPP vulnerability was discovered in ''Blogger'', the popular blogging platform. The bug allowed malicious users to take ownership of the victim’s blog by using the following HTTP request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
POST /add-authors.do HTTP/1.1&lt;br /&gt;
&lt;br /&gt;
security_token=attackertoken&amp;amp;blogID=attackerblogidvalue&amp;amp;blogID=victimblogidvalue&amp;amp;authorsList=goldshlager19test%40gmail.com(attacker email)&amp;amp;ok=Invite&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The flaw resided in the authentication mechanism used by the web application, as the validation was performed on the first parameter, whereas the actual operation used the second occurrence.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Expected Behavior by Application Server===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The following table illustrates how different web technologies behave in presence of multiple occurrences of the same HTTP parameter.&lt;br /&gt;
&lt;br /&gt;
Given the URL and querystring: &amp;lt;code&amp;gt;http://example.com/?color=red&amp;amp;color=blue&amp;lt;/code&amp;gt;&lt;br /&gt;
{| &lt;br /&gt;
|-&lt;br /&gt;
! Web Application Server Backend !! Parsing Result !! Example&lt;br /&gt;
|-&lt;br /&gt;
| ASP.NET / IIS || All occurrences concatenated with a comma || color=red,blue&lt;br /&gt;
|-&lt;br /&gt;
| ASP / IIS || All occurrences concatenated with a comma|| color=red,blue&lt;br /&gt;
|-&lt;br /&gt;
| PHP / Apache || Last occurrence only || color=blue&lt;br /&gt;
|-&lt;br /&gt;
| PHP / Zeus || Last occurrence only || color=blue&lt;br /&gt;
|-&lt;br /&gt;
| JSP, Servlet / Apache Tomcat || First occurrence only || color=red&lt;br /&gt;
|-&lt;br /&gt;
| JSP, Servlet / Oracle Application Server 10g || First occurrence only || color=red&lt;br /&gt;
|-&lt;br /&gt;
| JSP, Servlet / Jetty || First occurrence only || color=red&lt;br /&gt;
|-&lt;br /&gt;
| IBM Lotus Domino || Last occurrence only || color=blue&lt;br /&gt;
|-&lt;br /&gt;
| IBM HTTP Server || First occurrence only || color=red&lt;br /&gt;
|-&lt;br /&gt;
| mod_perl, libapreq2 / Apache || First occurrence only || color=red&lt;br /&gt;
|-&lt;br /&gt;
| Perl CGI / Apache || First occurrence only || color=red&lt;br /&gt;
|-&lt;br /&gt;
| mod_wsgi (Python) / Apache || First occurrence only || color=red&lt;br /&gt;
|-&lt;br /&gt;
| Python / Zope || All occurrences in List data type || color=['red','blue']&lt;br /&gt;
|}&lt;br /&gt;
(source: [[Media:AppsecEU09_CarettoniDiPaola_v0.8.pdf]] )&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Luckily, because the assignment of HTTP parameters is typically handled via the web application server, and not the application code itself, testing the response to parameter pollution should be standard across all pages and actions. However, as in-depth business logic knowledge is required, testing HPP requires manual testing and automatic tools can only partially assist auditors. In addition, HPP can manifest itself in client-side and server-side components.&lt;br /&gt;
&lt;br /&gt;
=== Server-side HPP ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
To test for HPP vulnerabilities, identify any form or action that allows user-supplied input. Query string parameters in HTTP GET requests are easy to tweak in the navigation bar of the browser. If the form action submits data via POST, the tester will need to use an intercepting proxy to tamper with the POST data as it is sent to the server. &lt;br /&gt;
Having identified a particular input parameter to test, one can edit the GET or POST data by intercepting the request, or change the query string after the response page loads. To test for HPP vulnerabilities simply append the same parameter to the GET or POST data but with a different value assigned. &lt;br /&gt;
&lt;br /&gt;
For example: if testing the &amp;lt;code&amp;gt;search_string&amp;lt;/code&amp;gt; parameter in the query string, the request URL would include that parameter name and value.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;http://example.com/?search_string=kittens&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The particular parameter might be hidden among several other parameters, but the approach is the same; leave the other parameters in place and append the duplicate.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;http://example.com/?mode=guest&amp;amp;search_string=kittens&amp;amp;num_results=100&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Append the same parameter with a different value&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;http://example.com/?mode=guest&amp;amp;search_string=kittens&amp;amp;num_results=100&amp;amp;search_string=puppies&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
and submit the new request. &lt;br /&gt;
&lt;br /&gt;
Analyze the response page to determine which value(s) were parsed. In the above example, the search results may show &amp;lt;code&amp;gt;kittens&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;puppies&amp;lt;/code&amp;gt;, some combination of both (&amp;lt;code&amp;gt;kittens,puppies&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;kittens~puppies&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;['kittens','puppies']&amp;lt;/code&amp;gt;), may give an empty result, or error page.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
This behavior, whether using the first, last, or combination of input parameters with the same name, is very likely to be consistent across the entire application. Whether or not this default behavior reveals a potential vulnerability depends on the specific input validation and filtering specific to a particular application. As a general rule: if existing input validation and other security mechanisms are sufficient on single inputs, and if the server assigns only the first or last polluted parameters, then parameter pollution does not reveal a vulnerability. If the duplicate parameters are concatenated, different web application components use different occurrences or testing generate an error, there is an increased likelihood of being able to use parameter pollution to trigger security vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A more in-depth analysis would require three HTTP requests for each HTTP parameter:&lt;br /&gt;
# Submit an HTTP request containing the standard parameter name and value, and record the HTTP response. E.g. &amp;lt;code&amp;gt;page?par1=val1&amp;lt;/code&amp;gt;&lt;br /&gt;
# Replace the parameter value with a tampered value, submit and record the HTTP response. E.g. &amp;lt;code&amp;gt;page?par1=HPP_TEST1&amp;lt;/code&amp;gt;&lt;br /&gt;
# Send a new request combining step (1) and (2). Again, record the HTTP responses. E.g. &amp;lt;code&amp;gt;page?par1=val1&amp;amp;par1=HPP_TEST1&amp;lt;/code&amp;gt;&lt;br /&gt;
# Compare the responses obtained during all previous steps. If the response from (3) is different from (1) and the response from (3) is also different from (2), there is an impedance mismatch that may be eventually abused to trigger HPP vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
Crafting a full exploit from a parameter pollution weakness is beyond the scope of this text. See the references for examples and details.&lt;br /&gt;
&lt;br /&gt;
=== Client-side HPP ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Similarly to server-side HPP, manual testing is the only reliable technique to audit web applications in order to detect parameter pollution vulnerabilities affecting client-side components. While in the server-side variant the attacker leverages a vulnerable web application to access protected data or perform actions that either not permitted or not supposed to be executed, client-side attacks aims at tampering client-side components and technologies. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
To test for HPP client-side vulnerabilities, identify any form or action that allows user input and shows a result of that input back to the user. A search page is ideal, but a login box might not work (as it might not show an invalid username back to the user). &lt;br /&gt;
&lt;br /&gt;
Similarly to server-side HPP, pollute each HTTP parameter with &amp;lt;code&amp;gt;%26HPP_TEST&amp;lt;/code&amp;gt; and look for ''url-decoded'' occurrences of the user-supplied payload:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;HPP_TEST&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;tt&amp;gt;&amp;amp;amp;amp;HPP_TEST&amp;lt;/tt&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* … and others&lt;br /&gt;
&lt;br /&gt;
In particular,  pay attention to responses having HPP vectors within &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;href&amp;lt;/code&amp;gt; attributes or forms actions. Again, whether or not this default behavior reveals a potential vulnerability depends on the specific input validation, filtering and application business logic.&lt;br /&gt;
In addition, it is important to notice that this vulnerability can also affect query string parameters used in XMLHttpRequest (XHR), runtime attribute creation and other plugin technologies (e.g. Adobe Flash’s flashvars variables).&lt;br /&gt;
 &lt;br /&gt;
== References ==&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
HTTP Parameter Pollution - Luca Carettoni, Stefano di Paola [https://www.owasp.org/images/b/ba/AppsecEU09_CarettoniDiPaola_v0.8.pdf]&lt;br /&gt;
&lt;br /&gt;
Split and Join (Bypassing Web Application Firewalls with HTTP Parameter Pollution) - Lavakumar Kuppan [http://www.andlabs.org/whitepapers/Split_and_Join.pdf]&lt;br /&gt;
&lt;br /&gt;
Client-side Http Parameter Pollution Example (Yahoo! Classic Mail flaw) - Stefano di Paola [http://blog.mindedsecurity.com/2009/05/client-side-http-parameter-pollution.html]&lt;br /&gt;
&lt;br /&gt;
How to Detect HTTP Parameter Pollution Attacks - Chrysostomos Daniel [http://www.acunetix.com/blog/whitepaper-http-parameter-pollution/]&lt;br /&gt;
&lt;br /&gt;
CAPEC-460: HTTP Parameter Pollution (HPP) - Evgeny Lebanidze [http://capec.mitre.org/data/definitions/460.html]&lt;br /&gt;
&lt;br /&gt;
Automated Discovery of Parameter Pollution Vulnerabilities in Web Applications - Marco Balduzzi, Carmen Torrano Gimenez, Davide Balzarotti, Engin Kirda [http://www.iseclab.org/people/embyte/papers/hpp.pdf]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Tools'''&amp;lt;br&amp;gt;&lt;br /&gt;
OWASP ZAP HPP Passive/Active Scanners [https://code.google.com/p/zap-extensions/wiki/V1Extensions]&lt;br /&gt;
&lt;br /&gt;
HPP Finder (Chrome Plugin) [https://chrome.google.com/webstore/detail/hpp-finder]&lt;/div&gt;</summary>
		<author><name>Luca Carettoni</name></author>	</entry>

	</feed>