Legal And Efficient Web App TestingWithout PermissionCONFidence, May 22th 2012                       Abraham Aranguren    ...
Agenda• Intro   - Why + How without permission   - OWTF basics• Practical Cheating:   - OWASP + OWTF Walk-through• Conclus...
About me•   Spanish dude•   Uni: Degree, InfoSec research + honour mark•   IT: Since 2000, defensive sec as netadmin / dev...
The pen testing problem       http://scottthong.wordpress.com
Attacker TacticsFrom “Open Source Information Gathering” by Chris Gates, Brucon 2009              http://carnal0wnage.atta...
Pentester disadvantagePentesters vs Bad guys• Pentesters have time/scope constraints != Bad guys• Pentesters have to write...
Can we learn from history?              Has this     Huge disadvantage     problem been solved before?
Ancient “Top Attackers”Individually outstanding due to:• Artificial selection: Babies killed if “defective” (!)• Military ...
How would you beat them?   How could a room full of (sedentary? ☺) Geeks          beat a room full of Spartans?Ok, more re...
Ancient “Pentest Cheating”Battle of Lechaeum: Spartans defeated by “lamers”!Tactic “Cheating”:• Don’t fight, thow things!:...
Why not take this to the next level?    Why not legitimately?    • Shoot “before the battle” without permission    • Shoot...
OWTF Chess-like approach    Kasparov against Deep Blue - http://www.robotikka.com
Demos
OWTF “Cheating”: Talk ScopeAt least 48.5% (32 out of 66) of the tests in the OWASP Testing guide can belegally* performed ...
Classic Pentest Stages1. Pre-engagement: No permission “OWTF Cheat tactics” = Start here2. Engagement: Permission Official...
Context consideration:Case 1 robots.txt Not Found         …should Google index a site like this?Or should robots.txt exist...
Case 1 robots.txt Not Found - Semi passive• Direct request for robots.txt• Without visiting entries
Case 2 robots.txt Found – Passive• Indirect Stats, Downloaded txt file for review, “Open All in Tabs”
OWTF HTML Filter challenge: Embedding of untrusted third party HTMLDefence layers:1) HTML Filter: Open source challengeFil...
Start reporting!: Take your notes with fancy formattingStep 1 – Click the “Edit” linkStep 2 – Start documenting findings +...
Start reporting!: Paste PoC screenshots
The magic bar ;) – Useful to generate the human report later
Passive PluginStep 1- Browse output files to review the full raw tool output:Step 2 – Review tools run by the passive Sear...
Tool output can also be reviewed via clicking through the OWTF report directly:
The Harvester:                         •Emails                         •Employee Names                         •Subdomains...
Metadata analysis:• TODO: Integration with FOCA when CLI callable via wine (/cc @chemaalonso ☺)• Implemented: Integration ...
Inbound proxy not stable yet but all this happens automatically:• robots.txt entries added to “Potential URLs”• URLs found...
All HTTP transactions logged by target in transaction logStep 1 – Click on “Transaction Log”Step 2 – Review transaction en...
Step 3 – Review raw transaction information (if desired)
Step 1 - Make all direct OWTF requests go through Outbound Proxy:Passes all entry points to the tactical fuzzer for analys...
Goal: What is that server running?Manually verify request for fingerprint:
Whatweb integration with non-aggresive parameter (semi passive detection):                   https://github.com/urbanadven...
Fingerprint header analysis: Match stats
Convenient vulnerability search box (1 box per header found ☺):Search All Open all site searches in tabs
Exploit DB - http://www.exploit-db.com
NVD - http://web.nvd.nist.gov - CVSS Score = High
OSVDB - http://osvdb.org - CVSS Score = High
http://www.securityfocus.com - Better on Google
http://www.exploitsearch.net - All in one
Passive Fingerprint analysis
http://toolbar.netcraft.com - Passive banner grab,etc.
•CMS                       •Widgets                       •Libraries                       •etchttp://builtwith.com
Search in the headers without touching the site:               http://www.shodanhq.com/
Passive suggestions- Prepare your test in a terminal window to hit “Enter” on “permission minute 1”
What else can be done with a fingerprint?
Environment replicationDownload it .. Sometimes from project page ☺Also check http://www.oldapps.com/, Google, etc.
Static Analyis, Fuzz, Try exploits, ..          RIPS for PHP: http://rips-scanner.sourceforge.net/Yasca for most other (al...
http://www.robtex.com - Passive DNS Discovery
http://whois.domaintools.com
http://centralops.net
http://centralops.net
Has Google found error messages for you?
Check errors via Google Cache
The link is generated with OWTF with that box ticked: Important!            https://www.ssllabs.com/ssldb/analyze.html
Pretty graphs to copy-paste to your OWTF report ☺   https://www.ssllabs.com/ssldb/analyze.html
Do not forget about Strict-Transport-Security!sslstrip chances decrease dramatically:Only 1st time user visits the site!
Not found example:Found example:
HTML content analysis: HTML Comments
Efficient HTML content matches analysisStep 1 - ClickStep 2 – Human Review of Unique matches
Efficient HTML content matches analysisStep 1 - ClickStep 2 –Review Unique matches (click on links for sample match info) ...
HTML content analysis: CSS and JavaScript Comments (/* */)
HTML content analysis: Single line JavaScript Comments (//)
HTML content analysis: PHP source code
HTML content analysis: ASP source code
If you find an admin interface don’t forget to ..         Google for default passwords:
Disclaimer: Permission is required for this
http://centralops.net
Is the login page on “http” instead of “https”?
Pro Tip: When browsing the site manually .. … look carefully at pop-ups like this:  Consider (i.e. prep the attack):Firesh...
Mario was going to report a bug to Mozilla and found another!
Abuse user/member public search functions:   • Search for “” (nothing) or “a”, then “b”, ..   • Download all the data usin...
Analyse the username(s) they gave you to test:• Username based on numbers?USER12345• Username based on public info? (i.e. ...
Part 1 – Remember Password: Autocomplete                Good                                      BadVia 1) <form … autoco...
Manual verification for password autocomplete (i.e. for the customer)Easy “your grandma can do it” test:1. Login2. Logout3...
Part 2 - Password Reset formsManually look at the questions / fields in the password reset form• Does it let you specify y...
Goal: Is Caching of sensitive info allowed?Manual verification steps: “your grandma can do it” ☺ (need login):1. Login2. L...
HTTP/1.1 headers                   Good                                            BadCache-Control: no-cache             ...
Repeat for Meta tags              Good                                Bad<META HTTP-EQUIV="Cache-Control"   <META HTTP-EQU...
Step 1 – Find CAPTCHAs: Passive search
Offline Manual analysis:• Download image and try to break it• Are CAPTCHAs reused?• Is a hash or token passed? (Good algor...
Manually Examine cookies for weaknesses offline  Base64 Encoding (!= Encryption ☺)                Decoded valueMTkyLjE2OC4...
http://hackvertor.co.uk/public
Lots of decode options, including: • auto_decode • auto_decode_repeat • d_base64 • etc.http://hackvertor.co.uk/public
F5 BIG-IP Cookie decoder:http://blog.taddong.com/2011/12/cookie-decoder-f5-big-ip.html
• Secure: not set= session cookie leaked= pwned• HttpOnly: not set = cookies stealable via JS• Domain: set properly• Expir...
Manually check when verifying credentials during pre-engagement:    Login and analyse the Session ID cookie (i.e. PHPSESSI...
Session ID:• In URL• In POST• In HTMLExample from the field:http://target.com/xxx/xyz.function?session_num=7785Look at una...
Headers Enabling/Disabling Client-Side XSS filters:• X-XSS-Protection (IE-Only)• X-Content-Security-Policy (FF >= 4.0 + Ch...
Review JavaScript code on the page:      <script>      document.write("Site is at: " + document.location.href + ".");     ...
Did Google find SQLi for you?
<!--#exec cmd="/bin/ls /" --><!--#INCLUDE VIRTUAL="/web.config"-->
1.   Browse Site2.   Time requests3.   Get top X slowest requests4.   Slowest = Best DoS target
Google searches: inurl:wsdl site:example.comPublic services search:http://seekda.com/http://www.wsindex.org/http://www.soa...
WSDL analysisSensitive methods in WSDL?i.e. Download DB, Test DB, Get CC, etc.http://www.example.com/ws/FindIP.asmx?WSDL<w...
Same Origin Policy (SOP) 1011. Domain A’s page can send a request to Domain B’s page from Browser2. BUT Domain A’s page ca...
• Request == Predictable Pwned       “..can send a request to Domain B” (SOP)CSRF Protection 101:•Require long random toke...
Similar to CSRF:        Is there an anti-replay token in the request?               Potentially Good                      ...
1) Passive search for Flash/Silverlight files + policies:Flash file search:                      Silverlight file search:
Static analysis: Download + decompile Flash files$ flare hello.swfFlare: http://www.nowrap.de/flare.htmlFlasm (timelines, ...
Static analysis tools                 Adobe SWF Investigator   http://labs.adobe.com/technologies/swfinvestigator/        ...
Active testing ☺  1) Trip to server = need permission  http://target.com/test.swf?xss=foo&xss2=bar  2) But … your browser ...
Some technologies allow settings that relax SOP:• Adobe Flash (via policy file)• Microsoft Silverlight (via policy file)• ...
Policy file retrieval for analysis
CSRF by design     read tokens = attacker WIN             Flash / Silverlight - crossdomain.xml<cross-domain-policy><allow...
CSRF by design        read tokens = attacker WIN                  Silverlight - clientaccesspolicy.xml<?xml version="1.0" ...
Need help?
UI Redressing protections:    • X-Frame-Options (best)    • X-Content-Security-Policy (FF >= 4.0 + Chrome >= 13)    • Java...
Andrew Horton’s “Clickjacking for Shells”:http://www.morningstarsecurity.com/research/clickjacking-wordpressKrzysztof Koto...
Too much info?Use the filter to drill to what you care about:
Business Conclusion•   Web app security > Input validation•   We see no traffic != we are not targeted•   No IDS alerts !=...
Pen tester Conclusion• No permission != cannot start• A lot of work can be done in advanceThis work in advance helps with:...
Bottom lineDo not wait for “Tool X” or PermissionPhil Stevens - http://www.strengthguild.com/ http://www.ironradio.org/
Bottom line                  Try harder!Benedikt Magnusson - 1015lbs / 461kg World Record Deadlift                     2nd...
Special thanks to       Adi Mutu (@am06), Krzysztof Kotowicz (@kkotowicz),Marc Wickenden (@marcwickenden), Marcus Niemietz...
Q&A                             Abraham Aranguren                                @7a_ @owtfp                        abraha...
Abraham aranguren. legal and efficient web app testing without permission
Abraham aranguren. legal and efficient web app testing without permission
Abraham aranguren. legal and efficient web app testing without permission
Abraham aranguren. legal and efficient web app testing without permission
Abraham aranguren. legal and efficient web app testing without permission
Abraham aranguren. legal and efficient web app testing without permission
Abraham aranguren. legal and efficient web app testing without permission
Abraham aranguren. legal and efficient web app testing without permission
Abraham aranguren. legal and efficient web app testing without permission
Abraham aranguren. legal and efficient web app testing without permission
Upcoming SlideShare
Loading in …5
×

Abraham aranguren. legal and efficient web app testing without permission

1,577 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,577
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Abraham aranguren. legal and efficient web app testing without permission

  1. 1. Legal And Efficient Web App TestingWithout PermissionCONFidence, May 22th 2012 Abraham Aranguren @7a_ @owtfp abraham.aranguren@gmail.com http://7-a.org http://owtf.org
  2. 2. Agenda• Intro - Why + How without permission - OWTF basics• Practical Cheating: - OWASP + OWTF Walk-through• Conclusion• Q&A
  3. 3. About me• Spanish dude• Uni: Degree, InfoSec research + honour mark• IT: Since 2000, defensive sec as netadmin / developer• (Offensive) InfoSec: Since 2007• OSCP, CISSP, GWEB, CEH, MCSE, etc.• Web App Sec and Dev/Architect• Infosec consultant, blogger, OWTF, GIAC, BeEF
  4. 4. The pen testing problem http://scottthong.wordpress.com
  5. 5. Attacker TacticsFrom “Open Source Information Gathering” by Chris Gates, Brucon 2009 http://carnal0wnage.attackresearch.com/
  6. 6. Pentester disadvantagePentesters vs Bad guys• Pentesters have time/scope constraints != Bad guys• Pentesters have to write a report != Bad guysComplexity is increasingMore complexity = more time needed to test properlyCustomers are rarely willing to:“Pay for enough / reasonable testing time“A call for efficiency:• We must find vulns faster• We must be more efficient• .. or bad guys will find the vulns, not us
  7. 7. Can we learn from history? Has this Huge disadvantage problem been solved before?
  8. 8. Ancient “Top Attackers”Individually outstanding due to:• Artificial selection: Babies killed if “defective” (!)• Military training (“Agoge”): Ages 7-18• Final test: Survive in the countryside with only a knife• Spartan Law: No retreat, No surrender (i.e. victory or death)Globally outstanding due to solid tactic: “Hoplite phalanx”• Shield wall + Spear points• Frontally very strong + used successfully for centuries http://scottthong.wordpress.com / http://en.wikipedia.org/wiki/Sparta
  9. 9. How would you beat them? How could a room full of (sedentary? ☺) Geeks beat a room full of Spartans?Ok, more realistic scenario ☺:• Your troops must fight the Spartans• You have the same number of soldiers• Your soldiers are not that great• How can you WIN?
  10. 10. Ancient “Pentest Cheating”Battle of Lechaeum: Spartans defeated by “lamers”!Tactic “Cheating”:• Don’t fight, thow things!: Javelins + bows = Athenians WON• Phalanx weak against: “shooters”, cavalry, flank/back attacks http://www.ancientgreekbattles.net / http://en.wikipedia.org/wiki/Phalanx_formation / http://en.wikipedia.org/wiki/Battle_of_Lechaeum
  11. 11. Why not take this to the next level? Why not legitimately? • Shoot “before the battle” without permission • Shoot while we analyse information in parallel • Prepare more shootings without being noticed
  12. 12. OWTF Chess-like approach Kasparov against Deep Blue - http://www.robotikka.com
  13. 13. Demos
  14. 14. OWTF “Cheating”: Talk ScopeAt least 48.5% (32 out of 66) of the tests in the OWASP Testing guide can belegally* performed at least partially without permission* Except in Spain, where visiting a page can be illegal ☺* This is only my interpretation and not that of my employer + might not apply to your country!
  15. 15. Classic Pentest Stages1. Pre-engagement: No permission “OWTF Cheat tactics” = Start here2. Engagement: Permission Official test start = Active Testing here
  16. 16. Context consideration:Case 1 robots.txt Not Found …should Google index a site like this?Or should robots.txt exist and be like this?User-agent: *Disallow: /
  17. 17. Case 1 robots.txt Not Found - Semi passive• Direct request for robots.txt• Without visiting entries
  18. 18. Case 2 robots.txt Found – Passive• Indirect Stats, Downloaded txt file for review, “Open All in Tabs”
  19. 19. OWTF HTML Filter challenge: Embedding of untrusted third party HTMLDefence layers:1) HTML Filter: Open source challengeFilter 6 unchallenged since 04/02/2012, Can you hack it? ☺http://blog.7-a.org/2012/01/embedding-untrusted-html-xss-challenge.html2) HTML 5 sanboxed iframe3) Storage in another directory = cannot access OWTF Review in localStorage
  20. 20. Start reporting!: Take your notes with fancy formattingStep 1 – Click the “Edit” linkStep 2 – Start documenting findings + Ensure preview is ok
  21. 21. Start reporting!: Paste PoC screenshots
  22. 22. The magic bar ;) – Useful to generate the human report later
  23. 23. Passive PluginStep 1- Browse output files to review the full raw tool output:Step 2 – Review tools run by the passive Search engine discovery plugin:Was your favourite tool not run?Tell OWTF to run your tools on: owtf_dir/profiles/resources/default.cfg (backup first!)
  24. 24. Tool output can also be reviewed via clicking through the OWTF report directly:
  25. 25. The Harvester: •Emails •Employee Names •Subdomains •Hostnameshttp://www.edge-security.com/theHarvester.php
  26. 26. Metadata analysis:• TODO: Integration with FOCA when CLI callable via wine (/cc @chemaalonso ☺)• Implemented: Integration with Metagoofil http://www.edge-security.com/metagoofil.php
  27. 27. Inbound proxy not stable yet but all this happens automatically:• robots.txt entries added to “Potential URLs”• URLs found by tools are scraped + added to “Potential URLs”During Active testing (later):• “Potential URLs” visited + added to “Verified URLs” + Transaction log
  28. 28. All HTTP transactions logged by target in transaction logStep 1 – Click on “Transaction Log”Step 2 – Review transaction entries
  29. 29. Step 3 – Review raw transaction information (if desired)
  30. 30. Step 1 - Make all direct OWTF requests go through Outbound Proxy:Passes all entry points to the tactical fuzzer for analysis laterStep 2 - Entry points can then also be analysed via tactical fuzzer:
  31. 31. Goal: What is that server running?Manually verify request for fingerprint:
  32. 32. Whatweb integration with non-aggresive parameter (semi passive detection): https://github.com/urbanadventurer/WhatWeb
  33. 33. Fingerprint header analysis: Match stats
  34. 34. Convenient vulnerability search box (1 box per header found ☺):Search All Open all site searches in tabs
  35. 35. Exploit DB - http://www.exploit-db.com
  36. 36. NVD - http://web.nvd.nist.gov - CVSS Score = High
  37. 37. OSVDB - http://osvdb.org - CVSS Score = High
  38. 38. http://www.securityfocus.com - Better on Google
  39. 39. http://www.exploitsearch.net - All in one
  40. 40. Passive Fingerprint analysis
  41. 41. http://toolbar.netcraft.com - Passive banner grab,etc.
  42. 42. •CMS •Widgets •Libraries •etchttp://builtwith.com
  43. 43. Search in the headers without touching the site: http://www.shodanhq.com/
  44. 44. Passive suggestions- Prepare your test in a terminal window to hit “Enter” on “permission minute 1”
  45. 45. What else can be done with a fingerprint?
  46. 46. Environment replicationDownload it .. Sometimes from project page ☺Also check http://www.oldapps.com/, Google, etc.
  47. 47. Static Analyis, Fuzz, Try exploits, .. RIPS for PHP: http://rips-scanner.sourceforge.net/Yasca for most other (also PHP): http://www.scovetta.com/yasca.html
  48. 48. http://www.robtex.com - Passive DNS Discovery
  49. 49. http://whois.domaintools.com
  50. 50. http://centralops.net
  51. 51. http://centralops.net
  52. 52. Has Google found error messages for you?
  53. 53. Check errors via Google Cache
  54. 54. The link is generated with OWTF with that box ticked: Important! https://www.ssllabs.com/ssldb/analyze.html
  55. 55. Pretty graphs to copy-paste to your OWTF report ☺ https://www.ssllabs.com/ssldb/analyze.html
  56. 56. Do not forget about Strict-Transport-Security!sslstrip chances decrease dramatically:Only 1st time user visits the site!
  57. 57. Not found example:Found example:
  58. 58. HTML content analysis: HTML Comments
  59. 59. Efficient HTML content matches analysisStep 1 - ClickStep 2 – Human Review of Unique matches
  60. 60. Efficient HTML content matches analysisStep 1 - ClickStep 2 –Review Unique matches (click on links for sample match info) Want to see all? then click
  61. 61. HTML content analysis: CSS and JavaScript Comments (/* */)
  62. 62. HTML content analysis: Single line JavaScript Comments (//)
  63. 63. HTML content analysis: PHP source code
  64. 64. HTML content analysis: ASP source code
  65. 65. If you find an admin interface don’t forget to .. Google for default passwords:
  66. 66. Disclaimer: Permission is required for this
  67. 67. http://centralops.net
  68. 68. Is the login page on “http” instead of “https”?
  69. 69. Pro Tip: When browsing the site manually .. … look carefully at pop-ups like this: Consider (i.e. prep the attack):Firesheep: http://codebutler.github.com/firesheep/SSLStrip: https://github.com/moxie0/sslstrip
  70. 70. Mario was going to report a bug to Mozilla and found another!
  71. 71. Abuse user/member public search functions: • Search for “” (nothing) or “a”, then “b”, .. • Download all the data using 1) + pagination (if any) • Merge the results into a CSV-like format • Import + save as a spreadsheet • Show the spreadsheet to your customer
  72. 72. Analyse the username(s) they gave you to test:• Username based on numbers?USER12345• Username based on public info? (i.e. names, surnames, ..)name.surname• Default CMS user/pass?
  73. 73. Part 1 – Remember Password: Autocomplete Good BadVia 1) <form … autocomplete=“off”> <form action="/user/login"Or Via 2) <input … autocomplete=“off”> method="post"> <input type="password" name="pass" />
  74. 74. Manual verification for password autocomplete (i.e. for the customer)Easy “your grandma can do it” test:1. Login2. Logout3. Click the browser Back button twice*4. Can you login again –without typing the login or password- by re- sending the login form? Can the user re-submit the login form via the back button? * Until the login form submissionOther sensitive fields: Pentester manual verification• Credit card fields• Password hint fields• Other
  75. 75. Part 2 - Password Reset formsManually look at the questions / fields in the password reset form• Does it let you specify your email address?• Is it based on public info? (name, surname, etc)• Does it send an email to a potentially dead email address you can register? (i.e. hotmail.com)
  76. 76. Goal: Is Caching of sensitive info allowed?Manual verification steps: “your grandma can do it” ☺ (need login):1. Login2. Logout3. Click the browser Back button4. Do you see logged in content or a this page has expired error / the login page?Manual analysis tools:• Commands: curl –i http://target.com• Proxy: Burp, ZAP, WebScarab, etc• Browser Plugins: https://addons.mozilla.org/en-US/firefox/addon/live-http-headers/ https://addons.mozilla.org/en-US/firefox/addon/firebug/
  77. 77. HTTP/1.1 headers Good BadCache-Control: no-cache Cache-control: private HTTP/1.0 headers Good BadPragma: no-cache Pragma: privateExpires: <past date or illegal (e.g. 0)> Expires: <way too far in the future> The world Good Bad https://accounts.google.com No caching headers = caching allowedCache-control: no-cache, no-store HTTP/1.1 200 OKPragma: no-cache Date: Tue, 09 Aug 2011 13:38:43 GMTExpires: Mon, 01-Jan-1990 00:00:00 GMT Server: …. X-Powered-By: …. Connection: close Content-Type: text/html; charset=UTF-8
  78. 78. Repeat for Meta tags Good Bad<META HTTP-EQUIV="Cache-Control" <META HTTP-EQUIV="Cache-Control"CONTENT="no-cache"> CONTENT=“private">
  79. 79. Step 1 – Find CAPTCHAs: Passive search
  80. 80. Offline Manual analysis:• Download image and try to break it• Are CAPTCHAs reused?• Is a hash or token passed? (Good algorithm? Predictable?)• Look for vulns on CAPTCHA versionCAPTCHA breaking toolsPWNtcha - captcha decoder - http://caca.zoy.org/wiki/PWNtchaCaptcha Breaker - http://churchturing.org/captcha-dist/
  81. 81. Manually Examine cookies for weaknesses offline Base64 Encoding (!= Encryption ☺) Decoded valueMTkyLjE2OC4xMDAuMTpvd2FzcHVzZ owaspuser:192.168.100.1:XI6cGFzc3dvcmQ6MTU6NTg= a7656fafe94dae72b1e1487670148412
  82. 82. http://hackvertor.co.uk/public
  83. 83. Lots of decode options, including: • auto_decode • auto_decode_repeat • d_base64 • etc.http://hackvertor.co.uk/public
  84. 84. F5 BIG-IP Cookie decoder:http://blog.taddong.com/2011/12/cookie-decoder-f5-big-ip.html
  85. 85. • Secure: not set= session cookie leaked= pwned• HttpOnly: not set = cookies stealable via JS• Domain: set properly• Expires: set reasonably• Path: set to the right /sub-application• 1 session cookie that works is enough ..
  86. 86. Manually check when verifying credentials during pre-engagement: Login and analyse the Session ID cookie (i.e. PHPSESSID) Good Bad (normal + by default)Before: 10a966616e8ed63f7a9b741f80e65e3c Before: 10a966616e8ed63f7a9b741f80e65e3cAfter: Nao2mxgho6p9jisslen9v3t6o5f943h After: 10a966616e8ed63f7a9b741f80e65e3c IMPORTANT: You can also set the session ID via JavaScript (i.e. XSS)
  87. 87. Session ID:• In URL• In POST• In HTMLExample from the field:http://target.com/xxx/xyz.function?session_num=7785Look at unauthenticated cross-site requests:http://other-site.com/user=3&report=4Referer: site.comChange ids in application: (ids you have permission for!)http://site.com/view_doc=4
  88. 88. Headers Enabling/Disabling Client-Side XSS filters:• X-XSS-Protection (IE-Only)• X-Content-Security-Policy (FF >= 4.0 + Chrome >= 13)
  89. 89. Review JavaScript code on the page: <script> document.write("Site is at: " + document.location.href + "."); </script> Sometimes active testing possible in your browser (no trip to server = not an attack = not logged): http://target.com/...#vulnerable_param=xsshttp://blog.mindedsecurity.com/2010/09/twitter-domxss-wrong-fix-and-something.html
  90. 90. Did Google find SQLi for you?
  91. 91. <!--#exec cmd="/bin/ls /" --><!--#INCLUDE VIRTUAL="/web.config"-->
  92. 92. 1. Browse Site2. Time requests3. Get top X slowest requests4. Slowest = Best DoS target
  93. 93. Google searches: inurl:wsdl site:example.comPublic services search:http://seekda.com/http://www.wsindex.org/http://www.soapclient.com/
  94. 94. WSDL analysisSensitive methods in WSDL?i.e. Download DB, Test DB, Get CC, etc.http://www.example.com/ws/FindIP.asmx?WSDL<wsdl:operation name="getCreditCard" parameterOrder="id"> <wsdl:input message="impl:getCreditCardRequest" name="getCreditCardRequest"/> <wsdl:output message="impl:getCreditCardResponse" name="getCreditCardResponse"/></wsdl:operation>
  95. 95. Same Origin Policy (SOP) 1011. Domain A’s page can send a request to Domain B’s page from Browser2. BUT Domain A’s page cannot read Domain B’s page from Browser http://www.ibm.com/developerworks/rational/library/09/rationalapplicationdeveloperportaltoolkit3/
  96. 96. • Request == Predictable Pwned “..can send a request to Domain B” (SOP)CSRF Protection 101:•Require long random token (99% hidden anti-CSRF token) Not predictable•Attacker cannot read the token from Domain B (SOP) Domain B ignores request Potentially Good BadAnti-CSRF token present: Verify with permission No anti-CSRF token
  97. 97. Similar to CSRF: Is there an anti-replay token in the request? Potentially Good BadAnti-CSRF token present: Verify with permission No anti-CSRF token
  98. 98. 1) Passive search for Flash/Silverlight files + policies:Flash file search: Silverlight file search:
  99. 99. Static analysis: Download + decompile Flash files$ flare hello.swfFlare: http://www.nowrap.de/flare.htmlFlasm (timelines, etc): http://www.nowrap.de/flasm.html
  100. 100. Static analysis tools Adobe SWF Investigator http://labs.adobe.com/technologies/swfinvestigator/ SWFScanSWFScan: http://www.brothersoft.com/hp-swfscan-download-253747.html
  101. 101. Active testing ☺ 1) Trip to server = need permission http://target.com/test.swf?xss=foo&xss2=bar 2) But … your browser is yours: No trip to server = no permission needed # http://target.com/test.swf ?xss=foo&xss2=barGood news: Unlike DOM XSS, the # trick will always work for Flash Files
  102. 102. Some technologies allow settings that relax SOP:• Adobe Flash (via policy file)• Microsoft Silverlight (via policy file)• HTML 5 Cross Origin Resource Sharing (via HTTP headers)Cheating: Reading the policy file or HTTP headers != attack http://www.adobe.com/devnet/flashplayer/articles/fplayer9_security.html
  103. 103. Policy file retrieval for analysis
  104. 104. CSRF by design read tokens = attacker WIN Flash / Silverlight - crossdomain.xml<cross-domain-policy><allow-access-from domain="*"/></cross-domain-policy>Bad defence example: restrict pushing headers accepted by Flash:All headers from any domain accepted<allow-http-request-headers-from domain="*" headers="*" /> Flash: http://kb2.adobe.com/cps/403/kb403185.html
  105. 105. CSRF by design read tokens = attacker WIN Silverlight - clientaccesspolicy.xml<?xml version="1.0" encoding="utf-8"?><access-policy><cross-domain-access><policy> <allow-from http-request-headers="SOAPAction"> <domain uri="*"/> </allow-from> <grant-to><resource path="/" include-subpaths="true"/></grant-to> </policy></cross-domain-access></access-policy> Silverlight: http://msdn.microsoft.com/en-us/library/cc197955%28v=vs.95%29.aspx
  106. 106. Need help?
  107. 107. UI Redressing protections: • X-Frame-Options (best) • X-Content-Security-Policy (FF >= 4.0 + Chrome >= 13) • JavaScript Frame busting (bypassable sometimes) Good BadX-Frame-Options: Deny
  108. 108. Andrew Horton’s “Clickjacking for Shells”:http://www.morningstarsecurity.com/research/clickjacking-wordpressKrzysztof Kotowicz’s “Something Wicked this way comes”:http://www.slideshare.net/kkotowicz/html5-something-wicked-this-way-comes-hackprahttps://connect.ruhr-uni-bochum.de/p3g2butmrt4/Marcus Niemietz’s “UI Redressing and Clickjacking”:http://www.slideshare.net/DefconRussia/marcus-niemietz-ui-redressing-and-clickjacking-about-click-fraud-and-data-theft
  109. 109. Too much info?Use the filter to drill to what you care about:
  110. 110. Business Conclusion• Web app security > Input validation• We see no traffic != we are not targeted• No IDS alerts != we are safe• Your site can be tested without you noticing• Test your security before others do
  111. 111. Pen tester Conclusion• No permission != cannot start• A lot of work can be done in advanceThis work in advance helps with:• Increased efficiency• Deal better with tight deadlines• Better pre-engagement• Better test quality• Best chance to get in
  112. 112. Bottom lineDo not wait for “Tool X” or PermissionPhil Stevens - http://www.strengthguild.com/ http://www.ironradio.org/
  113. 113. Bottom line Try harder!Benedikt Magnusson - 1015lbs / 461kg World Record Deadlift 2nd April 2011
  114. 114. Special thanks to Adi Mutu (@am06), Krzysztof Kotowicz (@kkotowicz),Marc Wickenden (@marcwickenden), Marcus Niemietz (@mniemietz),Mario Heiderich (@0x6D6172696F), Michael Kohl (@citizen428), Nicolas Grégoire (@Agarri_FR), Sandro Gauci (@sandrogauci) OWASP Testing Guide contributors Finux Tech Weekly – Episode 17 – mins 31-49 http://www.finux.co.uk/episodes/mp3/FTW-EP17.mp3 Finux Tech Weekly – Episode 12 – mins 33-38 http://www.finux.co.uk/episodes/mp3/FTW-EP12.mp3 http://www.finux.co.uk/episodes/ogg/FTW-EP12.ogg Exotic Liability – Episode 83 – mins 49-53 http://exoticliability.libsyn.com/exotic-liability-83-oh-yeah
  115. 115. Q&A Abraham Aranguren @7a_ @owtfp abraham.aranguren@gmail.com http://7-a.org http://owtf.orgProject Site (links to everything): http://owtf.org• Try OWTF: https://github.com/7a/owtf/tree/master/releases• Try a demo report: https://github.com/7a/owtf/tree/master/demos• Documentation: https://github.com/7a/owtf/tree/master/readme• Contribute: https://github.com/7a/owtf

×