<?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=Inn3rbr4in</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=Inn3rbr4in"/>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php/Special:Contributions/Inn3rbr4in"/>
		<updated>2026-04-22T20:09:31Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.27.2</generator>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Backend_Security_Project_Tools&amp;diff=27453</id>
		<title>OWASP Backend Security Project Tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Backend_Security_Project_Tools&amp;diff=27453"/>
				<updated>2008-04-02T13:42:27Z</updated>
		
		<summary type="html">&lt;p&gt;Inn3rbr4in: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== [http://www.owasp.org/index.php/OWASP_Backend_Security_Project_Tools Tools] ==&lt;br /&gt;
&lt;br /&gt;
The aim of this section is to enumerate and quickly describe the tools used to find and exploit some vulnerabilities concerning database management systems.&lt;br /&gt;
&lt;br /&gt;
=== Free Tools ===&lt;br /&gt;
==== [http://sqlninja.sourceforge.net SQL Ninja] ====&lt;br /&gt;
SQL Ninja is a tool, written in Perl, which helps a penetration tester to gain a shell on a  system running Microsoft SQL server, exploiting a web application resulted vulnerable to SQL Injection.&lt;br /&gt;
==== [http://sqlmap.sourceforge.net SQLMap] ====&lt;br /&gt;
SQLMap is a Python application able to collect information and data, such as databases names, table’s names and contents, and read system files from a MySQL, Oracle, PostgreSQL or Microsoft SQL Server Database Management Systems, exploiting the SQL Injection vulnerability of a vulnerable web application.&lt;br /&gt;
==== [http://www.owasp.org/index.php/Category:OWASP_SQLiX_Project OWASP SQLiX] ====&lt;br /&gt;
SQLiX is a tool, written in Perl, able to identify the back-end database, find blind and normal injection and also execute system commands on a Microsoft SQL Server. It was also successfully tested on MySQL and PostgreSQL.&lt;br /&gt;
==== [http://www.imperva.com/products/scuba.html Scuba] ====&lt;br /&gt;
Scuba is a Database vulnerability scanner able to find vulnerabilities like unpatched software, unsafe processes and weak password on Oracle, DB2, Microsoft SQL Server and Sybase.&lt;br /&gt;
==== [http://sqid.rubyforge.org/ SQID SQL Injection Digger] ====&lt;br /&gt;
SQL injection digger is a command line program, written in [http://www.ruby-lang.org/ ruby], that looks for SQL injections and common errors in websites. It can perform the following operations:&lt;br /&gt;
* Look for SQL injection in a webpage, by looking for links&lt;br /&gt;
* Submit forms in a webpage to look for SQL injection&lt;br /&gt;
* Crawl a website to perform the above listed operations&lt;br /&gt;
* Perform a google search for a query and look for SQL injections in the urls found&lt;br /&gt;
==== [http://www.ictsc.it/site/IT/projects/sqlDumper/sqlDumper.php SqlDumper] ====&lt;br /&gt;
Exploiting a SQL injection vulnerability SqlDumper can make dump of any file in the file system. It work only with DBMS MySql.&lt;br /&gt;
==== [http://www.sqlpowerinjector.com SQL Power Injector] ====&lt;br /&gt;
SQL Power Injector is a .Net 1.1 application used to find and exploit SQL Injection vulnerability through a vulnerable web application which uses SQL Server, MySql, Sybase/Adaptive Server and DB2 Database Management Systems as backend. It’s main feature is the support for multithreaded automation of the injection.&lt;br /&gt;
==== [http://www.northern-monkee.co.uk/index.html BobCat] ====&lt;br /&gt;
BobCat is a tool based on “Data Thief” and realized in .NET 2.0. It permits to take full advantage of SQL Injection vulnerability discovered in a web application to steal data, gain a shell or a reverse shell on the database management system machine. It has been tested on MSDE2000.&lt;br /&gt;
==== [http://sqltool.itdefence.ru/indexeng.html SQL Injection Pentesting Tool] ====&lt;br /&gt;
SQL Injection Tool is an application used to exploit SQL Injection vulnerability found in a web application, it’s able to retrieve some useful information and data from a Microsoft SQL server. It also includes a terminal to send raw HTTP requests.&lt;br /&gt;
&lt;br /&gt;
=== Commercial Tools ===&lt;br /&gt;
==== [http://www.appsecinc.com/products/appdetective/ AppDetectivePro] ====&lt;br /&gt;
AppDetectivePro is a network-based, vulnerability assessment scanner. Running from a host machine, AppDetectivePro discovers database applications within your infrastructure and assesses their security strength. AppDetectivePro modules allow enterprises to assess two primary application tiers - application / middleware, and back-end databases - through a single interface. It locates, examines, reports and fixes security holes and misconfigurations. AppDetectivePro currently supports MySql, Oracle, Sybase, IBM DB2, Microsoft SQL Server and Lotus Notes/Domino.&lt;br /&gt;
==== [http://www.ngssoftware.com NGSQuirrel] ====&lt;br /&gt;
NGSQuirrel is a tool used to execute vulnerability assessments on database management systems. It’s able to find vulnerabilities and mistaken configuration or policy on SQL Server, Oracle, IBM DB2, Sybase ASE and Informix.&lt;br /&gt;
==== [http://www.acunetix.com/vulnerability-scanner/sql-injection.htm Acunetix Web Application Security (WVS)] ====&lt;br /&gt;
Acunetix Web Vulnerability Scanner (WVS) is an automated web application security testing tool that audits your web applications by checking for exploitable hacking vulnerabilities. It was founded to combat the alarming rise in web attacks including SQL Injection and Cross-Site Scripting among others. &lt;br /&gt;
&lt;br /&gt;
== Web Application Vulnerability Scanners == &lt;br /&gt;
''' The web application vulnerability scanners listed below are able to discover SQL Injection vulnerability: '''&lt;br /&gt;
    - [http://www.watchfire.com Appscan]&lt;br /&gt;
    - [http://www.cenzic.com Hailstorm]&lt;br /&gt;
    - [http://www.whitehatsec.com/services.shtml Sentinel]&lt;br /&gt;
    - [http://www.spydynamics.com/products/webinspect/toolkit.html SQL Injector (SPI Toolkit)]&lt;/div&gt;</summary>
		<author><name>Inn3rbr4in</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Backend_Security_Project_Tools&amp;diff=27451</id>
		<title>OWASP Backend Security Project Tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Backend_Security_Project_Tools&amp;diff=27451"/>
				<updated>2008-04-02T13:36:06Z</updated>
		
		<summary type="html">&lt;p&gt;Inn3rbr4in: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== [http://www.owasp.org/index.php/OWASP_Backend_Security_Project_Tools Tools] ==&lt;br /&gt;
&lt;br /&gt;
The aim of this section is to enumerate and quickly describe the tools used to find and exploit some vulnerabilities concerning database management systems.&lt;br /&gt;
&lt;br /&gt;
=== Free Tools ===&lt;br /&gt;
==== [http://sqlninja.sourceforge.net SQL Ninja] ====&lt;br /&gt;
SQL Ninja is a tool, written in Perl, which helps a penetration tester to gain a shell on a  system running Microsoft SQL server, exploiting a web application resulted vulnerable to SQL Injection.&lt;br /&gt;
==== [http://sqlmap.sourceforge.net SQLMap] ====&lt;br /&gt;
SQLMap is a Python application able to collect information and data, such as databases names, table’s names and contents, and read system files from a MySQL, Oracle, PostgreSQL or Microsoft SQL Server Database Management Systems, exploiting the SQL Injection vulnerability of a vulnerable web application.&lt;br /&gt;
==== [http://www.owasp.org/index.php/Category:OWASP_SQLiX_Project OWASP SQLiX] ====&lt;br /&gt;
SQLiX is a tool, written in Perl, able to identify the back-end database, find blind and normal injection and also execute system commands on a Microsoft SQL Server. It was also successfully tested on MySQL and PostgreSQL.&lt;br /&gt;
==== [http://www.imperva.com/products/scuba.html Scuba] ====&lt;br /&gt;
Scuba is a Database vulnerability scanner able to find vulnerabilities like unpatched software, unsafe processes and weak password on Oracle, DB2, Microsoft SQL Server and Sybase.&lt;br /&gt;
==== [http://sqid.rubyforge.org/ SQID SQL Injection Digger] ====&lt;br /&gt;
SQL injection digger is a command line program, written in [http://www.ruby-lang.org/ ruby], that looks for SQL injections and common errors in websites. It can perform the following operations:&lt;br /&gt;
* Look for SQL injection in a webpage, by looking for links&lt;br /&gt;
* Submit forms in a webpage to look for SQL injection&lt;br /&gt;
* Crawl a website to perform the above listed operations&lt;br /&gt;
* Perform a google search for a query and look for SQL injections in the urls found&lt;br /&gt;
==== [http://www.ictsc.it/site/IT/projects/sqlDumper/sqlDumper.php SqlDumper] ====&lt;br /&gt;
Exploiting a SQL injection vulnerability SqlDumper can make dump of any file in the file system. It work only with DBMS MySql.&lt;br /&gt;
==== [http://www.sqlpowerinjector.com SQL Power Injector] ====&lt;br /&gt;
SQL Power Injector is a .Net 1.1 application used to find and exploit SQL Injection vulnerability through a vulnerable web application which uses SQL Server, MySql, Sybase/Adaptive Server and DB2 Database Management Systems as backend. It’s main feature is the support for multithreaded automation of the injection.&lt;br /&gt;
==== [http://www.northern-monkee.co.uk/index.html BobCat] ====&lt;br /&gt;
BobCat is a tool based on “Data Thief” and realized in .NET 2.0. It permits to take full advantage of SQL Injection vulnerability discovered in a web application to steal data, gain a shell or a reverse shell on the database management system machine. It has been tested on MSDE2000.&lt;br /&gt;
==== [http://sqltool.itdefence.ru/indexeng.html SQL Injection Pentesting Tool] ====&lt;br /&gt;
SQL Injection Tool is an application used to exploit SQL Injection vulnerability found in a web application, it’s able to retrieve some useful information and data from a Microsoft SQL server. It also includes a terminal to send raw HTTP requests.&lt;br /&gt;
&lt;br /&gt;
=== Commercial Tools ===&lt;br /&gt;
==== [http://www.appsecinc.com/products/appdetective/ AppDetectivePro] ====&lt;br /&gt;
AppDetectivePro is a network-based, vulnerability assessment scanner. Running from a host machine, AppDetectivePro discovers database applications within your infrastructure and assesses their security strength. AppDetectivePro modules allow enterprises to assess two primary application tiers - application / middleware, and back-end databases - through a single interface. It locates, examines, reports and fixes security holes and misconfigurations. AppDetectivePro currently supports MySql, Oracle, Sybase, IBM DB2, Microsoft SQL Server and Lotus Notes/Domino.&lt;br /&gt;
==== [http://www.ngssoftware.com NGSQuirrel] ====&lt;br /&gt;
NGSQuirrel is a tool used to execute vulnerability assessments on database management systems. It’s able to find vulnerabilities and mistaken configuration or policy on SQL Server, Oracle, IBM DB2, Sybase ASE and Informix.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Web Application Vulnerability Scanners == &lt;br /&gt;
''' The web application vulnerability scanners listed below are able to discover SQL Injection vulnerability: '''&lt;br /&gt;
    - [http://www.acunetix.com/vulnerability-scanner/sql-injection.htm Acunetix]&lt;br /&gt;
    - [http://www.watchfire.com Appscan]&lt;br /&gt;
    - [http://www.cenzic.com Hailstorm]&lt;br /&gt;
    - [http://www.whitehatsec.com/services.shtml Sentinel]&lt;br /&gt;
    - [http://www.spydynamics.com/products/webinspect/toolkit.html SQL Injector (SPI Toolkit)]&lt;/div&gt;</summary>
		<author><name>Inn3rbr4in</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Backend_Security_Project_Tools&amp;diff=27450</id>
		<title>OWASP Backend Security Project Tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Backend_Security_Project_Tools&amp;diff=27450"/>
				<updated>2008-04-02T13:26:22Z</updated>
		
		<summary type="html">&lt;p&gt;Inn3rbr4in: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== [http://www.owasp.org/index.php/OWASP_Backend_Security_Project_Tools Tools] ==&lt;br /&gt;
&lt;br /&gt;
The aim of this section is to enumerate and quickly describe the tools used to find and exploit some vulnerabilities concerning database management systems.&lt;br /&gt;
&lt;br /&gt;
=== Free Tools ===&lt;br /&gt;
==== [http://sqlninja.sourceforge.net SQL Ninja] ====&lt;br /&gt;
SQL Ninja is a tool, written in Perl, which helps a penetration tester to gain a shell on a  system running Microsoft SQL server, exploiting a web application resulted vulnerable to SQL Injection.&lt;br /&gt;
==== [http://sqlmap.sourceforge.net SQLMap] ====&lt;br /&gt;
SQLMap is a Python application able to collect information and data, such as databases names, table’s names and contents, and read system files from a MySQL, Oracle, PostgreSQL or Microsoft SQL Server Database Management Systems, exploiting the SQL Injection vulnerability of a vulnerable web application.&lt;br /&gt;
==== [http://www.owasp.org/index.php/Category:OWASP_SQLiX_Project OWASP SQLiX] ====&lt;br /&gt;
SQLiX is a tool, written in Perl, able to identify the back-end database, find blind and normal injection and also execute system commands on a Microsoft SQL Server. It was also successfully tested on MySQL and PostgreSQL.&lt;br /&gt;
==== [http://www.imperva.com/products/scuba.html Scuba] ====&lt;br /&gt;
Scuba is a Database vulnerability scanner able to find vulnerabilities like unpatched software, unsafe processes and weak password on Oracle, DB2, Microsoft SQL Server and Sybase.&lt;br /&gt;
==== [http://sqid.rubyforge.org/ SQID SQL Injection Digger] ====&lt;br /&gt;
SQL injection digger is a command line program, written in [http://www.ruby-lang.org/ ruby], that looks for SQL injections and common errors in websites. It can perform the following operations:&lt;br /&gt;
* Look for SQL injection in a webpage, by looking for links&lt;br /&gt;
* Submit forms in a webpage to look for SQL injection&lt;br /&gt;
* Crawl a website to perform the above listed operations&lt;br /&gt;
* Perform a google search for a query and look for SQL injections in the urls found&lt;br /&gt;
==== [http://www.ictsc.it/site/IT/projects/sqlDumper/sqlDumper.php SqlDumper] ====&lt;br /&gt;
Exploiting a SQL injection vulnerability SqlDumper can make dump of any file in the file system. It work only with DBMS MySql.&lt;br /&gt;
==== [http://www.sqlpowerinjector.com SQL Power Injector] ====&lt;br /&gt;
SQL Power Injector is a .Net 1.1 application used to find and exploit SQL Injection vulnerability through a vulnerable web application which uses SQL Server, MySql, Sybase/Adaptive Server and DB2 Database Management Systems as backend. It’s main feature is the support for multithreaded automation of the injection.&lt;br /&gt;
==== [http://www.northern-monkee.co.uk/index.html BobCat] ====&lt;br /&gt;
BobCat is a tool based on “Data Thief” and realized in .NET 2.0. It permits to take full advantage of SQL Injection vulnerability discovered in a web application to steal data, gain a shell or a reverse shell on the database management system machine. It has been tested on MSDE2000.&lt;br /&gt;
==== [http://sqltool.itdefence.ru/indexeng.html SQL Injection Pentesting Tool] ====&lt;br /&gt;
SQL Injection Tool is an application used to exploit SQL Injection vulnerability found in a web application, it’s able to retrieve some useful information and data from a Microsoft SQL server. It also includes a terminal to send raw HTTP requests.&lt;br /&gt;
&lt;br /&gt;
=== Commercial Tools ===&lt;br /&gt;
==== [http://www.appsecinc.com/products/index.shtml AppDetectivePro] ====&lt;br /&gt;
&amp;lt;Coming soon the description&amp;gt;&lt;br /&gt;
==== [http://www.ngssoftware.com NGSQuirrel] ====&lt;br /&gt;
NGSQuirrel is a tool used to execute vulnerability assessments on database management systems. It’s able to find vulnerabilities and mistaken configuration or policy on SQL Server, Oracle, IBM DB2, Sybase ASE and Informix.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Web Application Vulnerability Scanners == &lt;br /&gt;
''' The web application vulnerability scanners listed below are able to discover SQL Injection vulnerability: '''&lt;br /&gt;
    - [http://www.acunetix.com/vulnerability-scanner/sql-injection.htm Acunetix]&lt;br /&gt;
    - [http://www.watchfire.com Appscan]&lt;br /&gt;
    - [http://www.cenzic.com Hailstorm]&lt;br /&gt;
    - [http://www.whitehatsec.com/services.shtml Sentinel]&lt;br /&gt;
    - [http://www.spydynamics.com/products/webinspect/toolkit.html SQL Injector (SPI Toolkit)]&lt;/div&gt;</summary>
		<author><name>Inn3rbr4in</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Backend_Security_Project_Tools&amp;diff=27406</id>
		<title>OWASP Backend Security Project Tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Backend_Security_Project_Tools&amp;diff=27406"/>
				<updated>2008-04-01T10:13:51Z</updated>
		
		<summary type="html">&lt;p&gt;Inn3rbr4in: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== [http://www.owasp.org/index.php/OWASP_Backend_Security_Project_Tools Tools] ==&lt;br /&gt;
&lt;br /&gt;
The aim of this section is to enumerate and quickly describe the tools used to find and exploit some vulnerabilities concerning database management systems.&lt;br /&gt;
&lt;br /&gt;
== [http://sqlninja.sourceforge.net SQL Ninja] ==&lt;br /&gt;
SQL Ninja is a tool, written in Perl, which helps a penetration tester to gain a shell on a  system running Microsoft SQL server, exploiting a web application resulted vulnerable to SQL Injection.&lt;br /&gt;
&lt;br /&gt;
== [http://www.sqlpowerinjector.com SQL Power Injector] ==&lt;br /&gt;
SQL Power Injector is a .Net 1.1 application used to find and exploit SQL Injection vulnerability through a vulnerable web application which uses SQL Server, MySql, Sybase/Adaptive Server and DB2 Database Management Systems as backend. It’s main feature is the support for multithreaded automation of the injection.&lt;br /&gt;
&lt;br /&gt;
== [http://sqlmap.sourceforge.net SQLMap] == &lt;br /&gt;
SQLMap is a Python application able to collect information and data, such as databases names, table’s names and contents, and read system files from a MySQL, Oracle, PostgreSQL or Microsoft SQL Server Database Management Systems, exploiting the SQL Injection vulnerability of a vulnerable web application.&lt;br /&gt;
&lt;br /&gt;
== [http://sqltool.itdefence.ru/indexeng.html SQL Injection Tool] == &lt;br /&gt;
SQL Injection Tool is an application used to exploit SQL Injection vulnerability found in a web application, it’s able to retrieve some useful information and data from a Microsoft SQL server. It also includes a terminal to send raw HTTP requests. &lt;br /&gt;
&lt;br /&gt;
== [http://www.northern-monkee.co.uk/projects/bobcat/bobcat.html BobCat] == &lt;br /&gt;
BobCat is a tool based on “Data Thief” and realized in .NET 2.0. It permits to take full advantage of SQL Injection vulnerability discovered in a web application to steal data, gain a shell or a reverse shell on the database management system machine. It has been tested on MSDE2000.&lt;br /&gt;
&lt;br /&gt;
== [http://www.darknet.org.uk/2007/05/owasp-sqlix-project-sql-injection-scanner OWASP SQLiX] == &lt;br /&gt;
SQLiX is a tool, written in Perl, able to identify the back-end database, find blind and normal injection and also execute system commands on a Microsoft SQL Server. It was also successfully tested on MySQL and PostgreSQL. &lt;br /&gt;
&lt;br /&gt;
== [http://www.ngssoftware.com NGSQuirrel] == &lt;br /&gt;
NGSQuirrel is a tool used to execute vulnerability assessments on database management systems. It’s able to find vulnerabilities and mistaken configuration or policy on SQL Server, Oracle, IBM DB2, Sybase ASE and Informix.&lt;br /&gt;
&lt;br /&gt;
== [http://www.imperva.com/products/scuba.html Scuba] == &lt;br /&gt;
Scuba is a Database vulnerability scanner able to find vulnerabilities like unpatched software, unsafe processes and weak password on Oracle, DB2, Microsoft SQL Server and Sybase.&lt;br /&gt;
&lt;br /&gt;
== [http://sqid.rubyforge.org/ SQID SQL Injection Digger] == &lt;br /&gt;
SQL injection digger is a command line program, written in [http://www.ruby-lang.org/ ruby], that looks for SQL injections and common errors in websites. It can perform the following operations:&lt;br /&gt;
* Look for SQL injection in a webpage, by looking for links&lt;br /&gt;
* Submit forms in a webpage to look for SQL injection&lt;br /&gt;
* Crawl a website to perform the above listed operations&lt;br /&gt;
* Perform a google search for a query and look for SQL injections in the urls found&lt;br /&gt;
&lt;br /&gt;
== [http://www.ictsc.it/site/IT/projects/sqlDumper/sqlDumper.php SqlDumper] ==&lt;br /&gt;
Exploiting a SQL injection vulnerability SqlDumper can make dump of any file in the file system. It work only with DBMS MySql.&lt;br /&gt;
&lt;br /&gt;
== Web Application Vulnerability Scanners == &lt;br /&gt;
''' The web application vulnerability scanners listed below are able to discover SQL Injection vulnerability: '''&lt;br /&gt;
    - [http://www.acunetix.com/vulnerability-scanner/sql-injection.htm Acunetix]&lt;br /&gt;
    - [http://www.watchfire.com Appscan]&lt;br /&gt;
    - [http://www.cenzic.com Hailstorm]&lt;br /&gt;
    - [http://www.whitehatsec.com/services.shtml Sentinel]&lt;br /&gt;
    - [http://www.spydynamics.com/products/webinspect/toolkit.html SQL Injector (SPI Toolkit)]&lt;/div&gt;</summary>
		<author><name>Inn3rbr4in</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Backend_Security_Project_Tools&amp;diff=27399</id>
		<title>OWASP Backend Security Project Tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Backend_Security_Project_Tools&amp;diff=27399"/>
				<updated>2008-04-01T09:53:30Z</updated>
		
		<summary type="html">&lt;p&gt;Inn3rbr4in: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== [http://www.owasp.org/index.php/OWASP_Backend_Security_Project_Tools Tools] ==&lt;br /&gt;
&lt;br /&gt;
The aim of this section is to enumerate and quickly describe the tools used to find and exploit some vulnerabilities concerning database management systems.&lt;br /&gt;
&lt;br /&gt;
== [http://sqlninja.sourceforge.net SQL Ninja] ==&lt;br /&gt;
SQL Ninja is a tool, written in Perl, which helps a penetration tester to gain a shell on a  system running Microsoft SQL server, exploiting a web application resulted vulnerable to SQL Injection.&lt;br /&gt;
&lt;br /&gt;
== [http://www.sqlpowerinjector.com SQL Power Injector] ==&lt;br /&gt;
SQL Power Injector is a .Net 1.1 application used to find and exploit SQL Injection vulnerability through a vulnerable web application which uses SQL Server, MySql, Sybase/Adaptive Server and DB2 Database Management Systems as backend. It’s main feature is the support for multithreaded automation of the injection.&lt;br /&gt;
&lt;br /&gt;
== [http://sqlmap.sourceforge.net SQLMap] == &lt;br /&gt;
SQLMap is a Python application able to collect information and data, such as databases names, table’s names and contents, and read system files from a MySQL, Oracle, PostgreSQL or Microsoft SQL Server Database Management Systems, exploiting the SQL Injection vulnerability of a vulnerable web application.&lt;br /&gt;
&lt;br /&gt;
== [http://sqltool.itdefence.ru/indexeng.html SQL Injection Tool] == &lt;br /&gt;
SQL Injection Tool is an application used to exploit SQL Injection vulnerability found in a web application, it’s able to retrieve some useful information and data from a Microsoft SQL server. It also includes a terminal to send raw HTTP requests. &lt;br /&gt;
&lt;br /&gt;
== [http://www.northern-monkee.co.uk/projects/bobcat/bobcat.html BobCat] == &lt;br /&gt;
BobCat is a tool based on “Data Thief” and realized in .NET 2.0. It permits to take full advantage of SQL Injection vulnerability discovered in a web application to steal data, gain a shell or a reverse shell on the database management system machine. It has been tested on MSDE2000.&lt;br /&gt;
&lt;br /&gt;
== [http://www.darknet.org.uk/2007/05/owasp-sqlix-project-sql-injection-scanner OWASP SQLiX] == &lt;br /&gt;
SQLiX is a tool, written in Perl, able to identify the back-end database, find blind and normal injection and also execute system commands on a Microsoft SQL Server. It was also successfully tested on MySQL and PostgreSQL. &lt;br /&gt;
&lt;br /&gt;
== [http://www.ngssoftware.com NGSQuirrel] == &lt;br /&gt;
NGSQuirrel is a tool used to execute vulnerability assessments on database management systems. It’s able to find vulnerabilities and mistaken configuration or policy on SQL Server, Oracle, IBM DB2, Sybase ASE and Informix.&lt;br /&gt;
&lt;br /&gt;
== [http://www.imperva.com/products/scuba.html Scuba] == &lt;br /&gt;
Scuba is a Database vulnerability scanner able to find vulnerabilities like unpatched software, unsafe processes and weak password on Oracle, DB2, Microsoft SQL Server and Sybase.&lt;br /&gt;
&lt;br /&gt;
== [http://sqid.rubyforge.org/ SQID SQL Injection Digger] == &lt;br /&gt;
SQL injection digger is a command line program, written in [http://www.ruby-lang.org/ ruby], that looks for SQL injections and common errors in websites. It can perform the following operations:&lt;br /&gt;
* Look for SQL injection in a webpage, by looking for links&lt;br /&gt;
* Submit forms in a webpage to look for SQL injection&lt;br /&gt;
* Crawl a website to perform the above listed operations&lt;br /&gt;
* Perform a google search for a query and look for SQL injections in the urls found&lt;br /&gt;
&lt;br /&gt;
== Web Application Vulnerability Scanners == &lt;br /&gt;
''' The web application vulnerability scanners listed below are able to discover SQL Injection vulnerability: '''&lt;br /&gt;
    - [http://www.acunetix.com/vulnerability-scanner/sql-injection.htm Acunetix]&lt;br /&gt;
    - [http://www.watchfire.com Appscan]&lt;br /&gt;
    - [http://www.cenzic.com Hailstorm]&lt;br /&gt;
    - [http://www.whitehatsec.com/services.shtml Sentinel]&lt;br /&gt;
    - [http://www.spydynamics.com/products/webinspect/toolkit.html SQL Injector (SPI Toolkit)]&lt;/div&gt;</summary>
		<author><name>Inn3rbr4in</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_SSL-TLS_(OWASP-CM-001)&amp;diff=25335</id>
		<title>Testing for SSL-TLS (OWASP-CM-001)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_SSL-TLS_(OWASP-CM-001)&amp;diff=25335"/>
				<updated>2008-02-14T10:51:27Z</updated>
		
		<summary type="html">&lt;p&gt;Inn3rbr4in: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[http://www.owasp.org/index.php/Web_Application_Penetration_Testing_AoC Up]]&lt;br /&gt;
{{Template:OWASP Testing Guide v2}}&lt;br /&gt;
&lt;br /&gt;
== Brief Summary ==&lt;br /&gt;
&lt;br /&gt;
Due to historical exporting restrictions of high grade cryptography, legacy and new web servers could be able to handle a weak cryptographic support.&lt;br /&gt;
&lt;br /&gt;
Even if high grade ciphers are normally used and installed, some misconfiguration in server installation could be used to force the use of a weaker cipher to gain access to the supposed secure communication channel. &lt;br /&gt;
&lt;br /&gt;
==Testing SSL / TLS cipher specifications and requirements for site==&lt;br /&gt;
&lt;br /&gt;
The http clear-text protocol is normally secured via an SSL or TLS tunnel, resulting in https traffic. In addition to providing encryption of data in transit, https allows the identification of servers (and, optionally, of clients) by means of digital certificates.&lt;br /&gt;
&lt;br /&gt;
Historically, there have been limitations set in place by the U.S. government to allow cryptosystems to be exported only for key sizes of, at most, 40 bits, a key length which could be broken and would allow the decryption of communications. Since then, cryptographic export regulations have been relaxed (though some constraints still hold); however, it is important to check the SSL configuration being used to avoid putting in place cryptographic support which could be easily defeated. SSL-based services should not offer the possibility to choose weak ciphers.&lt;br /&gt;
&lt;br /&gt;
Technically, cipher determination is performed as follows. In the initial phase of a SSL connection setup, the client sends to the server a Client Hello message specifying, among other information, the cipher suites that it is able to handle. A client is usually a web browser (most popular SSL client nowadays…), but not necessarily, since it can be any SSL-enabled application; the same holds for the server, which needs not be a web server, though this is the most common case. (For example, a noteworthy class of SSL clients is that of SSL proxies such as stunnel (www.stunnel.org) which can be used to allow non-SSL enabled tools to talk to SSL services.) A cipher suite is specified by an encryption protocol (DES, RC4, AES), the encryption key length (such as 40, 56, or 128 bits), and a hash algorithm (SHA, MD5) used for integrity checking. Upon receiving a Client Hello message, the server decides which cipher suite it will use for that session. It is possible (for example, by means of configuration directives) to specify which cipher suites the server will honour. In this way you may control, for example, whether or not conversations with clients will support 40-bit encryption only.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Black Box Test and example===&lt;br /&gt;
&lt;br /&gt;
In order to detect possible support of weak ciphers, the ports associated to SSL/TLS wrapped services must be identified. These typically include port 443, which is the standard https port; however, this may change because a) https services may be configured to run on non-standard ports, and b) there may be additional SSL/TLS wrapped services related to the web application. In general, a service discovery is required to identify such ports.&lt;br /&gt;
&lt;br /&gt;
The nmap scanner, via the “–sV” scan option, is able to identify SSL services. Vulnerability Scanners, in addition to performing service discovery, may include checks against weak ciphers (for example, the Nessus scanner has the capability of checking SSL services on arbitrary ports, and will report weak ciphers).&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''. SSL service recognition via nmap.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@test]# nmap -F -sV localhost&lt;br /&gt;
&lt;br /&gt;
Starting nmap 3.75 ( http://www.insecure.org/nmap/ ) at 2005-07-27 14:41 CEST&lt;br /&gt;
Interesting ports on localhost.localdomain (127.0.0.1):&lt;br /&gt;
(The 1205 ports scanned but not shown below are in state: closed)&lt;br /&gt;
&lt;br /&gt;
PORT      STATE SERVICE         VERSION&lt;br /&gt;
443/tcp   open  ssl             OpenSSL&lt;br /&gt;
901/tcp   open  http            Samba SWAT administration server&lt;br /&gt;
8080/tcp  open  http            Apache httpd 2.0.54 ((Unix) mod_ssl/2.0.54 OpenSSL/0.9.7g PHP/4.3.11)&lt;br /&gt;
8081/tcp  open  http            Apache Tomcat/Coyote JSP engine 1.0&lt;br /&gt;
&lt;br /&gt;
Nmap run completed -- 1 IP address (1 host up) scanned in 27.881 seconds&lt;br /&gt;
[root@test]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''. Identifying weak ciphers with Nessus.&lt;br /&gt;
The following is an anonymized excerpt of a report generated by the Nessus scanner, corresponding to the identification of a server certificate allowing weak ciphers (see underlined text).&lt;br /&gt;
&lt;br /&gt;
  '''https (443/tcp)'''&lt;br /&gt;
  '''Description'''&lt;br /&gt;
  Here is the SSLv2 server certificate:&lt;br /&gt;
  Certificate:&lt;br /&gt;
  Data:&lt;br /&gt;
  Version: 3 (0x2)&lt;br /&gt;
  Serial Number: 1 (0x1)&lt;br /&gt;
  Signature Algorithm: md5WithRSAEncryption&lt;br /&gt;
  Issuer: C=**, ST=******, L=******, O=******, OU=******, CN=******&lt;br /&gt;
  Validity&lt;br /&gt;
  Not Before: Oct 17 07:12:16 2002 GMT&lt;br /&gt;
  Not After : Oct 16 07:12:16 2004 GMT&lt;br /&gt;
  Subject: C=**, ST=******, L=******, O=******, CN=******&lt;br /&gt;
  Subject Public Key Info:&lt;br /&gt;
  Public Key Algorithm: rsaEncryption&lt;br /&gt;
  RSA Public Key: (1024 bit)&lt;br /&gt;
  Modulus (1024 bit):&lt;br /&gt;
  00:98:4f:24:16:cb:0f:74:e8:9c:55:ce:62:14:4e:&lt;br /&gt;
  6b:84:c5:81:43:59:c1:2e:ac:ba:af:92:51:f3:0b:&lt;br /&gt;
  ad:e1:4b:22:ba:5a:9a:1e:0f:0b:fb:3d:5d:e6:fc:&lt;br /&gt;
  ef:b8:8c:dc:78:28:97:8b:f0:1f:17:9f:69:3f:0e:&lt;br /&gt;
  72:51:24:1b:9c:3d:85:52:1d:df:da:5a:b8:2e:d2:&lt;br /&gt;
  09:00:76:24:43:bc:08:67:6b:dd:6b:e9:d2:f5:67:&lt;br /&gt;
  e1:90:2a:b4:3b:b4:3c:b3:71:4e:88:08:74:b9:a8:&lt;br /&gt;
  2d:c4:8c:65:93:08:e6:2f:fd:e0:fa:dc:6d:d7:a2:&lt;br /&gt;
  3d:0a:75:26:cf:dc:47:74:29&lt;br /&gt;
  Exponent: 65537 (0x10001)&lt;br /&gt;
  X509v3 extensions:&lt;br /&gt;
  X509v3 Basic Constraints:&lt;br /&gt;
  CA:FALSE&lt;br /&gt;
  Netscape Comment:&lt;br /&gt;
  OpenSSL Generated Certificate&lt;br /&gt;
  Page 10&lt;br /&gt;
  Network Vulnerability Assessment Report 25.05.2005&lt;br /&gt;
  X509v3 Subject Key Identifier:&lt;br /&gt;
  10:00:38:4C:45:F0:7C:E4:C6:A7:A4:E2:C9:F0:E4:2B:A8:F9:63:A8&lt;br /&gt;
  X509v3 Authority Key Identifier:&lt;br /&gt;
  keyid:CE:E5:F9:41:7B:D9:0E:5E:5D:DF:5E:B9:F3:E6:4A:12:19:02:76:CE&lt;br /&gt;
  DirName:/C=**/ST=******/L=******/O=******/OU=******/CN=******&lt;br /&gt;
  serial:00&lt;br /&gt;
  Signature Algorithm: md5WithRSAEncryption&lt;br /&gt;
  7b:14:bd:c7:3c:0c:01:8d:69:91:95:46:5c:e6:1e:25:9b:aa:&lt;br /&gt;
  8b:f5:0d:de:e3:2e:82:1e:68:be:97:3b:39:4a:83:ae:fd:15:&lt;br /&gt;
  2e:50:c8:a7:16:6e:c9:4e:76:cc:fd:69:ae:4f:12:b8:e7:01:&lt;br /&gt;
  b6:58:7e:39:d1:fa:8d:49:bd:ff:6b:a8:dd:ae:83:ed:bc:b2:&lt;br /&gt;
  40:e3:a5:e0:fd:ae:3f:57:4d:ec:f3:21:34:b1:84:97:06:6f:&lt;br /&gt;
  f4:7d:f4:1c:84:cc:bb:1c:1c:e7:7a:7d:2d:e9:49:60:93:12:&lt;br /&gt;
  0d:9f:05:8c:8e:f9:cf:e8:9f:fc:15:c0:6e:e2:fe:e5:07:81:&lt;br /&gt;
  82:fc&lt;br /&gt;
  Here is the list of available SSLv2 ciphers:&lt;br /&gt;
  RC4-MD5&lt;br /&gt;
  EXP-RC4-MD5&lt;br /&gt;
  RC2-CBC-MD5&lt;br /&gt;
  EXP-RC2-CBC-MD5&lt;br /&gt;
  DES-CBC-MD5&lt;br /&gt;
  DES-CBC3-MD5&lt;br /&gt;
  RC4-64-MD5&lt;br /&gt;
  &amp;lt;u&amp;gt;The SSLv2 server offers 5 strong ciphers, but also 0 medium strength and '''2 weak &amp;quot;export class&amp;quot; ciphers'''.&lt;br /&gt;
  The weak/medium ciphers may be chosen by an export-grade or badly configured client software. They only offer a limited protection against a brute force attack&amp;lt;/u&amp;gt;&lt;br /&gt;
  &amp;lt;u&amp;gt;Solution: disable those ciphers and upgrade your client software if necessary.&amp;lt;/u&amp;gt;&lt;br /&gt;
  See http://support.microsoft.com/default.aspx?scid=kben-us216482&lt;br /&gt;
  or http://httpd.apache.org/docs-2.0/mod/mod_ssl.html#sslciphersuite&lt;br /&gt;
  This SSLv2 server also accepts SSLv3 connections.&lt;br /&gt;
  This SSLv2 server also accepts TLSv1 connections.&lt;br /&gt;
  &lt;br /&gt;
  Vulnerable hosts&lt;br /&gt;
  ''(list of vulnerable hosts follows)''&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''. Manually audit weak SSL cipher levels with OpenSSL. The following will attempt to connect to Google.com with SSLv2.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@test]# openssl s_client -no_tls1 -no_ssl3 -connect www.google.com:443&lt;br /&gt;
CONNECTED(00000003)&lt;br /&gt;
depth=0 /C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com&lt;br /&gt;
verify error:num=20:unable to get local issuer certificate&lt;br /&gt;
verify return:1&lt;br /&gt;
depth=0 /C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com&lt;br /&gt;
verify error:num=27:certificate not trusted&lt;br /&gt;
verify return:1&lt;br /&gt;
depth=0 /C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com&lt;br /&gt;
verify error:num=21:unable to verify the first certificate&lt;br /&gt;
verify return:1&lt;br /&gt;
---&lt;br /&gt;
Server certificate&lt;br /&gt;
-----BEGIN CERTIFICATE-----&lt;br /&gt;
MIIDYzCCAsygAwIBAgIQYFbAC3yUC8RFj9MS7lfBkzANBgkqhkiG9w0BAQQFADCB&lt;br /&gt;
zjELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJ&lt;br /&gt;
Q2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UE&lt;br /&gt;
CxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhh&lt;br /&gt;
d3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNl&lt;br /&gt;
cnZlckB0aGF3dGUuY29tMB4XDTA2MDQyMTAxMDc0NVoXDTA3MDQyMTAxMDc0NVow&lt;br /&gt;
aDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDU1v&lt;br /&gt;
dW50YWluIFZpZXcxEzARBgNVBAoTCkdvb2dsZSBJbmMxFzAVBgNVBAMTDnd3dy5n&lt;br /&gt;
b29nbGUuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC/e2Vs8U33fRDk&lt;br /&gt;
5NNpNgkB1zKw4rqTozmfwty7eTEI8PVH1Bf6nthocQ9d9SgJAI2WOBP4grPj7MqO&lt;br /&gt;
dXMTFWGDfiTnwes16G7NZlyh6peT68r7ifrwSsVLisJp6pUf31M5Z3D88b+Yy4PE&lt;br /&gt;
D7BJaTxq6NNmP1vYUJeXsGSGrV6FUQIDAQABo4GmMIGjMB0GA1UdJQQWMBQGCCsG&lt;br /&gt;
AQUFBwMBBggrBgEFBQcDAjBABgNVHR8EOTA3MDWgM6Axhi9odHRwOi8vY3JsLnRo&lt;br /&gt;
YXd0ZS5jb20vVGhhd3RlUHJlbWl1bVNlcnZlckNBLmNybDAyBggrBgEFBQcBAQQm&lt;br /&gt;
MCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnRoYXd0ZS5jb20wDAYDVR0TAQH/&lt;br /&gt;
BAIwADANBgkqhkiG9w0BAQQFAAOBgQADlTbBdVY6LD1nHWkhTadmzuWq2rWE0KO3&lt;br /&gt;
Ay+7EleYWPOo+EST315QLpU6pQgblgobGoI5x/fUg2U8WiYj1I1cbavhX2h1hda3&lt;br /&gt;
FJWnB3SiXaiuDTsGxQ267EwCVWD5bCrSWa64ilSJTgiUmzAv0a2W8YHXdG08+nYc&lt;br /&gt;
X/dVk5WRTw==&lt;br /&gt;
-----END CERTIFICATE-----&lt;br /&gt;
subject=/C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com&lt;br /&gt;
issuer=/C=ZA/ST=Western Cape/L=Cape Town/O=Thawte Consulting cc/OU=Certification Services Division/CN=Thawte Premium Server CA/emailAddress=premium-server@thawte.com&lt;br /&gt;
---&lt;br /&gt;
No client certificate CA names sent&lt;br /&gt;
---&lt;br /&gt;
Ciphers common between both SSL endpoints:&lt;br /&gt;
RC4-MD5         EXP-RC4-MD5     RC2-CBC-MD5&lt;br /&gt;
EXP-RC2-CBC-MD5 DES-CBC-MD5     DES-CBC3-MD5&lt;br /&gt;
RC4-64-MD5&lt;br /&gt;
---&lt;br /&gt;
SSL handshake has read 1023 bytes and written 333 bytes&lt;br /&gt;
---&lt;br /&gt;
New, SSLv2, Cipher is DES-CBC3-MD5&lt;br /&gt;
Server public key is 1024 bit&lt;br /&gt;
Compression: NONE&lt;br /&gt;
Expansion: NONE&lt;br /&gt;
SSL-Session:&lt;br /&gt;
    Protocol  : SSLv2&lt;br /&gt;
    Cipher    : DES-CBC3-MD5&lt;br /&gt;
    Session-ID: 709F48E4D567C70A2E49886E4C697CDE&lt;br /&gt;
    Session-ID-ctx:&lt;br /&gt;
    Master-Key: 649E68F8CF936E69642286AC40A80F433602E3C36FD288C3&lt;br /&gt;
    Key-Arg   : E8CB6FEB9ECF3033&lt;br /&gt;
    Start Time: 1156977226&lt;br /&gt;
    Timeout   : 300 (sec)&lt;br /&gt;
    Verify return code: 21 (unable to verify the first certificate)&lt;br /&gt;
---&lt;br /&gt;
closed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===White Box Test and example===&lt;br /&gt;
&lt;br /&gt;
Check the configuration of the web servers which provide https services. If the web application provides other SSL/TLS wrapped services, these should be checked as well.&lt;br /&gt;
&lt;br /&gt;
'''Example:''' The registry path in windows 2k3 defines the ciphers available to the server:&lt;br /&gt;
&lt;br /&gt;
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\&lt;br /&gt;
&lt;br /&gt;
==Testing SSL certificate validity – client and server==&lt;br /&gt;
&lt;br /&gt;
When accessing a web application via the https protocol, a secure channel is established between the client (usually the browser) and the server. The identity of one (the server) or both parties (client and server)  is then established by means of digital certificates. In order for the communication to be set up, a number of checks on the certificates must be passed. While discussing SSL and certificate based authentication is beyond the scope of this Guide, we will focus on the main criteria involved in ascertaining certificate validity: a) checking if the Certificate Authority (CA) is a known one (meaning one considered trusted), b) checking that the certificate is currently valid, and c) checking that the name of the site and the name reported in the certificate  match.&lt;br /&gt;
Remember to upgrade your browser because CA certs expired too, in every release of the browser, CA Certs has been renewed. Moreover it's important to update the browser because more web sites require strong cipher more of 40 or 56 bit.&lt;br /&gt;
&lt;br /&gt;
Let’s examine each check more in detail.&lt;br /&gt;
&lt;br /&gt;
a) Each browser comes with a preloaded list of trusted CAs, against which the certificate signing CA is compared (this list can be customized and expanded at will). During the initial negotiations with a https server, if the server certificate relates to a CA unknown to the browser, a warning is usually raised. This happens most often because a web application relies on a certificate signed by a self-established CA. Whether this is to be considered a concern depends on several factors. For example, this may be fine for an Intranet environment (think of corporate web email being provided via https; here, obviously all users recognize the internal CA as a trusted CA). When a service is provided to the general public via the Internet, however (i.e. when it is important to positively verify the identity of the server we are talking to), it is usually imperative to rely on a trusted CA, one which is  recognized by all the user base (and here we stop with our considerations, we won’t delve deeper in the implications of the trust model being used by digital certificates).&lt;br /&gt;
&lt;br /&gt;
b) Certificates have an associated period of validity, therefore they may expire. Again, we are warned by the browser about this. A public service needs a temporally valid certificate; otherwise, it means we are talking with a server whose certificate was issued by someone we trust, but has expired without being renewed.&lt;br /&gt;
&lt;br /&gt;
c) What if the name on the certificate and the name of the server do not match? If this happens, it might sound suspicious. For a number of reasons, this is not so rare to see. A system may host a number of name-based virtual hosts, which share the same IP address and are identified by means of the HTTP 1.1 Host: header information. In this case, since the SSL handshake checks the server certificate before the HTTP request is processed, it is not possible to assign different certificates to each virtual server. Therefore, if the name of the site and the name reported in the certificate do not match, we have a condition which is typically signalled by the browser. To avoid this, IP-based virtual servers must be used. [2] and [3] describe techniques to deal with this problem and allow name-based virtual hosts to be correctly referenced.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Black Box Testing and examples===&lt;br /&gt;
&lt;br /&gt;
Examine the validity of the certificates used by the application. Browsers will issue a warning when encountering expired certificates, certificates issued by untrusted CAs, and certificates which do not match namewise with the site to which they should refer. By clicking on the padlock which appears in the browser window when visiting an https site, you can look at information related to the certificate – including the issuer, period of validity, encryption characteristics, etc.&lt;br /&gt;
&lt;br /&gt;
If the application requires a client certificate, you probably have installed one to access it. Certificate information is available in the browser by inspecting the relevant certificate(s) in the list of the installed certificates.&lt;br /&gt;
&lt;br /&gt;
These checks must be applied to all visible SSL-wrapped communication channels used by the application. Though this is the usual https service running on port 443, there may be additional services involved depending on the web application architecture and on deployment issues (an https administrative port left open, https services on non-standard ports, etc.). Therefore, apply these checks to all SSL-wrapped ports which have been discovered. For example, the nmap scanner features a scanning mode (enabled by the –sV command line switch) which identifies SSL-wrapped services. The Nessus vulnerability scanner has the capability of performing SSL checks on all SSL/TLS-wrapped services.&lt;br /&gt;
&lt;br /&gt;
'''Examples'''&lt;br /&gt;
&lt;br /&gt;
Rather than providing a fictitious example, we have inserted an anonymized real-life example to stress how frequently one stumbles on https sites whose certificates are inaccurate with respect to naming.&lt;br /&gt;
&lt;br /&gt;
The following screenshots refer to a regional site of a high-profile IT company.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Warning issued by Microsoft Internet Explorer.&amp;lt;/u&amp;gt; We are visiting a ''.it'' site and the certificate was issued to a ''.com ''site! Internet Explorer warns that the name on the certificate does not match the name of the site.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:SSL Certificate Validity Testing IE Warning.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Warning issued by Mozilla Firefox.&amp;lt;/u&amp;gt; The message issued by Firefox is different – Firefox complains because it cannot ascertain the identity of the ''.com'' site the certificate refers to because it does not know the CA which signed the certificate. In fact, Internet Explorer and Firefox do not come preloaded with the same list of CAs. Therefore, the behavior experienced with various browsers may differ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:SSL Certificate Validity Testing Firefox Warning.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===White Box Testing and examples===&lt;br /&gt;
&lt;br /&gt;
Examine the validity of the certificates used by the application at both server and client levels. The usage of certificates is primarily at the web server level; however, there may be additional communication paths protected by SSL (for example, towards the DBMS). You should check the application architecture to identify all SSL protected channels.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
* [1] RFC2246. The TLS Protocol Version 1.0 (updated by RFC3546) - http://www.ietf.org/rfc/rfc2246.txt&lt;br /&gt;
* [2] RFC2817. Upgrading to TLS Within HTTP/1.1 - http://www.ietf.org/rfc/rfc2817.txt&lt;br /&gt;
* [3] RFC3546. Transport Layer Security (TLS) Extensions - http://www.ietf.org/rfc/rfc3546.txt&lt;br /&gt;
* [4] &amp;lt;u&amp;gt;www.verisign.net&amp;lt;/u&amp;gt; features various material on the topic&lt;br /&gt;
&lt;br /&gt;
'''Tools'''&lt;br /&gt;
&lt;br /&gt;
* Vulnerability scanners may include checks regarding certificate validity, including name mismatch and time expiration. They usually report other information as well, such as the CA which issued the certificate. Remember that there is no unified notion of a “trusted CA”; what is trusted depends on the configuration of the software and on the human assumptions made beforehand. Browsers come with a preloaded list of trusted CAs. If your web application relies on a CA which is not in this list (for example, because you rely on a self-made CA), you should take into account the process of configuring user browsers to recognize the CA.&lt;br /&gt;
&lt;br /&gt;
* The Nessus scanner includes a plugin to check for expired certificates or certificates which are going to expire within 60 days (plugin “SSL certificate expiry”, plugin id 15901). This plugin will check certificates ''installed on the server.&lt;br /&gt;
&lt;br /&gt;
* Vulnerability scanners may include checks against weak ciphers. For example, the Nessus scanner (http://www.nessus.org) has this capability and flags the presence of SSL weak ciphers (see example provided above).&lt;br /&gt;
&lt;br /&gt;
* You may also rely on specialized tools such as SSL Digger (http://www.foundstone.com/resources/proddesc/ssldigger.htm), or – for the command line oriented – experiment with the openssl tool, which provides access to OpenSSL cryptographic functions directly from a Unix shell (may be already available on *nix boxes, otherwise see www.openssl.org).&lt;br /&gt;
&lt;br /&gt;
* To identify SSL-based services, use a vulnerability scanner or a port scanner with service recognition capabilities. The nmap scanner features a “-sV” scanning option which tries to identify services, while the nessus vulnerability scanner has the capability of identifying SSL-based services on arbitrary ports and to run vulnerability checks on them regardless of whether they are configured on standard or non-standard ports.&lt;br /&gt;
&lt;br /&gt;
* In case you need to talk to a SSL service but your favourite tool doesn’t support SSL, you may benefit from a SSL proxy such as stunnel; stunnel will take care of tunneling the underlying protocol (usually http, but not necessarily so) and communicate with the SSL service you need to reach.&lt;br /&gt;
&lt;br /&gt;
* Finally, a word of advice. Though it may be tempting to use a regular browser to check certificates, there are various reasons for not doing so. Browsers have been plagued by various bugs in this area, and the way the browser will perform the check might be influenced by configuration settings that may not be evident. Instead, rely on vulnerability scanners or on specialized tools to do the job.&lt;br /&gt;
&lt;br /&gt;
[[Category:Cryptographic Vulnerability]]&lt;br /&gt;
[[Category:SSL]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Category:OWASP Testing Project AoC}}&lt;/div&gt;</summary>
		<author><name>Inn3rbr4in</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Test_Network/Infrastructure_Configuration_(OTG-CONFIG-001)&amp;diff=25334</id>
		<title>Test Network/Infrastructure Configuration (OTG-CONFIG-001)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Test_Network/Infrastructure_Configuration_(OTG-CONFIG-001)&amp;diff=25334"/>
				<updated>2008-02-14T10:46:51Z</updated>
		
		<summary type="html">&lt;p&gt;Inn3rbr4in: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[http://www.owasp.org/index.php/Web_Application_Penetration_Testing_AoC Up]] &amp;lt;br&amp;gt;&lt;br /&gt;
{{Template:OWASP Testing Guide v2}}&lt;br /&gt;
&lt;br /&gt;
== Brief Summary ==&lt;br /&gt;
The intrinsic complexity of interconnected and heterogeneous web server infrastructure, which can count hundreds of web applications, makes configuration management and review a fundamental step in testing and deploying every single application.&lt;br /&gt;
In fact it takes only a single vulnerability to undermine the security of the entire infrastructure, and even small and (almost) unimportant problems may evolve into severe risks for another application on the same server.&lt;br /&gt;
In order to address these problems, it is of utmost importance to perform an in-depth review of configuration and known security issues.&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
&lt;br /&gt;
Proper configuration management of the web server infrastructure is very important in order to preserve the security of the application itself. If elements such as the web server software, the back-end database servers, or the authentication servers are not properly reviewed and secured, they might introduce undesired risks or introduce new vulnerabilities that might compromise the application itself.&lt;br /&gt;
&lt;br /&gt;
For example, a web server vulnerability that would allow a remote attacker to disclose the source code of the application itself (a vulnerability that has arisen a number of times in both web servers or application servers) could compromise the application, as anonymous users could use the information disclosed in the source code to leverage attacks against the application or its users.&lt;br /&gt;
&lt;br /&gt;
In order to test the configuration management infrastructure, the following steps need to be taken:&lt;br /&gt;
&lt;br /&gt;
* The different elements that make up the infrastructure need to be determined in order to understand how they interact with a web application and how they affect its security.&lt;br /&gt;
* All the elements of the infrastructure need to be reviewed in order to make sure that they don’t hold any known vulnerabilities.&lt;br /&gt;
* A review needs to be made of the administrative tools used to maintain all the different elements.&lt;br /&gt;
* The authentication systems, if any, need to reviewed in order to assure that they serve the needs of the application and that they cannot be manipulated by external users to leverage access.&lt;br /&gt;
* A list of defined ports which are required for the application should be maintained and kept under change control.&lt;br /&gt;
&lt;br /&gt;
== Black Box Testing and examples==&lt;br /&gt;
&lt;br /&gt;
===Review of the application architecture===&lt;br /&gt;
&lt;br /&gt;
The application architecture needs to be reviewed through the test to determine what different components are used to build the web application. In small setups, such as a simple CGI-based application, a single server might be used that runs the web server which executes the C, Perl, or Shell CGIs application, and perhaps authentication is also based on the web server authentication mechanisms. On more complex setups, such as an online bank system, multiple servers might be involved including: a reverse proxy, a front-end web server, an application server and a database server or LDAP server. Each of these servers will be used for different purposes and might be even be divided in different networks with firewalling devices between them, creating different DMZs so that access to the web server will not grant a remote user access to the authentication mechanism itself, and so that compromises of the different elements of the architecture can be isolated in a way such that they will not compromise the whole architecture.&lt;br /&gt;
&lt;br /&gt;
Getting knowledge of the application architecture can be easy if this information is provided to the testing team by the application developers in document form or through interviews, but can also prove to be very difficult if doing a blind penetration test.&lt;br /&gt;
&lt;br /&gt;
In the latter case, a tester will first start with the assumption that there is a simple setup (a single server) and will, through the information retrieved from other tests, derive the different elements and question this assumption that the architecture will be extended. The tester will start by asking simple questions such as: “Is there a firewalling system protecting the web server?” which will be answered based on the results of network scans targeted at the web server and the analysis of whether the network ports of the web server are being filtered in the network edge (no answer or ICMP unreachables are received) or if the server is directly connected to the Internet (i.e. returns RST packets for all non-listening ports). This analysis can be enhanced in order to determine the type of firewall system used based on network packet tests: is it a stateful firewall or is it an access list filter on a router? How is it configured? Can it be bypassed? &lt;br /&gt;
&lt;br /&gt;
Detecting a reverse proxy in front of the web server needs to be done by the analysis of the web server banner, which might directly disclose the existence of a reverse proxy (for example, if ‘WebSEAL’[1]  is returned). It can also be determined by obtaining the answers given by the web server to requests and comparing them to the expected answers. For example, some reverse proxies act as “intrusion prevention systems” (or web-shields) by blocking known attacks targeted at the web server. If the web server is known to answer with a 404 message to a request which targets an unavailable page and returns a different error message for some common web attacks like those done by CGI scanners it might be an indication of a reverse proxy (or an application-level firewall) which is filtering the requests and returning a different error page than the one expected. Another example: if the web server returns a set of available HTTP methods (including TRACE) but the expected methods return errors then there is probably something in between, blocking them. In some cases, even the protection system gives itself away:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET / web-console/ServerInfo.jsp%00 HTTP/1.0&lt;br /&gt;
&lt;br /&gt;
HTTP/1.0 200&lt;br /&gt;
Pragma: no-cache&lt;br /&gt;
Cache-Control: no-cache&lt;br /&gt;
Content-Type: text/html&lt;br /&gt;
Content-Length: 83&lt;br /&gt;
&lt;br /&gt;
&amp;lt;TITLE&amp;gt;Error&amp;lt;/TITLE&amp;gt;&lt;br /&gt;
&amp;lt;BODY&amp;gt;&lt;br /&gt;
&amp;lt;H1&amp;gt;Error&amp;lt;/H1&amp;gt;&lt;br /&gt;
FW-1 at XXXXXX: Access denied.&amp;lt;/BODY&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Example of the security server of Check Point Firewall-1 NG AI “protecting” a web server'''&lt;br /&gt;
&lt;br /&gt;
Reverse proxies can also be introduced as proxy-caches to accelerate the performance of back-end application servers. Detecting these proxies can be done based, again, on the server header or by timing requests that should be cached by the server and comparing the time taken to server the first request with subsequent requests.&lt;br /&gt;
&lt;br /&gt;
Another element that can be detected: network load balancers. Typically, these systems will balance a given TCP/IP port to multiple servers based on different algorithms (round-robin, web server load, number of requests, etc.). Thus, the detection of this architecture elements needs to be done by examining multiple requests and comparing results in order to determine if the requests are going to the same or different web servers. For example, based on the Date: header if the server clocks are not synchronised. In some cases, the network load balance process might inject new information in the headers that will make it stand out distinctively, like the AlteonP cookie introduced by Nortel’s Alteon WebSystems load balancer.&lt;br /&gt;
&lt;br /&gt;
Application web servers are usually easy to detect. The request for several resources is handled by the application server itself (not the web server) and the response header will vary significantly (including different or additional values in the answer header). Another way to detect these is to see if the web server tries to set cookies which are indicative of an application web server being used (such as the JSESSIONID provided by some J2EE servers) or to rewrite URLs automatically to do session tracking.&lt;br /&gt;
&lt;br /&gt;
Authentication backends (such as LDAP directories, relational databases, or RADIUS servers) however, are not as easy to detect from an external point of view in an immediate way, since they will be hidden by the application itself.&lt;br /&gt;
&lt;br /&gt;
The use of a database backend can be determined simply by navigating an application. If there is highly dynamic content generated “on the fly,&amp;quot; it is probably being extracted from some sort of database by the application itself. Sometimes the way information is requested might give insight to the existence of a database back-end. For example, an online shopping application that uses numeric identifiers (‘id’) when browsing the different articles in the shop. However, when doing a blind application test, knowledge of the underlying database is usually only available when a vulnerability surfaces in the application, such as poor exception handling or susceptibility to SQL injection.&lt;br /&gt;
&lt;br /&gt;
===Known server vulnerabilities===&lt;br /&gt;
&lt;br /&gt;
Vulnerabilities found in the different elements that make up the application architecture, be it the web server or the database backend, can severely compromise the application itself. For example, consider a server vulnerability that allows a remote, unauthenticated user, to upload files to the web server, or even to replace files. This vulnerability could compromise the application, since a rogue user may be able to replace the application itself or introduce code that would affect the backend servers, as its application code would be run just like any other application.&lt;br /&gt;
&lt;br /&gt;
Reviewing server vulnerabilities can be hard to do if the test needs to be done through a blind penetration test. In these cases, vulnerabilities need to be tested from a remote site, typically using an automated tool; however, the testing of some vulnerabilities can have unpredictable results to the web server, and testing for others (like those directly involved in denial of service attacks) might not be possible due to the service downtime involved if the test was successful. Also, some automated tools will flag vulnerabilities based on the web server version retrieved. This leads to both false positives and false negatives: on one hand, if the web server version has been removed or obscured by the local site administrator, the scan tool will not flag the server as vulnerable even if it is; on the other hand, if the vendor providing the software does not update the web server version when vulnerabilities are fixed in it, the scan tool will flag vulnerabilities that do not exist. The latter case is actually very common in some operating system vendors that do backport patches of security vulnerabilities to the software they provide in the operating system but do not do a full upload to the latest software version. This happens in most GNU/Linux distributions such as Debian, Red Hat or SuSE. In most cases, vulnerability scanning of an application architecture will only find vulnerabilities associated with the “exposed” elements of the architecture (such as the web server) and will usually be unable to find vulnerabilities associated to elements which are not directly exposed, such as the authentication backends, the database backends, or reverse proxies in use.&lt;br /&gt;
&lt;br /&gt;
Finally, not all software vendors disclose vulnerabilities in public way, and therefore these weaknesses do not become registered within publicly known vulnerability databases[2]. This information is only disclosed to customers or published through fixes that do not have accompanying advisories. This reduces the usefulness of vulnerability scanning tools. Typically, vulnerability coverage of these tools will be very good for common products (such as the Apache web server, Microsoft’s Internet Information Server, or IBM’s Lotus Domino) but will be lacking for lesser known products.&lt;br /&gt;
&lt;br /&gt;
This is why reviewing vulnerabilities is best done when the tester is provided with internal information of the software used, including versions and releases used and patches applied to the software. With this information, the tester can retrieve the information from the vendor itself and analyse what vulnerabilities might be present in the architecture and how they can affect the application itself. When possible, these vulnerabilities can be tested in order to determine their real effects and to detect if there might be any external elements (such as intrusion detection or prevention systems) that might reduce or negate the possibility of successful exploitation. Testers might even determine, through a configuration review, that the vulnerability is not even present, since it affects a software component that is not in use.&lt;br /&gt;
&lt;br /&gt;
It is also worthwhile to notice that vendors will sometimes silently fix vulnerabilities and make them available on new software releases. Different vendors will have difference release cycles that determines the support they might provide for older releases. A tester with detailed information of the software versions used by the architecture can analyse the risk associated to the use of old software releases that might be unsupported in the short term or are already unsupported. This is critical, since if a vulnerability were to surface in an old software version that is no longer supported, the systems personnel might not be directly aware of it. No patches will be ever made available for it and advisories might not list that version as vulnerable (as it is unsupported). Even in the event that they are aware that the vulnerability is present and the system is, indeed, vulnerable, they will need to do a full upgrade to a new software release, which might introduce significant downtime in the application architecture or might force the application to be recoded due to incompatibilities with the latest software version.&lt;br /&gt;
===Administrative tools===&lt;br /&gt;
&lt;br /&gt;
Any web server infrastructure requires the existence of administrative tools to maintain and update the information used by the application: static content (web pages, graphic files), applications source code, user authentication databases, etc. Depending on the site, technology or software used, administrative tools will differ. For example, some web servers will be managed using administrative interfaces which are, themselves, web servers (such as the iPlanet web server) or will be administrated by plain text configuration files (in the Apache case[3]) or use operating-system GUI tools (when using Microsoft’s IIS server or ASP.Net). In most cases, however, the server configuration will be handled using different file maintenance tools used by the web server, which are managed through FTP servers, WebDAV, network file systems (NFS, CIFS) or other mechanisms. Obviously, the operating system of the elements that make up the application architecture will also be managed using other tools. Applications may also have administrative interfaces embedded in them that are used to manage the application data itself (users, content, etc.).&lt;br /&gt;
&lt;br /&gt;
Review of the administrative interfaces used to manage the different parts of the architecture is very important, since if an attacker gains access to any of them he can then compromise or damage the application architecture. Thus it is important to:&lt;br /&gt;
&lt;br /&gt;
* List all the possible administrative interfaces.&lt;br /&gt;
* Determine if administrative interfaces are available from an internal network or are also available from the Internet.&lt;br /&gt;
* If available from the Internet, determine the mechanisms that control access to these interfaces and their associated susceptibilities.&lt;br /&gt;
* Change the default user &amp;amp; password.&lt;br /&gt;
&lt;br /&gt;
Some companies choose not to manage all aspects of their web server applications, but may have other parties managing the content delivered by the web application. This external company might either provide only parts of the content (news updates or promotions) or might manage the web server completely (including content and code). It is common to find administrative interfaces available from the Internet in these situations, since using the Internet is cheaper than providing a dedicated line that will connect the external company to the application infrastructure through a management-only interface. In this situation, it is very important to test if the administrative interfaces can be vulnerable to attacks. &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* [1] WebSEAL, also known as Tivoli Authentication Manager, is a reverse proxy from IBM which is part of the Tivoli framework.&lt;br /&gt;
* [2] Such as Symantec’s Bugtraq, ISS’ X-Force, or NIST’s National Vulnerability Database (NVD).&lt;br /&gt;
* [3] There are some GUI-based administration tools for Apache (like NetLoony) but they are not in widespread use yet.&lt;br /&gt;
&lt;br /&gt;
{{Category:OWASP Testing Project AoC}}&lt;/div&gt;</summary>
		<author><name>Inn3rbr4in</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Test_Network/Infrastructure_Configuration_(OTG-CONFIG-001)&amp;diff=25333</id>
		<title>Test Network/Infrastructure Configuration (OTG-CONFIG-001)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Test_Network/Infrastructure_Configuration_(OTG-CONFIG-001)&amp;diff=25333"/>
				<updated>2008-02-14T10:42:35Z</updated>
		
		<summary type="html">&lt;p&gt;Inn3rbr4in: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[http://www.owasp.org/index.php/Web_Application_Penetration_Testing_AoC Up]] &amp;lt;br&amp;gt;&lt;br /&gt;
{{Template:OWASP Testing Guide v2}}&lt;br /&gt;
&lt;br /&gt;
== Brief Summary ==&lt;br /&gt;
The intrinsic complexity of interconnected and heterogeneous web server infrastructure, which can count hundreds of web applications, makes configuration management and review a fundamental step in testing and deploying every single application.&lt;br /&gt;
In fact it takes only a single vulnerability to undermine the security of the entire infrastructure, and even small and (almost) unimportant problems may evolve into severe risks for another application on the same server.&lt;br /&gt;
In order to address these problems, it is of utmost importance to perform an in-depth review of configuration and known security issues.&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
&lt;br /&gt;
Proper configuration management of the web server infrastructure is very important in order to preserve the security of the application itself. If elements such as the web server software, the back-end database servers, or the authentication servers are not properly reviewed and secured, they might introduce undesired risks or introduce new vulnerabilities that might compromise the application itself.&lt;br /&gt;
&lt;br /&gt;
For example, a web server vulnerability that would allow a remote attacker to disclose the source code of the application itself (a vulnerability that has arisen a number of times in both web servers or application servers) could compromise the application, as anonymous users could use the information disclosed in the source code to leverage attacks against the application or its users.&lt;br /&gt;
&lt;br /&gt;
In order to test the configuration management infrastructure, the following steps need to be taken:&lt;br /&gt;
&lt;br /&gt;
* The different elements that make up the infrastructure need to be determined in order to understand how they interact with a web application and how they affect its security.&lt;br /&gt;
* All the elements of the infrastructure need to be reviewed in order to make sure that they don’t hold any known vulnerabilities.&lt;br /&gt;
* A review needs to be made of the administrative tools used to maintain all the different elements.&lt;br /&gt;
* The authentication systems, if any, need to reviewed in order to assure that they serve the needs of the application and that they cannot be manipulated by external users to leverage access.&lt;br /&gt;
* A list of defined ports which are required for the application should be maintained and kept under change control.&lt;br /&gt;
&lt;br /&gt;
== Black Box Testing and examples==&lt;br /&gt;
&lt;br /&gt;
===Review of the application architecture===&lt;br /&gt;
&lt;br /&gt;
The application architecture needs to be reviewed through the test to determine what different components are used to build the web application. In small setups, such as a simple CGI-based application, a single server might be used that runs the web server which executes the C, Perl, or Shell CGIs application, and perhaps authentication is also based on the web server authentication mechanisms. On more complex setups, such as an online bank system, multiple servers might be involved including: a reverse proxy, a front-end web server, an application server and a database server or LDAP server. Each of these servers will be used for different purposes and might be even be divided in different networks with firewalling devices between them, creating different DMZs so that access to the web server will not grant a remote user access to the authentication mechanism itself, and so that compromises of the different elements of the architecture can be isolated in a way such that they will not compromise the whole architecture.&lt;br /&gt;
&lt;br /&gt;
Getting knowledge of the application architecture can be easy if this information is provided to the testing team by the application developers in document form or through interviews, but can also prove to be very difficult if doing a blind penetration test.&lt;br /&gt;
&lt;br /&gt;
In the latter case, a tester will first start with the assumption that there is a simple setup (a single server) and will, through the information retrieved from other tests, derive the different elements and question this assumption that the architecture will be extended. The tester will start by asking simple questions such as: “Is there a firewalling system protecting the web server?” which will be answered based on the results of network scans targeted at the web server and the analysis of whether the network ports of the web server are being filtered in the network edge (no answer or ICMP unreachables are received) or if the server is directly connected to the Internet (i.e. returns RST packets for all non-listening ports). This analysis can be enhanced in order to determine the type of firewall system used based on network packet tests: is it a stateful firewall or is it an access list filter on a router? How is it configured? Can it be bypassed? &lt;br /&gt;
&lt;br /&gt;
Detecting a reverse proxy in front of the web server needs to be done by the analysis of the web server banner, which might directly disclose the existence of a reverse proxy (for example, if ‘WebSEAL’[1]  is returned). It can also be determined by obtaining the answers given by the web server to requests and comparing them to the expected answers. For example, some reverse proxies act as “intrusion prevention systems” (or web-shields) by blocking known attacks targeted at the web server. If the web server is known to answer with a 404 message to a request which targets an unavailable page and returns a different error message for some common web attacks like those done by CGI scanners it might be an indication of a reverse proxy (or an application-level firewall) which is filtering the requests and returning a different error page than the one expected. Another example: if the web server returns a set of available HTTP methods (including TRACE) but the expected methods return errors then there is probably something in between, blocking them. In some cases, even the protection system gives itself away:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET / web-console/ServerInfo.jsp%00 HTTP/1.0&lt;br /&gt;
&lt;br /&gt;
HTTP/1.0 200&lt;br /&gt;
Pragma: no-cache&lt;br /&gt;
Cache-Control: no-cache&lt;br /&gt;
Content-Type: text/html&lt;br /&gt;
Content-Length: 83&lt;br /&gt;
&lt;br /&gt;
&amp;lt;TITLE&amp;gt;Error&amp;lt;/TITLE&amp;gt;&lt;br /&gt;
&amp;lt;BODY&amp;gt;&lt;br /&gt;
&amp;lt;H1&amp;gt;Error&amp;lt;/H1&amp;gt;&lt;br /&gt;
FW-1 at XXXXXX: Access denied.&amp;lt;/BODY&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Example of the security server of Check Point Firewall-1 NG AI “protecting” a web server'''&lt;br /&gt;
&lt;br /&gt;
Reverse proxies can also be introduced as proxy-caches to accelerate the performance of back-end application servers. Detecting these proxies can be done based, again, on the server header or by timing requests that should be cached by the server and comparing the time taken to server the first request with subsequent requests.&lt;br /&gt;
&lt;br /&gt;
Another element that can be detected: network load balancers. Typically, these systems will balance a given TCP/IP port to multiple servers based on different algorithms (round-robin, web server load, number of requests, etc.). Thus, the detection of this architecture elements needs to be done by examining multiple requests and comparing results in order to determine if the requests are going to the same or different web servers. For example, based on the Date: header if the server clocks are not synchronised. In some cases, the network load balance process might inject new information in the headers that will make it stand out distinctively, like the AlteonP cookie introduced by Nortel’s Alteon WebSystems load balancer.&lt;br /&gt;
&lt;br /&gt;
Application web servers are usually easy to detect. The request for several resources is handled by the application server itself (not the web server) and the response header will vary significantly (including different or additional values in the answer header). Another way to detect these is to see if the web server tries to set cookies which are indicative of an application web server being used (such as the JSESSIONID provided by some J2EE servers) or to rewrite URLs automatically to do session tracking.&lt;br /&gt;
&lt;br /&gt;
Authentication backends (such as LDAP directories, relational databases, or RADIUS servers) however, are not as easy to detect from an external point of view in an immediate way, since they will be hidden by the application itself.&lt;br /&gt;
&lt;br /&gt;
The use of a database backend can be determined simply by navigating an application. If there is highly dynamic content generated “on the fly,&amp;quot; it is probably being extracted from some sort of database by the application itself. Sometimes the way information is requested might give insight to the existence of a database back-end. For example, an online shopping application that uses numeric identifiers (‘id’) when browsing the different articles in the shop. However, when doing a blind application test, knowledge of the underlying database is usually only available when a vulnerability surfaces in the application, such as poor exception handling or susceptibility to SQL injection.&lt;br /&gt;
&lt;br /&gt;
===Known server vulnerabilities===&lt;br /&gt;
&lt;br /&gt;
Vulnerabilities found in the different elements that make up the application architecture, be it the web server or the database backend, can severely compromise the application itself. For example, consider a server vulnerability that allows a remote, unauthenticated user, to upload files to the web server, or even to replace files. This vulnerability could compromise the application, since a rogue user may be able to replace the application itself or introduce code that would affect the backend servers, as its application code would be run just like any other application.&lt;br /&gt;
&lt;br /&gt;
Reviewing server vulnerabilities can be hard to do if the test needs to be done through a blind penetration test. In these cases, vulnerabilities need to be tested from a remote site, typically using an automated tool; however, the testing of some vulnerabilities can have unpredictable results to the web server, and testing for others (like those directly involved in denial of service attacks) might not be possible due to the service downtime involved if the test was successful. Also, some automated tools will flag vulnerabilities based on the web server version retrieved. This leads to both false positives and false negatives: on one hand, if the web server version has been removed or obscured by the local site administrator, the scan tool will not flag the server as vulnerable even if it is; on the other hand, if the vendor providing the software does not update the web server version when vulnerabilities are fixed in it, the scan tool will flag vulnerabilities that do not exist. The latter case is actually very common in some operating system vendors that do backport patches of security vulnerabilities to the software they provide in the operating system but do not do a full upload to the latest software version. This happens in most GNU/Linux distributions such as Debian, Red Hat or SuSE. In most cases, vulnerability scanning of an application architecture will only find vulnerabilities associated with the “exposed” elements of the architecture (such as the web server) and will usually be unable to find vulnerabilities associated to elements which are not directly exposed, such as the authentication backends, the database backends, or reverse proxies in use.&lt;br /&gt;
&lt;br /&gt;
Finally, not all software vendors disclose vulnerabilities in public way, and therefore these weaknesses do not become registered within publicly known vulnerability databases[2]. This information is only disclosed to customers or published through fixes that do not have accompanying advisories. This reduces the usefulness of vulnerability scanning tools. Typically, vulnerability coverage of these tools will be very good for common products (such as the Apache web server, Microsoft’s Internet Information Server, or IBM’s Lotus Domino) but will be lacking for lesser known products.&lt;br /&gt;
&lt;br /&gt;
This is why reviewing vulnerabilities is best done when the tester is provided with internal information of the software used, including versions and releases used and patches applied to the software. With this information, the tester can retrieve the information from the vendor itself and analyse what vulnerabilities might be present in the architecture and how they can affect the application itself. When possible, these vulnerabilities can be tested in order to determine their real effects and to detect if there might be any external elements (such as intrusion detection or prevention systems) that might reduce or negate the possibility of successful exploitation. Testers might even determine, through a configuration review, that the vulnerability is not even present, since it affects a software component that is not in use.&lt;br /&gt;
&lt;br /&gt;
It is also worthwhile to notice that vendors will sometimes silently fix vulnerabilities and make them available on new software releases. Different vendors will have difference release cycles that determines the support they might provide for older releases. A tester with detailed information of the software versions used by the architecture can analyse the risk associated to the use of old software releases that might be unsupported in the short term or are already unsupported. This is critical, since if a vulnerability were to surface in an old software version that is no longer suppoted, the systems personnel might not be directly aware of it. No patches will be ever made available for it and advisories might not list that version as vulnerable (as it is unsupported). Even in the event that they are aware that the vulnerability is present and the system is, indeed, vulnerable, they will need to do a full upgrade to a new software release, which might introduce significant downtime in the application architecture or might force the application to be recoded due to incompatibilities with the latest software version.&lt;br /&gt;
===Administrative tools===&lt;br /&gt;
&lt;br /&gt;
Any web server infrastructure requires the existence of administrative tools to maintain and update the information used by the application: static content (web pages, graphic files), applications source code, user authentication databases, etc. Depending on the site, technology or software used, administrative tools will differ. For example, some web servers will be managed using administrative interfaces which are, themselves, web servers (such as the iPlanet web server) or will be administrated by plain text configuration files (in the Apache case[3]) or use operating-system GUI tools (when using Microsoft’s IIS server or ASP.Net). In most cases, however, the server configuration will be handled using different tools than the maintenance of the files used by the web server, which are managed through FTP servers, WebDAV, network file systems (NFS, CIFS) or other mechanisms. Obviously, the operating system of the elements that make up the application architecture will also be managed using other tools. Applications may also have administrative interfaces embedded in them that are used to manage the application data itself (users, content, etc.).&lt;br /&gt;
&lt;br /&gt;
Review of the administrative interfaces used to manage the different parts of the architecture is very important, since if an attacker gains access to any of them he can then compromise or damage the application architecture. Thus it is important to:&lt;br /&gt;
&lt;br /&gt;
* List all the possible administrative interfaces.&lt;br /&gt;
* Determine if administrative interfaces are available from an internal network or are also available from the Internet.&lt;br /&gt;
* If available from the Internet, determine the mechanisms that control access to these interfaces and their associated susceptibilities.&lt;br /&gt;
* Change the default user &amp;amp; password.&lt;br /&gt;
&lt;br /&gt;
Some companies choose not to manage all aspects of their web server applications, but may have other parties managing the content delivered by the web application. This external company might either provide only parts of the content (news updates or promotions) or might manage the web server completely (including content and code). It is common to find administrative interfaces available from the Internet in these situations, since using the Internet is cheaper than providing a dedicated line that will connect the external company to the application infrastructure through a management-only interface. In this situation, it is very important to test if the administrative interfaces can be vulnerable to attacks. &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* [1] WebSEAL, also known as Tivoli Authentication Manager, is a reverse proxy from IBM which is part of the Tivoli framework.&lt;br /&gt;
* [2] Such as Symantec’s Bugtraq, ISS’ X-Force, or NIST’s National Vulnerability Database (NVD).&lt;br /&gt;
* [3] There are some GUI-based administration tools for Apache (like NetLoony) but they are not in widespread use yet.&lt;br /&gt;
&lt;br /&gt;
{{Category:OWASP Testing Project AoC}}&lt;/div&gt;</summary>
		<author><name>Inn3rbr4in</name></author>	</entry>

	</feed>