<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Edge-Security - Medium]]></title>
        <description><![CDATA[Security research and engineering - Medium]]></description>
        <link>https://medium.com/edge-security?source=rss----780ec6935a6---4</link>
        <image>
            <url>https://cdn-images-1.medium.com/proxy/1*TGH72Nnw24QL3iV9IOm4VA.png</url>
            <title>Edge-Security - Medium</title>
            <link>https://medium.com/edge-security?source=rss----780ec6935a6---4</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Thu, 12 Nov 2026 13:00:56 GMT</lastBuildDate>
        <atom:link href="https://medium.com/feed/edge-security" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[Abusing AWS cross-account relationships]]></title>
            <link>https://medium.com/edge-security/abusing-aws-cross-account-relationships-3b36a111b494?source=rss----780ec6935a6---4</link>
            <guid isPermaLink="false">https://medium.com/p/3b36a111b494</guid>
            <category><![CDATA[pentest]]></category>
            <category><![CDATA[aws]]></category>
            <dc:creator><![CDATA[Xavi Méndez]]></dc:creator>
            <pubDate>Thu, 07 Jun 2018 15:06:03 GMT</pubDate>
            <atom:updated>2018-11-19T14:30:53.256Z</atom:updated>
            <content:encoded><![CDATA[<h3>Introduction</h3><p>Many Amazon Web Services (AWS) deployments use separate accounts for development, production and other environments. This helps to isolate resources and Identity and Access Management (IAM) users, groups, and roles.</p><p>To simplify management and the need to have a different set of credentials for every different environment, Amazon provides AWS Security Token Service (STS) and IAM roles. Cross-account access can be achieved by assuming a role and getting temporary credentials for authentication and authorization.</p><p>A typical scenario is depicted in the diagram below (see [1]):</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/400/0*6wPy5Ykx_bxNvf0A.png" /></figure><p>A trust relationship is bidirectional, to set up the scenario above, the following must be created:</p><ul><li>In prod, creating the CrossAccountPowerUser role with a trust relationship with the dev user:</li></ul><pre>{<br>  &quot;Version&quot;: &quot;2012-10-17&quot;,<br>  &quot;Statement&quot;: [{<br>    &quot;Effect&quot;: &quot;Allow&quot;,<br>      &quot;Principal&quot;: {<br>        &quot;AWS&quot;: &quot;arn:aws:iam::Dev-account-ID:user/bjwagner&quot;<br>      },<br>    &quot;Action&quot;: &quot;sts:AssumeRole&quot;<br>  }]<br>}</pre><ul><li>In dev, adding a policy to the bjwagner user that allows to assume the prod role:</li></ul><pre>{<br>    &quot;Version&quot;: &quot;2012-10-17&quot;,<br>    &quot;Statement&quot;: {<br>        &quot;Effect&quot;: &quot;Allow&quot;,<br>        &quot;Action&quot;: &quot;sts:AssumeRole&quot;,<br>        &quot;Resource&quot;: &quot;arn:aws:iam::Prod-account-ID:role/CrossAccountPowerUser&quot;<br>    }<br>}</pre><p>The principal in the production role dictates who can assume it. Due to the fact that you cannot specify groups as principals but only a list of roles, users or services (see [2]), for convenience, it is quite common to use a whole account in the trust relationship, for example:</p><pre>&quot;Principal&quot;: { &quot;AWS&quot;: &quot;arn:aws:iam::123456789012:root&quot; }</pre><p>It is worth noting that, that this would allow any dev account that has the companion assume role policy to assume the role.</p><p>The following specifics of the depicted scenario affect its security posture:</p><ul><li>The development environment is used to store IAM accounts (including administrators).</li><li>Usually, engineers have the ability to deploy resources, ie. ECS services or Cloud Formation stacks, in the development environment.</li><li>Usually, the development environments have wider and more relaxed permissions.</li><li>Usually, all the engineers will share a common role or group in development configured with default permissions.</li><li>Usually, trust relationships use other account as principal.</li></ul><p>Many times, the default developer access has policies to prevent escalating privileges, such as, only allowing to assume roles in the same development account or specifically denying to assume an administrator role. For example:</p><pre>{<br>    &quot;Sid&quot;: &quot;DenyAssumeRolesThatAreNotDevelopment&quot;,<br>    &quot;Effect&quot;: &quot;Deny&quot;,<br>    &quot;Action&quot;: &quot;sts:AssumeRole&quot;,<br>    &quot;NotResource&quot;: [<br>        &quot;arn:aws:iam::123456789012:role/*&quot;,<br>    ]<br>},</pre><pre>{<br>    &quot;Sid&quot;: &quot;ExplicitDenyAdminAssumeRole&quot;,<br>    &quot;Effect&quot;: &quot;Deny&quot;,<br>    &quot;Action&quot;: &quot;sts:AssumeRole&quot;,<br>    &quot;Resource&quot;: &quot;arn:aws:iam::123456789012:role/Development_admins&quot;<br>},</pre><h3>How to escalate privileges</h3><p>Even with the aforementioned restrictions, there are still several vectors that can be exploited to escalate privileges depending on the existing IAM resources and the specific configuration of the environment.</p><p>A security assessment identifying these vectors should check trust relationships, roles, user and groups policies. Although, some of it might be doable using the AWS console or the AWS cli, it could be tedious. In order, to facilitate this task the following python script has been developed during this research <a href="https://github.com/xmendez/awsdigger">https://github.com/xmendez/awsdigger</a></p><h3>Dangerous permissions</h3><p>There are various IAM permissions that could be used to escalate privileges, for example allowing to:</p><ul><li>Create or modify users and group membership such as AddUserToGroup, PutUserPolicy, CreateUser, CreateGroup, PutGroupPolicy.</li><li>Create or modify managed policies such as AttachUserPolicy, AttachGroupPolicy, CreatePolicy.</li><li>Create or update other user access keys (you might need also MFA permissions if two factor authentication is enabled) with CreateAccessKey.</li><li>Create or modify existing roles such as createRole or PutRolePolicy.</li><li>Assume other roles with sts:assumeRole</li><li>Modify other roles trust policies with UpdateAssumeRolePolicy</li></ul><p>A list of the full IAM permissions could be found at [4].</p><p>The obvious dangerous permissions, such as creating users or modifying existing groups, are usually denied by default. But many times development environments are quite relaxed about modifying other existing roles.</p><p>Also, often a developer is allowed to perform these actions indirectly, for example:</p><ul><li>by deploying CF stacks (sometimes passing a more powerful role).</li><li>by deploying an ECS service or an EC2 instance allowed to assume a previously created role.</li></ul><h3>Finding IAM resources with overprivileged permissions</h3><p>IAM resources with strong permissions could already exist with all the necessary permissions to escalate privileges in the development environment:</p><pre>$ python -m awsdigger --filter &quot;Action=&#39;iam:*&#39; and Resource=&#39;*&#39; and Condition=&#39;&#39;&quot;</pre><p>An issue when finding such IAM resources, is that AWS policies’ syntax is very flexible and therefore it is difficult to identify the actual permissions among all the “NotAction”, “Action”, “Deny”, “Allow”, different services, resources, conditions, actions and wildcards.</p><p>For example, the following user policy, which is trying to give full s3 access, is actually granting administrator permissions to the user (presumably by mistake):</p><pre>&quot;Version&quot;: &quot;2012-10-17&quot;,<br>&quot;Statement&quot;: [<br>        {<br>            &quot;Action&quot;: [<br>                &quot;s3:*&quot;<br>            ],<br>            &quot;Resource&quot;: [<br>                &quot;*&quot;<br>            ],<br>            &quot;Effect&quot;: &quot;Allow&quot;<br>        },<br>        {<br>            &quot;Resource&quot;: [<br>                &quot;*&quot;<br>            ],<br>            &quot;Effect&quot;: &quot;Allow&quot;,<br>            &quot;NotAction&quot;: [<br>                &quot;s3:DeleteObject&quot;,<br>                &quot;s3:DeleteObjectVersion&quot;<br>            ]<br>        }</pre><pre>]<br>}</pre><p>AWSDigger has a basic policy calculator that allows to find the effective permissions of an IAM policy to facilitate this task. Therefore you could look for dangerous IAM permissions by executing:</p><pre>$ python -m awsdigger --filter &quot;Effective~&#39;iam:PutUserPolicy&#39; or Effective~&#39;CreateGroup&#39; or Effective~&#39;CreateUser&#39; or Effective~&#39;UpdateGroup&#39; or Effective~&#39;AttachGroupPolicy&#39; &quot;</pre><h3>Finding trust relationships within the same account</h3><p>A role within the dev account having the development account as principal in the trust policy could be assumed by any user in the development account (if the default access allows it). These IAM resources can be identified by executing the following using a development account:</p><pre>$ python -m awsdigger --filter &quot;Trusted~&#39;arn:aws:iam::123456789012:root&#39;&quot;</pre><p>The listed roles might have wider permissions, access to more resources or a trust relationships to other account.</p><p>Then the role can be assumed by executing:</p><pre>$ aws sts assume-role --role-arn arn:aws:iam::123456789012:role/some_role --role-session-name escalate-to-other-role</pre><h3>Finding cross-account trusted relationships</h3><p>In order to allow developers to access their resources in production; or to allow administrators to manage the production environment from their development accounts, some trust relationship must exist between the development and the production account.</p><ul><li><strong>Finding development roles with a trust relationship with the production account</strong></li></ul><p>You can find which development IAM resources are allowed to assume production roles by executing:</p><pre>$ python -m awsdigger --filter &quot;Action~&#39;sts:AssumeRole&#39;&quot;</pre><p>or being more specific by using:</p><pre>$ python -m awsdigger --filter &quot;Action~&#39;sts:AssumeRole&#39; and (Resource~&#39;1111111111111&#39; or Resource=&#39;*&#39;)&quot;</pre><ul><li><strong>Finding production roles with a trust relationship with the development account</strong></li></ul><p>Powerful roles, users or groups having a trust relationship with the development account could be identified by executing the following in production:</p><pre>$ python -m awsdigger --filter &quot;Trusted=&#39;arn:aws:iam::123456789012:root&#39; and Action=&#39;*&#39; and Resource=&#39;*&#39;&quot;</pre><h3>References:</h3><p>[1] <a href="https://aws.amazon.com/blogs/security/how-to-use-a-single-iam-user-to-easily-access-all-your-accounts-by-using-the-aws-cli/">https://aws.amazon.com/blogs/security/how-to-use-a-single-iam-user-to-easily-access-all-your-accounts-by-using-the-aws-cli/</a></p><p>[2] <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html">https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html</a></p><p>[3] <a href="https://aws.amazon.com/answers/account-management/aws-multi-account-security-strategy/">https://aws.amazon.com/answers/account-management/aws-multi-account-security-strategy/</a></p><p>[4] <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/list_iam.html">https://docs.aws.amazon.com/IAM/latest/UserGuide/list_iam.html</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=3b36a111b494" width="1" height="1" alt=""><hr><p><a href="https://medium.com/edge-security/abusing-aws-cross-account-relationships-3b36a111b494">Abusing AWS cross-account relationships</a> was originally published in <a href="https://medium.com/edge-security">Edge-Security</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Wfuzz 2.2.0 released]]></title>
            <link>https://medium.com/edge-security/wfuzz-2-2-0-released-5c1839840d55?source=rss----780ec6935a6---4</link>
            <guid isPermaLink="false">https://medium.com/p/5c1839840d55</guid>
            <dc:creator><![CDATA[Xavi Méndez]]></dc:creator>
            <pubDate>Thu, 21 Sep 2017 20:01:00 GMT</pubDate>
            <atom:updated>2018-06-07T14:50:05.672Z</atom:updated>
            <content:encoded><![CDATA[<p>I’m pleased to announce a new version of WFuzz!<br><br>Wfuzz has been created to facilitate the task in web applications assessments and it is based on a simple concept: it replaces any reference to the FUZZ keyword by the value of a given payload.<br><br>A payload in Wfuzz is a source of data.<br><br>This simple concept allows any input to be injected in any field of an HTTP request, allowing to perform complex web security attacks in different web application components such as: parameters, authentication, forms, directories/files, headers, etc.<br><br>Wfuzz has received a huge update. Version 2.2.0 introduces plenty of great new features. One of the biggest changes is that Wfuzz is now scriptable:</p><blockquote>&gt;&gt;&gt; import wfuzz<br>&gt;&gt;&gt; for r in wfuzz.get_payload(range(100)).fuzz(hl=[97], url=”http://testphp.vulnweb.com/listproducts.php?cat=FUZZ&quot;):<br>… print r<br>…<br>00125: C=200 102 L 434 W 7011 Ch “1”<br>00126: C=200 99 L 302 W 4442 Ch “2”</blockquote><p>Additional command line interfaces to generate payloads and encoding strings are now available. Other great feature, is the improved filtering language and the ability to reuse previous results, for example, if you do not want to perform any request but just find some specific HTTP requests within a previous Burp (TM) session, you can use the wfpayload executable:</p><blockquote>$ wfpayload -z burplog,a_burp_log.log — slice “params.get~’authtoken’ and url.pstrip|u()”</blockquote><p>The command above will return a unique list of HTTP requests including the authtoken parameter as a GET parameter. Authtoken is the parameter used by BEA WebLogic Commerce Servers (TM) as a CSRF token, and therefore it will return all the requests exposing the CSRF token in the URL.</p><p>A big effort has been done on documenting all the available features, check <a href="http://wfuzz.readthedocs.io/">http://wfuzz.readthedocs.io/.</a><br><br>You can now install Wfuzz using pip and run it from any directory, you can even set up look up directories for your preferred word lists.</p><blockquote>$ pip install wfuzz</blockquote><p>Enjoy!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=5c1839840d55" width="1" height="1" alt=""><hr><p><a href="https://medium.com/edge-security/wfuzz-2-2-0-released-5c1839840d55">Wfuzz 2.2.0 released</a> was originally published in <a href="https://medium.com/edge-security">Edge-Security</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Scan for shellshock with wfuzz]]></title>
            <link>https://medium.com/edge-security/scan-for-shellshock-with-wfuzz-9bc619a6b526?source=rss----780ec6935a6---4</link>
            <guid isPermaLink="false">https://medium.com/p/9bc619a6b526</guid>
            <category><![CDATA[wfuzz]]></category>
            <dc:creator><![CDATA[Xavi Méndez]]></dc:creator>
            <pubDate>Thu, 30 Oct 2014 10:00:00 GMT</pubDate>
            <atom:updated>2018-06-07T14:49:12.444Z</atom:updated>
            <content:encoded><![CDATA[<p>In the last few weeks everyone has been talking about Shellshock, the vulnerability affecting bash and having security ramifications everywhere, from Web, DHCP or SSH servers to mail servers. It does not have any sense to extend this post trying to rehash what this vulnerability is about or why it is an issue, as by now there are thousands of other posts and articles about the Bash “Shellshock” vulnerability, you only have to do a quick search on the Internet.<br><br>The best way to test for the Shellshock vulnerability is to do a local check but if you are worried about your web server hosting a vulnerable /cgi-bin and you don’t have shell access, there are plenty of free Shellshock on-line scanner tools such as:</p><ul><li><a href="http://shellshock.brandonpotter.com/">http://shellshock.brandonpotter.com/</a></li><li><a href="http://bashsmash.ccsir.org/">http://bashsmash.ccsir.org/</a></li><li><a href="http://www.shellshocktest.com/">http://www.shellshocktest.com/</a></li><li>…</li></ul><p>Or tools like Qualys, Nessus, Nmap, Burp, Metasploit… and a bunch of “quick-and-dirty” scans using simple Perl or Python scripts.<br><br>Of course, you can also use <a href="http://edge-security.blogspot.co.uk/2014/10/wfuzz-21-released.html">Wfuzz</a> to check for internal or external affected Web servers easily, by injecting a payload in the User-agent, Referer or Accept headers against well known CGI scripts as follows (since <a href="http://edge-security.blogspot.co.uk/2014/10/wfuzz-21-released.html">v2.1</a> — ss switch allows you to filter responses containing the specified regex):</p><blockquote>$ wfuzz.py -H “User-Agent: () { :;}; echo; echo vulnerable” — ss vulnerable -w cgis.txt <a href="http://localhost:8000/FUZZ">http://localhost:8000/FUZZ</a> <br>****************************************<br>* Wfuzz 2.1 — The Web Bruteforcer *<br>****************************************<br><br>Target: http://localhost:8000/FUZZ<br>Total requests: 389<br><br>==============================================<br>ID Response Lines Word Chars Request <br>==============================================<br><br>00250: C=200 4 L 6 W 50 Ch “/cgi-bin/test.cgi”<br><br>Total time: 0.725533<br>Processed Requests: 389<br>Filtered Requests: 388<br>Requests/sec.: 536.1568</blockquote><p>You can also scan various hosts by supplying a list of hostnames, for example:</p><blockquote>$ wfuzz.py -H “User-Agent: () { :;}; echo; echo vulnerable” — ss vulnerable -w hostslist.txt -w cgis.txt FUZZ/FUZ2Z</blockquote><p>or by using an IP range (<a href="http://edge-security.blogspot.co.uk/2014/10/wfuzz-21-released.html">v2.1</a> allows you to use the -Z switch to ignore connection errors):</p><blockquote>$ wfuzz.py -H “User-Agent: () { :;}; echo; echo vulnerable” — ss vulnerable -z range,0–255 -w cgis.txt -Z <a href="http://192.168.1.fuzz/FUZ2Z">http://192.168.1.FUZZ/FUZ2Z</a></blockquote><p>Happy hunting,</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9bc619a6b526" width="1" height="1" alt=""><hr><p><a href="https://medium.com/edge-security/scan-for-shellshock-with-wfuzz-9bc619a6b526">Scan for shellshock with wfuzz</a> was originally published in <a href="https://medium.com/edge-security">Edge-Security</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Wfuzz 2.1 released !]]></title>
            <link>https://medium.com/edge-security/wfuzz-2-1-released-e2c8fc421307?source=rss----780ec6935a6---4</link>
            <guid isPermaLink="false">https://medium.com/p/e2c8fc421307</guid>
            <category><![CDATA[web-apps]]></category>
            <category><![CDATA[brute-force]]></category>
            <category><![CDATA[wfuzz]]></category>
            <category><![CDATA[web-security]]></category>
            <dc:creator><![CDATA[Xavi Méndez]]></dc:creator>
            <pubDate>Fri, 24 Oct 2014 10:37:00 GMT</pubDate>
            <atom:updated>2018-06-07T14:48:16.573Z</atom:updated>
            <content:encoded><![CDATA[<p>I’m pleased to announce a new version of WFuzz!<br><br>Wfuzz is a tool designed for bruteforcing Web Applications, it can be used for finding resources not linked (directories, servlets, scripts, etc.), bruteforce GET and POST parameters for checking different kind of injections, bruteforce forms parameters (User/Password), Fuzzing,etc.<br><br>I have been working intermittently on this release since October 2011, being almost finished several times but always leaving it aside at the last moment due to work. A few weeks ago I decided to finish it whatever it took.<br><br>This version is a major change from the previous releases as it is almost totally rewritten, leaving not much of the old wfuzz 1.4, hoping for the best.<br><br>The biggest change is that wfuzz now supports plugins, so you can code your scripts and improve or modify the application’s functionality. For example, there is a plugin that parses links within the HTTP response and these will be added to the fuzzing queue. Check below how a single word “a” generates 8 different requests:</p><blockquote>$ python wfuzz.py — script=links -z list,a — follow <a href="http://localhost:8000/FUZZ">http://localhost:8000/FUZZ</a><br>********************************************************<br>* Wfuzz 2.1 — The Web Bruteforcer *<br>********************************************************<br><br>Target: <a href="http://localhost:8000/FUZZ">http://localhost:8000/FUZZ</a><br>Total requests: 1<br><br>===========================================<br>ID Response Lines Word Chars Request <br>===========================================<br>00000: C=200 17 L 89 W 1481 Ch “a”<br> |_ Plugin links enqueued 5 more requests (rlevel=1)<br>00001: C=200 14 L 57 W 889 Ch “/a/b/”<br> |_ Plugin links enqueued 2 more requests (rlevel=2)<br>00002: C=200 4 L 25 W 177 Ch “/”<br>00003: C=200 9 L 7 W 61 Ch “/a/test.html”<br>00004: C=200 4 L 6 W 47 Ch “/a/test.js”<br>00005: C=403 10 L 30 W 285 Ch “/icons/”<br>00006: C=200 17 L 89 W 1481 Ch “/a/”<br>00007: C=200 14 L 57 W 895 Ch “/a/b/c/”<br> |_ Plugin links enqueued 1 more requests (rlevel=3)<br>00008: C=200 13 L 46 W 716 Ch “/a/b/c/d/”</blockquote><p>The project has been moved from <a href="http://code.google.com/hosting/moved?project=wfuzz">Google code</a> to <a href="https://github.com/xmendez/wfuzz">Github</a>. For a full list of the new features, check the <a href="https://github.com/xmendez/wfuzz/releases/tag/v2.1-beta">Wfuzz v2.1 changelog</a>.</p><p>Download the latest version at:</p><ul><li><a href="https://github.com/xmendez/wfuzz/releases/">https://github.com/xmendez/wfuzz/releases/</a></li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e2c8fc421307" width="1" height="1" alt=""><hr><p><a href="https://medium.com/edge-security/wfuzz-2-1-released-e2c8fc421307">Wfuzz 2.1 released !</a> was originally published in <a href="https://medium.com/edge-security">Edge-Security</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Testing CSRF aware webapps with Burp]]></title>
            <link>https://medium.com/edge-security/testing-csrf-aware-webapps-with-burp-f63ed00db3e0?source=rss----780ec6935a6---4</link>
            <guid isPermaLink="false">https://medium.com/p/f63ed00db3e0</guid>
            <category><![CDATA[web-security]]></category>
            <category><![CDATA[csrf]]></category>
            <category><![CDATA[burp]]></category>
            <dc:creator><![CDATA[Xavi Méndez]]></dc:creator>
            <pubDate>Fri, 11 May 2012 09:05:00 GMT</pubDate>
            <atom:updated>2018-06-07T14:48:19.816Z</atom:updated>
            <content:encoded><![CDATA[<p>Nowadays, is not uncommon to face websites protected using some variant of the synchronizer token pattern to mitigate the risk of Cross-Site Request Forgery (CSRF) attacks.<br><br>The basic functioning of these webapps is to generate a random token submitted with each HTTP request, ensuring that the token is present and is valid for a given HTTP request.<br><br>Below is shown an URL including its associated token:</p><blockquote><a href="http://localhost:8080/injection_CSRF/inject.jsp?id=1&amp;org.apache.catalina.filters.CSRF_NONCE=F22B0AC7234C98DFE11D665A3383B7E2">http://localhost:8080/injection_CSRF/inject.jsp?id=1&amp;org.apache.catalina.filters.CSRF_NONCE=F22B0AC7234C98DFE11D665A3383B7E2</a></blockquote><p>Although these protections help to mitigate effectively the risk of CSRF, they make almost impossible to analyse an application in an automatic or semi-automatic way, as this involves requesting an URL with a given token several times, which are discarded by the web server. Furthermore, a common action is to close the established HTTP session.<br><br>The only way to request a URL several times is to re-generate the associated token. One possible way of doing this is using the <a href="http://en.wikipedia.org/wiki/HTTP_referer">referrer header</a> in order to go backwards identifying all the requests involved in the creation of the token and request them again in order to regenerate it.<br><br>Shown below is an example where a user has to click through two menus in order to reach the “inject.jsp” page:</p><ul><li><a href="http://localhost:8080/injection_CSRF/index,jsp">http://localhost:8080/injection_CSRF/index,jsp</a></li><li><a href="http://localhost:8080/injection_CSRF/index2.jsp?org.apache.catalina.filters.CSRF_NONCE=2AC1162C4CA176122F2BAA591B1F360E">http://localhost:8080/injection_CSRF/index2.jsp?org.apache.catalina.filters.CSRF_NONCE=2AC1162C4CA176122F2BAA591B1F360E</a></li><li><a href="http://localhost:8080/injection_CSRF/inject.jsp?id=1&amp;org.apache.catalina.filters.CSRF_NONCE=1EB3952B5BB391C7936A862DF8940DF0">http://localhost:8080/injection_CSRF/inject.jsp?id=1&amp;org.apache.catalina.filters.CSRF_NONCE=1EB3952B5BB391C7936A862DF8940DF0</a></li></ul><p>In order to perform an automatic scan of the third request, the two previous requests must be performed sequentially as each of these requests contains a new generated token needed for the next request, forming a token chain.<br><br>A POC in the form of a Burp suite plugin has been developed to verify this approach, it can be downloaded at <a href="http://code.google.com/p/pysqlin/downloads/list">https://github.com/xmendez/misc</a>. This plugin has been successfully tested against a simple vulnerable application using <a href="http://tomcat.apache.org/tomcat-6.0-doc/config/filter.html">tomcat CSRF protection</a> (all the requests in the token generation chain must be requested before testing a given URL).<br><br>It should be noted however that this code is a POC and it requires further development in other to be able to work against real environments (any link of a webapp with this behavior is appreciated).</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=f63ed00db3e0" width="1" height="1" alt=""><hr><p><a href="https://medium.com/edge-security/testing-csrf-aware-webapps-with-burp-f63ed00db3e0">Testing CSRF aware webapps with Burp</a> was originally published in <a href="https://medium.com/edge-security">Edge-Security</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Wfuzz 2.0 released!]]></title>
            <link>https://medium.com/edge-security/wfuzz-2-0-released-5e1f5147f32f?source=rss----780ec6935a6---4</link>
            <guid isPermaLink="false">https://medium.com/p/5e1f5147f32f</guid>
            <dc:creator><![CDATA[Xavi Méndez]]></dc:creator>
            <pubDate>Mon, 08 Aug 2011 09:44:00 GMT</pubDate>
            <atom:updated>2018-06-07T14:48:20.774Z</atom:updated>
            <content:encoded><![CDATA[<p>Hi All!<br><br><br>After Christian presentation at BlackHat/2011 Tools Arsenal, I’m pleased to announce a new version of <strong>WFuzz</strong>! It is now more flexible, dynamic and extensible than ever!</p><p><strong>Wfuzz</strong> is a tool designed for bruteforcing Web Applications, it can be used for finding resources not linked (directories, servlets, scripts, etc), bruteforce GET and POST parameters for checking different kind of injections, bruteforce Forms parameters (User/Password), Fuzzing,etc.</p><p>Highlights in this version:</p><p>- Infinite payloads. You can now define as many FUZnZ words as you need .</p><p>- Multiple encoders per payload. You can now define as many encoders as you need for each payload independently.</p><p>- Payload combination. You can now combine your payloads in different ways by specifying</p><p>iterators.</p><p>- Increased flexibility. You can now define in an easy way new payloads, iterators, encoders and output handlers and they will be part of wfuzz straight away.</p><p>- Baseline support. You can now define a default value for each payload and compare the results against them.</p><p>Other new features include:</p><p>- New payloads</p><p>- New encoders</p><p>- Magictree output</p><p>- Support for multiple proxies</p><p>- Time delay between requests</p><p>- Follow HTTP redirects</p><p>- Fuzz within HTTP methods</p><p>- HTTP HEAD scan</p><p>- SOCKS4/SOCKS5 support</p><p>More detailed examples in the README and the google code project page !</p><p>Check it at <a href="http://code.google.com/p/wfuzz/">http://code.google.com/p/wfuzz/</a>!!</p><p>Stay tuned! We have a lot of improvements and ideas coming up!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=5e1f5147f32f" width="1" height="1" alt=""><hr><p><a href="https://medium.com/edge-security/wfuzz-2-0-released-5e1f5147f32f">Wfuzz 2.0 released!</a> was originally published in <a href="https://medium.com/edge-security">Edge-Security</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Blackhat Arsenal USA]]></title>
            <link>https://medium.com/edge-security/blackhat-arsenal-usa-cd7c1b0b3311?source=rss----780ec6935a6---4</link>
            <guid isPermaLink="false">https://medium.com/p/cd7c1b0b3311</guid>
            <category><![CDATA[blackhat]]></category>
            <dc:creator><![CDATA[Chris]]></dc:creator>
            <pubDate>Sun, 31 Jul 2011 16:07:00 GMT</pubDate>
            <atom:updated>2018-06-07T14:48:11.639Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/300/0*WG6OoMMteTWxzWmw" /></figure><p>Hi all, we are proud to announce that we are going to present at Blackhat Arsenal USA 2011.<br><br>We are presenting on Wednesday Wfuzz and Webslayer 2.0 and on Thurdsay theHarvester + Metagoofil 2.0! both days at 11:15hs.<br><br>http://blackhat.com/html/bh-us-11/bh-us-11-arsenal.html<br><br>If you want to say hello pass by our pod!<br><br>See you there<br><br>Edge-Security</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=cd7c1b0b3311" width="1" height="1" alt=""><hr><p><a href="https://medium.com/edge-security/blackhat-arsenal-usa-cd7c1b0b3311">Blackhat Arsenal USA</a> was originally published in <a href="https://medium.com/edge-security">Edge-Security</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Scanning ports through SSH Port Forwarding]]></title>
            <link>https://medium.com/edge-security/scanning-ports-through-ssh-port-forwarding-e5ba49dd03f0?source=rss----780ec6935a6---4</link>
            <guid isPermaLink="false">https://medium.com/p/e5ba49dd03f0</guid>
            <category><![CDATA[brute-force]]></category>
            <category><![CDATA[scanner]]></category>
            <dc:creator><![CDATA[Chris]]></dc:creator>
            <pubDate>Wed, 22 Jun 2011 22:18:00 GMT</pubDate>
            <atom:updated>2018-06-07T14:48:17.622Z</atom:updated>
            <content:encoded><![CDATA[<p>In one of the latest penetration tests we faced a SSH server that was based in Maverick SSHTOOLS.<br><br>The funny thing is that this server was implemented by copy &amp; pasting the example from the web, which had the Port forwarding feature enabled.<br><br>After running a bruteforce attack, we found that the admin account had the “admin” password (strong password policy btw), but when we tried to login there was no shell, the server echoed everything we typed. So we went for the Port forwarding option, we forwarded some ports to interesting services like Terminal Server in the same machine and it worked, so then we though that would be great to be able to scan the internal network through this port forwarding feature, and that´s how we came up with this SSHscan tool.<br><br>SSHscan.py will allow you to scan a internal network through a SSH with port forwarding enabled. The tool allows to create a port forward in localhost for every open port detected in the internal network range.<br><br>This tool is not one that can be used in every engagement but when you have the opportunity and the need it will came handy.<br><br>The tool has been included in the edgeSSH kit, where we will include all the scripts related with SSH, at the moment only bruteSSH, a SSH login bruteforcer and scanSSH are included in the kit. <br><br>You can download the code here://code.google.com/p/edgessh <br><br>Command line options:<br><br> -h: target host<br> -u: username<br> -p: password<br> -l: targets lists to scan<br> -t: threads<br> — remote-host: host to scan<br> — remote-ports: port list to scan<br> — default-ports: scan default ports<br> — all-ports: scan all 65535 ports<br> — keep-tunnels: Forward all open ports<br><br>Examples:<br><br> scanssh.py -h 192.168.1.55 -u root -p passowrd -t list.txt<br> scanssh.py -h 192.168.1.55 -u root -p password — remote-host 127.0.0.1 — remote-ports 80,443<br> scanssh.py -h 192.168.1.55 -u root -p password — remote-host 127.0.0.1 — default-ports<br><br>Enjoy Edge-Security</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e5ba49dd03f0" width="1" height="1" alt=""><hr><p><a href="https://medium.com/edge-security/scanning-ports-through-ssh-port-forwarding-e5ba49dd03f0">Scanning ports through SSH Port Forwarding</a> was originally published in <a href="https://medium.com/edge-security">Edge-Security</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[OWASP VI Spain Meeting -2010: And still bruteforcing]]></title>
            <link>https://medium.com/edge-security/owasp-vi-spain-meeting-2010-and-still-bruteforcing-82bd72bf38d8?source=rss----780ec6935a6---4</link>
            <guid isPermaLink="false">https://medium.com/p/82bd72bf38d8</guid>
            <category><![CDATA[owasp]]></category>
            <dc:creator><![CDATA[Chris]]></dc:creator>
            <pubDate>Fri, 09 Jul 2010 20:15:00 GMT</pubDate>
            <atom:updated>2018-06-07T14:48:22.765Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/60/0*NXmRDWJJUgqoD6a1.jpg" /></figure><p>Hi all, the past 19 of June i presented at OWASP VI Spain Meeting, a review of Bruteforce attacks in web applications, this is an old technique that is still useful for the attackers, and i showed with examples that is present in many attacks that affect big companies like Facebook, Yahoo, AT&amp;T, Tuenti, etc. Also i presented the latest version of Webslayer a tool to perform all kind of bruteforce attacks in web applications.</p><p>You can find the presentation here:</p><iframe src="https://drive.google.com/viewerng/viewer?url=https%3A//www.owasp.org/images/2/2a/Bruteforce2010.key.pdf&amp;embedded=true" width="600" height="780" frameborder="0" scrolling="no"><a href="https://medium.com/media/f442fc17d5cc580db6f275d3bd8032dc/href">https://medium.com/media/f442fc17d5cc580db6f275d3bd8032dc/href</a></iframe><p>And also the video of the talk (spanish) <a href="http://www.poisonclub.com.ar/2010/06/30/resumen-y-contenido-multimedia-de-vi-owasp-spain-chapter-meeting-barcelona-2010/">here</a>.</p><p>Here is a picture of the conference showing the Webslayer results interface:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/912/0*jXCTyW1ncENPpsS5.JPG" /></figure><p>Next version will add some requested features like multiple proxies support, delay between request, and many more.</p><p>Stay tuned and enjoy…</p><p>Christian</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=82bd72bf38d8" width="1" height="1" alt=""><hr><p><a href="https://medium.com/edge-security/owasp-vi-spain-meeting-2010-and-still-bruteforcing-82bd72bf38d8">OWASP VI Spain Meeting -2010: And still bruteforcing</a> was originally published in <a href="https://medium.com/edge-security">Edge-Security</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Massive Web Application discovery with Wfuzz]]></title>
            <link>https://medium.com/edge-security/massive-web-application-discovery-with-wfuzz-4d5f284a1aad?source=rss----780ec6935a6---4</link>
            <guid isPermaLink="false">https://medium.com/p/4d5f284a1aad</guid>
            <category><![CDATA[web-apps]]></category>
            <category><![CDATA[web-security]]></category>
            <category><![CDATA[brute-force]]></category>
            <category><![CDATA[wfuzz]]></category>
            <dc:creator><![CDATA[Chris]]></dc:creator>
            <pubDate>Fri, 14 May 2010 21:46:00 GMT</pubDate>
            <atom:updated>2018-06-07T14:48:31.860Z</atom:updated>
            <content:encoded><![CDATA[<p>Last week i had to review like 40 websites for a penetration test in a short period of time, so the first thing i wanted was to search for directories or files in the web servers, so how can i automate the full scan with Wfuzz? We can use a command like this:</p><p>$ wfuzz -c -z file -f urllist.txt,dictionary.txt — html — hc 404 <a href="http://fuzz/FUZ2Z">http://FUZZ/FUZ2Z</a> 2&gt; results.html</p><p>The first FUZZ will be replaced with the content of urllist.txt, where you should have the websites address in the format “www.target.com&quot;, and the second FUZ2Z will be replaced with the dictionary, in my case i used the big.txt.</p><p>Soon i will release an update of Webslayer, and will show how to do this with it.</p><p>Enjoy!</p><p>Laramies</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=4d5f284a1aad" width="1" height="1" alt=""><hr><p><a href="https://medium.com/edge-security/massive-web-application-discovery-with-wfuzz-4d5f284a1aad">Massive Web Application discovery with Wfuzz</a> was originally published in <a href="https://medium.com/edge-security">Edge-Security</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>