DVWA靶场超(详细教程)--跨站攻击(XSS+CSRF)

news2024/11/24 23:02:23

一、XSS

  1. 反射型xss

打开dvwa的Reflected Cross Site Scripting (XSS)

(1)low等级

查看页面源码(ctrl+u)该界面有提交按钮和输入框

在输入框随便输入点字符,点击提交

可以看见输入的helloword嵌入到界面中。

View source下:

if条件从参数中拿出name的值,直接echo出来。

头部的header函数,它是向用户发送最原始请求头的。不是本文的重要内容,我举个简单的例子,感兴趣的要学会去查(包括什么是请求头,请求头的作用是什么,header具体怎么使用等等)。

输入<script>alert("jerk")</script>

查看网页源码

服务器没对我们的输入进行过滤,直接将内容传给了浏览器,浏览器将<script></script>解析成脚本标签,alert当成js脚本代码执行了。

2Medium等级

将low等级改为Medium等级

同样的XSS脚本

脚本没有执行,把内容显示了出来,虽然并没有标签。查看后台干了什么

过滤"<script>"。多了一句str_replace。它将内容中的“<script>”去掉了(替换为空),我们的输入从<script>alert</script>变成了alert()</script>。

</script>没有显示出来呢?因为他会被浏览器当成标签,而不是显示内容。又因为浏览器没有找到</script>的前端<script>,标签没有闭合,所以<script>标签并没有起作用。alert被当做文本显示了出来。

查看网页源码

可以看见前面的标签还在,后面的标签不见了。

解决方法:其实方法有很多,有很多很多的绕过姿势,这里举例两个最简单的。1.调整大小写,后台中过滤的是“<script>”,字符串是不可变的,可以换成<SCRIPT>。

提交

可以看见标签弹出

调整大小写的方式很多,如somethingwithouttitle:

标题式调整:SomethingWithoutTitle

完全式调整:SOMETHINGWITHOUTTITLE

神经式调整:sOmeTHinGWithOutTiTle(随机调整)。

  1. 复写。这个方法在sql注入中有提到,例如过滤script,就在script中间任意位置再插入一个script。

将script过滤后,我前后的内容仍旧是一个script。

构造XSS:<scr<script>ipt>alert("jerk")</script>

提交

弹出成功

3High等级

将等级改为High等级

发现使用不同的方法都无法弹出标签

查看后台

tr_replace换成了preg_replace。正则匹配,看正则表达式:/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i。()内部为一个整体, 其中的.*点代表任意字符,星表示将前一单位重复0或多次。最后的/i表示不区分大小写。简单说,它过滤掉了所有包含<script的数据,无论怎样复写,而且还不区分大小写。

解决方法:对于安全级别为high等级,只是对script进行限制,但未限制其他方式。

1.<img src=x οnerrοr=alert(1)>

2.<iframe οnlοad=alert(1)>

成功进行弹窗。

4Impossible等级

无论怎样XSS,都不会有问题

view source:

核心语句:$name = htmlspecialchars( $_GET[ 'name' ] ),htmlspecialchars这个函数,就是做实体化用的,它会将输入的数据中预留字符全部转换,从而可以直接显示到界面上。不过仅此而已,但渗透也到此而已了,因为所有的输入都没有被执行的机会了。

  1. 存储型xss

打开dvwa的Stored Cross Site Scripting (XSS)模块

(1)low等级

数据库里的数据显示出来。

随机输入一些信息

下方多了一条输入的数据,如果重新加载页面,仍旧有这两条数据。这就是存储型,输入数据会被存入数据库,网页每次被打开,都会从数据库里调出显示。

先点击ClearGuestbook,清空一下在message中注入:<script>alert("This is low level")</script>

Sign之后

内容成功显示

我们先点击一下其他页面,再点回来

成功被触发了,name和message均成功。

(2)Medium等级

设置Medium等级

对message变量的处理:

strip_tags()函数。去除标签,包括html,xml,php标签。

htmlspecialchars()函数。前面谈到过,对html中一些预定义字符进行实体化,包括&,',",<,>。,看下name参数的处理。只是对输入数据过滤了“<script>”字符串。(替换为空)

通过前面我们的绕过姿势,应该没什么问题了吧。基本的两种方法:1.调整大小写;2.复写。

(3)High等级

img注入:<img src=1 οnerrοr=alert("high") />

数据输入过程中,Name只能输入10个字符,在Name输入框旁边,右键检查。找到限制属性maxlength,直接右键Edit attribute,改成100.

