20061017

SPICON: Advanced Web Hacking (part 1)

Most of this is going to be old information, so I'll mostly go over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 highlights. I'll fill in gaps in later posts.

Matt Fisher SPI Dynamics

Matt is going to start off with demonstrating for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 security folks how cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code looks. It's easy to teach security to a coder, but it's more difficult to teach cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 security folks cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code, but that's cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 differentiator.

He's going over

tags and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 elements that can go in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re. He asked if anybody was aware that "hidden" tags are not so hidden, and that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 values in checkboxes, radios, and selects could be manipulated - to gauge experience level - not news to anybody. Unfortunately, he just asked if he was going too slow, only one thought he was going too slow.

He keeps referring to messages as "packets" - so cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 HTTP Request "packet" and HTTP Response "packet". That's going to annoy me.

He doesn't know much about .NET, and nothing about Java on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 web side. All of his examples will be old-school ASP. I'll forgive him cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re, as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 concepts still work precisely cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same.

Difference between GET and POST.

Plain-text application protocols (like HTTP, SMTP, NNTP, blah, blah, blah)

Script files and how cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y're included. (Interesting side note - at one point he said "script is dangerous" and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n moved on. Kinda' like "malicous characters, I guess".

Side story of using WI to break into a site by finding a backup file, which happened to be cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ntication script, which had db connection strings, etc., etc.

Discusses, in particular, DSN information kept in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 script code. If you're able to get cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code, you've got cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 credentials to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 db (which 99% of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 time are too privileged for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 needs of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 app).

Morals of tha story
  • Configure safeguards so that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 web server processes cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 files (.bak, .inc, .old, etc.)
  • Don't store those types of files in web-accessible folders (.htaccess)
  • Actually use a proper development lifecycle where those things are properly culled out prior to a push to production
Browsers deal with a lot of stuff on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir own.

HTTP overview. Methods. WebDAV methods == BAD.

Directory browsing and how to turn it off (at least in IIS).

Fingerprinting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 webserver:
  • Header
  • Footers (!)
  • Extensions
Cookies and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir attributes. HttpOnly is skipped (no surprise because only IE supports it, and a lot of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 HTTP Request poop has been fixed.)

Matt spent a few minutes looking at HTTP Request/Response pairs to see what kind of interesting information can be gleaned from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m.

Aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ntication
Client-side password hashing - easily improperly implemented - just hash cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password vulnerable to replay attacks (proper hashing later).
HTTP aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365nticaiton v. Form-based aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ntication.
Discussed salting vs. nonce, and how salting is used to avoid rainbow attacks, but didn't really mention that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 salt is kept in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 db.
Matt did a good job of explaining a nonce-hashed password. Didn't mention that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 web server already has to have session state, though.

Session ID Security
Session to be used to save state, for authorization, for form auth, and for providing short-term memory.

Matt presented an interesting analogy of using your ID to get into a building, 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 give you a guest badge - you're not showing your ID anymore, just cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 guest badge, which is a representation of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ID. (Not new information, but a good analogy for beginners.)

Defending against Session-ID analysis - he kept mentioning using GUID's - just use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system one! Didn't mention .NET's hard timeout on sessions (not cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 click delay, but a hard duration).

Encryption Boundaries:
http://www.webappsec.org/rss/websecurity.rss


Unaucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365nticated/Non-SSL
Anonymous pages
Go-to Login Page

Aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365nticated/SSL
Submit Credentials
App sets new session ID
Sensitive information exchange
Logoff

Audit Points
Make sure new session ID once user logs in.
Properly abandond session when cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user logs off.

State
Keep track of who is who
Required for form-based aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ntication
Access Control
Required for providing server-side memory

Stateful not necessarily == sensitive
Not only do you need to protect access to anything sensitive, but also to anything that gives access to that sensitive info (i.e., CC# on server side - you must protect cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 session ID as well).

Next talked about sensitive information in GET vs. POST. GET, shows up in history, logs, logs, logs, logs.

Then lunch. Yum - AND I sat next to Jason Schmitt who does cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Developer Security blog on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SPI site. He didn't have any good excuses for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 lack of new content in his blog.

0 comments: