找到
31
篇与
学习笔记
相关的结果
- 第 4 页
-
商城主动给我0元购资格 常规测试 首页 这是一个购物的小程序,那我们就冲着0元购目的打。 首先看到数据包中有商城的地址,那就试试看后台有没有弱口令吧。 字典都跑完了没有爆破出弱口令账户。还是测试功能点吧。 并发 挨个测试那就先测试签到功能吧,目前是0积分。 把bp的拦截功能打开,拦截签到的数据包,然后转发到intruder模块。把payloads设置为Null payloads,并选择无限循环。 再新建一个并发999的资源池,发包。 成功了两个请求,获得了10积分。 0元购 接下来测试余额功能,点进去后有一个充值按钮。 点击后是充值界面,那就充个0.01吧。点击立即充值按钮后,会产生两个数据包。第一个数据包是充值的申请,第二个数据包每隔5秒检测该请求是否已支付状态。如果关闭了付款二维码则会返回第三个支付失败的数据包。 其中在第一个数据包中包含了支付金额、用户id和用户token。 既然显示了金额,那我能不能填写0.01然后扫码支付0.01后拦截他的数据包把0.01改成想要的数字呢?我看刑试一试。扫码支付0.01后拦截他的数据包人就傻了,数据包被加密了,改不了。 再回头看数据包这个planId是干嘛用的?不甘心再试试,再充个0.01点击立即充值然后拦截该数据包把planId=0修改成planId=1看看是什么效果。 放包后扫描二维码成功支付0.01,再返回钱包你猜怎么着,多了10元。 看看充值记录是什么情况。用0.01充10.01足足1001倍啊,爆率真的高。那我要是把planId=0修改成planId=2又是什么样的效果呢。 填写0.01点击立即充值,拦截数据包把planId=0修改成planId=2然后放包扫码支付后,回到钱包还是用0.01充10.01 多次尝试后发现当planId改为4时则会返回充值套餐不存在的提示。 到这里我就明白了,当planId=0时是正常的充值,而1、2、3则有可能是小程序在开发时用来测试用的,小程序上线后这个测试的充值套餐没有被删除。(题外话:这种功能常用于在搞活动的时候用到,比如充值500送200这样的活动。) 好多优惠券 ok接下来该轮到测试优惠劵了,点击领券中心,只有一个满1元减0.01的券。 点击领取后,查看一下数据包好玩的就来了。数据包中包含优惠券的id、用户id和用户token 盲猜和充值一个逻辑,直接把数据包转发到intruder模块。把coupon_id参数设置为变量,payloads设置为数值,数字范围从0到100 一共成功领取了12张优惠券 水平越权 最后再测试一下个人信息界面吧。头像处经过尝试发现限制非常死,恶意文件上传不上去。上传正常图片后点击保存按钮,在数据包中就发现好玩的了。数据包中有图片的id。 数据包转发到repeater模块尝试把图片id改成1试试。 发现我的头像变了。 再改成2试试。
-
阿里云OSS存储攻击总结 Bucket目录遍历漏洞 漏洞环境搭建 首先登录阿里云,然后依次选择产品-存储-对象存储OSS 进入后可以免费开通,点击开通就好了。因为我已经开通过了,所以没有免费开通的按钮,我这边点击管理控制台。 进入功能后创建存储桶,其中读写权限设置为公共读,然后点击完成创建。 在此时如果选择公有读的话,会出现两种情况: 读写权限单纯设置为公有读或公共读写的情况下,是无法列出对象的。 列出对象,需要在Bucket授权策略中设置:只读(包含ListObject操作)。 具体设置看漏洞复现 情况1漏洞复现 创建完后点击刚刚创建的存储桶-文件列表,即可管理存储桶中的文件。 点击上传文件按钮,上传测试文件。 访问存储桶时发现没有列举刚刚上传的文件。 由于我们刚刚把文件上传的地方在根目录下,所以在域名后面加上文件名(文件名区分大小写)即可下载到文件。 情况2漏洞复现 依次点击刚刚创建的存储桶-Bucket授权策略-新增授权-只读(包含ListObject操作)。 访问存储桶时发现列举了刚刚上传的文件,并且访问文件同样可以下载到文件。 Bucket任意文件上传与文件覆盖漏洞 漏洞环境搭建 依次点击刚刚创建的存储桶-读写权限-公共读写 (这一步可以设置也可以不设置,设置了可以更直观的展现任意文件上传的效果)依次点击刚刚创建的存储桶-Bucket授权策略-新增授权-只读(包含ListObject操作)。 任意文件上传漏洞复现 使用bp通过PUT方式上传一个名为1.txt,内容为1的文件到存储桶中。 访问存储桶时发现列举了刚刚上传的文件。 并且文件内容一模一样,也可以下载到文件。 文件覆盖漏洞复现 使用bp通过PUT方式上传一个名为1.txt,内容改为2的文件到存储桶中。 访问存储桶时发现列举了刚刚上传的文件。 原来1.txt的内容为1,通过重新上传后文件内容被修改为了2。 阿里AccessKeyId、SecretAccessKey泄露漏洞 漏洞描述 AccessKey是阿里云提供给用户的永久访问凭据,包括AccessKey ID和AccessKey Secret两部分。AccessKey ID用于标识用户,AccessKey Secret用于验证用户的密钥,主要用于程序方式调用云服务API12345。用户可以为阿里云账号和RAM用户创建一个访问密钥(AccessKey)1245。在调用阿里云API时您需要使用AccessKey完成身份验证1235。 漏洞复现 泄露的地方有很多例如: 反编译安装包,找到泄露的Key。 网站的源代码、js、heapdump中找到泄露的Key。 GitHub等开源平台中的源代码可发现存在泄露的Key。 这里用我自己的作为示例,假设我的AccessKeyId、SecretAccessKey在某处泄露了攻击者就可以通过工具接管到目标存储桶。 Bucket爆破漏洞 漏洞描述 当不知道存储桶名称时,可以通过爆破获得存储桶名称。这有些类似于目录爆破,只不过目录爆破一般通过状态码判断,而这个通过页面的内容判断。对于阿里云OSS不存在有两种返回情况,分别是InvalidBucketName和NoSuchBucket。 存储桶地址: 样例:https://qazzaq.oss-cn-beijing.aliyuncs.com/ 解释:https://存储桶名称.存储桶地址.aliyuncs.com/漏洞复现 NoSuchBucket:表示没有这个存储桶。 InvalidBucketName:表示存储桶的名称不符合规范,属于无效的存储桶名称。 当存储桶存在时,则会返回以下两种情况: Bucket接管漏洞 漏洞描述 在阿里云下,当存储桶显示NoSuchBucket说明是可以接管的,如果显示AccessDenied则不行。 漏洞复现 假设管理员通过域名解析并绑定了一个存储桶,但是管理员将存储桶删除后,没有将域名解析的CNAME删除,这时会访问域名就会出现NoSuchBucket。因此可以登录自己的阿里云账号,创建同样的存储桶即可。 Bucket特定策略漏洞 漏洞描述 特定的策略配置的指的是,管理员设置了特定的IP、UA才可以请求该存储桶。此时如果错误的配置了GetBucketPolicy,可导致攻击者获取策略配置。 漏洞复现 访问目标发现没有权限。 查看一下存储桶设置的访问策略,可以看到需要符合UserAgent为UzJu才可以访问。 回到bp把UserAgent参数修改为UzJu,即可获取到数据。 Bucket策略配置可写漏洞 漏洞描述 当策略可写的时候,可以把原本不能访问到的数据设置为可访问从而获得敏感数据。 漏洞复现 当我们访问存储桶的时候,会提示我们已经被policy拦截。 如果策略可写时,把Effect中的Deny更改为Allow即可。 随后使用PUT方法上传。 此时就可以访问到存储桶中的信息了。 Bucket修改策略导致网站瘫痪漏洞 漏洞描述 当策略可写的时候,除了上面的将可原本不可访问的数据设置为可访问从而获得敏感数据外,如果目标网站引用了资源文件,而且我们可以对该策略进行读写的话,也可以将原本可访问的资源权限设置为不可访问,这样就会导致网站瘫痪了。 漏洞复现 这是站点正常的样子。 如果可以修改策略,只需要将获取该对象的权限修改为Deny,该网站就无法获取到图片、JS等信息了。 修改后站点已无法获取到信息。
-
BurpSuite抓取微信小程序数据包 配置端口 首先启动BurpSuite,然后点击设置按钮。 自定义设置ip和端口,我这里设置的ip是127.0.0.1,端口是8080 下载证书 设置好后到浏览器把代理地址设置为上一步中的ip和端口,然后访问下面地址,点击CA Certificate按钮下载证书。 http://burp 安装证书 双击证书,点击安装证书进行安装。 选择本地计算机,然后下一步。 点击将所有的证书都放入下列存储,选择受信任的根证书颁发机构,然后点击下一步。 点击完成按钮。 安装完成 配置代理 打开电脑的设置,搜索代理,选择第一个选项。 打开使用代理服务器,并把ip和端口号设置成BurpSuite中设置的ip和端口,然后点击保存。 成功抓到数据包 打开小程序后BurpSuite成功接收到数据包。
-
前端登陆绕过渗透过程 梭哈 站点首页 看到登录框首先测试一下有没有sql注入,一个1'啪就打进去,提示用户名错误,寄。 既然提示用户名错误了那就爆破用户名吧。用户名和密码随便输,抓一个数据包。 点击登录后bp竟然没有任何数据包,立马来精神了。 bp没有数据包有两种情况:一个是bp出故障了、另一个就是站点靠前端校验没有与后端交互,所以没有数据包产生。我可以肯定我的bp不可能出问题的,所以哈哈哈哈哈哈。 梭哈是一种智慧 直接F12大法全局搜索admin字样。喜滋滋账户和密码这不就来了嘛,后台我来了哈哈哈。 屮,好家伙用户名对了密码不对是吧。 现在bp里有数据包了,看一下数据包里的内容。看到result字样相信在座的各位大佬都坐不住了吧。 重新拦截登录的数据包,直接把"result":"false"改成"result":"true"成功登录到后台。 完整代码 ok现在让我看看他具体的代码是怎么判断,让我看看你是怎么秀的。先看看完整代码: IndexComponent.prototype.goLogin = function() { var t = this; if ("" == this.userName || "" == this.passWord) return void (this.toast = "用户名或密码不能为空!"); if ("adminxhsty" != this.userName) return void (this.toast = "用户名错误!"); var n = { code: this.userName, username: encode(this.userName, "thinkgem,jeesite,com"), password: encode(this.passWord, "thinkgem,jeesite,com") }; $(".loading").show(), this.indexService.goLogin(n).then(function(n) { $(".loading").hide(), "true" == n.result ? (t.isLogin = !1, t.onVoted_changelogin.emit(!t.isLogin), sessionStorage.setItem("sessionid", n.sessionid)) : t.toast = n.message }) }分析逻辑 首先定义了一个goLogin方法,var t = this;将当前对象保存在变量t中,这样在后面的异步回调中可以访问该对象的属性和方法。 IndexComponent.prototype.goLogin = function() { var t = this;这段代码首先检查用户名和密码是否为空。如果是空的,则返回:用户名或密码不能为空!。如果用户名不是"adminxhsty",则返回:用户名错误!。 if ("" == this.userName || "" == this.passWord) return void (this.toast = "用户名或密码不能为空!"); if ("adminxhsty" != this.userName) return void (this.toast = "用户名错误!");如果通过了验证,接下来准备一个包含登录信息的对象n: code:使用输入的用户名。 username和password:通过encode函数编码输入的用户名和密码,使用了特定的加密参数"thinkgem,jeesite,com"。 var n = { code: this.userName, username: encode(this.userName, "thinkgem,jeesite,com"), password: encode(this.passWord, "thinkgem,jeesite,com") };接下来,显示页面中的加载动画。然后调用this.indexService.goLogin(n)方法,传递准备好的登录信息n,这个方法返回一个Promise对象。当登录请求完成时,执行接下来的动作:根据返回的数据n中的result字段判断登录是否成功。如果n.result是字符串"true",则表示登录成功。如果n.result是字符串"false",则显示相应的错误消息。 $(".loading").show(), this.indexService.goLogin(n).then(function(n) { $(".loading").hide(), "true" == n.result ? (t.isLogin = !1, t.onVoted_changelogin.emit(!t.isLogin), sessionStorage.setItem("sessionid", n.sessionid)) : t.toast = n.message })