web(xss漏洞作业)

news/2024/11/13 21:27:40/文章来源:https://www.cnblogs.com/zdytom/p/18539519

web安全作业(xss漏洞)

需要掌握的知识

  1. XSS漏洞(原理、分类、危害、常用的payload)
  2. XSS平台的搭建与使用

理论作业

1.xss 漏洞原理?

2.XSS的类型?

3.反射型XSS和存储型XSS的区别?

4.XSS的攻击过程?

5.XSS常用的payload构造方法?

1.原理:攻击者在有漏洞的前端页面嵌入恶意代码,导致受害者访问页面时不知情的情况下触发恶意代码,获取受害者关键信息。
其本质上还是对输入输出的过滤限制不严格,导致精心构造的恶意脚本输入后,在前端被当做有效代码并执行。

2.可以分为反射型,存储型,DOM型

3.区别:
反射型xss与服务端交互,一次性,又称非持久型xss
存储型又叫持久型xss,攻击脚本将被永久地放在目标服务器的数据库或文件中,具有很高的隐蔽性

4.xss攻击过程:用户请求一个经过专门设计的URL,它由攻击者提交,而且其中包含XSS代码。服务器的响应不会以任何形式包含攻击者的脚本。当用户的浏览器处理这个响应时,DOM对象就会处理XSS代码,导致存在XSS漏洞。

5.常见payload构造方法:
' onclick="alert('xss')"
'><img src="#" onmuouseover="alert('xss')">
"><img src=1 onerror=alert("xss")>
<script>alert(1)</script>
<svg onload=alert(1)>
<a href=javascript:alert(1)>
onclick=alert(1);

实践作业

任务1:完成dvwa的XSS实验

任务2:完成pikachu的(反射型XSS、存储型XSS、DOM型XSS)XSS实验

任务3:找到book网站的XSS漏洞

任务4:xss-labs-master靶场练习

任务一 dvwa的xss实验

low级别xss

Reflected xss

源代码:

fig:

可以看到low级别只判断了name参数是否为空,并没有对name参数做任何过滤和检查,存在非常明显的xss漏洞

所以我们输入 <script> alert('goodevenning') </script>,直接执行我们的js代码

fig:

fig:

Stored xss

源代码:

fig:

trim(string,charlist) : 移除string字符两侧的预定义字符,预定义字符包括\t 、 \n 、\x0B 、\r以及空格,可选参数charlist支持添加额外需要删除的字符

stripslashes(string): 去除掉string字符的反斜杠\

mysqli_real_escape_string(string,connection) :函数会对字符串string中的特殊符号(\x00,\n,\r,\,‘,“,\x1a)进行转义。

GLOBALS 这种全局变量用于在 PHP 脚本中的任意位置访问全局变量(从函数或方法中均可)。PHP 在名为 $GLOBALS[index] 的数组中存储了所有全局变量。变量的名字就是数组的键。

可以看出,low级别的代码对我们输入的message和name并没有进行XSS过滤,而且数据存储在数据库中,存在比较明显的存储型XSS漏洞

我们输入 Twilight 和 <script>alert('sparkle')</script>,可以看到,我们的js代码立即就执行了

fig:

fig:

DOM xss

源代码:

fig:

可见low级别没有任何的保护性措施,页面对default参数没有任何的过滤

所以构造xss代码然后回车访问即可

xss_d/?default=<script>alert('Twilight Sparkle')</script>fig:

fig:

medium级别xss

Reflected xss

源代码:

fig:

pre元素可定义预格式化的文本。被包围在pre元素中的文本通常会保留空格和换行符,而文本也会呈现为等宽字体。

可以看到该级别的代码只是在low级别上增加了对script的过滤,并没有多大用,可以直接大写绕过,也可以换标签

<SCRIPT>alert('暮光闪闪')</SCRIPT>

fig:

然后看网页代码发现,虽然躲过了过滤,但是最后输出的却是小写

fig:

Stored xss

源代码:

fig:

addslashes(string) :函数返回在预定义字符之前添加反斜杠的字符串,预定义字符 ' 、" 、\ 、NULL

strip_tags(string) :函数剥去string字符串中的 HTML、XML 以及 PHP 的标签

htmlspecialchars(string): 把预定义的字符 "<" (小于)、 ">" (大于)、& 、‘’、“” 转换为 HTML 实体,防止浏览器将其作为HTML元素

当我们再次输入1 和 <script>alert('hack')</script>,strip_tags函数把<script>标签给剥除了,addslashes函数把 ' 转义成了 \ '

fig:

在操作之前,先去数据库删去之前插入的数据

fig:

虽然message参数把xss都给过滤了,但是name参数只过滤了<script>标签,唯一一点就是name参数有长度限制,最大长度为10

