[web安全学习] 跨站脚本攻击XSS

代码验证的渠道:
/etc/apache2/httpd.conf里,找到“DocumentRoot”的值。这是我们存放网页文件的地方。

验证php执行效果:
在 DocumentRoot 下面新建 info.php,内容如下:
<?php
echo “Hello world”;
phpinfo();
?>

# sudo apachectl restart
浏览器访问:http://127.0.0.1/info.php

至此,功能验证结束。

XSS sample1: 反射型XSS
下列脚本把用户的输入直接输出到页面上:
脚本名字:3-1-xss-1.php
脚本内容:
<?php
$input = $_GET[“param”];
echo “<div>”.$input.”</div>”;
?>

执行测试1:
http://127.0.0.1/3-1-xss-1.php?param=”This is a test”

运行结果为正常输出

执行测试2:
提交一段HTML代码
http://127.0.0.1/3-1-xss-1.php?param=<script>alert(/xss/)</script)

运行结果:
chrome会拦截该网页,旧版的IE浏览器就会执行脚本中包含的内容
查看源代码,结果为:
<div><script>alert(/xss/)</script)</div>

执行测试3:
新建一个html文件:3-1-xss-2.html
内容为:
<script>
function test(){
var str = document.getElementById(“text”).value;
document.getElementById(“t”).innerHTML = “<a href='”+str+”‘ >testLink</a>”;
}
</script>

<div id=”t” ></dev>
<input type=”text” id=”text” value=”” />
<input type=”button” id=”s” value=”write” onclick=”test()” />

在浏览器里访问:http://127.0.0.1/3-1-xss-2.html

执行结果:
case 1: 当在输入框输入正常的字符串“testurl”时,会生成一个 127.0.0.1/testurl 的链接供点击

case 2:当在输入框中构造如下数据:
‘ onclick=alert(/xss/) //
输入后,代码被构造成:
<a href=” onclick=alert(/xss/) //’ >testLink</a>
点击这个新构造出来的链接,恶意脚本alert(/xss/)将被执行

case 3: 另外一种构造方式——除了构造一个新事件外,还可以闭合掉<a>标签,插入一个新的HTML标签:
输入如下:
‘><img src=# onerror=alert(/xss2/) /><‘
新的代码如下:
<a href=”><img src=# onerror=alert(/xss2/) /><” >testLink</a>
恶意脚本alert(/xss2/)一样会被执行。

Leave a Reply

Your email address will not be published.