<?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>Web Admin Blog &#187; penetration</title>
	<atom:link href="http://www.webadminblog.com/index.php/tag/penetration/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.webadminblog.com</link>
	<description>Real Web Admins.  Real World Experience.</description>
	<lastBuildDate>Wed, 25 May 2011 03:02:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Assessing Your Web App Manually Without Hacking It</title>
		<link>http://www.webadminblog.com/index.php/2009/03/23/assessing-your-web-app-manually-without-hacking-it/</link>
		<comments>http://www.webadminblog.com/index.php/2009/03/23/assessing-your-web-app-manually-without-hacking-it/#comments</comments>
		<pubDate>Mon, 23 Mar 2009 21:00:50 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[TRISC 2009]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[assessment]]></category>
		<category><![CDATA[manual]]></category>
		<category><![CDATA[penetration]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.webadminblog.com/?p=206</guid>
		<description><![CDATA[After giving my presentation on "Using Proxies to Secure Applications and More" at the TRISC 2009 conference, I decided to attend the presentation by Robert "RSnake" Hansen and Rob MacDougal entitled "Assessing Your Web App Manually Without Hacking It".  The gist of this presentation was that with a few simple tools (Web Developer Toolbar, NoScript, [...]]]></description>
			<content:encoded><![CDATA[<p>After giving my presentation on "Using Proxies to Secure Applications and More" at the TRISC 2009 conference, I decided to attend the presentation by Robert "RSnake" Hansen and Rob MacDougal entitled "Assessing Your Web App Manually Without Hacking It".  The gist of this presentation was that with a few simple tools (Web Developer Toolbar, NoScript, you web browser) you can spend about an hour looking at the characteristics of a web application in order to determine what types and how many vulnerabilities it may have.  My notes on the presentation are below:</p>
<p><span id="more-206"></span><!--[if gte mso 9]><xml> <w :WordDocument> </w><w :View>Normal</w> <w :Zoom>0</w> <w :TrackMoves /> <w :TrackFormatting /> <w :PunctuationKerning /> <w :ValidateAgainstSchemas /> <w :SaveIfXMLInvalid>false</w> <w :IgnoreMixedContent>false</w> <w :AlwaysShowPlaceholderText>false</w> <w :DoNotPromoteQF /> <w :LidThemeOther>EN-US</w> <w :LidThemeAsian>X-NONE</w> <w :LidThemeComplexScript>X-NONE</w> <w :Compatibility> <w :BreakWrappedTables /> <w :SnapToGridInCell /> <w :WrapTextWithPunct /> <w :UseAsianBreakRules /> <w :DontGrowAutofit /> <w :SplitPgBreakAndParaMark /> <w :DontVertAlignCellWithSp /> <w :DontBreakConstrainedForcedTables /> <w :DontVertAlignInTxbx /> <w :Word11KerningPairs /> <w :CachedColBalance /> </w> <m :mathPr> <m :mathFont m:val="Cambria Math" /> <m :brkBin m:val="before" /> <m :brkBinSub m:val="&#45;-" /> <m :smallFrac m:val="off" /> <m :dispDef /> <m :lMargin m:val="0" /> <m :rMargin m:val="0" /> <m :defJc m:val="centerGroup" /> <m :wrapIndent m:val="1440" /> <m :intLim m:val="subSup" /> <m :naryLim m:val="undOvr" /> </m> </xml>< ![endif]--><!--[if gte mso 9]><xml> <w :LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"   DefSemiHidden="true" DefQFormat="false" DefPriority="99"   LatentStyleCount="267"> <w :LsdException Locked="false" Priority="0" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Normal" /> <w :LsdException Locked="false" Priority="9" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="heading 1" /> <w :LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2" /> <w :LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3" /> <w :LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4" /> <w :LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5" /> <w :LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6" /> <w :LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7" /> <w :LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8" /> <w :LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9" /> <w :LsdException Locked="false" Priority="39" Name="toc 1" /> <w :LsdException Locked="false" Priority="39" Name="toc 2" /> <w :LsdException Locked="false" Priority="39" Name="toc 3" /> <w :LsdException Locked="false" Priority="39" Name="toc 4" /> <w :LsdException Locked="false" Priority="39" Name="toc 5" /> <w :LsdException Locked="false" Priority="39" Name="toc 6" /> <w :LsdException Locked="false" Priority="39" Name="toc 7" /> <w :LsdException Locked="false" Priority="39" Name="toc 8" /> <w :LsdException Locked="false" Priority="39" Name="toc 9" /> <w :LsdException Locked="false" Priority="35" QFormat="true" Name="caption" /> <w :LsdException Locked="false" Priority="10" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Title" /> <w :LsdException Locked="false" Priority="1" Name="Default Paragraph Font" /> <w :LsdException Locked="false" Priority="11" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtitle" /> <w :LsdException Locked="false" Priority="22" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Strong" /> <w :LsdException Locked="false" Priority="20" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Emphasis" /> <w :LsdException Locked="false" Priority="59" SemiHidden="false"    UnhideWhenUsed="false" Name="Table Grid" /> <w :LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text" /> <w :LsdException Locked="false" Priority="1" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="No Spacing" /> <w :LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading" /> <w :LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List" /> <w :LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid" /> <w :LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1" /> <w :LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2" /> <w :LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1" /> <w :LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2" /> <w :LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1" /> <w :LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2" /> <w :LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3" /> <w :LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List" /> <w :LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading" /> <w :LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List" /> <w :LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid" /> <w :LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 1" /> <w :LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 1" /> <w :LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 1" /> <w :LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1" /> <w :LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1" /> <w :LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 1" /> <w :LsdException Locked="false" UnhideWhenUsed="false" Name="Revision" /> <w :LsdException Locked="false" Priority="34" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="List Paragraph" /> <w :LsdException Locked="false" Priority="29" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Quote" /> <w :LsdException Locked="false" Priority="30" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Quote" /> <w :LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 1" /> <w :LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1" /> <w :LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1" /> <w :LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1" /> <w :LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 1" /> <w :LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 1" /> <w :LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 1" /> <w :LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 1" /> <w :LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 2" /> <w :LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 2" /> <w :LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 2" /> <w :LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2" /> <w :LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2" /> <w :LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 2" /> <w :LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 2" /> <w :LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2" /> <w :LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2" /> <w :LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2" /> <w :LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 2" /> <w :LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 2" /> <w :LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 2" /> <w :LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 2" /> <w :LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 3" /> <w :LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 3" /> <w :LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 3" /> <w :LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3" /> <w :LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3" /> <w :LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 3" /> <w :LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 3" /> <w :LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3" /> <w :LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3" /> <w :LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3" /> <w :LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 3" /> <w :LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 3" /> <w :LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 3" /> <w :LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 3" /> <w :LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 4" /> <w :LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 4" /> <w :LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 4" /> <w :LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4" /> <w :LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4" /> <w :LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 4" /> <w :LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 4" /> <w :LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4" /> <w :LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4" /> <w :LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4" /> <w :LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 4" /> <w :LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 4" /> <w :LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 4" /> <w :LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 4" /> <w :LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 5" /> <w :LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 5" /> <w :LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 5" /> <w :LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5" /> <w :LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5" /> <w :LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 5" /> <w :LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 5" /> <w :LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5" /> <w :LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5" /> <w :LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5" /> <w :LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 5" /> <w :LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 5" /> <w :LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 5" /> <w :LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 5" /> <w :LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 6" /> <w :LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 6" /> <w :LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 6" /> <w :LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6" /> <w :LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6" /> <w :LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 6" /> <w :LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 6" /> <w :LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6" /> <w :LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6" /> <w :LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6" /> <w :LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 6" /> <w :LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 6" /> <w :LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 6" /> <w :LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 6" /> <w :LsdException Locked="false" Priority="19" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis" /> <w :LsdException Locked="false" Priority="21" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis" /> <w :LsdException Locked="false" Priority="31" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference" /> <w :LsdException Locked="false" Priority="32" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Reference" /> <w :LsdException Locked="false" Priority="33" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Book Title" /> <w :LsdException Locked="false" Priority="37" Name="Bibliography" /> <w :LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading" /> </w> </xml>< ![endif]--><br />
Step 1: Exploit Overachievers</p>
<ul>
<li>Maximize value by using free tools</li>
<li>OWASP (Open Web Application Security Project)</li>
<li>WASC (Web Application Security Consortium)</li>
</ul>
<p>Step 2: Learn</p>
<ul>
<li>Security is not an arcane art reserved for people with a special gift.  It’s campfire knowledge.
<ul>
<li>Assess your security posture regularly</li>
<li>Do not neglect any aspect of your security; bad guys don’t (Social Engineering, Internal Network, Firewall, Web Apps, etc)</li>
</ul>
</li>
</ul>
<p>Step 3: Chase Your Tail</p>
<ul>
<li>Remember where you started
<ul>
<li>Free tools can provide extreme amounts of value
<ul>
<li>OWASP (Eg: OWASP Testing Guide)</li>
<li>WASC</li>
</ul>
</li>
<li>There is no magic to security</li>
</ul>
</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Tools Needed</strong></span></p>
<ul>
<li>Web Developer Toolbar
<ul>
<li>POST to GET</li>
<li>Response headers</li>
</ul>
</li>
<li>NoScript or QuickJava</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Estimating Vulnerabilities</strong></span></p>
<ul>
<li>Site Age – Care &amp; Feeding
<ul>
<li>“Copyright 2003”</li>
<li>Alexa</li>
<li>Archive.org</li>
<li>Whois</li>
<li>Last modified date</li>
<li>Old server + modules version #’s</li>
</ul>
</li>
<li>2-3 years (2), 3-5 years (3), 5-10 years (4), 10+ (5)</li>
<li>Programming Language
<ul>
<li>.cfm (1)</li>
<li>AJAX (1)</li>
<li>.do/.jsp (1)</li>
<li>.cgi/.pl/.shtml (2)</li>
<li>.asp (2)</li>
<li>.php (2)</li>
<li>.aspx/.jspx/.html (0)</li>
<li>Languages + Demographics theory</li>
</ul>
</li>
<li>Size of the Site Logic Complexity
<ul>
<li>Surf around manually
<ul>
<li>Sitemap</li>
</ul>
</li>
<li>Google inurl: search</li>
<li>Spider (added download + added time)</li>
<li>Small (0), Medium – typical retailer (1), Large – Yahoo (3)</li>
</ul>
</li>
<li>Search
<ul>
<li>XSS tests (1)
<ul>
<li>“Company”</li>
<li>I &lt;3 U</li>
</ul>
</li>
<li>SQL injection (1)
<ul>
<li>O’Malley</li>
</ul>
</li>
<li>DoS (.5)
<ul>
<li>a AND b AND c …</li>
</ul>
</li>
</ul>
</li>
<li>Registration
<ul>
<li>Does it exist?  Yes (1)</li>
<li>Email validation and/or CAPTCHA (1-2)</li>
<li>Password complexity? (1)</li>
<li>Can you choose “admin” as a username? (1)</li>
</ul>
</li>
<li>Security Functions
<ul>
<li>Does change password enforce password complexity rules</li>
<li>Does change password require the existing password</li>
<li>Can you change email address without a password</li>
<li>Can emails be changed without validating them</li>
<li>Are secret questions “strong”</li>
</ul>
</li>
<li>Contact forms
<ul>
<li>Do they have an email address in a hidden field (1)</li>
<li>Submit a blank contact
<ul>
<li>Does it work without an error (1)</li>
</ul>
</li>
<li>With and without JavaScript
<ul>
<li>Does it say “Thanks” without JS but errors when JS is turned on (1)</li>
</ul>
</li>
<li>Can users contact other users on the site (Eg: Private message) (2)</li>
</ul>
</li>
<li>Login
<ul>
<li>Does it use SSL (1)</li>
<li>Does it allow auto complete (1)</li>
<li>Does it stop me from being able to type failed logins (3)
<ul>
<li>Horizontal, Vertical, &amp; Diagonal Brute Force attacks</li>
</ul>
</li>
<li>Can you switch POST to GET (1)
<ul>
<li>Session fixation</li>
<li>CSRF (1 per major site function, EG: change password, change secret question, change email address, etc)</li>
</ul>
</li>
<li>Does it auto-logout (1)</li>
<li>javascript:alert(document.cookie) (1)</li>
</ul>
</li>
<li>Forgot password flow
<ul>
<li>Does it send the plaintext password (1)</li>
<li>Does it send a “small” key (1) – 20 bits or less</li>
<li>Does it tell you if your username is valid or not (.5)</li>
</ul>
</li>
<li>File Upload
<ul>
<li>Does it check file extensions (.5)</li>
<li>Does it check file types (.5)</li>
<li>Does it allow re-displaying of the file (1)</li>
</ul>
</li>
<li>HTML/JS/CSS Comments
<ul>
<li>Intranet IPs/addresses (.5)</li>
<li>Passwords (1)</li>
<li>Functionality comments (.5)</li>
</ul>
</li>
<li>URL Structure
<ul>
<li>function?path=/files/file.asp (1)</li>
<li>something?id=104 (1)</li>
<li>search?q=bob&amp;charset=UTF-8 (1)
<ul>
<li>alternate charset</li>
<li>header injection</li>
</ul>
</li>
<li>redir?url=http://www.cnn.com/ (.5)</li>
<li>chngpasswd?usr=bob&amp;pass=1234 (2)</li>
<li>/images/ If it shows a directory (1)</li>
</ul>
</li>
<li>Obvious admin interfaces (2)
<ul>
<li>/admin/</li>
<li>/blog/wp-admin/</li>
<li>/administrator/</li>
<li>/adm/</li>
<li>admin.url.com</li>
</ul>
</li>
<li>Outdated Open Source or Commercial Programs
<ul>
<li>PHP nuke</li>
<li>WordPress</li>
<li>Drupal</li>
<li>3/instance</li>
<li>+1 for every major revision out of date</li>
</ul>
</li>
<li>Other questions
<ul>
<li>Does it allow rich HTML user comments (1)</li>
<li>Does it have a send-to-friend function (1)</li>
<li>Virtual host? (MSN IP search) (1)</li>
</ul>
</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Things this doesn’t cover</strong></span></p>
<ul>
<li>Timing attacks, buffer overflows, etc</li>
<li>Network infrastructure flaws (including DNS)</li>
<li>Predictable file locations (VCS trees, etc)</li>
<li>Logic flaws</li>
<li>Backup files/folders/CVS trees, etc</li>
<li>Alternate paths of exploitation (email, FTP, APIs, etc)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.webadminblog.com/index.php/2009/03/23/assessing-your-web-app-manually-without-hacking-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cryptography for Penetration Testers &#8211; OWASP AppSec NYC 2008</title>
		<link>http://www.webadminblog.com/index.php/2008/09/25/cryptography-for-penetration-testers-owasp-appsec-nyc-2008/</link>
		<comments>http://www.webadminblog.com/index.php/2008/09/25/cryptography-for-penetration-testers-owasp-appsec-nyc-2008/#comments</comments>
		<pubDate>Thu, 25 Sep 2008 20:45:53 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[OWASP AppSec NYC 2008]]></category>
		<category><![CDATA[Web Application Security]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[appsec]]></category>
		<category><![CDATA[cryptography]]></category>
		<category><![CDATA[owasp]]></category>
		<category><![CDATA[penetration]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[testers]]></category>

		<guid isPermaLink="false">http://www.webadminblog.com/?p=127</guid>
		<description><![CDATA[This presentation was on "Cryptography for Penetration Testers" and was by Chris Eng, the Senior Director of Security Research at VeraCode. The Premise How much do you really have to know about cryptography in order to detect and exploit crypto weaknesses in web apps. Goals Learn basic techniques for identifying and analyzing cryptographic data Learn [...]]]></description>
			<content:encoded><![CDATA[<p>This presentation was on "Cryptography for Penetration Testers" and was by Chris Eng, the Senior Director of Security Research at VeraCode.</p>
<p><span style="text-decoration: underline;"><strong>The Premise</strong></span></p>
<p>How much do you really have to know about cryptography in order to detect and exploit crypto weaknesses in web apps.</p>
<p><span style="text-decoration: underline;"><strong>Goals</strong></span></p>
<ul>
<li>Learn basic techniques for identifying and analyzing cryptographic data</li>
<li>Learn black-box heauristics for recorgnizing weak crypto implementation</li>
<li>Apply techniques</li>
</ul>
<p>The Crypto that Matters in 6 Short Slides</p>
<p><span style="text-decoration: underline;"><strong>Types of Ciphers</strong></span></p>
<ul>
<li><strong>Block Ciphers:</strong> Operates on fixed-length groups of bits, called blocks.  Block sizes vary depending on the algorithm.  Several different modes of operation for encrypting messages longer than the basic block size.  Example ciphers include DES, 3DES, Blowfish, AES</li>
<li><strong>Stream Ciphers:</strong> Operates on plaintext one bit at a time</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Block Ciphers: Electronic Code Book (ECB) Mode</strong></span></p>
<ul>
<li>Fixed-size blocks of plaintext are encrypted independently</li>
<li>Each plaintext block is substituted with ciphertext block, like a codebook</li>
<li>Weaknesses: Structure in plaintext is reflected in ciphertext.  Ciphertext blocks can be modified without detection.</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Bliock Ciphers: Cipher Block Chaining (CBC) Mode</strong></span></p>
<ul>
<li>Each block of plaintext is XORed with the previous ciphertext block before being encrypted</li>
<li>Change of message affects all following ciphertext blocks</li>
<li>Initialization Vector (IV) is used to encrypt first block</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Stream Ciphers</strong></span></p>
<ul>
<li>Plaintext message is processed byte by byte (as a stream)</li>
<li>Key scheduler algorithm generates a keystream using a key and an Initialization Vector (IV combined (XOR) with plaintext bit by bit</li>
<li>Encrypt by XORing plaintext with the generated keystream</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Common Crypto Mistakes</strong></span></p>
<ul>
<li>Insecure cipher mode (usually ECB)</li>
<li>Inappropriate key reuse</li>
<li>Poor key selection</li>
<li>Insufficient key length</li>
<li>Insecure random number generation</li>
<li>Proprietary or home-grown encryption algorithms (Don't do this ever!)</li>
</ul>
<p><strong>Analysis Techniques</strong></p>
<p><span style="text-decoration: underline;"><strong>Dealing with Gibberish Data</strong></span></p>
<p>What do you do when you are pen testing a web application and you encounter data that is not easy to interpret?</p>
<ul>
<li>Cookies</li>
<li>Hidden fields</li>
<li>Query string parameters</li>
<li>POST parameters</li>
</ul>
<p>How random is it?</p>
<ul>
<li>Output of cryptographic algorithms should be evenly distributed, given a sufficiently large sample size.</li>
<li>Tools such as ENT (http://www.fourmilab.ch/random) will calculate entropy per byte, chi-square distribution, arithmetic mean, serial correlation, etc</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Observe Characteristics</strong></span></p>
<p>Is the length a multiple of a common block size?</p>
<ul>
<li>Indicates that the application may be using a block cipher</li>
</ul>
<p>Is the length the same as a known hash algorithm?</p>
<ul>
<li>For example, MD5 is usually represented as 32 hex characters</li>
<li>May also indicate the presence of an HMAC</li>
<li>Still may be worthwhile to hash various permutations of known data in case a simple unkeyed hash is being used</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Stimulus, Response</strong></span></p>
<p>Does the length of the token change based on the length of some value that you can supply?</p>
<p>For a block cipher, you can determine the block size by incrementing input one byte at a time and observing when the encrypted output length jumps by multiple bytes (ie, the block size)</p>
<p>How does the token change in response to user-supplied data?</p>
<ul>
<li>Figure out how changing different parts of the input affects the output</li>
<li>Is more than one block affected by a single character change in the input?</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Deeper Block Cipher Inspection</strong></span></p>
<p>Are there any blocks of data that seem to repeat in the same token or over multiple tokens?</p>
<ul>
<li>Possibly ECB mode, this doesn't just happen by coincidence</li>
</ul>
<p><span style="text-decoration: underline;"><strong>EXAMPLE</strong></span></p>
<p>Context:  A public-facing web portal for a large ISP.  Used an encrypted cookie to authenticate identity.  A new cookie is issued on each request.  Base64 decoded EE cookies.  Divided by 8 and found 8 byte blocks.  Noticed some repetition in the same position.  The only variable blocks are the last two (possibly a "last accessed" timestamp or similar timeout mechanism).  Register a new account with a username of 'c' x 32, the maximum length permitted, and observe the value of the EE cookie.</p>
<p>'c' x 32 is Perl notation for "cccccccccccccccccccccccccccccccc"</p>
<p>The token is longer, meaning the username is probably stored in the cookie.  Still noticed repition in same position.  Register another account with a username of 'c' x 16 and compare to the EE cookie generated in the previous step.  Didn't see two identical blocks for 'c' x 16 and four identical blocks for 'c' x 32.  Reason is padding.  The username doesn't align perfectly with the block offset.  Want to figure out what position in the cookie the usernaem is located.  Additional user accounts were created with specific usernames in order to determine if there is any initial padding in the first block.  Now you know where the username is in the ciphertext.</p>
<p>Able to successfully subvert the authentication mechanism without any knowledge of the algorithm or the key, based solely on observed patterns in the ciphertext.  The root cause was the insecure cipher mode and the lack of a verification mechanism.  ECB mode shoul dnot be used (use CBC instead).</p>
<p><span style="text-decoration: underline;"><strong>EXAMPLE</strong></span></p>
<p>Token values observed in URLs.  Changed every time we logged on to the application.  Never the same for any two sessions or any two users.  Base64 decoded values for several different "stmt" tokens.  Statement numbers were displayed in the browser.  Looked for correlations between statement number and cipher-text.  Conclusion: It looks like a stream cipher.  Use XOR to calculate 10 bytes of the keystream based on the known plain-text (ie. the statement number).  Now try the same things against one of the other collected tokens, such as the one called "Ctxt".  Get ASCII text that allows you to infer what it would say.  Expand it out more and more to get the keystream.  Repeat over and over until you have enough of the key to figure out anything in the application.</p>
<p>Through this iterative process, we can obtain the entire keystream (or rather, a sufficient amount of the keystream to encrypt and decrypt all of the cipher-text we encounter).  Can replace the statement number with another valid statement number and view the contents.</p>
<p>Able to subvert the encryption mechanism without any knowledge of the algorithm or the key based solely on observed patterns in the ciphertext.  They were using RC4 with a unique key generated for each user session.  Root cause of the vulnerability is the re-use of the keystream.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.webadminblog.com/index.php/2008/09/25/cryptography-for-penetration-testers-owasp-appsec-nyc-2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mastering PCI Section 6.6 &#8211; OWASP AppSec NYC 2008</title>
		<link>http://www.webadminblog.com/index.php/2008/09/24/mastering-pci-section-66-owasp-appsec-nyc-2008/</link>
		<comments>http://www.webadminblog.com/index.php/2008/09/24/mastering-pci-section-66-owasp-appsec-nyc-2008/#comments</comments>
		<pubDate>Wed, 24 Sep 2008 21:58:27 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[OWASP AppSec NYC 2008]]></category>
		<category><![CDATA[PCI]]></category>
		<category><![CDATA[analysis]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[appsec]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[owasp]]></category>
		<category><![CDATA[penetration]]></category>
		<category><![CDATA[section 6.6]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[source]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[waf]]></category>

		<guid isPermaLink="false">http://www.webadminblog.com/?p=100</guid>
		<description><![CDATA[This presentation is by Jacob West in the Security Research Group and Taylor McKinsley in Product Marketing from Fortify software.  I'd like to note that Fortify is a developer of a source code analysis tool and so this presentation may have a bias towards source code analysis tools. 56% of organizations fail PCI section 6.  [...]]]></description>
			<content:encoded><![CDATA[<p>This presentation is by Jacob West in the Security Research Group and Taylor McKinsley in Product Marketing from Fortify software.  I'd like to note that Fortify is a developer of a source code analysis tool and so this presentation may have a bias towards source code analysis tools.</p>
<p>56% of organizations fail PCI section 6.  Poorly coded web applications leading to SQL injection vulnerabilities is one of hte top five reasons for a PCI audit failure.  Section 6 is becoming a bigger problem: #9 in 2006 reason for failure, #2 in 2007.</p>
<p>PCI Section 6 has to do with guidelines to "Develop and maintain secure systems and applications".  Section 6.6 reads "Ensure that all web-facing applications are protected against known attacks by either of the following methods: Having all custom application code reviwed for common vulnerabilities by an organization that specializes in web application secure" or by using a web application firewall.  Further clarifications say that automated tools are acceptable, web application penetration testing is allowed, and vulnerability assessments can be performed by an internal team.</p>
<p><span style="text-decoration: underline;"><strong>Comparing Apples, Oranges, and Watermelons</strong></span></p>
<ul>
<li><strong>Setup:</strong> Source code analysis (+2) is good because it works on existing hardware, but must live where your source code lives.  Penetration testing (+3) is good because you only need one to assess everything and works on existing hardware, but needs to talk to a running program.  Application firewall (+1)is good because it lives on the network, but you must model program behavior.</li>
<li><strong>Optimization:</strong> Source code analysis (+2) is good because you can specify generic antipatterns in code, but you must understand vulnerability in detail.  Penetration testing (+2) is good because tests are attacks, but you must successfully attack your application.  Application firewalls (+1) are good because they share configuration across programs, but must differentiate good from bad.</li>
<li><strong>Performance:</strong> Source code analysis (+3) is good because it simulates all application states and is non-production, but scales with build time and not the number of tests.  Penetration testing (+2) is good because you get incremental results and is non-production, but you must exercise each application state.  Application firewall (+1) is good because it's a stand-alone device and scales with $$$, but impacts production performance and scales with $$$.</li>
<li><strong>Human resources:</strong> Source code analysis (+1) is good because it enables security in development and reports a root cause, but makes auditors better and does not replace them.  Penetration testing (+2) is good because it is highly automatable, but reports symptoms and not the root cause.  Application firewall (+2) is good because once it's configured it functions largely unattended, but requires extensive and ongoing configuration.</li>
<li><strong>Security know-how:</strong> Source code analysis (+3) is good because it gives code-level details to an auditor, but you must understand security-relevant behavior of APIs.  Penetration testing (+1) is good because it automates hacks, but a hacker is required to measure success and optimize.  Application firewall (+2) is good because it identifies common attacks out of the box and is a community effort, but a hacker is required to measure success and customize.</li>
<li><strong>Development expertise:</strong> Source code analysis (+1) is good because it focuses attention on relevant code, but you must understand code-level program behavior.  Penetration testing (+2) is good because basic attacks ignore internals, but advanced attacks require internal knowledge.  Application firewalls (+2) are good because they live on the network, but you must understand the program to tell good from bad.</li>
<li><strong>False positives:</strong> Source code analysis (+1) is good because it gives auditors details to verify issues, but reports impossible application states.  Penetration testing (+2) is good because results come with reproduction steps, but it is difficult to oracle some bugs.  Application firewalls (+1) are good because it is attacks instead of vulnerabilities, but there is an evolving definition of valid behavior.</li>
<li><strong>False negatives:</strong> Source code analysis (+3) is good because it simulates all program states and models the full program, but it must be told what to look for.  Penetration testing (+1) is good because it is good at finding what hackers find, but is difficult to oracle some bugs and has missed coverage.  Application firewalls (+1) are good because it uses attacks instead of vulnerabilities, but there is an evolving attack landscape.</li>
<li><strong>Technology support:</strong> Source code analysis (+2) is good because parsing is separable from the analysis and is interface-neutral, but it must adapt to new program paradigms.  Penetration testing (+2) is good because it is independent from program paradigms, but is tied to protocols and is limited to network interfaces.  Application firewalls (+2) are good because they are independent from program paradigms, but are tied to protocols and are limited to network interfaces.</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Working Towards a Solution</strong></span></p>
<ul>
<li>Assessment: Proving the problem or meeting the regulatory requirement.  Recurring cost that does not "fix" anything</li>
<li>Remediation: Fixing security issues found during assessments.  Lowering business risk at a single point in time.</li>
<li>Prevention: Get security right hte first time.  Minimizing business risk systematically.</li>
</ul>
<p>Do your own comparison and fill out the scorecard yourself (presenters ratings are noted in parentheses above).</p>
<p>Taylor did interviews with three companies to get their experiences deploying each (source code analysis, penetration testing, and application firewall) and had them evaluate based on the nine criteria both before and after buying.  Not going to list each company's results in the blog, but it was just a basic table with each criteria and a number rating for both before purchase and after deployment.  To sum it up, Source Code Analysis was a 14 rating before purchase and a 17 rating after deployment.  Penetration testing was a 21 rating before purchase and a 21 rating after deployment.  Application firewalls were a 21 rating before purchase and a 16 rating after deployment.  It seems like the first organization had a large amount of developers and that factored into their decision to purchase a source code analysis tool.  The second organization had a far fewer number of developers and was more of an IT shop and chose the penetration testing tool.  The last organization was a smaller shop in general (still fairly large) and went with the WAF because they wanted something they could just put in place and manage.</p>
<p>Analysis: All three solutions required more effort than expected.  All three solutions produce reasonably accurate results.  Varying levels of expertise needed.</p>
<p>How do you demonstrate that your application is protected against known attacks?</p>
<ul>
<li>Verification that the application was analyzed</li>
</ul>
<ul>
<li>A report showing no critical security issues identified</li>
</ul>
<ul>
<li>Document showing how the tool fits into your architecture</li>
</ul>
<p>How do you show that the user is appropriately trained?</p>
<ul>
<li>Document explaining prior experience or an informal interview</li>
</ul>
<p>How do you show that you have configured the tool appropriately?</p>
<ul>
<li>Document explaining how the tool was configured and what new rules had to be added.</li>
</ul>
<p>Summary: PCI section 6 is evolving to become increasingly precise.  Compare technologies in your environment along nine criteria.  Demonstrating compliance is an art, not a science.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.webadminblog.com/index.php/2008/09/24/mastering-pci-section-66-owasp-appsec-nyc-2008/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

