potentially dangerous Request.QueryString value

Alles over programmeren en development binnen de IT-wereld
Plaats reactie
BMaster
Elite Poster
Elite Poster
Berichten: 951
Lid geworden op: 01 apr 2005, 16:46
Uitgedeelde bedankjes: 42 keer
Bedankt: 45 keer

Wij hebben een asp.net website (afgeschermd met paswoord) voor onze klanten. Bij enkele van deze klanten krijgen we bij sommige requests (dus niet altijd) een foutmelding. In de eventviewer zien we het volgende:

Code: Selecteer alles

Message
A potentially dangerous Request.QueryString value was detected from the client ((b="...bs(b),0);b<c;b++)if(b in d").

Source
System.Web

Target site
Void ValidateString(System.String, System.String, System.String)

Stack trace
   at System.Web.HttpRequest.ValidateString(String s, String valueName, String collectionName)
   at System.Web.HttpRequest.ValidateNameValueCollection(NameValueCollection nvc, String collectionName)
   at System.Web.HttpRequest.get_QueryString()
   at System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull)
   at System.Web.UI.Page.DeterminePostBackMode()
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   at System.Web.UI.Page.ProcessRequest()
   at System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context)
   at System.Web.UI.Page.ProcessRequest(HttpContext context)
   at ASP.index_aspx.ProcessRequest(HttpContext context)
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
In de IIS logfile zien we de volgende request:

Code: Selecteer alles

GET /index.aspx app=MPSS&indexof=function(a){if(this===void%200||this===null)throw%20new%20TypeError;var%20d=Object(this),c=d.length>>>0;if(c===0)return-1;var%20b=0;arguments.length>0&&(b=Number(arguments[1]),b!==b?b=0:b!==0&&b!==1/0&&b!==-(1/0)&&(b=(b>0||-1)*Math.floor(Math.abs(b))));if(b>=c)return-1;for(b=b>=0?b:Math.max(c-Math.abs(b),0);b<c;b%2B%2B)if(b%20in%20d&&d[b]===a)return%20b;return-1}&dat=09/06/2011 80 - 84.193.37.101 HTTP/1.1 Mozilla/4.0+(compatible;+MSIE+8.0;+Windows+NT+5.1;+Trident/4.0;+GTB6.6;+Mozilla/4.0+(compatible;+MSIE+7.0;+MyBee+Browser);+.NET+CLR+2.0.50727;+OfficeLiveConnector.1.3;+OfficeLivePatch.0.0;+InfoPath.1;+.NET+CLR+3.0.4506.2152;+.NET+CLR+3.5.30729) 
Het bizarre is dat de javascript code tussen onze eigen parameters staat. Normaal zou bovenstaande request eruit zien als "index.aspx?app=MPSS&dat=09/06/2011"...

Iemand enig idee wat dit zou kunnen zijn? In onze source code komt in elk geval niets van deze javascript code voor....
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16757
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 582 keer
Bedankt: 780 keer
Provider

XSS (Cross Site scripting): http://nl.wikipedia.org/wiki/Cross-site_scripting
Dat uw .net dat dus zelf afblokt is al goed. Vaak heb je voor dit soort security issues een application firewall nodig.
BMaster
Elite Poster
Elite Poster
Berichten: 951
Lid geworden op: 01 apr 2005, 16:46
Uitgedeelde bedankjes: 42 keer
Bedankt: 45 keer

Zoiets dacht ik al, maar ik vind het zo vreemd dat het op dezelfde dag begonnen is bij enkele totaal verschillende klanten...
Astralon
Elite Poster
Elite Poster
Berichten: 3310
Lid geworden op: 26 jul 2005, 12:17
Locatie: Lochristi
Uitgedeelde bedankjes: 196 keer
Bedankt: 125 keer

Je kan request validation altijd uitschakelen door je web.config aan te passen.

Code: Selecteer alles

<system.web> 
   <pages validateRequest="false" /> 