所以我们选择抓包

fig:

修改经过url编码后的<script>al为%3CSCRIPT%3Ealert('hack')%3C%2FSCRIPT%3E

放包后就可以看到

fig:

DOM xss

源代码:

fig:

可以看到,medium级别的代码先检查了default参数是否为空,如果不为空则将default等于获取到的default值。这里还使用了stripos 用于检测default值中是否有 <script> ,如果有的话,则将 default=English 。

很明显,这里过滤了<script> (不区分大小写),那么我们可以使用

<imgsrc=1 onerror=('hack')>

然而没有弹窗,查看网页代码发现确实插入到value,但是没有插入到option标签的值中,所以img没有发挥任何作用

fig:

因此要先闭合之前的标签,构造语句:

<option value=' " + lang + " '> " + decodeURI(lang) + " </option>

default=></option><img src=1 onerror=alert("fluttershy")>

结果还是没有执行,因为</option>闭合了option标签,所以img没有插入,只插入了>

于是我们继续构造语句去闭合select标签,这下我们的img标签就是独立的一条语句了

default= ></option></select><img src=1 onerror=alert('fluttershy')>成功插入并弹窗

fig:

high级别xss

Reflected xss

源代码:

fig:

preg_replace( '/<(.)s(.)c(.)r(.)i(.)p(.)t/i', '', $_GET[ 'name' ] ); 该句使用正则表达式过滤,*代表一个或多个任意字符,i不区分大小写。因此只能使用新标签img,body等标签的事件或者iframe等标签的src注入恶意js代码

输入<img src=1 onerror=alert("Sunset-Shimmer")>

意思是,当图片显示错误时,然后执行 alert('hack') ,这里我们的src=1肯定显示错误啊,所以就执行alert语句。

fig:

Stored xss

源代码:

fig:

相比medium,只是在name参数处用了正则表达式过滤而已,依然可以抓包修改,不过要用img标签

<img src=1 onerror=alert('rainbow-dash')>

经过URL编码后

%3Cimg%20src%3D1%20%20onerror%3Dalert('rainbow-dash')%3E%20%0A%0A

接着放包就可以看到,当然搞完后要去数据库把它删了

fig:

DOM xss

源代码:

fig:

可以看出用了白名单,必须有其中一个才行,但是只检测default参数,所以我们双参数绕过即可

default=English&=<script>alert('startlight-glimmer')</script>

fig:

任务2:完成pikachu的XSS实验

反射型xss(get)

首先随便输入一个试试,看有没有过滤什么字符

fig:

发现没有过滤什么便插入js语句,这里有长度限制,可以F12看网页源码能不能修改长度,不能再抓包

fig:

改成100后就直接输入语句即可,<script>alert("Apple-Jack")</script>fig:

fig:

反射型xss(post)

登陆密码admin,123456

然后和上面一样的操作

直接输入<script>alert("my-little-pony")</script>fig:

虽然这个页面有xss漏洞,但是由于是POST方式,我们不能把嵌入到url中,所以我们需要换一种思路去利用该类型的漏洞。

xss反射型(post)利用方式

存储型xss

步骤与之前一样第一步插入特殊字符看是否有过滤,第二步直接插入完整的js代码

<script>alert("Pinkie-Pie")</script>

fig:

DOM型xss

DOM可以简单理解为一个访问HTML的标准的编程接口,可以使得js通过该接口对整个HTML界面进行各种操作,并且DOM是前端的操作不会涉及到后端。

操作和之前差不多,先输入特殊字符看有没有过滤

fig:

发现没啥回显,输入123看下网页代码

fig:

提示说:

可以看到这是一段js代码并且调用了dom中getElementById获取到了标签 Id 为 text的内容赋值给str,然后又把 str 的内容通过字符串拼接的方式写到了 a 标签的 href 属性中,a标签会写到 Id 为 dom的 div 标签中。

输入的内容放在a标签内,没编码(由第一个输入验证的),是双引号

