【第十一周】9-1 9-2 10-1 10-2 10-3

越权漏洞原理及水平越权案例演示

在这里插入图片描述
在这里插入图片描述

越权漏洞一般是出现在有登录态的页面,一定要有相关的权限才可以访问。
演示
登陆查看下个人信息
在这里插入图片描述
测一下是否存在越权问题
看一下点 “点击查看个人信息” 的时候 提交了什么内容到后台
提交了一个get请求,把当前登陆的人的用户名传到后台,后台把对应的信息显示出来。
http: //127.0.0.1/pikachu/vul/overpermission/op1/op1_mem.php?username=lucy&submit=点击查看个人信息
当前登陆的是lucy 我们试试改成其他人 改成lili
果然,把其他人的信息也显示出来了,存在越权漏洞
在这里插入图片描述
看下代码
通过&_GET 去获取到用户名,对这个用户名对应的信息进行查询,返回到前端。

我们在写代码的时候要注意:当我们点击 查询个人信息的时候,后台除了获取用户名以外,还应该判断这个请求是不是lucy发过来的,也就是把username用户信息和当前登录态的用户信息进行对比。
在这里插入图片描述
垂直越权漏洞原理和测试流程案例
流程:
先用一个超级管理员的账号登陆,然后对超级管理员独一无二的权限进行执行(比如添加账号),执行完把新增的账号操作的数据包抓下来,然后退出超级管理员登陆。
然后切换到普通管理员的权限上去,把刚才抓到的数据包去普通管理员的身份进行一次重放。
如果操作成功,这个吗后台存在垂直越权漏洞。

演示:
用超级管理员登陆一下
在这里插入图片描述
添加用户
在这里插入图片描述
在这里插入图片描述
看一下超级管理员添加用户请求的抓包
在这里插入图片描述
发送到repeater

在浏览器上退出超级管理员登陆,这个时候超级管理员已经不在登录态了,然后在repeater里面重放。
在这里插入图片描述
go一下,看重定向,跟踪一下,重定向到登陆页面,因为检测到当前登录态已经退出了,提示登陆
在这里插入图片描述

在浏览器用普通管理员身份登录一下
普通管理员只有查看权限,
在这里插入图片描述

看下抓包
在这里插入图片描述

把当前用户的登陆态复制一下
普通用户的登陆cookie:
Cookie: __guid=96992031.1793190729766051000.1552807675923.3162; PHPSESSID=8ck2q7l14bjv6bvtq7udtq4fi7; monitor_count=53
找到之前超级管理员添加用户的post请求,发送到repeater,因为当前超级管理员的登录态已经退出了,点go的话会重定向到登录页面要求登陆,所以把登录态cookie换成当前普通用户的登陆态,把普通用户登录态的cookie复制到超级管理员的repeater里,也就是我们以普通用户的身份去操作超级管理员的操作。
go一下,跟踪一下
在这里插入图片描述
emmmmm视频跳进来了,我为什么没跳进来。。。

在这里插入图片描述
虽然在burp里没跳进来,但是刷新浏览器普通用户的页面发现多出来了一个 a 用户,所以此处存在垂直越权漏洞。
在这里插入图片描述
看下后台代码
看下登陆
登陆时先判断用户级别,是管理员就进入管理员页面,否则进入普通用户界面。
在这里插入图片描述
看下添加用户请求
先对登录态进行判断,只有登陆了之后才能访问
通过session取到用户名和密码,只是判断是否登陆但是并没有判断当前用户的权限是什么,所以产生了问题。
在这里插入图片描述
php反序列化原理和案例演示

序列化之后可以通过网络或接口去传输他,接收到序列化数据之后我们要把他进行反序列化才能对他进行使用。
在这里插入图片描述
魔法函数:在不同的场景下自动被调用的。
eg:construct() 当一个对象创建时自动被调用
在这里插入图片描述
看一下demo
首先定义了一个类,定义了一个public的变量pikachu,new一下,通过serialize 对S继续序列化,序列化之后把序列化的结果echo出来。然后对序列化之后的结果进行反序列化,然后就可以对得到的对象进行调用。

在这里插入图片描述
在这里插入图片描述
访问一下
第一行,就是序列化的结果
第二行,反序列化之后得到了里面的变量。
在这里插入图片描述

思路:
当前端传进来一个恶意的序列化内容,当后台接收到数据之后会对这个内容进行反序列化,进行反序列化时会对这个对象创建销毁,在这个过程当中就回去调用魔法方法,这个时候我们向接口传一个已经序列化好的一个内容(最下面的payload),然后会对我们传的内容进行反序列化,反序列化过程中会对这个对象进行创建和销毁,在销毁的时候就会去执行 destruct ,也就是说他会把jsp的内容echo到前端,这段代码会在前端被执行。通过反序列化的接口造成一个XSS的漏洞

在这里插入图片描述

演示
构造一个正确的序列化内容

可以在php里自己写一个类,在类里自己定义变量,把变量的名称写成一段恶意的jsp代码,把他new一下之后对他进行序列化,然后得到序列化的内容。

在这里插入图片描述

看视频
在这里插入图片描述
看下源码
得到序列化好的内容,把这段内容在接口去进行提交

