GaussDB(DWS)安全测试之XSS注入
【摘要】 1) XSS常见攻击类型1.1 反射型XSS(Reflected XSS Attacks)反射型XSS简单的把带有恶意代码的链接“反射”给浏览器。简单讲,就是链接中存在恶意代码,当受害者请求这样的链接时,恶意代码经过服务端“反射”回来,反射型XSS的恶意代码通常不会存储到服务端,因此也叫“非持久型XSS”。反射型XSS常见的攻击步骤如下:攻击者...
1) XSS常见攻击类型
1.1 反射型XSS(Reflected XSS Attacks)
反射型XSS简单的把带有恶意代码的链接“反射”给浏览器。简单讲,就是链接中存在恶意代码,当受害者请求这样的链接时,恶意代码经过服务端“反射”回来,反射型XSS的恶意代码通常不会存储到服务端,因此也叫“非持久型XSS”。
反射型XSS常见的攻击步骤如下:
- 攻击者精心构造了一个包含恶意代码的URL,将其发送给受害者;
- 攻击者欺骗受害者,诱使受害者点击恶意URL;
- 网站在响应中包含了来自 URL 的恶意代码;
- 受害者浏览器执行了响应中的恶意代码。
反射型XSS特点:
- 该类型只是简单地将用户输入的数据直接或未经过完善的安全过滤就在浏览器中进行输出,导致输出的数据中存在可被浏览器执行的代码数据。
- 由于此种类型的恶意代码存在于URL中,需要将存在恶意代码的链接发给用户,只有用户点击以后才能使得攻击成功实施。
- 反射型XSS攻击是一次性的。
反射型XSS攻击示例:
- 用户提交信息后,输入的信息通过URL传输
- 讲URL中输入的“jams”修改为“<script>alert(1111)</script>”
- 点击提交后或点击该URL后出现弹窗,弹窗内容为“1111”
1.2 存储型XSS (Stored XSS Attacks)
也叫持久性XSS,恶意代码存储于服务端(比如数据库中),当其他用户浏览网页时,就会从服务端读取恶意代码。存储型XSS恶意代码可能会被多次查询输出页面并触发XSS攻击。
存储型XSS常见的攻击步骤如下:
- 攻击者在目标服务器上构造XSS恶意脚本,保存在服务端数据库中;
- 受害者在网站登录状态下访问目标服务器,查看了存在恶意脚本的页面;
- 网站在响应中包含了来自数据库的恶意字符串,并返回给受害者;
- 受害者的浏览器执行了响应中的恶意脚本。
存储型XSS特点:
- 恶意代码存储在服务端,每次查看恶意脚本页面均会触发,攻击是持久性的;
- 存储型XSS常见于留言板等地方。
存储型XSS攻击示例
- 正常留言“Hello GaussDB!”,留言正常显示
- 留言板输入<script>alert(1)</script>
- 提交后出现弹窗
- 查看留言板没有内容
- 查看数据库发现,该留言已经写入数据库中,每次进入该页面或刷新页面都会导致恶意脚本执行
1.3 DOM型XSS(DOM Based XSS Attacks)
DOM型XSS通过属性、样式、类等方式将恶意脚本插入到DOM,网页解析恶意脚本被执行,是一种客户端脚本自身解析漏洞导致的安全问题。从效果上来说也属于反射型XSS,与反射型XSS的区别在于,DOM型XSS由浏览器解析,与服务器没有交互,而反射型XSS与服务器有交互。
DOM型XSS特点:
- 浏览器解析,与服务器没有交互。
DOM型XSS攻击示例
- 填写正常的URL可以跳转到目标网页
跳转至
- 构造攻击代码:'' onclick="alert(1)",点击后出现弹窗
2) XSS攻击总结
2.1 XSS攻击的本质
XSS攻击的本质是HTML代码与JavaScript代码的注入,在我们访问主机的时候,会得到HTML页面返回给浏览器,如果HTML页面会被输入影响,则浏览器解析HTML的时候就会被攻击。
XSS攻击能成功要满足如下两大要素:
- 攻击者可以提交恶意代码
- 浏览器执行恶意代码
2.2 常见的注入方法
- 一般的原始构造为:<script>alert("xxx")</script>,实际上根据不同站点不同防护机制,对此构造进行一些变形有时就能绕过防护造成XSS注入攻击。
- href、style、src、url、data 等指定资源的属性,对应JavaScript协议执行JavaScript代码。(注意:并不是所有有上述属性的标签都执行,需要查或测试)
- onload、onerror、 onclick、 oncut、 onunload、onfocus、onblur等 onxxx event handlers,直接执行JavaScript代码。
- <script> 、<embed>、<applet>、<object>等外部标签,执行外部加载或从data协议获取的JavaScript代码。
2.3 常见的防护措施
- 对用户输入进行过滤,限制用户不能输入可能造成攻击的危险字符。
- 对代码输出进行编码。
- 避免使用危险函数、危险属性等。
想了解GuassDB(DWS)更多信息,欢迎微信搜索“GaussDB DWS”关注微信公众号,和您分享最新最全的PB级数仓黑科技,后台还可获取众多学习资料哦~
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)