cross context scripting attacks & exploitation

69
CROSS CONTEXT SCRIPTING (XCS) ATTACKS & EXPLOITATION From alert(‘xss’) to Meterpreter with a single click Roberto Suggi Liverani Ruhr-Universität Bochum HackPra 2012/2013 1

Upload: roberto-suggi-liverani

Post on 24-Jan-2015

1.923 views

Category:

Technology


5 download

DESCRIPTION

Cross Context Scripting (XCS) is a type of XSS (Cross Site Scripting) injection which occurs from an untrusted zone, typically a web page on the Internet into the context of a trusted browser zone. XSS injection in a trusted browser zone can be 'lethal', as injected payload runs as privileged code. No SOP (Same-Origin Policy) restrictions are enforced and direct interfacing with the underlying OS is possible. To exploit such bugs, there is no need to use ROP gadgets, spray the heap or attempt other complex techniques. At the opposite, only few elements are required for a successful exploit, such as the right injection point and a tailored exploit payload. This presentation will examine XCS in details and will provide a demonstration of XCS exploits of both unpatched and patched vulnerabilities in Firefox, Opera, Maxthon and Avant browsers.

TRANSCRIPT

Page 1: Cross Context Scripting attacks & exploitation

1

CROSS CONTEXT SCRIPTING (XCS)ATTACKS & EXPLOITATION

From alert(‘xss’) to Meterpreter with a single click

Roberto Suggi LiveraniRuhr-Universität Bochum

HackPra 2012/2013

Page 2: Cross Context Scripting attacks & exploitation

2

Who am I?

A guy who likes to find bugs

Speaker at various cons:DefCON, EUSecWest, HITB, OWASP

Twitter: @malerisch Research blog: blog.malerisch.net

Page 3: Cross Context Scripting attacks & exploitation

3

Outline

Cross Context Scripting (XCS)

Past research

Recent discoveries

Further attack surface

Page 4: Cross Context Scripting attacks & exploitation

4

Cross Context Scripting (XCS)

Page 5: Cross Context Scripting attacks & exploitation

5

Some concepts Same origin policy (SOP)

Policy designed to govern interaction between different web sites○ Domain name○ Application protocol○ Port

W3C definitionAlthough the same-origin policy differs between

APIs, the overarching intent is to let users visit untrusted web sites without those web sites interfering with the user's session with honest web sites

Page 6: Cross Context Scripting attacks & exploitation

6

Cross Context Scripting (XCS)

XCS or Cross-zone scriptingCross Zone Scripting coined for IE

http://en.wikipedia.org/wiki/Cross-zone_scriptingXCS coined for Firefox and injection in chrome://

What is XCS?An XSS in a privileged browser zone An indirect Same-Origin Policy (SOP) bypass ?

Each browser has a trusted/privileged zone:FF - chrome://Chrome - chrome://Opera - opera://Maxthon - mx://Avant - browser://

Page 7: Cross Context Scripting attacks & exploitation

7

Page 8: Cross Context Scripting attacks & exploitation

8

XCS

Browser privileged/trusted zoneAccess to internal API interfaces:

○ BrowserBrowser settingsBookmarks, storage, etc.

○ OSFile system – I/O

Example○ Firefox model

Firefox addons can run privileged code

Page 9: Cross Context Scripting attacks & exploitation

9

FF Addon Example - FireFTP

Page 10: Cross Context Scripting attacks & exploitation

10

Google Chrome – Settings Page

Page 11: Cross Context Scripting attacks & exploitation

11

Opera History

Page 12: Cross Context Scripting attacks & exploitation

12

XCS exploitation XCS exploits are 100% reliable

No memory corruption

Trusted zoneAllows possible direct or indirect invokation of

special functions/objects

Challenge1st - find injection point in trusted zone2nd - make use of privileged functions/object to

achieve code execution

Page 13: Cross Context Scripting attacks & exploitation

13

Past Research

Page 14: Cross Context Scripting attacks & exploitation

14

Past research Pioneers

2005 - Mark Pilgrim - Greasemonkey bug2006 - Pdp & Michael Daw – publishing Sage xss2008 - Kuza55 & Stefano Di Paola – Attacking rich

internet applications – Tamper Data XSS demo My research

Opera XSS found in opera:history○ RCE exploit in opera:config (Kuza55 / Stefano Di

Paola / Aviv Raff)Firefox extensions research with Nick Freeman