o:1:“s”:1:{s:4:“test”;s:29:“”;}

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
过程:提交一个序列化好的内容,内容里面的变量是一个恶意的jsp代码,提交给后台,后台会对提交的数据进行反序列化,在反序列化的过程中会自动调用魔法方法,这个魔法方法的内容又是把内容echo到前端,所以出现弹窗。

xxe漏洞原理和案例实验演示
xxe 外部实体注入攻击
xml:可扩展的标记语言,可存储数据。我们可以直接以xml的格式将我们的数据放到请求当中发给服务器。

在这里插入图片描述

DTD: xml里面的标签都是用户自定义的,我们可以通过在DTD里面去编写一个文档约束,来约束xml文档里面的规范,得按照DTD定义的格式来写。
DTD分为几个不同的实体类型,见下图。

在这里插入图片描述

外部实体例子
第一部分:第一行:简单声明
第二部分:是一个DTD,首先定义了文档类型,我们可以按照实际的类型去写,例子里面是any,也就是所有类型,在第三行的约束里面定义了一个外部实体,外部实体都是以ENTITY这个字符开头的,然后用system这个关键字来指定这个外部实体(这个外部实体除了支持file协议以外还支持 http ftp等协议),然后用file这个协议去读取一个文件,然后把这个文件的内容赋值给 f ,f这个名称可以自己自定义,
第四行,再把这个变量给&一下,放到 x 这个标签里面,后面我们就可以通过读 x 这个标签下面的 f 来读取到etc/passwd 里面所有的内容。

攻击者可以构造一个xml的文档,文档里面通过外部实体去通过协议去指定读取一些文件,后台在搜到这些文件之后会对外部实体里面的内容进行执行,导致数据泄露。

在这里插入图片描述
以php为例具体说一下

可以把xml文档通过参数传给这个函数,函数可以把xml文档解析成php中的一个对象, 在后台代码中可以对这个对象进行读取,来获取xml里面定义的一些配置的数据。
在这里插入图片描述
演示
在这里插入图片描述
先看下后台代码
先通过post请求去获取前端传过来的xml数据,获取到数据之后把这个数据传给simplexml_load_string(),这个函数会对xml里面的外部实体的内容去进行解析,然后把解析的数据再返回到前端。

在这里插入图片描述
一个正常的例子
把这段代码提交一下看一下

<?xml version = "1.0"?>
]>

&hacker;
在这里插入图片描述
看返回
直接把我们DTD里面定义的变量的值给返回回来了,这是正常的提交。
在这里插入图片描述
我们在DTD里面通过system关键字去定义一个外部实体,外部实体也就意味着我们可以通过他支持外的一些协议去读取外部的数据。
试一下这个payload

<?xml version = "1.0"?>

]>
&f;

在这里插入图片描述
emmmm我没读出来 看视频
把外部实体指定的file穿进去目标文件的内容给读取出来又返回到了前端。

在这里插入图片描述

导致问题的原因:后端在接收xml数据的时候开启了外部实体解析,也没有对传过来的数据做任何的过滤。

ssrf漏洞原理和实验案例演示

攻击者通过存在ssrf漏洞的服务器为跳板,通过跳板功能对其他目标服务器进行攻击。
下面几个函数共同的特点:可以通过一些网络协议去远程访问目标服务器上的资源,对资源进行处理。
在这里插入图片描述
演示
在这里插入图片描述
点一下发现他传了一个url到后台
在这里插入图片描述
看下源码
通过GET获取前端传进来的url,然后通过 cur_init做一个初始化,然后通过 cur_exec对他进行一个请求,然后把请求返回来的数据返回到前端。

在这里插入图片描述
如果我们传进来一个其他的地址会怎么样呢?
原始页面地址:
http: //127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?url=http: //127.0.0.1/pikachu/vul/ssrf/ssrf_info/info1.php

把后面改成 www.baidu.com
http: //127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?url=http:// www.baidu.com

这不是我们的浏览器直接请求的百度,而是我们的浏览器把这个参数传到了后端,后端的服务器通过cur_exec 这个方法去请求的百度,然后把百度返回的数据返回到了前端。
我们可以同时ssrf这个漏洞去对后端服务器同一个网络里面的其他服务器进行相关探测,比如,可以通过http测端口是否开放。
在这里插入图片描述
在这里插入图片描述

案例2
传进去一个 a 标签,给了一个对应的地址 http: //127.0.0.1/pikachu/vul/ssrf/ssrf_fgc.php?file=http: //127.0.0.1/pikachu/vul/ssrf/ssrf_info/info2.php
在这里插入图片描述
改一下url试一下
http: //127.0.0.1/pikachu/vul/ssrf/ssrf_fgc.php?file=http: //www.baidu.com
在这里插入图片描述

看下代码
file_get_contents() 这个函数可以对本地的文件进行读取,也可以对远程的文件进行读取,也支持很多相关的网路协议。
此函数支持通过php内置的方法来读取源码,我们可以通过php filter这个方法来读取相关源码。
对于指定的路径下的目标文件去进行读取,然后把他转成 base64的编码。

在这里插入图片描述

http: //127.0.0.1/pikachu/vul/ssrf/ssrf_fgc.php?file=php://filter/read=convert.base64-encode/resource=ssrf.php

我的被拦截了
在这里插入图片描述
看下视频里的
直接把文件的base64的编码返回到了前端,我们把这段编码用base64解码,就能知道这段php文件对应的源码文件是什么就能拿到php文件对应的后端的所有源代码。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值