网安学习(二)

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()函数,防守十分严格,基本无风险。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值