Andres,

Ok. So I will make some experiments in the branch and then write to list 
again :)

29.02.2012 23:37, Andres Riancho пишет:
> Taras,
>
> On Wed, Feb 29, 2012 at 12:47 PM, Taras<ox...@oxdef.info>  wrote:
>> Andres, please read inline
>>
>>
>>>> Every request inside user's area of web
>>>> application with params will be detected as vulnerable. I' have decided
>>>> to improve it (with making some research) and want to discuss with you
>>>> interesting topic - automation detection of CSRF flaws. My current view
>>>> of CSRF-detection process is:
>>>>
>>>> 1. Does request has cookie (e.g. session cookie)?
>>>> 2. Does request has CSRF token in query string of POST payload?
>>>> 3. If request has such token does web app check it?
>>>> 4. Same with header based protection (Referer/Origin)
>>>>
>>>> Interesting points are:
>>>>
>>>> * What can we consider as CSRF token? Currently I calculate entropy of
>>>> it (as for password strength) plus some fast string and dictionary checks
>>>> * Strict mode on/off - do we need to audit GET requests? Not always...
>>>> * How to determine that CSRF token is checked? I am thinking about
>>>> checking of response codes and diffs of responses (like blind SQL
>>>> injection testing)
>>>>
>>>> All experiments will be in separate branch and, hope, in nearest future
>>>> w3af will detect CSRF flaws much better:)
>>>>
>>>> Any comments here?
>>>
>>>
>>
>>>      Tons of comments , since I've worked in this for Nexpose :) First
>>> of all, here's a comment on how AppScan does it [0] , which is
>>> basically a "swap the two sessions" technique. Here [1] I wrote on how
>>> we did it for Nexpose:
>>
>>
>>> Posted by Andres Riancho in Nexpose on Jan 30, 2012 5:30:59 PM
>>
>> There is about a month between your post and my letter in case that I didn't
>> read it on Nexpose blog! :)
>>
>>
>>> In order to identify the vulnerability, Nexpose is going to follow
>>> these main steps:
>>> * Crawl the web application without credentials, store non-authenticated
>>> forms
>>> * Login to the web application with the user provided credentials
>>> * Crawl the web application keeping session state and store authenticated
>>> forms
>>> * Clear session cookies
>>> * Login to the web application with the user provided credentials
>>> * Crawl the web application keeping session state and store authenticated
>>> forms
>>> * For each form that can only be accessed after authenticating,
>>> analyze if it has an anti-CSRF token. The basic way of doing this is
>>> to check if it has a hidden parameter that considerably changed its
>>> value (using the two form instances gathered during steps 3 and 6)
>>
>>> * Report forms that don't have anti-CSRF tokens as vulnerable to CSRF
>>
>> And you forget to add important part:
>>>
>>> Another approach includes performing HTTP requests to verify that
>>> the anti-CSRF token is properly verified by the application, but extensive
>>> testing showed that the accuracy of that heuristic was slightly lower
>>> than the one of the implemented algorithm and speed was reduced due
>>> to the need of more HTTP requests.
>
> This can be done as an "optional" step for the previously defined
> algorithm, something like a "double check" for the CSRF.
>
> I'm not saying that w3af should implement this algorithm, I'll let you
> guys decide which one is better !
>
>>
>>>      Those steps "sound easy" but there are many details that are not
>>> stated there, details that of course I can't disclose. You'll start to
>>> figure them out by yourself if you decide to implement an approach
>>> similar to [0] or [1].
>>
>> I totally understand that it is not so easy as somebody may think.
>> But it same case it is really interesting to research and implement in w3af.
>
> Sure, it is!
>
>>
>>>      Implementing CSRF detection in w3af is somehow difficult since it
>>> won't be easy to implement it as an audit plugin because it needs
>>> (usually) more than one session, or a lot of information that is not
>>> usually available to audit plugins. It looks like we'll need a new
>>> scan phase.
>>
>> I see that Nexpose and AppScan uses 2 phases approach to detect such flaws.
>> And it generates 2xtime more requests to web application in discovery
>> phrase. And we of course can implement it in same way in w3af. But in same
>> time my approach is simpler and doesn't need one more session. I try to make
>> more work without sending requests. And I also think that scanner must not
>> only try to find CSRF token but also check that web app verify this token it
>> before any action. What do you think about way which I have suggested?
>>
>>
>>> [0] http://www-01.ibm.com/support/docview.wss?uid=swg21298693
>>> [1]
>>> https://community.rapid7.com/community/nexpose/blog/2012/01/30/nexpose-reaches-owasp-top10-coverage
>>>
>>> Regards,
>>>
>>>> [0]
>>>>
>>>> http://w3af.svn.sourceforge.net/viewvc/w3af/trunk/plugins/audit/xsrf.py?view=markup
>>>> [1] http://w3af.svn.sourceforge.net/viewvc/w3af/branches/csrf/
>>>>
>>>> --
>>>> Taras
>>>> http://oxdef.info
>>>>
>>>>
>>>> ------------------------------------------------------------------------------
>>>> Keep Your Developer Skills Current with LearnDevNow!
>>>> The most comprehensive online learning library for Microsoft developers
>>>> is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
>>>> Metro Style Apps, more. Free future releases when you subscribe now!
>>>> http://p.sf.net/sfu/learndevnow-d2d
>>>> _______________________________________________
>>>> W3af-develop mailing list
>>>> W3af-develop@lists.sourceforge.net
>>>> https://lists.sourceforge.net/lists/listinfo/w3af-develop
>>>
>>>
>>>
>>>
>>
>>
>> --
>> Taras
>> http://oxdef.info
>
>
>


-- 
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

Reply via email to