继续注入,Name不再受限制了。

尝试img标签,输入<img src=x οnerrοr=alert(1)>,成功的弹窗。src属性指定了要显示的图像的路径。然后,onerror事件被绑定到了alert("high")这个Javascript函数,当图像加载失败时,会触发这个事件并执行alert函数来显示一个弹窗。

(4)impossible等级

查看源码

对name进行和message同样的处理在update database阶段还进行了预处理连先前high等级注入的XSS,也被实体化后显示了出来

二、Kali Linux对DVWACSRF模块

1、low等级

分析

首先分析一下服务器的核心源码

GET方式得到三个参数,change、password_new、password_conf。如果password_new和password_conf相同,那么更新数据库,并没有任何防CSRF的措施。这里我们有多重攻击方式,比如直接构造链接、构造短链接和构造攻击页面。

< img src="http://192.168.241.133/DVWA/vulnerabilities/csrf/?password_new=test&password_conf=test&Change=Change#" border="0" style="display:none;"/>

<h1>404<h1>

<h2>file not found.<h2>

当受害者正在使用自己的网站(浏览器中还保存着session值)时,访问攻击者诱惑点击的此链接:

http://www.hack.com/test.html

误认为是自己点击的是一个失效的url:

但实际上已经遭受了CSRF攻击,密码已经被修改为test。

密码修改

在修改密码时获取url链接

在url链接进行密码修改

密码修改成功

使用CSRF.html文件进行修改密码

在window10编辑html文件,并存放进php文件。

在网页打开点开编辑好的html,点击Click Me。

修改成功

2、medium等级

使用html文件进行修改

在网页打开点开编辑好的html,点击Click Me。

修改成功

使用burpsuite抓包

打开开关

抓包

手工输入Referer:

修改成功

  1. High等级

查看源码

可以看出请求中多了token参数。由于每次访问token均会刷新,所以请求伪造时不能将请求参数写死。

方法一:

此时,攻击者可能会从以下两步进行攻击:

(1)先想构造一个网页。这个网页能获取本地浏览器中的token信息,然后将给信息拼接到所构造请求的参数中,最后在提交完整的请求报文。假设攻击者通过文件上传等漏洞将含有恶意代码的文件存放到服务器根目录下,文件名为CSRF.php。

(2)在利用存储型XSS漏洞引诱受害者点击激活上述网页。

步骤一:XSS漏洞利用

采用逆推的思路,方便验证每一步是否成功,因此实验进行过程中应先对XSS漏洞进行实验,确保该漏洞能被成功利用,就像Medium难度一样。

利用攻击者账号登录靶场,进入存储型XSS漏洞页面,按F12修改name参数允许输入长度,然后在将name参数输入是<a href="https://192.168.241.133/CSRF.html">webanquan</a>,message输入yep,并点击Sign。

步骤二:构造网页

设攻击者通过文件上传等漏洞将含有恶意代码的文件存放到服务器根目录下,文件名为CSRF.php,文件内容如下

靶机浏览器登录管理员账户,切换到存储型漏洞环境中,可以看到有该链接可以点,受害者点击该链接,跳转界面。

密码被修改

方法二:

抓包获取信息

获取user_token

下载插件脚本

使用获取信息

修改密码并send

查看Response显示修改成功

4.impossible等级

Impossible等级是一种非常重要的安全等级评估机制,它主要用于评估给定的某种信息系统或计算机是否具备足够的保护能力去抵抗or 阻止黑客的攻击和入侵。它是一种基于信息安全等级的机制,可以用于评估一个特定的信息系统或计算机是否具备足够的安全可靠性,以抵抗攻击和入侵。它将信息安全评估动机分为5个层次,分别为Impossible、 Extremely High、High、Medium、Low。

Impossible等级的机制主要包括以下几个部分:

1、首先,要对给定的某个特定的信息系统或计算机进行安全等级评估,以便发现可能存在的形形色色的漏洞。

2、然后,要尽可能快速地修复发现的这些漏洞,以确保系统的安全性能。可以采用安全补丁、增强安全功能等方式来进行修复。

3、最后,要采取有效的防御方法,避免系统受到攻击和入侵,比如建立访问控制机制,或采用入侵检测和防御技术等。

Impossible等级机制的修复和防御方法还可以包括:

1、应用密码管理。用户应该定期更改登录和数据库系统的密码,并确保密码强度足够。