我们可以尝试闭合的方式构造一个我们想要的payload(javascript:alert("rethym"))(#' onclick=alert("xss")>)

点击what do you see?

fig:

先测试过滤,结果有点奇怪,输入123看网页代码,发现和上一个差不多

payload一样

任务3:找到book网站的XSS漏洞

在签写留言处,有xss漏洞,可以通过网页源码看出

在内容框中插入<script>alert("xss")</script>

留言成功后,网页返回到查看留言的地方时会出现弹窗,是存储型xss

fig:

在作者处插入<script>alert("xss")</script>也可以,img标签失败了,估计标题处也是,都是插入到数据库的存储型xss漏洞

fig:

任务4:xss-labs-master靶场练习

这个之后用新文件写在一起,这里不做展示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/831764.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QRust(一) 简介

QRust是一个开源组件,是Qt和Rust两种语言的混合编程中间件,是Qt调用Rust函数的支持技术。QRust来源于工具软件OnTheSSH,OnTheSSH软件由Qt和Rust两种语言共同构建,Rust实现了SSH通讯底层协议,Qt搭建程序界面,Qt调用Rust的技术需求催生出了QRust。 一个使用QRust的例子: R…

服务器漏洞修复:TLS 1.0 已启用、HSTS、CSP

1、TLS 1.0 已启用 描述: 此 Web 服务器支持通过 TLS 1.0 加密。TLS 1.0 不被认为是“强密码术”。根据 PCI 数据安全标准 3.2(.1) 的定义和要求,在保护从网站往返的敏感信息时,TLS 1.0 并不被认为是 "强加密"。根据 PCI,"2018 年 6 月 30 日是禁用 SSL/早前…

一款 C# 编写的神经网络计算图框架

前言 深度学习技术的不断发展,神经网络在各个领域得到了广泛应用。为了满足 .NET 开发的需求,推荐一款使用 C# 编写的神经网络计算图框架。 框架的使用方法接近 PyTorch,提供了丰富的示例和详细的文档,帮助大家快速上手。 框架介绍 项目完全使用 C# 编写,提供了一个透明的…

安全通道异常识别系统

安全通道异常识别系统通过安装在消防通道附近的监控摄像头,安全通道异常识别系统对安全通道进行24小时不间断的监控。当系统检测到防火门被异常开启或安全通道被堵塞时,会立即启动警告机制,通过声音、灯光等方式提醒相关人员进行处理。同时,系统还会将异常信息实时传输到监…

creator2.4.5 astc问题排除

最近将creator2.4.5 发布web版本, 需要将所有的图片转astc, 但是不能无脑转, 需求去除预乘alpha的图片。 也就是 { "__type__": "cc.Texture2D", "content": "0,9729,9729,33071,33071,1,0,1" }这个content.split(",")[5…

工地施工机械设备识别检测系统

工地施工机械设备识别检测系统基于AI人工智能机器视觉分析识别技术,工地施工机械设备识别检测系统利用现场安装的监控摄像头,通过深度学习和图像识别技术,实现对工地上重型机械车辆的自动识别。这些重型机械车辆包括但不限于挖掘机、推土机、吊车等。一旦系统识别到这些车辆…

山体滑坡泥石流预警监测系统

山体滑坡泥石流预警监测系统基于AI人工智能机器视觉分析识别技术,山体滑坡泥石流预警监测系统通过利用现场监控摄像头,实现了对高危路段山体的实时监测。这种技术不仅取代了传统的人工巡查,提高了工作效率,守护人们的生命安全。山体滑坡泥石流预警监测系统的核心在于其强大…

数据库设计心得-实习空间

数据库设计心得——实习空间 前言 在软件工程导论以及数据库实验课程中,我们学习了如何通过分析业务需求来构建数据库实体对象以及PowerDesigner的使用。最终通过PowerDesigner完成了本项目的数据库概念模型、物理模型的设计。以下是我们团队的数据库设计过程以及一些心得体会…

智启新篇 | 您的专属AI大模型解决方案!

随着汽车智能化程度的不断提升,智能座舱作为汽车的重要组成部分,其功能和复杂度也在不断增加。从多屏交互、增强现实(AR)技术到个性化设置和语音交互,智能座舱为驾驶者提供了前所未有的驾驶体验。然而,这些新技术的引入也使得智能座舱的测试变得更加复杂和困难。在这样的…

团队作业4——项目冲刺-1

团队作业4——项目冲刺信息项 内容课程名称 广工计院计科34班软工作业要求位置 作业要求作业目标 小飞棍团队对需求改进和系统设计进行讨论GitHub链接 GitHub一、团队简介队名:小飞棍队团队成员:姓名 学号罗振烘(组长) 3122004748庄崇立 3122004633李响 3121002802何昌洲 3…

# 学期(如2024-2025-1) 学号(如:20241402) 《计算机基础与程序设计》第8周学习总结

学期(如2024-2025-1) 学号(如:20241402) 《计算机基础与程序设计》第8周学习总结 作业信息这个作业属于哪个课程 <班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里 <作业要求的链接>(如2024-2025-1计算机基础与程序设计第一周作业)这个…

XXL-JOB docker 初始化

一、因为xxl-job 使用的是mysq 数据库,所有在 yaml 文件中,需要优先启动 mysql version: 3 services:mysql:image: mysql:8.0container_name: mysql8restart: alwaysenvironment:MYSQL_ROOT_PASSWORD: 123456MYSQL_DATABASE: xxl_jobports:- "3307:3306"xxl-job:im…