○ Multiple RCE exploits released in FF extensions

Page 15: Cross Context Scripting attacks & exploitation

15

Opera XSS history (1/3)

Opera XSS history – CVE 2008-4696 Metasploit - 'egypt', # msf module Step 1 - Injection in opera:history via the

fragment part

Page 16: Cross Context Scripting attacks & exploitation

16

Opera XSS Exploit (2/3)

Step 2 - Force redirection to opera:history to trigger executionNote : SOP bypass

Page 17: Cross Context Scripting attacks & exploitation

17

Opera XSS Exploit (3/3)

Step 3 – Execute exploit payload

Page 18: Cross Context Scripting attacks & exploitation

18

DEMO http://www.youtube.com/watch?v=IFejbd03jls

Page 19: Cross Context Scripting attacks & exploitation

19

Firefox extensions Firefox and extensions security model

Extension code is fully trusted by FirefoxNo security boundaries between extensionsExtensions vulnerabilities are platform

independentLack of security policies to allow/deny Firefox

access to internal API, XPCOM components, etc. After 3 years…

No much changeA vulnerable extension can still be used to

compromise a system

Page 20: Cross Context Scripting attacks & exploitation

20

Cool Previews

Vulnerable version: 2.7.2 Injection point:

○ Add to stack function (right-click)

Exploit:Link with a data: uri + base64 encoded

payload○ <a

href=‘data:text/html,base64;payload’>A</a>

Page 21: Cross Context Scripting attacks & exploitation

21

Remote Code Execution

Invoking cmd.exe

Page 23: Cross Context Scripting attacks & exploitation

23

FireFTP

Vulnerable version: <1.1.4 Injection point:

Server’s welcome message

Exploit:Simple HTML and JavaScript payload

directly evaluated in chrome://

Page 24: Cross Context Scripting attacks & exploitation

24

Feed Sidebar

Vulnerable version: 3.2 Injection point:

RSS feed

Exploit:Use of data: uri + base64 encoded payload

○ &lt;iframe src=&quot;data:text/html;base64,base64encodedjavascript&quot;&gt;&lt;/iframe&gt;

Page 25: Cross Context Scripting attacks & exploitation

25

Sage Vulnerable Version: <=1.4.3

Injection point:RSS feed <description> and <link> tags

Exploit:Use of HTML encoded JavaScript payload

○ <description>&lt;script&gt;dosomethingbad();&lt;script&gt;</description>

Use of data: uri + base64 encoded payload○ <link>data:text/html;base64,payload</link>

Page 26: Cross Context Scripting attacks & exploitation

26

InfoRSS

Vulnerable version: <= 1.1.4.2

Injection point:RSS feed <description> tag

Exploit:Use of data: uri + base64 encoded payload

○ &lt;iframe src=&quot;data:text/html;base64,base64encodedjavascript&quot;&gt;&lt;/iframe&gt

Page 27: Cross Context Scripting attacks & exploitation

27

Yonoo Vulnerable Version: 6.1.1

Injection point:Drag & dropping a malicious image into the

preview window

Exploit:Use event handler e.g. onload

○ <img src=‘http://somewebsite.tld/lolcatpicture.jpg’ onLoad=‘evilJavaScript’>

Page 28: Cross Context Scripting attacks & exploitation

28

Password stealing

Page 29: Cross Context Scripting attacks & exploitation

29

Local File Disclosure

Page 30: Cross Context Scripting attacks & exploitation

30

Compromising NoScript

Whitelisting malicious site

Page 31: Cross Context Scripting attacks & exploitation

31

Reverse VNC using XHR

Page 32: Cross Context Scripting attacks & exploitation

32

Recent Discoveries

Page 33: Cross Context Scripting attacks & exploitation

33

Maxthon – case study Developed by: Maxthon International (China)

Architecture○ Supports Trident and Webkit layout engines○ Focus on performance and extra features

Some stats - according to Maxthon130 million usersUsers spread over 120 countries500,000,000 downloads in 2k10

Page 34: Cross Context Scripting attacks & exploitation

34

Maxthon: XCS via location.hash

Status: UNPATCHED!

Maliciouspage.html – performs redirection

Injected payload executes in about:history

Page 35: Cross Context Scripting attacks & exploitation

35

Maxthon: XCS via RSS