2、应用访问控制机制,以限制对系统中的数据和应用的访问,以及对系统的配置和变更。

3、应用可信的入侵检测和防御技术,实时监测系统内的活动,及时发现可疑行为并采取相应的应对措施。

4、应用安全审计等机制,及时发现系统中存在的安全漏洞,并及时采取措施进行修复。

5、对数据库系统的变更要进行严格的审核,确保安全变更后的系统功能可用性。

通过以上几项策略,可以有效地帮助信息系统管理者提升系统的安全性能,充分保障系统安全可靠性,有效地防止黑客的攻击和入侵。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MybatisPlus的使用与详细讲解

今天我们来讲解一下Mybatis的升级版&#xff0c;就是MybatisPlus. MybatisPlus是如何获取实现CRUD的数据库表信息的&#xff1f; 默认以类名驼峰转下划线作为表名 默认把名为id的字段作为主键 默认把变量名驼峰转下划线作为表的字段名 1.MybatisPlus中比较常见的注解 TableN…

红人点集登录逆向+接口逆向:SHA256算法和Webpack反爬

&#x1f50d; 引言 红人点集采取了一系列加密和限制措施&#xff0c;主要是对于参数加密和登录token加密。今天利用Python与JavaScript逆向工程技术&#xff0c;实现逆向登录然后请求接口获取数据。 &#x1f50d; 思路与步骤详解 &#x1f527; 解密登录接口参数&#xf…

安防视频监控EasyCVR视频汇聚平台修改配置后无法启动的原因排查与解决

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台基于云边端一体化架构&#xff0c;兼容性强、支持多协议接入&#xff0c;包括国标GB/T 28181协议、部标JT808、GA/T 1400协议、RTMP、RTSP/Onvif协议、海康Ehome、海康SDK、大华SDK、华为SDK、宇视SDK、乐橙SDK、萤石云SD…

【Echarts示例】类甘特图的时间线图表

