Frank, On Thu, Aug 25, 2011 at 8:27 PM, Frank van der Loo <[email protected]> wrote: > On 26-08-11 01:11, Andres Riancho wrote: >> >> Frank, >> >> On Thu, Aug 25, 2011 at 7:57 PM, Frank van der Loo >> <[email protected]> wrote: >>> >>> On 26-08-11 00:39, Andres Riancho wrote: >>>> >>>> Frank, >>>> >>>> On Thu, Aug 25, 2011 at 7:20 PM, Frank van der Loo >>>> <[email protected]> wrote: >>>>> >>>>> On 25-08-11 23:06, Javier Andalia wrote: >>>>>> >>>>>> On Thu, Aug 25, 2011 at 4:07 PM, Andres Riancho >>>>>> <[email protected]> wrote: >>>>>>> >>>>>>> Frank, >>>>>>> >>>>>>> Thanks for your email, please see answers inline: >>>>>>> >>>>>>> On Tue, Aug 23, 2011 at 5:50 PM, Frank van der Loo >>>>>>> <[email protected]> wrote: >>>>>>>> >>>>>>>> Hi, >>>>>>>> >>>>>>>> I wrote my master's thesis on penetration testing >>>>>>>> tools/vulnerability >>>>>>>> scanners and I noticed some problems with w3af (version 1.0-rc5) >>>>>>>> that >>>>>> >>>>>> Several months have passed since that version. >>>>>> >>>>>>>> cause false positives and false negatives. Unfortunately, I don't >>>>>>>> have >>>>>>>> the time nor the Python skills required to fix these myself, or I >>>>>>>> would >>>>>>>> have sent a patch. >>>>>>> >>>>>>> No problem! Reporting is an excellent first step! >>>>>>> >>>>>>>> - only one input is used at a time, while in some cases (e.g. >>>>>>>> password >>>>>>>> and repeat password) it is required that both fields contain the >>>>>>>> same >>>>>>>> value, because only one input is used w3af will miss an SQL >>>>>>>> injection >>>>>>>> if >>>>>>>> the password is inserted into the database unvalidated >>>>>>> >>>>>>> That's a very difficult case do address, but an interesting one >>>>>>> for sure! I never thought about that edge case. Created ticket to >>>>>>> take >>>>>>> care about this: >>>>>>> https://sourceforge.net/apps/trac/w3af/ticket/167513 >>>>>>> >>>>>>>> - some sites place the content of headers like Referrer and >>>>>>>> User-agent >>>>>>>> on a page, this behavior is vulnerable to XSS that is not detected >>>>>>>> by >>>>>>>> w3af >>>>>>> >>>>>>> I think w3af should detect these if you set "fuzzableHeaders" to >>>>>>> "Referrer" or "User-agent" in misc settings. Have you tried this? >>>>>>> >>>>>>>> - when the content of an input is used in a link (e.g.<a >>>>>>>> href="index.php?page=<script>alert('XSS');</script>...) or as value >>>>>>>> in >>>>>>>> a >>>>>>>> text field (e.g.<input type="text" >>>>>>>> value="<script>alert('XSS');</script>...) this is detected as an XSS >>>>>>>> vulnerability while it is in fact harmless, it should be checked >>>>>>>> where >>>>>>>> the content of the input is and if it is parsed by the browser >>>>>>> >>>>>>> Hmmm.... in SOME cases it's harmless, in some others it's not. >>>>>>> Example where it IS harmless: >>>>>>> >>>>>>> #1 Send http://host.tld/foo.php?bar=<script> >>>>>>> #2 Application answers: >>>>>>> .... >>>>>>> .... >>>>>>> <a href="http://host.tld/foo.php?bar=<script>">link</a> >>>>>>> >>>>>>> #3 Send http://host.tld/foo.php?bar=<script>" >>>>>>> #4 Application answers: >>>>>>> .... >>>>>>> .... >>>>>>> <a href="http://host.tld/foo.php?bar=<script>%22">link</a> >>>>>>> >>>>>>> In some other cases it's not: >>>>>>> >>>>>>> #1 Send http://host.tld/foo.php?bar=<script> >>>>>>> #2 Application answers: >>>>>>> .... >>>>>>> .... >>>>>>> <a href="http://host.tld/foo.php?bar=<script>">link</a> >>>>>>> >>>>>>> #3 Send http://host.tld/foo.php?bar="><script>alert('xss')</script><a >>>>>>> href=" >>>>>>> #4 Application answers: >>>>>>> .... >>>>>>> .... >>>>>>> <a >>>>>>> href="http://host.tld/foo.php?bar="><script>alert('xss')</script><a >>>>>>> href="">link</a> >>>>>>> >>>>>>>> - related to the above suggestion, if the input is preceded by "> >>>>>>>> any >>>>>>>> HTML-tag the input may be present in will be closed, "ensuring" the >>>>>>>> text >>>>>>>> does not appear in a tag and is thus parsed by the browser (it >>>>>>>> should >>>>>>>> still be checked if the text is in a tag, because if the web >>>>>>>> application >>>>>>>> escapes or removes quotes, or replaces them by HTML entities this >>>>>>>> does >>>>>>>> not work). >>>>>>> >>>>>>> I agree that in some cases we need to add more checks to the XSS >>>>>>> detection, BUT at the same time... I would rather raise a red flag to >>>>>>> the analyst and maybe he can identify a way of >>>>>>> "escaping"/"exploiting" >>>>>>> that specific XSS. >>>>>>> >>>>>>>> - textareas are not used by w3af, only textfields (<input >>>>>>>> type="text") >>>>>>> >>>>>>> I think we fixed this. Javier: do you recall? >>>>>> >>>>>> Actually we do use textareas in w3af. Frank, can you please validate >>>>>> it using our most recent version? >>>>> >>>>> I've downloaded version 1.0-stable, which was updated at first start to >>>>> version r4389. This version does indeed use textareas. >>>> >>>> That's good news :) >>>> >>>>>>>> - when an HTTP POST is sent to a page, the name/value pair of the >>>>>>>> submit >>>>>>>> button is not sent in this POST, only the other inputs; some pages >>>>>>>> check >>>>>>>> if a form is sent by checking if the name of the submit button is >>>>>>>> present in the HTTP POST >>>>>>> >>>>>>> This is a serious bug, we'll fix it. >>>>>>> >>>>>> I'm not sure this is happening. Again, can you please Frank reproduce >>>>>> it with a more recent version? >>>>> >>>>> Abovementioned version (r4389) still does not send the name/value pair >>>>> of >>>>> the submit button. w3af claims it does 'The sent post-data was: >>>>> >>>>> >>>>> "add-to-your-blog-php-submit-button=Save+Blog+Entry&blog_entry=<ScRIpT>alert(String.fromCharCode(CHf3))</SCriPT>".', >>>>> however the name/value pair of the submit button is not visible in the >>>>> traffic logged with a packet sniffer. Also, when the script uses >>>>> 'if(isset($_POST["add-to-your-blog-php-submit-button"]))' as test the >>>>> vulnerability is not discovered, while it is discovered when the script >>>>> uses >>>>> 'if($_SERVER['REQUEST_METHOD'] == "POST")' as test. >>>> >>>> Very interesting. Could you send us an HTML to reproduce? >>> >>> <html> >>> <body> >>> <?php >>> //if ($_SERVER['REQUEST_METHOD'] == "POST") >>> if (isset($_POST['sbm'])) >>> { >>> echo $_POST['inp']; >>> } >>> ?> >>> <form name="frm" method="post" action=""> >>> <input type="text" name="inp"><br> >>> <input type="submit" name="sbm" value="submit"> >>> </form> >>> </body> >>> </html> >>> >>> This simple PHP-script reproduces the problem. If you run w3af against >>> this >>> script it will not find the XSS vulnerability that is present in this >>> script. However, if you uncomment the first if-statement and comment the >>> second if-statement w3af will find the vulnerability. >> >> Copy-Pasted the PHP, run w3af (without any special configuration) and >> the XSS was found: >> >> """ >> Cross Site Scripting was found at: "http://localhost/index.php", using >> HTTP method POST. The sent post-data was: >> "inp=<SCrIPT>alert("lqH0")</SCrIPT>&sbm=submit". This vulnerability >> affects ALL browsers. This vulnerability was found in the request with >> id 131. >> """ >> >> Attaching PCAP where you can also see that the submit is sent. > > That's strange. It doesn't here > > frank@darkstar:/tmp/w3af$ ./w3af_console > w3af>>> target > w3af/config:target>>> set target http://localhost/test/button.php > w3af/config:target>>> back > w3af>>> plugins > w3af/plugins>>> audit xss > w3af/plugins>>> back > w3af>>> start > Found 1 URLs and 2 different points of injection. > The list of URLs is: > - http://localhost/test/button.php > The list of fuzzable requests is: > - http://localhost/test/button.php | Method: GET > - http://localhost/test/button.php | Method: POST | Parameters: (inp="") > Scan finished in 0 seconds. > w3af>>> version > w3af - Web Application Attack and Audit Framework > Version: 1.0-stable-4286 (from SVN server) > Revision: 4389 > Author: Andres Riancho and the w3af team. > > Only when I change the if-statements w3af detects the vulnerability.
Good you confirmed this. I found a bug! But it's not in the process of parsing/injecting/etc. It's in the way we print stuff to the console. I'll explain this to Javier tomorrow (it has something to do with the unicode change he did a couple of weeks ago). >>>>>>>> Regards, >>>>>>>> Frank van der Loo >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> ------------------------------------------------------------------------------ >>>>>>>> EMC VNX: the world's simplest storage, starting under $10K >>>>>>>> The only unified storage solution that offers unified management >>>>>>>> Up to 160% more powerful than alternatives and 25% more efficient. >>>>>>>> Guaranteed. http://p.sf.net/sfu/emc-vnx-dev2dev >>>>>>>> _______________________________________________ >>>>>>>> W3af-develop mailing list >>>>>>>> [email protected] >>>>>>>> https://lists.sourceforge.net/lists/listinfo/w3af-develop >>>>>>>> >>>>>>> -- >>>>>>> Andrés Riancho >>>>>>> Director of Web Security at Rapid7 LLC >>>>>>> Founder at Bonsai Information Security >>>>>>> Project Leader at w3af >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> ------------------------------------------------------------------------------ >>>>>>> EMC VNX: the world's simplest storage, starting under $10K >>>>>>> The only unified storage solution that offers unified management >>>>>>> Up to 160% more powerful than alternatives and 25% more efficient. >>>>>>> Guaranteed. http://p.sf.net/sfu/emc-vnx-dev2dev >>>>>>> _______________________________________________ >>>>>>> W3af-develop mailing list >>>>>>> [email protected] >>>>>>> https://lists.sourceforge.net/lists/listinfo/w3af-develop >>>>>>> >>>> >>> >> >> > > -- Andrés Riancho Director of Web Security at Rapid7 LLC Founder at Bonsai Information Security Project Leader at w3af ------------------------------------------------------------------------------ EMC VNX: the world's simplest storage, starting under $10K The only unified storage solution that offers unified management Up to 160% more powerful than alternatives and 25% more efficient. Guaranteed. http://p.sf.net/sfu/emc-vnx-dev2dev _______________________________________________ W3af-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/w3af-users
