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


Top Related