[示例] 类甘特图的时间线图表 const data [{ name: 预备阶段, start: 0, end: 2 },{ name: 战略展开, start: 2, end: 4 },{ name: 指挥所启动, start: 4, end: 6 },{ name: 电子对抗准备, start: 5.5, end: 7 },{ name: 首轮导弹发射, start: 7, end: 8.5 },{ name: 电子对抗…

Spark内核的设计原理

导读&#xff1a; 本期是DataFun深入浅出Apache Spark第一期的分享&#xff0c;主讲老师耿嘉安开场介绍了自己的从业经历&#xff0c;当前就职的数新网络与Spark相关的两款产品赛博数智引擎CyberEngine和赛博数据智能平台CyberData。 本次分享题目为《Spark内核的设计原理》&…

【测开能力提升-fastapi框架】fastapi能力提升 - 中间件与CORS

1. 中间件 1.1 介绍&#xff08;ChatGPT抄的&#xff0c;大致可以理解&#xff09; 一种机制&#xff0c;用于在处理请求和响应之前对其进行拦截、处理或修改。中间件可以在应用程序的请求处理管道中插入自定义逻辑&#xff0c;以实现一些通用的功能&#xff0c;如身份验证、…

系统架构设计师教程 第3章 信息系统基础知识-3.8 典型信息系统架构模型-解读

系统架构设计师教程 第3章 信息系统基础知识-3.8 典型信息系统架构模型-解读 3.8.1 政府信息化与电子政务3.8.1.1 电子政务的概念3.8.1.2 电子政务的内容3.8.1.2.1 政府与政府3.8.1.2.2 政府对企/事业单位3.8.1.2.3 政府对居民3.8.1.2.4 企业对政府3.8.1.2.5 居民对政府 3.8.1…

第一弹:基于ABAP OLE技术实现对服务器文件进行读写操作

前言 最近遇到这样一个需求&#xff0c;需要对BW服务器上的文件进行下载的同时写入每个用户相对应的数据。之前的服务器模版是一个死模版&#xff0c;对于这样的要求&#xff0c;我就想到了OLE技术&#xff0c;那么什么是OLE技术呢&#xff1f; 一、什么是OLE技术&#xff1f…

创建最佳实践创建 XML 站点地图--SEO

您是否正在努力让您的网站被搜索引擎索引&#xff1f;您想提高您网站的搜索引擎知名度吗&#xff1f;如果是&#xff0c;您可能会错过 XML 站点地图的重要性。XML 站点地图在改善您网站的 SEO 方面发挥着至关重要的作用。‍ XML 站点地图是您网站结构的蓝图&#xff0c;可帮助…

基于DPUSmartNic的云原生SDN解决方案

1. 方案背景与挑战 随着云计算&#xff0c;大数据和人工智能等技术的蓬勃发展&#xff0c;数据中心面临着前所未有的数据洪流和计算压力&#xff0c;这对SDN提出了更高的性能和效率要求。自云原生概念被提出以来&#xff0c;Kubernetes为云原生应用的落地提供了一个轻量级&am…

tolua++bug,int64强转double导致值不对

我C传值给lua&#xff0c;接口用的tolua。传过去值不对&#xff0c;我都懵逼了。是C强转问题。

C#中栈和堆以及修饰符

关于堆中字符串的存放 string s1"123" string s2"123" string s1"456" 此时s1输出为456 而s2仍然为123 因为在使用 String str "字符串" 的方式来创建String变量的时候&#xff0c;那么String的值便会存储在String常量池中&#x…

DevExpress中文教程 - 如何在.NET MAUI应用中实现Material Design 3?

DevExpress .NET MAUI多平台应用UI组件库提供了用于Android和iOS移动开发的高性能UI组件&#xff0c;该组件库包括数据网格、图表、调度程序、数据编辑器、CollectionView和选项卡组件等。 获取DevExpress v24.1正式版下载 Material Design是一个由Google开发的跨平台指南系统…

linux、windows、macos清空本地DNS缓存

文章目录 Linux&#xff1a;Windows&#xff1a;macOS&#xff1a; Linux&#xff1a; 对于使用systemd的操作系统&#xff08;如CentOS 7、Ubuntu 16.04&#xff09;&#xff0c;可以使用以下命令重启systemd-resolved服务来清除缓存&#xff1a; sudo systemctl restart sys…

Mistral联合英伟达开源12B小模型:碾压Llama 3,单张4090可跑

小模型&#xff0c;成为本周的AI爆点。 与动辄上千亿参数的大模型相比&#xff0c;小模型的优势是显而易见的:它们不仅计算成本更低&#xff0c;训练和部署也更为便捷&#xff0c;可以满足计算资源受限、数据安全级别较高的各类场景。因此&#xff0c;在大笔投入大模型训练之余…

【ROS2】高级:安全-设置访问控制

目标&#xff1a;限制节点可以使用的主题。 教程级别&#xff1a;高级 时间&#xff1a;20 分钟 内容 背景 修改 permissions.xml签署策略文件 启动节点 使用模板 背景 在继续之前&#xff0c;请确保您已完成设置安全教程。 权限非常灵活&#xff0c;可以用来控制 ROS 图中的许…

pytorch 笔记:torch.optim.Adam

torch.optim.Adam 是一个实现 Adam 优化算法的类。Adam 是一个常用的梯度下降优化方法&#xff0c;特别适合处理大规模数据集和参数的深度学习模型 torch.optim.Adam(params, lr0.001, betas(0.9, 0.999), eps1e-08, weight_decay0, amsgradFalse, *, foreachNone, maximizeFa…

MySQL root用户密码忘记怎么办(Reset root account password)

在使用MySQL数据库的的过程中&#xff0c;不可避免的会出现忘记密码的现象。普通用户的密码如果忘记&#xff0c;可以用更高权限的用户&#xff08;例如root&#xff09;进行重置。但是如果root用户的密码忘记了&#xff0c;由于root用户本身就是最高权限&#xff0c;那这个方法…

Vue自定义指令与Vue插槽学习

文章目录 自定义指令1.指令介绍2.自定义指令3.自定义指令语法4.指令中的配置项 自定义指令-指令的值1.使用效果2.语法 插槽-默认插槽1.作用2.用处4.插槽的基本语法 插槽-具名插槽1.作用2.具名插槽语法3.v-slot的简写 插槽总结1.插槽分类2.作用3.场景4.使用步骤 自定义指令 1.指…

WPS辟谣用户文档被用于AI训练:坚守个人信息保护底线

AITOP100平台获悉&#xff0c;7 月 21 日有网友在社交平台发文称“WPS 改版了用我们的文章喂给 AI 了”“WPS 疑似把我的审签内容喂给抖音豆包 AI”。这一消息引起了部分用户对于个人信息安全的担忧。针对这一传言&#xff0c;WPS官方客服微博于当日下午作出回应&#xff0c;明…