Status: UNPATCHED! Injection via <title>, <link>,

<description> tags

Page 36: Cross Context Scripting attacks & exploitation

36

Exploitation issues

Maxthon major changesDOM Program object removed in latest

versions○ Cannot invoke exe directly anymore○ Can only read/write files via maxthon.io

Personal exploit challengeNo user interactionTargets: Windows XP and Windows 7

Page 37: Cross Context Scripting attacks & exploitation

37

XCS Exploit – Windows XP Windows XP

Overwrite any exe which can be directly invoked via HTML/Javascript○ e.g. Outlook express (wab.exe)

Then use window.location=“ldap://blabla” Works perfectly!

Page 38: Cross Context Scripting attacks & exploitation

38

XCS Exploit – Windows 7

In Windows 7 (universal approach)User is prompted using WinXP approachOverwrite registry hives?Touch registry?Dirty approach but effective:

○ Overwrite one of the exe when Java applet is rendered

○ jp2launcher.exe is a good candidateThen point to an iframe with a java applet =

WIN!

Page 40: Cross Context Scripting attacks & exploitation

40

DEMO

Maxthon – about:history

http://www.youtube.com/watch?v=N-5BkgJX8sI

Page 41: Cross Context Scripting attacks & exploitation

41

Demo

Maxthon XCS – RSS

http://www.youtube.com/watch?v=d-55asVLqNI

Page 42: Cross Context Scripting attacks & exploitation

42

Maxthon: Trusted site over HTTP

Status: PATCHED i.maxthon.com

sets privileged DOM objects○ runtime○ maxthon

Page 43: Cross Context Scripting attacks & exploitation

43

Exploit Leveraging XSS in a trusted “internet” page Design Issues

i.maxthon.com = trusted domain i.maxthon.com allows direct access to privileged APIs No control on resolution of IP address No use of SSL

MiTM Bug DNS poisoning

○ Force resolution of i.maxthon.com to a controlled IP address HTTP MiTM

○ i.maxthon.com served over HTTP – malicious proxy which alters page content

Other implications XSS in real i.maxthon.com site

Page 44: Cross Context Scripting attacks & exploitation

44

DEMO – i.maxthon.com (DNS compromised)

http://www.youtube.com/watch?v=1IqZBS0O2Hs

Page 45: Cross Context Scripting attacks & exploitation

45

Avant Browser

Avant Browser - Avant Force (China)Custom web browser application Designed to expand services provided by IE

Two versions: lite (only IE) & ultimate (IE, FF, Chrome)

More downloads than Chrome, IE and Opera in CNET

Page 46: Cross Context Scripting attacks & exploitation

46

A bit about Avant (1/3)

Firefox wrapped version Arguments

passed to firefox.exe

Avant.exe - parent of firefox.exe

Page 47: Cross Context Scripting attacks & exploitation

47

A bit about Avant (2/3) Interesting files

"C:\Program Files\Avant Browser\res" folder:

Observations home.tpl is rendered at browser:home rss.tpl is rendered at browser://localhost/lst?url/path/to/rss/feed Such pages use privileged JavaScript function

window.AFRunCommand() Pages provided examples on how to call privileged functions and aided

exploitation

Page 48: Cross Context Scripting attacks & exploitation

48

A bit about Avant (3/3) Testing AFRunCommand()

Undocumented Avant browser functionTry{}/Catch{} no outputBruteforce only option – passing a single parameter:

○ 60003 - window.external.HistoryUrls() - [used in exploit]○ 60011 - prompt for download○ 10021 - add to ad block specified site○ 3 - spawns an empty tab○ 10010 - reloads the page○ 10013 - search for keywords○ 10014 - pop up blocker○ 10016 - download a video (argument passed as URL)○ 10017 - add task for download scheduler○ 10025 - search keywords

Page 49: Cross Context Scripting attacks & exploitation

49

Avant Browser – SOP Bypass

Status: UNPATCHED! Works if Firefox is set as the rendering

engine

Page 51: Cross Context Scripting attacks & exploitation

51

DEMO – BeEF Module In Action

http://www.youtube.com/watch?v=I4LiSfTmuM0

Page 52: Cross Context Scripting attacks & exploitation

52

Avant Browser – XCS in browser:home Status: UNPATCHED Injection via <title> HTML element

Cross Site Scripting Payload Rendered In browser:home Privileged Zone