</system.web>
BMaster
Elite Poster
Elite Poster
Berichten: 951
Lid geworden op: 01 apr 2005, 16:46
Uitgedeelde bedankjes: 42 keer
Bedankt: 45 keer

Ja, maar dan is de beveiliging natuurlijk ook weg hé. Ik ben blij dat die controles ingebakken zitten in het systeem, maar zou wel graag weten wat de oorzaak is. Ik kan niet geloven dat die 10 klanten los van mekaar op hetzelfde moment met opzet beginnen "in te breken" in ons systeem. Zeker als je weet dat sommigen onder hen met moeite hun pc kunnen aan en uit zetten. Ik was eerder aan het denken aan een soort malware/spyware-achtig iets, maar via google vind ik zo direct niets als ik zoek naar een stuk van die javascript in combinatie met de foutmelding die we krijgen...
Astralon
Elite Poster
Elite Poster
Berichten: 3310
Lid geworden op: 26 jul 2005, 12:17
Locatie: Lochristi
Uitgedeelde bedankjes: 196 keer
Bedankt: 125 keer

OK, zeg eens wat voor informatie klanten normaal ingeven, want nu ie er iemand die
((b="...bs(b),0);b<c;b++)if(b in d").
ingeeft en daar zit een assignment (b=) in en dat heeft de validator niet graag.
BMaster
Elite Poster
Elite Poster
Berichten: 951
Lid geworden op: 01 apr 2005, 16:46
Uitgedeelde bedankjes: 42 keer
Bedankt: 45 keer

Normaal kan in de url bijvoorbeeld een artikelnummer of een datum staan. Niet door die zelf in te typen, maar door links te volgen op onze site. Dat er nu hele stukken javascript in die url verschijnen maakt het net zo bizar. Ljikt mij niet dat iemand dat manueel gaat liggen intikken tenzij hij exact weet waar hij mee bezig is. En zoals ik zei, de meeste van onze klanten weten amper hoe ze een pc moeten aan zetten, laat staan dat ze javascript in de url gaan ingeven :)
Astralon
Elite Poster
Elite Poster
Berichten: 3310
Lid geworden op: 26 jul 2005, 12:17
Locatie: Lochristi
Uitgedeelde bedankjes: 196 keer
Bedankt: 125 keer

BMaster
Elite Poster
Elite Poster
Berichten: 951
Lid geworden op: 01 apr 2005, 16:46
Uitgedeelde bedankjes: 42 keer
Bedankt: 45 keer

Dat had ik ook al gevonden, maar ik zie het verband niet. VOSAO is blijkbaar een CMS... Zit daar misschien iets ingebouwd om stukken van andere websites te stelen? Dat zou dan wel kunnen verklaren hoe een stuk code in een url van ons terecht komt...

EDIT: nu merk ik dat de javascript code sinds vandaag ietsje anders geworden is. Tot en met gisteren zag het er zo uit:

Code: Selecteer alles

/index.aspx app=AVK&indexof=function(searchElement){"use%20strict";if(this===void%200||this===null)throw%20new%20TypeError();var%20t=Object(this);var%20len=t.length>>>0;if(len===0)return-1;var%20n=0;if(arguments.length>0){n=Number(arguments[1]);if(n!==n)n=0;else%20if(n!==0&&n!==(1/0)&&n!==-(1/0))n=(n>0||-1)*Math.floor(Math.abs(n))}if(n>=len)return-1;var%20k=n>=0?n:Math.max(len-Math.abs(n),0);for(;k<len;k%2B%2B){if(k%20in%20t&&t[k]===searchElement)return%20k}return-1}&grpper=28%20%200
(de parameters van ons zijn app=AVK en GRPPER=28%20%200).

Deze javascript lijkt mij exact hetzelfde als op bijvoorbeeld https://developer.mozilla.org/en/JavaSc ... ay/indexOf ....
Plaats reactie

Terug naar “Development”