合天网安2020年WEB安全培训小结(二)
作者:互联网
http://momomoxiaoxi.com/2017/10/10/XSS/
https://github.com/pgaijin66/XSS-Payloads/blob/master/payload.txt
课程的第二部分是关于XSS攻击的,在开始正式学习之前,先了解一下XSS的概念。
XSS(跨站脚本攻击),利用网页开发时的漏洞,通过某种方法注入恶意代码到网页,使用户加载并执行攻击者恶意制造的网页程序。XSS攻击的原理还是依赖HTML语言的一些特性来实现的,所以先看看基本的HTML知识。
HTML概述
HTML(Hypertext Marked Language),超文本标记语言,它通过标记符号来标记要显示的网页中的各个部分。
HTML文件是一个文本文件,其后缀名为.html或.xhtml。html可以直接由浏览器执行。
基础骨架
与限定了文档的开始点和结束点。 定义文档头部。 定义文档主体。head部分
1.
2. html的元信息标签,搜索引擎抓取网页时分析
body部分
1.<p> </p>:段落标签
2.<a> </a> :超链接标签
3.<img> :图片标签
4.布局标签
<div> </div>: 块级标签
<span> </span>: 行级标签
5.列表方式
无序 <ul> </ul>
有序 <ol> </ol>
自定义列表 <dl> </dl>
6.表格
格式:
<table>
<tr> //表格中的一行数据
<td> </td> //一行中的一个单元格
</tr>
</table>
7.form表单
8.HTML特殊符号
转义字符
JavaScript概述
JavaScript(简称JS)是作为开发Web页面的脚本语言。主要用来实现在浏览器端的动作:用户交互,数据处理。
HTML中JavaScript的嵌入
1.直接存在与<script> </script>标签中
2.在<script>的src属性或指定的外部文件中
3.在某个HTML事件处理器中
DOM操作
DOM(Document Object Model,文档对象模型),访问和操作HTML文档的标准方法。DOM是一个与平台、编程语言无关的接口,它允许程序或脚本动态地访问和更新文档内容、结构和样式,处理后的结果能够成为显示页面的一部分。
XSS攻击
XSS(Cross Site Scripting,跨站脚本攻击),是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
分类
1.反射型XSS:<非持久化> 攻击者事先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。
2.存储型XSS:<持久化> 代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,每当有用户访问该页面的时候都会触发代码执行,这种XSS非常危险,容易造成蠕虫,大量盗窃cookie(虽然还有种DOM型XSS,但是也还是包括在存储型XSS内)。
3.DOM型XSS:基于文档对象模型Document Objeet Model,DOM)的一种漏洞。DOM中有很多对象,其中一些是用户可以操纵的,如uRI ,location,refelTer等。客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM XSS漏洞。
漏洞原理及其预防(以DVWA为演示平台)
1.XSS (Reflected)
低安全级别
通过后端代码,我们可以得知该文本框没有做任何的过滤动作,所输入的内容可以完全被嵌入HTML语句中,我们可以通过输入script脚本来实现功能。
中安全级别
中等级别相较于低等级别,增加了对于script脚本的过滤,将字符串里的<script>替换为空,但仍可通过其他方法,例如大写,<img>,双写。
不存在的图片路径,会触发onerror。
高安全级别
高级别的增加了对<script>的正则匹配,且忽略大小写,但我们仍能通过<img>等来注入。
不可能安全级别
通过htmlspecialchars函数将特殊字符转换为HTML实体。
2.XSS (Stored)
1.低安全级别
trim() 函数移除字符串两侧的空白字符或其他预定义字符。
stripslashes() 函数删除由 addslashes() 函数添加的反斜杠。该函数可用于清理从数据库中或者从 HTML 表单中取回的数据。
mysqli_real_escape_string() 函数转义在 SQL 语句中使用的字符串中的特殊字符。
虽然采取了很多手段,但是没有防护XSS攻击的,我们还是可以很简单的注入脚本。
中安全级别
message:
strip_tags() 函数剥去字符串中的 HTML、XML 以及 PHP 的标签。
addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。
name:
无防护
直接在name出注入即可。
高安全级别
name:
对<script>标签进行正则匹配,可以用<img>标签来注入。
不可能安全级别
stripslashes()函数,htmlspecialchars()函数,防守十分严格,基本无风险。
标签:WEB,函数,DOM,天网,标签,HTML,2020,安全级别,XSS 来源: https://blog.csdn.net/wliiam/article/details/104593803