Page 53: Cross Context Scripting attacks & exploitation

53

DEMO – Avant Browser – XCS in browser:home via <title>

http://www.youtube.com/watch?v=cHHtsOpYGH4

Page 54: Cross Context Scripting attacks & exploitation

54

Avant Browser – Stored XSS via RSS Injection via <title>, <link> and

<description> tags

Page 55: Cross Context Scripting attacks & exploitation

55

DEMO – Avant Browser – RSS Stored XSS

http://www.youtube.com/watch?v=-mShxsspxy8

Page 56: Cross Context Scripting attacks & exploitation

56

Further attack surface

Page 57: Cross Context Scripting attacks & exploitation

57

Injection in bookmarks Attack based on:

Origin inheritance – injection using javascript: uri Input validation – injecting into bookmark trusted zone

Injection via bookmarks using javascript: Ancient bug reported in 2k5 by M. Krax User is lured into bookmarking a malicious javascript: URI + payload

User clicks on malicious bookmark Focus on standard web page – Impact: XSS Focus on privileged browser zone – Impact: XCS

Many ways to fool users: Security controls on status bar can be partially fooled JavaScript can be compressed and obfuscated

Page 58: Cross Context Scripting attacks & exploitation

58

javascript: I invented the javascript: URL along with JavaScript in

1995, and intended that javascript: URLs could be used as any other kind of URL, including being bookmark-able. In particular, I made it possible to generate a new document by loading, e.g. javascript:'hello, world', but also (key for bookmarklets) to run arbitrary script against the DOM of the current document, e.g.javascript:alert(document.links[0].href). The difference is that the latter kind of URL uses an expression that evaluates to the undefined type in JS. I added the void operator to JS before Netscape 2 shipped to make it easy to discard any non-undefined value in a javascript: URL.

—Brendan Eich

Page 59: Cross Context Scripting attacks & exploitation

59

Firefox Case

Firefox 10.0.2 vulnerableMalicious bookmark clicked while using an

extension (from chrome://)Payload will execute in chrome://

Issue fixed in FF >11

Page 60: Cross Context Scripting attacks & exploitation

60

Demo – Firefox XCS via bookmark

http://www.youtube.com/watch?v=gSuLV9RjhGQ

Page 61: Cross Context Scripting attacks & exploitation

61

Opera

Opera 12.10javascript: can be bookmarkedOrigin inheritance - opera:config vulnerable

to XCS if javascript:// bookmarklet is triggered

Mail app handler can be set with a UNC path e.g. \\myremote\meterpreter.exe

Page 62: Cross Context Scripting attacks & exploitation

62

Demo – Opera XCS via Bookmarks

http://www.youtube.com/watch?v=wWtLHi4Imr4

Page 63: Cross Context Scripting attacks & exploitation

63

Maxthon - XCS in bookmarks

Page 64: Cross Context Scripting attacks & exploitation

64

Demo – Maxthon XCS in bookmarks

http://www.youtube.com/watch?v=YR0RQz45t3M

Page 65: Cross Context Scripting attacks & exploitation

65

Conclusions

More browser capability/functionalityincreased attack surface for XCS

Untrusted content - rendering optionsabout:blank

Security model for extensions/addonsSandbox

Page 66: Cross Context Scripting attacks & exploitation

66

Questions?

Roberto Suggi Liverani - @malerisch

blog.malerisch.net

Page 67: Cross Context Scripting attacks & exploitation

67

References

Blog – Roberto Suggi Liveranihttp://blog.malerisch.net/

Twitter account - @malerischhttps://twitter.com/malerisch

Security-Assessment.com Researchhttp://www.security-assessment.com/page/a

rchive.htm Nick Freeman – Publications

http://atta.cked.me/publications

Page 69: Cross Context Scripting attacks & exploitation

69

References

Firefox addon Update Scanner - XCS - http://malerisch.net/docs/advisories/updatescanner_chrome_privileged_code_injection.html

Exploiting XCS in Firefox - http://www.security-assessment.com/files/whitepapers/Exploiting_Cross_Context_Scripting_vulnerabilities_in_Firefox.pdf

HITB2012AMS - Browser Bug Hunting in 2012 - http://www.security-assessment.com/files/documents/presentations/window_shopping_browser_bug_hunting_in_2012_roberto_suggi_liverani_scott_bell.pdf