<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>An Autonomous Zone &#187; Web App Hacking</title>
	<atom:link href="http://anautonomouszone.com/blog/archives/category/webapphacking/feed" rel="self" type="application/rss+xml" />
	<link>http://anautonomouszone.com/blog</link>
	<description>An autonomous zone to promote an exchange of ideas, skills, and experiences with computer (in)security.</description>
	<lastBuildDate>Thu, 09 Apr 2009 23:23:37 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Grendel-Scan</title>
		<link>http://anautonomouszone.com/blog/archives/26</link>
		<comments>http://anautonomouszone.com/blog/archives/26#comments</comments>
		<pubDate>Thu, 09 Apr 2009 18:19:05 +0000</pubDate>
		<dc:creator>Chuck B.</dc:creator>
				<category><![CDATA[Web App Hacking]]></category>

		<guid isPermaLink="false">http://anautonomouszone.com/blog/?p=26</guid>
		<description><![CDATA[Grendel-Scan is a new(ish) web application scanner that a friend of mine is writing. One of the cool things that I like about Grendel is it&#8217;s Cross Site Scripting (XSS) vulnerabilitiy detection.
The way David approached the XSS vulnerability scanning cuts down on the amount of requests being made to the web application as well as [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.grendel-scan.com/">Grendel-Scan</a> is a new(ish) web application scanner that a friend of mine is writing. One of the cool things that I like about Grendel is it&#8217;s Cross Site Scripting (XSS) vulnerabilitiy detection.</p>
<p>The way David approached the XSS vulnerability scanning cuts down on the amount of requests being made to the web application as well as the number of false positives as compared to other scanners that I&#8217;ve checked out.</p>
<p>Like all web application scanners when trying to detect non-persistent XSS Grendel substitutes a known parameter value for a value that includes javascript code. As mentioned in my previous posts it might change something like this:</p>
<p>param=123</p>
<p>to something like this:</p>
<p>param=123/&gt;&lt;SCRIPT&gt;alert(’XSS’);&lt;/SCRIPT&gt;</p>
<p>Generally when the scanner sees the signature included in the response (/&gt;&lt;SCRIPT&gt;alert(’XSS’);&lt;/SCRIPT&gt; in the above example) then they’ll flag it as a possible XSS vulnerability.</p>
<p>Now for the most part a web app scanner will have many, many different XSS signatures (different javascript-type parameter substitution values) that it will try on a particular parameter value. For instance, for the sake of thoroughness a web app scanner might have 40+ different XSS signatures that it will try for each and every parameter that it records going to the application to detect XSS.</p>
<p>Like I mentioned most scanners are extremely inefficient and noisy in the sense that they&#8217;ll continue to submit as many requests as there are XSS signatures until it flags a particular request as being vulnerable to non-persistent XSS. So if there are 53 XSS signatures a typical scanner will submit 53 requests per parameter (again, unless it flags a request within the 53 signatures that it sends as being vulnerable).</p>
<p>If you&#8217;re scanning an application that has a lot of parameter values (like hundreds or thousands) being sent in a request, as most applications do, this can end up being a lot of traffic being sent to the application being scanned.</p>
<p>If you&#8217;re scanning a staged or development environment this usually isn&#8217;t too much of a concern but if you&#8217;re scanning a production environment &#8211; this can cause concerns. One of the biggest problems with sending out all of the XSS signatures per parameter in an application (besides bandwidth and resource saturation) is form submissions that generate emails. For certain form submissions on a number of applications, such as a &#8220;Contact Us&#8221; form the submission information is emailed to a particular person or persons within the organization who is in control of the application. This generates one email per request sent to the particular form.</p>
<p>This means if you have a form that has 10 parameters and your app scanner has 53 XSS signatures you&#8217;ll have at around 530 emails being sent to someone &#8211; keeping in mind this is only for XSS detection. You&#8217;re likely to have a whole lot more submissions being sent and emailed to someone when you&#8217;re scanner is looking for other issues like SQL injection vulnerabilities, CRLF vulnerabilities, directory traversal vulnerabilities, etc. At the end of the scan it&#8217;s very, very possible someone will open their mailbox and have thousands of junk emails from scanning the site.</p>
<p>So &#8211; what does David do different when discovering XSS with Grendel? Before throwing each XSS signature at every parameter Grendel will first send a random value  (a token) as a parameter value with a fixed 4 digit prefix (keep in mind that in order for an application to be vulnerable to non-persistent XSS it first has to echo back the parameter value in the response).</p>
<p>So it&#8217;d be something like this:</p>
<p>param=fds5fds34</p>
<p>Each response is searched for the prefix. The fixed four digit prefix (fds5) doesn&#8217;t change throughout the scan &#8211; which makes it easier to look for tokens in responses. If the prefix is found then the six characters following it are looked up (that way you don&#8217;t have to search for every token in the response).</p>
<p>If Grendel sees the token being returned in a response only then will it continue to send the XSS attack signatures. This cuts down on the amount of &#8220;useless&#8221; XSS attack signature requests being made to the web server. If the application doesn&#8217;t echo back a token value &#8211; then it&#8217;s not going to be vulnerable to non-persistent XSS in the first place.</p>
<p>Not only is this a lot better for production sites, it cuts down on scanning time because less meaningless requests are being sent to the application.</p>
<p>Another thing that David has done to reduce false positives with XSS is he&#8217;s implemented the Rhino javascript engine from Mozilla into his scanner. This way a XSS vulnerabilitiy is cataloged with Grendel only if the response triggers the javascript engine to fire.</p>
<p>This cuts down on XSS false positives tremendously. As a neat bonus he&#8217;s included a module called input/output flow that records any request that responds with a token value &#8211; just in case there is a posibilitiy of a XSS issue being present but the supplied XSS attack signatures was not able to trigger the javascript engine.</p>
<p>Grendel was released at DEFCON last year and becuase of his hectic work schedule he hasn&#8217;t updated it much in the last few months but I hear he (and a few others) are working on it now and should have a new release really soon.</p>
<p>You can find it here: <a href="http://www.grendel-scan.com/">http://www.grendel-scan.com/</a></p>
<p>Cheers,</p>
<p>ChuckB.</p>
]]></content:encoded>
			<wfw:commentRss>http://anautonomouszone.com/blog/archives/26/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>More on Web App Scanners</title>
		<link>http://anautonomouszone.com/blog/archives/22</link>
		<comments>http://anautonomouszone.com/blog/archives/22#comments</comments>
		<pubDate>Mon, 14 Jul 2008 04:52:30 +0000</pubDate>
		<dc:creator>Chuck B.</dc:creator>
				<category><![CDATA[Web App Hacking]]></category>

		<guid isPermaLink="false">http://anautonomouszone.com/blog/?p=22</guid>
		<description><![CDATA[In a previous post I talked a bit about NTOSpider, how it was &#8220;o.k.&#8221; with what it did, and how I was generally disappointed overall in the effectiveness of web app scanners in the market. As a matter of fact, Caleb Sima (founder and CTO of SPI Dynamics) actually had a couple of good points [...]]]></description>
			<content:encoded><![CDATA[<p>In a previous <a title="http://anautonomouszone.com/blog/archives/16#more-16" href="http://anautonomouszone.com/blog/archives/16#more-16">post</a> I talked a bit about NTOSpider, how it was &#8220;o.k.&#8221; with what it did, and how I was generally disappointed overall in the effectiveness of web app scanners in the market. As a matter of fact, Caleb Sima (founder and CTO of SPI Dynamics) actually had a couple of good points in a comment he left on that one.</p>
<p>I figured it was a bold statement when I said &#8220;I mean to build a web app scanner generally isn’t rocket science,&#8221; and I thought it might ruffle the feathers of some who have vested time into a really robust web app scanner project. Now, I&#8217;m sure that Caleb didn&#8217;t get too bothered by my post &#8211; but his response included the following &#8220;&#8230;at the surface it may seem like that but there is nothing farther from the truth. It is one of the most complicated pieces of technology I have ever had to deal with. Its not as simple as parsing out HREFs and sticking single quotes in params.&#8221;</p>
<p>He was referring to a scanner I <a title="http://www.gdssecurity.com/l/t/extendedscanner.zip" href="http://www.gdssecurity.com/l/t/extendedscanner.zip">referenced</a> in sentence I wrote: &#8220;There’s actually a really good how-to write your own web app scanner in the O’Reilly book “Network Security Tools, Writing, Hacking, and Modifying Security Tools.” The code for that one is available <a title="http://www.gdssecurity.com/l/t/extendedscanner.zip" href="http://www.gdssecurity.com/l/t/extendedscanner.zip">here</a>.&#8221; Which pretty much does &#8211; just what Caleb said it does &#8211; not too much. It&#8217;s simple and limited, but the right basic theory is there for a good and solid web app scanner.</p>
<p>Before I break all this down and go on &#8211; let me first say that I don&#8217;t think there&#8217;s an automated solution on the market (and there likely won&#8217;t ever be) that can find every vulnerability in your web application. There are things that scanners are good at picking up, input validation problems like xss and sql injection, directory listing stuff, CRLF injection, etc. And there are things that they aren&#8217;t too good at picking up, like logic based errors which grant you some sort of privilege escalation or give you access to something you shouldn&#8217;t have &#8211; like a sensitive file (the scanner might not know that you shouldn&#8217;t have access to that file) that is specific to that custom application.</p>
<p>Another metric that is typically used when judging the effectiveness of an automated web app scanner besides how well it finds vulnerabilities (and how many vulnerabilities it finds) is application coverage when crawling a site. For instance, when you are looking for vulnerabilities in an application you want to make sure that you&#8217;re looking at all of the pages and/or functionality of the application. If you (or the automated crawling functionality of a scanner) miss parts of the application and those parts of the application don&#8217;t get tested &#8211; then that&#8217;s a problem. Therefore, I always like to have a two-pronged approach when blackbox testing. I like to crawl the site manually <strong>and </strong>have a good crawler hit the application and feed the requests to a scanner, that way if one method misses something &#8211; hopefully the other method will have picked it up &#8211; this way we can be sure we&#8217;re maximizing application coverage to the best of our ability.</p>
<p>That being said &#8211; I don&#8217;t think that testing web apps should ever be an automated <strong>or</strong> manual kind of a process, but more of an automated <strong>and</strong> manual kind of a process (that is, if you really care about the overall security posture of your application). I don&#8217;t think there&#8217;s too many experienced web app pentesters out there who would disagree with me on that one.</p>
<p>However, let&#8217;s focus on some things that web app scanners are good at, like finding XSS and SQL injection vulnerabilities &#8211; and talk about possible tools (scanners) that one might use to accomplish this (for free). And with a little modification to these free tools, such as incorporating some of the concepts discussed below, one could possibly garnish better/more results (XSS, SQL injection vulnerabilities being identified) than some scanners out there that cost you thousands of dollars.</p>
<p>So going back to what I think scanners are good at, like fuzzing parameter values to look for things like XSS and SQL injection problems.</p>
<p>First off, the basic and fundamental way web app scanners work &#8211; is they essentially send a request to the application, then they look at a response to see if the request the scanner made affected the application in some way and made it send something back that it shouldn&#8217;t have (in a way that could be a potential security problem or vulnerability).</p>
<p>I&#8217;ll talk about a few examples that are probably the two most common (and arguably the highest impact) vulnerabilities in web applications that most scanners look for, XSS and SQL injection.</p>
<p>Let&#8217;s talk about XSS &#8211; the basic (easy, yet effective) way most scanners look for XSS is they send a request to the web server &#8211; and they replace or add on to the original value of the parameter with some potential javascript code &#8211; then see if it gets echoed back in a response. For example, a scanner might change something like this:</p>
<p>param=123</p>
<p>to something like this:</p>
<p>param=123&#8243;/&gt;&lt;SCRIPT&gt;alert(&#8217;XSS&#8217;);&lt;/SCRIPT&gt;</p>
<p>Then they simply perform a regex on the response looking for /&gt;&lt;SCRIPT&gt;alert(&#8217;XSS&#8217;);&lt;/SCRIPT&gt;. If they see it &#8211; then they&#8217;ll flag it as a possible XSS vulnerability. Really not too hard.</p>
<p>Now there are some applications or web app firewalls that filter things like &lt;SCRIPT&gt;, &lt;IMG&gt;, etc. so what you can do is add say, RSnake&#8217;s <a title="http://ha.ckers.org/xss.html" href="http://ha.ckers.org/xss.html">XSS list for filter evasion</a> (a list of signatures) to what your scanner adds or substitutes for parameter values. Simply cycle through that list of signatures until (if and when) you come across one that gets echoed back in a response. RSnake&#8217;s cheat sheet can be used as a starter for signatures. As you play with web apps more and become more acquainted with filter evasion and XSS you can just add those to your list of signatures in your scanner.</p>
<p>Now I do have a friend who is working on a scanner that is a bit more sophisticated in detecting XSS, in that  it will eliminate false positives and cut down on the number of overall requests (like not having to cycle through the whole list of XSS signatures on every parameter being submitted to the web application). But I told him I won&#8217;t talk about it too much until after he releases it at Def Con. However, even though his technique is more efficient &#8211; the above technique is what 99% of web app scanners do when looking for XSS &#8211; and this method works quite well, even though for some reason &#8211; there&#8217;s a lot of expensive web app scanners out there that can&#8217;t even get this part right, and manage to screw this part up somehow.</p>
<p>SQL injections are a little more complicated to look for in a scanner, but not much &#8211; remember, this isn&#8217;t rocket science.</p>
<p>There&#8217;s basically two different kind of SQL injections &#8211; regular (verbose database messages) and blind SQL injections.</p>
<p>To check for regular or verbose SQL injections &#8211; you send a request, like using a single tick ( &#8216; ) as a parameter value, or at the end of a parameter value and look for the response.</p>
<p>Using our example of param=123 we might substitute the original value for something like paramm=123&#8242;1</p>
<p>If you get some database error message like this in the response then chalk it up as a possible SQL injection:</p>
<p>Microsoft OLE DB Provider for ODBC Drivers error</p>
<p>So there could be different back end databases that they might be using so you might want to look for other error messages from different databases other than MSSQL like Oracle, IBM DB2, MS Access, PostgreSQL, MySQL, etc.</p>
<p>Also, we could try different encoding on our single ticks like CHAR(39), 0xbf27, amongst others.</p>
<p>Besides single quotes (or ticks) we can also try to sneak in things like semi-colons ( ; ) and double dashes ( &#8212; ) and their encoded equivalents to try and generate database error messages.</p>
<p>Blind SQL injections are a little bit different beast in that we don&#8217;t just regex a response looking for a database error message, but rather we look for a change in behavior of some sort from the application.</p>
<p>There are basically two different types of blind SQL injections &#8211; conditional and time delays.</p>
<p>We&#8217;ll cover how to test both really quick.</p>
<p>For the time delay blind SQL injection detection you simply add something like this to the original parameter value:</p>
<p>&#8216;;WAITFOR+DELAY+&#8217;0:0:10&#8242;&#8211; (MSSQL)</p>
<p>This tells the SQL backend to wait for ten seconds before responding. So a way to implement this in a scanner is you make a regular (non-fuzzed) request with no &#8220;waitfor delay&#8221; manipulation in the parameter value, then you calculate the time it took to make a regular request (let&#8217;s say it takes 950ms). Then, go ahead and send the time delay fuzzed parameter value (such as param=123&#8242;;WAITFOR+DELAY+&#8217;0:0:10&#8242;&#8211;). If you get a response right away &#8211; then, mark the parameter as not vulnerable, if you get a response from the webserver that took 10 seconds or later (you can calculate in the time it takes for the request such as the 950ms) then you can mark that as being a possible time based SQL injection vulnerability.</p>
<p>One can also use other time based queries for different databases other than MSSQL, such as the following:</p>
<p>SELECT pg_sleep(10); (PostgreSQL)</p>
<p>BENCHMARK() function (MySql)</p>
<p>Also &#8211; we could try adding parenthesis and such to escape from SQL subqueries like the following:</p>
<p>param=123;waitfor+delay+&#8217;0:0:10&#8242;&#8211;<br />
param=123);waitfor+delay+&#8217;0:0:10&#8242;&#8211;<br />
param=123&#8242;;waitfor+delay+&#8217;0:0:10&#8242;&#8211;<br />
param=123&#8242;);waitfor+delay+&#8217;0:0:10&#8242;&#8211;<br />
param=123));waitfor+delay+&#8217;0:0:10&#8242;&#8211;<br />
param=123&#8242;));waitfor+delay+&#8217;0:0:10&#8242;&#8211;</p>
<p>Also &#8211; we would want to try the encoded equivalents of semi-colons (%3B), dashes (%2D), plus signs (%2B), etc. with all of these queries.</p>
<p>Next, we have conditional blind SQL injection vulnerabilities to hunt for. For this type of SQL injection vulnerability identification the scanner must also look for some behavioral change from the application.</p>
<p>According to <a title="http://www.webappsec.org/projects/threat/classes/sql_injection.shtml" href="http://www.webappsec.org/projects/threat/classes/sql_injection.shtml">webappsec.org</a> the following is how to detect blind conditional SQL injection vulnerabilities:</p>
<p><em>A common way to detect Blind  SQL Injection is to put a false and true statement into the parameter  value.</em></p>
<p><em>Executing the following request to a web site:</em></p>
<p><em>http://example/article.asp?ID=2+and+1=1</em></p>
<p><em>should return the same web page as:</em></p>
<p><em>http://example/article.asp?ID=2</em></p>
<p><em>because the SQL statement &#8216;and 1=1&#8242; is always true.</em></p>
<p><em>Executing the following request to a web site:</em></p>
<p><em>http://example/article.asp?ID=2+and+1=0</em></p>
<p><em>would then cause the web site to return a friendly error or no page at  all. This is because the SQL statement &#8220;and 1=0&#8243; is always false.<br />
</em></p>
<p>They&#8217;re not far off, by issuing a series of true/false type queries in a request (parameter value) then we can see if there is any difference behaviorally with the application &#8211; sometimes in a &#8220;false&#8221; query you get an error page, sometimes other types of changes in the response.</p>
<p>Easy enough, so for a scanner we can just do something like the following:</p>
<p>param=123&#8242; and &#8216;1&#8242;=&#8217;1</p>
<p>and</p>
<p>param=123&#8242; and &#8216;1&#8242;=&#8217;2</p>
<p>If we get a different page for each response &#8211; then we could chalk that up as being a possible vulnerability and worthy of looking into.</p>
<p>We could also use different true/false queries such as:</p>
<p>param=123&#8242; or &#8216;a&#8217;='a</p>
<p>param=123&#8242; or &#8216;a&#8217;='b</p>
<p>or even better, just substitute some random string for &#8216;a&#8217; and another random string for &#8216;b.&#8217;</p>
<p>There are other things &#8211; that one could look for in (and add to) a web app scanner such as command injection, directory traversal attacks, CRLF injection, CSRF, session problems like session fixation, etc. but, again &#8211; it&#8217;s all fundamentally based on the concept of making a request to the application, then checking the  response to see if the request the scanner made affected the application in some way and made it send something back that it shouldn&#8217;t have (in a way that could be a potential security problem or vulnerability).</p>
<p>I did mention that there was something out there that one could get for free that is a really good starting point for a good scanner. Here it is: <a title="http://www.securitytechscience.com/resources/sts-scanner.php" href="http://www.securitytechscience.com/resources/sts-scanner.php">sts-scanner</a>. It is pretty limited in it&#8217;s functionality &#8211; much like the original ExtendedScanner, as a matter of fact it&#8217;s based on the ExtendedScanner. But with a few tweaks &#8211; like adding some more XSS signatures and adding some of the SQL injection scanning logic mentioned above (it already includes some of it, plus things like column enumeration when it finds a sql injection) &#8211; I would put money on it against any of the expensive (or non-free) web app scanners out there when it came to looking for things that it was designed to look for.</p>
<p>Cheers,</p>
<p>Chuck B.</p>
]]></content:encoded>
			<wfw:commentRss>http://anautonomouszone.com/blog/archives/22/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Someone else actually likes NTOSpider?</title>
		<link>http://anautonomouszone.com/blog/archives/16</link>
		<comments>http://anautonomouszone.com/blog/archives/16#comments</comments>
		<pubDate>Mon, 07 Jul 2008 00:41:16 +0000</pubDate>
		<dc:creator>Chuck B.</dc:creator>
				<category><![CDATA[Web App Hacking]]></category>

		<guid isPermaLink="false">http://anautonomouszone.com/blog/?p=16</guid>
		<description><![CDATA[NTOSpider  &#8211; I generally use it as a  scanner (amongst others) when I&#8217;m looking for web app input validation issues, and I’ve thought it to be pretty decent. By no means is it the best one out there &#8211; which I&#8217;ll talk about in a sec, but it is a scanner that has [...]]]></description>
			<content:encoded><![CDATA[<p>NTOSpider  &#8211; I generally use it as a  scanner (amongst others) when I&#8217;m looking for web app input validation issues, and I’ve thought it to be pretty decent. By no means is it the best one out there &#8211; which I&#8217;ll talk about in a sec, but it is a scanner that has decent spidering (automatic code coverage) capabilities and decent XSS identification. In my opinion, it&#8217;s semi-alright for a point-and-shoot web app scanner (but I don&#8217;t think I&#8217;ve ever found one that I think is real good).</p>
<p>The web app scanner market is really odd. For some reason, the market just can&#8217;t seem to get it right. I&#8217;ve worked at places that have had head-to-head comparisons of all the major web application scanners because they had built a proprietary scanner (but it wasn&#8217;t for sale &#8211; they sold a service that used the scanner) and would have these comparison tests every once in a while to see how their product stood against the competition. Now, I didn&#8217;t really run the tests myself because I was doing billable work (mostly web app testing) at that moment, but a friend at the company working right next to me was doing the comparison testing &#8211; so he&#8217;d share the results with me whenever I continually look over his shoulder and asked about them.</p>
<p>It was kind of a funny thing. One was always better at picking up XSS than another, Some other one was good at picking up SQL injection, while some weren&#8217;t, one was always better at code coverage when using an automatic crawl functionality, some wouldn&#8217;t work well in certain authentication scenarios, etc., etc.</p>
<p>I mean &#8211; web app security is a hot market these days, and rightfully so. Most (not all) organizations (for the external infrastructure) generally have firewalls up blocking most un-needed services. They&#8217;re aware of shutting down extraneous services, incorporate some sort of patching solution, etc. but almost all have a web site.</p>
<p>As time goes on, and security awareness goes up, rules or laws instituted making companies liable for compromises, things like finding an mssql server on port 1433 with a weak password, anonymous ftp, un-patched webservers become less and less common in an external environment.</p>
<p>But again, almost every company has a port 80 or 443 open with some application somewhere. Web applications provide, by far, the largest external attack surface in an organization &#8211; there&#8217;s typically hundreds of user-controlled parameters going into the application, which are all a potential threat. Plus, a lot of the time there&#8217;s all kinds of interesting things when web apps get exploited, like user names and passwords that can be used for other services throughout the organization, credit card numbers, personal identification information, and more. And luckily for people who are into (in)security, most of the time it&#8217;s custom code written by people who know nothing about security &#8211; and don&#8217;t have that much experience, as opposed to other services that they have externally facing that generally have a lot less attack surface and have been written by some well-known company or a community, tested a lot and have more-or-less stood the test of time (like most PPTP or SSH servers).</p>
<p>So I could never understand &#8211; with the market so hot (like &#8211; if you&#8217;re a security company and you&#8217;re not selling web application work when you are offering the service then something is seriously wrong with your sales team) why a company or open source project has never got it right.</p>
<p>Why not try out all the web app scanners on the market, take the features, techniques, signatures of the ones that perform certain functions the best (or better than the others) and combine them into one tool? Someone could make real decent money doing that. I&#8217;d almost be tempted myself &#8211; but I it&#8217;s just not something I&#8217;m really interested in. Look at how much money IBM/WatchFire&#8217;s AppScan and HP/SPI Dynamics WebInspect pull in for them &#8211; and their products really aren&#8217;t that great, like at all.</p>
<p>I mean to build a web app scanner generally isn&#8217;t rocket science (or even computer science most of the time). There&#8217;s actually a really good how-to write your own web app scanner in  the O&#8217;Reilly book &#8220;Network Security Tools, Writing, Hacking, and Modifying Security Tools.&#8221; The code for that one is available <a title="http://www.gdssecurity.com/l/t/extendedscanner.zip" href="http://www.gdssecurity.com/l/t/extendedscanner.zip">here</a>.</p>
<p>But for some reason I think that the developers for web app scanners think that they don&#8217;t need to check out the competition before they release something &#8211; they must think that whatever they&#8217;re doing, it must be the best way. Otherwise we wouldn&#8217;t have so many people charging a lot of money for low-quality web app scanners on the market.</p>
<p>So &#8211; back to NTOSpider a bit: of course, there&#8217;s no one automated scanner that&#8217;s going to be an end-all-be-all solution for webapps – (there’s just way too many business logic types of flaws in applications to have a non-intelligent scanner catch these types of things). But it does a decent job I guess for what it was meant to do &#8211; mainly fuzz parameters.</p>
<p>However, I do usually throw a couple different webapp scanners at an app either before or during manual analysis to catch any low-hanging fruit and to let me know where I might want to concentrate some exploit efforts on (like, for instance on a possible sql injection finding).</p>
<p>I know,  I know – I&#8217;ve heard some pentesters say that they aren’t supposed to mention that they use automated tools like nessus or webapp scanners &#8211; they do all manual testing.</p>
<p>However, IMHO there is definitely a time and a place for scanners. I’m not saying they should *strictly rely* on them and only run a couple of scanners on a test and call it quits (because you *will* miss a lot of cool findings) – but I do run automated scanning tools on just about every single test I perform (like nmap).</p>
<p>So, again I do think that there are things that webapp scanners are really good for – fuzzing parameters (in the case of webapps, scanners are usually really good at catching XSS, sql injection points, and CRLF). When fuzzing anything it is generally done in an automated fashion – keeping in mind it usually does take a lot of manual effort to generate meaningful fuzzing data sets to get the best results possible – but once you have meaningful data sets to fuzz with it should be an automated process.</p>
<p>The process of fuzzing stuff is actually kind of what a computer is meant to do. The four basic functions of computing come to mind – input, processing, output and storage. The combination of these functions is exactly what we do when fuzzing!</p>
<p>I think scanning tools probably got a bad rap from the community when “pentesters” started using/condoning  automated tools for their complete efforts of the pentest like running nessus on a network or a webapp scanner on a web application and calling it quits. Now just running automated tools on some application, system or network is not a pentest in any sense of the word, any decent pentester will tell you that – but in the same sense I feel that there is some backlash against these very same tools from others in the community. I can kind of understand – no automated tool can take the place of an experienced pentester. On the other hand I think these very same tools can definitely bring informative issues to the table when testing.</p>
<p>Now that I have in some sense justified (at least in my own mind) scanning tools for particular purposes I guess I’ll get to the original point of this post – which is someone else actually likes NTOSpider (even the though the both the <a title="http://www.stratdat.com/webscan.pdf" href="http://www.stratdat.com/webscan.pdf">report</a> and the metrics that Larry Suto use are pretty wack):</p>
<p>Cheers,</p>
<p>Chuck B.</p>
]]></content:encoded>
			<wfw:commentRss>http://anautonomouszone.com/blog/archives/16/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

