Andres, what is status of new XSS.py? Where can we get it to test?:)
> your scenario looks good! But don't forget to notify user that xss.py > have found potential XSS flaw (as info) if on the second stage we will > not get good result from second response. > >> While trying to code the new xss.py I've found myself in a >> situation where I see that it's difficult to cover all cases. Just to >> make sure we're talking about the same thing, what we're trying to do >> is to detect reflected XSS vulnerabilities with the lowest amount of >> HTTP requests, lowest false positive and false negative rate. >> This is the algorithm that I'm implementing and I would like to get your >> feedback on: >> >> * Send hN<97>97"97'97(97)hN or a similar payload [0] >> * Analyze the HTML response and identify WHERE in the HTML >> structure the payload is echoed back and WHICH special characters were >> allowed in each context. > We can determine it by searching backwards for HTML special chars from > echoed point. > >> The context is one or more of the following >> places (taking into account that the input might be echoed more than >> once): >> TAG >> ATTR_NAME >> ATTR_DOUBLE_QUOTE >> ATTR_SINGLE_QUOTE > + simple ATTR without quotes? >> TEXT >> COMMENT >> SCRIPT >> CDATA >> * This should give us a result similar to this: >> [ (ATTR_NAME, ['<','>', '"' ...]) , (TEXT, ['"', '\'', '(', ')']) ] >> * Then we could analyze that result and say: "For an XSS >> vulnerability to appear in an ATTR_NAME I have to be able to send a >> double quote". If it is possible in this case then the plugin should >> send a specific payload for that case, something similar to --" >> onload="foo()"-- >> * Finally, analyze the second response body and if there is an >> attribute in one of the DOM objects that's called "onload" and it's >> text is "foo()" then we have a XSS. >> >> Ideas? Does this cover all major cases? Should we have two or more >> XSS detection algorithms and run them all (configurable by the user)? > old one and new smart? I think we can regard new one as evolution > version and save only it:) > >> [0] The problem with this are filters that say: "If special char X in >> input then don't echo anything", where "X" might be "<" and that >> affects our possibility to detect if any of the rest of the chars are >> allowed >> >> Regards, >> >> On Thu, Feb 16, 2012 at 4:13 PM, Martin Holst Swende<mar...@swende.se> >> wrote: >>> On 02/16/2012 07:54 PM, Andres Riancho wrote: >>>> <RANDOM><>"'(); and find the same string in the response, that doesn't >>>> confirm a XSS (there might be a filter that removes the inputs with >>>> "script" in it) >>> That may be true, but if input can break HTML context - it's a >>> vulnerability. Actually finding >>> an XSS is the next step - exploitation of said vulnerability. I think a >>> better scheme would be to >>> first discover the vulnerability with a minimum of probes then go to >>> the second stage where >>> a lot of requests can be staged (better to massively bombard 1% of all >>> functions than to medium >>> assault 95% :)). >>> >>> >>>>> Another suggestion is to try determine context of echoed back string: >>>>> html (including attributes), js, css and so on [1]. Good illustration >>>>> of such behavior is RatProxy [2] >>> The stuff I was working on earlier is better described here : >>> http://sourceforge.net/mailarchive/message.php?msg_id=24638992 >>> Looking at the ratproxy code, I see that it does a somewhat similar >>> thing (but probably with more cleverness). It tries to determine the >>> html context of the injection. I think the XSS plugin should do those >>> steps as a preliminary, then move on to exploitaition (which I never >>> implemented in my final version : >>> http://sourceforge.net/mailarchive/message.php?msg_id=24682898 ) . >>> >>> Cheers, >>> Martin >>> >>> >>>> RatProxy's code is crazy, reading through it give me nightmares ;) >>>> Just read through the XSS context detection [0] and I have some >>>> concerns about how well that would work in real scenarios. What I was >>>> trying to do in my code is: >>>> >>>> * Send the payload >>>> * Get the HTML response DOM >>>> * Iterate through the DOM items and verify (based on the DOM >>>> objects) where I get the string echoed back >>>> >>>> I was just working on that last week, there are some issues with >>>> the code I was working on so I simply left it in my local box. I'll >>>> work some more today and send it in this email thread. >>>> >>>> [0] http://code.google.com/p/ratproxy/source/browse/trunk/ratproxy.c#428 >>>> >>>>> [0] >>>>> http://w3af.svn.sourceforge.net/viewvc/w3af/trunk/plugins/audit/xss.py?view=markup >>>>> [1] >>>>> https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet >>>>> [2] http://code.google.com/p/ratproxy/source/browse/trunk/ratproxy.c >>>>> >>>>> -- >>>>> Taras >>>>> http://oxdef.info >>>>> >>>>> ------------------------------------------------------------------------------ >>>>> Virtualization& Cloud Management Using Capacity Planning >>>>> Cloud computing makes use of virtualization - but cloud computing >>>>> also focuses on allowing computing to be delivered as a service. >>>>> http://www.accelacomm.com/jaw/sfnl/114/51521223/ >>>>> _______________________________________________ >>>>> W3af-develop mailing list >>>>> W3af-develop@lists.sourceforge.net >>>>> https://lists.sourceforge.net/lists/listinfo/w3af-develop >>>> >>>> >>> >>> >>> ------------------------------------------------------------------------------ >>> Virtualization& Cloud Management Using Capacity Planning >>> Cloud computing makes use of virtualization - but cloud computing >>> also focuses on allowing computing to be delivered as a service. >>> http://www.accelacomm.com/jaw/sfnl/114/51521223/ >>> _______________________________________________ >>> W3af-develop mailing list >>> W3af-develop@lists.sourceforge.net >>> https://lists.sourceforge.net/lists/listinfo/w3af-develop >> >> >> > > -- Taras http://oxdef.info ------------------------------------------------------------------------------ This SF email is sponsosred by: Try Windows Azure free for 90 days Click Here http://p.sf.net/sfu/sfd2d-msazure _______________________________________________ W3af-develop mailing list W3af-develop@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/w3af-develop