<div dir="ltr">Achim<div><br></div><div>Actually I believe you've just described Reflected XSS. </div><div><br></div><div>This is my take on it, I haven't seen any 'sane' explanation of this anywhere yet... Here goes.</div>
<div><br></div><div>Whether it's run inside the <script> tag or as an attribute/event handler or anywhere else is largely irrelevant I think. The attack is not sent in the request and it is not reflected in the response. This is the main point. Using the other description, all XSS attacks are both: DOM and Reflected. Which is fine, it's only names, but why do we have two definition then?</div>
<div><br></div><div>DOM based XSS, my understanding, is an attack that is not<b> </b>sent to the server. Hence the fragments... using '#js_here' string will send the first part of the request to the server, but not the fragment... </div>
<div><br></div><div><br></div><div>my 2c</div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">
On Tue, Oct 22, 2013 at 11:16 PM, Achim <span dir="ltr"><<a href="mailto:achim@owasp.org" target="_blank">achim@owasp.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi Serg,<br>
<br>
your 50% correct ;-)<br>
<br>
your example<br>
    <a href="http://www.some.site/page.html?default=xss_attack_here" target="_blank">http://www.some.site/page.html?default=xss_attack_here</a><br>
<br>
can serve for both, reflected XSS and/or DOM-based XSS.<br>
It's reflected as you described if the server sends it back and then will be<br>
rendered, but it can also be DOM-based if the send back page makes use of<br>
'xss_attack_here' in it's scripts.<br>
<br>
In both cases it's entirely processed in the browser.<br>
<br>
Does this make sense?<br>
Achim<br>
<br>
<br>
<br>
Am 22.10.2013 13:05, schrieb Serg:<br>
<div class="HOEnZb"><div class="h5">> Hi All<br>
><br>
> I've recently had a look at the OWASP DOM based XSS definition, which<br>
> looked a little off.<br>
><br>
> The TL;DR version: the DOM based XSS definition according to OWASP (<br>
> <a href="https://www.owasp.org/index.php/DOM_Based_XSS" target="_blank">https://www.owasp.org/index.php/DOM_Based_XSS</a>) is only 50% correct (or the<br>
> pessimistic view - 50% wrong) and misleading.<br>
><br>
> I am basing this on the 'Definition' examples (<br>
> <a href="https://www.owasp.org/index.php/DOM_Based_XSS" target="_blank">https://www.owasp.org/index.php/DOM_Based_XSS</a>), not the 'Advanced<br>
> Techniques and Derivatives' section.<br>
><br>
> The first part of this document is incorrect.<br>
><br>
> In layman's terms, the Reflected XSS, request/JS is first sent to the<br>
> server, it is then reflected, as is, in the response, hence the name.<br>
><br>
> Example:<br>
><br>
> <a href="http://www.some.site/page.html?default=xss_attack_here" target="_blank">http://www.some.site/page.html?default=xss_attack_here</a><br>
><br>
> Since the query string gets sent to the server and reflected back, this is<br>
> a Reflected XSS, not DOM-based.<br>
><br>
> The 'xss_attack_here' part is irrelevant here. As long as it is sent to the<br>
> server and reflected back, it's a Reflected XSS vulnerability. Whether it<br>
> runs in DOM or not is irrelevant, technically everything runs in DOM...<br>
><br>
> My understanding of DOM based XSS, is: it is processed entirely in the web<br>
> browser, the request with XSS payload is not sent to the server.<br>
><br>
> As far as I know, the only way to achieve that is to use fragment<br>
> identifiers, the part of the URL after the '#' (including '#') is not sent<br>
> to the server as part of the request.<br>
><br>
> Based on that, I am fairly certain that the current OWASP definition (<br>
> <a href="https://www.owasp.org/index.php/DOM_Based_XSS" target="_blank">https://www.owasp.org/index.php/DOM_Based_XSS</a>) is wrong and misleading.<br>
><br>
><br>
> Thoughts?<br>
<br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>Serg
</div>