安全矩阵

 找回密码
 立即注册
搜索
查看: 1953|回复: 0

实战 | 记一次对某SaaS平台漏洞挖掘

[复制链接]

249

主题

299

帖子

1391

积分

金牌会员

Rank: 6Rank: 6

积分
1391
发表于 2022-6-18 11:09:28 | 显示全部楼层 |阅读模式
​自己接过的一个项目,不过其实是客户自己在使用的一个SaaS平台,也就是对SaaS平台的测试本质上来说没有严格授权。
由于没有严格授权也就将测试范围局限在了单个网站上,并没有根据域名进行拓展。
Web应用信息通过Burp发送一定请求包,可以得到服务器如下信息:
编辑
开发语言:ASP开发框架:.NET 4.0.30319由于使用的是ASP.NET开发框架,因此服务器中间件大概率是IIS了。同理数据库可能采用的是MSSQL中间件:Tengine支持的请求方法:GET、POST、OPTIONS使用asp与aspx的字典对网站进行目录扫描并没有新发现:
编辑
其实比较有意思的是网站请求的URI是以.do结尾的,网上搜到的相关介绍都是说该后缀的文件是Java的,但是根据前面收集到的信息显然是不合理的,结合后面一些遇到的URI,推测这是一种以.来分割的路由书写格式。
CSRF漏洞跨站请求伪造漏洞发生在用户操作的时候,其原因在于没有对请求进行“行为发起”判断又或者允许跨域(不同链接的跳转请求自动携带上cookie)导致身份认证功能被滥用。
web应用中涉及用户操作的有:
微课上传
资源上传
文章发布
相册上传
视频上传
话题发布、回复、点赞、删除
私信功能
关注、取消关注功能
个人资料修改、头像修改、隐私设置功能
安全设置中的邮箱、手机绑定功能漏洞复现:资料修改功能跨站请求伪造漏洞
这里开启虚拟机,利用两个账号进行试验,账号AID为“中文”,账号BID为“左卓”,利用BurpSuite拦截“中文”的个人资料修改请求:


编辑
这里仅修改UserName这个变量,因为后端会对UserNumb这个字段进行校验,因此需要知道受害者的UserNumb这个字段是多少,但是其他功能点并不一定有该限制。
利用BurpSuite的CSRF构造功能生成相应的CSRF页面:
编辑
构造相应页面,让受害者去访问该页面:
编辑
结果如下:
​​

编辑
利用失败了,当然失败的原因也很简单,之前提过阻断CSRF的方式除了对请求的主动性进行验证之外,还有就是附加数据(cookie)是否设置了httponly属性来禁止跨域。
编辑

很不巧的是这里用于身份验证的cookie EDUSSO就设置了httponly属性来禁止跨域,不过这里还是有csrf漏洞。
前面在信息收集中我们也提到了,这个服务器是支持:get、post、options三种http的请求头,此处我们利用BurpSuite的功能修改请求方式由post至get,再生成csrf的poc。
此时再去访问:
编辑

可以看到此时访问成功,但是提示修改的网校号不是自己的,后续只要修改一下网校号即可。
CSRF漏洞列表:
微课上传
资源发布
话题删除
私信
关注、取消关注
个人资料修改、隐私设置功能
安全设置中的邮箱、手机绑定功能
视频上传功能
不过这个视频上传功能处的CSRF利用局限性较大,需要知道视频专辑处随机生成的唯一识别ID才能够上传至指定的专辑。
不过这个视频上传功能处的CSRF利用局限性较大,需要知道视频专辑处随机生成的唯一识别ID才能够上传至指定的专辑。以上功能点均存在类似的通过修改请求方式的CSRF漏洞。不过我也不清楚这里将post方式修改为了get方式之后就绕过了httponly限制的原理,这里标记一下,后面需要了解一下httponly的实现原理。
不存在CSRF的功能点大多都处理httponly的限制之外还手动添加了token 字段来验证请求的主动性。
​​2.1 文章功能测试
2.1.1 我的文章功能模块在该功能模块下共有:1、发布文章 2、编辑 3、删除
1、文章发布功能测试
文章发布部分抓包情况如下:
编辑
GET方式的请求无法成功,其中TypeID为文章分类的ID识别发送人的是SESSION因此CSRF以及越权都没有此类漏洞。
注意到了请求的连接名称为:MyArticle.Post.data尝试修改其中的Post为Get再发送请求,但请求失败证明了后台没有相关功能,不能通过Get请求来发布文章。
AddTime参数能控制前台显示的时间,但是时间格式有严格限制,无法实现存储型XSS。
文章的由唯一标识ID号来识别,无法通过参数来控制,故此处也无法实现存储型XSS
测试通过文章标题的二次注入均无特殊回显,删除各参数后页面回显均无报错,此处SQL注入漏洞不存在。
2、文章编辑功能测试
后台通过id的方式来确定修改的文章编号:
编辑
经尝试无法通过修改id的方式来实现越权,后续文章发布的接口与编辑文章相同,无更多漏洞。
3、文章删除功能测试
功能的实现同样是根据提供的文章ID来实现的,但是通过修改至他人的文章ID来测试越权功能发现文章删除失败。
同样是无法实现通过Get请求来删除文章,故此处希望CSRF的利用会失败。
2.1.2 分类管理功能测试分类管理功能同样也三个主要功能:1、添加分类 2、编辑 3、删除
1、添加分类功能测试
添加分类数据包数据如下:
编辑

同样是通过POST传递参数,通过SESSION来确定用户,因此并且通过服务器自动参数的ID来标识文章分类,因此这里不会有越权以及XSS。
但是此处可以通过GET方式来发送请求,继续测试是否存在CSRF漏洞。
经测试,该处存在CSRF可以通过此种方式替他人创建文章分类。
​​2、编辑功能测试
编辑功能处的HTTP数据包请求如下:
编辑

是通过id来确定要修改的分类,同样通过修改ID发现无法实现越权修改功能。
不过同样,该功能点支持Post及Get方式参数数据,经过测试此处存在CSRF,但实现CSRF还需要知道分类ID,限制较大。
分类处来提供了一些预设置的不可修改的分类,通过修改ID为这些分类的ID希望能实现越权修改功能,发现也是不可行的。
3、删除功能测试
删除处的功能同样是通过ID参数来定位数据的,依然支持通过Get方式发送请求,同样不支持通过修改ID来删除其他人的分类、删除系统分类。
同样具有CSRF漏洞。
2.2 微课功能测试
2.2.1 微课列表功能测试此处功能包括:1、微课上传 2、微课修改 3、微课删除共三种功能
由于文件等静态资源全是存储在目标网站的CDN服务器上,故文件上传文件相关的漏洞就没有去测试了。
1、微课上传功能
微课上传功能的http数据包如下:
编辑
因为fileName[]这个属性的值会被展示在前台的DOM树当中且无过滤,故此处存在XSS漏洞:
编辑

这里使用console.log("b1ak2")来进行JS脚本运行判断,修改请求包相关字段如下:

控制台显示效果如下:
同样,该请求支持Get方式,经过测试此处同样存在CSRF漏洞。采用相同的方式,通过GET请求来完成CSRF,不过这次的功能点会弹出文件下载请求:
​​
编辑

不过其中的内容是空的,此时不管是否下载CSRF攻击已经完成了:
2、微课修改功能
该功能点前台js代码存在问题,修改之后的提交无法完成。
3、微课删除功能
删除功能处的HTTP代码如下:
编辑

除了ID定位之外还加上了科目ID,必须要两者同时匹配才能够删除相关资源,同样支持Get方式传递http请求故同样存在csrf漏洞,但伪造难度过大。
尝试修改ID来删除他人资源,但是此处进行了权限校验,故不存在越权相关的逻辑漏洞。
2.3 资源功能测试
2.3.1 资源列表功能测试同样功能如下:1、上传 2、修改 3、删除
1、上传功能测试
资源的功能同微课的功能及其相似,猜测大体功能框架是相同的,同样也存在XSS、CSRF漏洞,此处不展示类似的细节了。
2、修改功能测试
同样修改功能前端语句存在bug,功能无法正常运行。
3、删除功能测试
与微课功能相同,具有权限验证。不存在越权漏洞。
2.4 相册功能测试2.4.1 我的相册功能主要包括两个:1、上传图片 2、新建相册 3、编辑相册 4、删除相册
​​1、上传图片功能测试
文件上传功能的http请求包如下:
编辑

可以通过修改imgList属性值来达到修改显示名称的作用,且该段数据可以插入到DOM树当中,但是对双引号有一定限制措施,尝试了一下之后没有找到有效的利用方式,不在这个功能点上死磕了。
此处同样是通过categoryId来确定要上传的相册位置,替换为他人的相册ID之后服务端会报错,故此处并不存在越权漏洞,此处也支持Get方式传递数据故CSRF漏洞同样存在。
2、新建相册功能测试
新建相册功能不支持Get方式发送请求,故此处不像之前一样有CSRF漏洞
这里Name属性的值会出现在DOM树当中,同样可以通过修改来达到存储型XSS的目的,但是对这里有长度限制,不过这里出里共会在DOM当中出现3次,可以依靠这个来实现绕过也说不一定。
3、编辑相册功能测试
同样不支持Get方式发送请求,CSRF漏洞无望,数据包情况如下:
编辑

通过唯一身份识别的ID来定位相册,这里通过修改ID来定位到其他用户的相册,虽然服务器端没有报错但是功能并没有实现,越权漏洞失败。
同样存在类似的XSS注入点,可能存在XSS利用的情况。
4、删除相册功能测试
相册删除功能的http请求如下:
编辑

依靠的是唯一识别ID来定位相册。
同样,该功能支持Get形式传递请求则同样存在CSRF漏洞。而修改至他人ID后服务器端处理出错,也不存在逻辑漏洞。
2.5 视频功能测试
2.5.1 我的视频功能测试该处包含三种功能:1、新建视频专辑 2、编辑 3、删除 4、上传视频
​​1、新建视频专辑功能测试
该功能处http请求如下:
编辑

该处存在XSS,CategoryName与PicURL两参数均存在存储型XSS,修改相应参数即可。不过PicURL会判断双引号是否成对出现,不过采用1"><script>alert(1)</script><"类似的格式来绕过即可
​编辑​编辑
同样,该处支持通过Get方式传递http请求故存在CSRF漏洞。
而此处定位用户通过的是Session即无法测试相关的越权漏洞。
2、编辑功能测试
编辑功能处http请求如下:
编辑

是通过CategoryID来确定相册的,本身功能页面是和创建相册相同的,相同漏洞此处不重复测试。
而相册编辑功能中可以通过CategoryID来定位到其他用户的相册,故相册编辑功能处存在逻辑越权漏洞。
3、删除功能测试
相册删除处http请求如下:
编辑

是通过CategoryID来定位相册的,可以通过Get方式发送http请求,推测此处同样存在CSRF漏洞,经测试确实存在。
删除功能同样存在越权逻辑漏洞。
​​4、上传视频功能测试
上传视频功能处http请求如下:
编辑
同样支持Get方式传递http请求,经测试存在CSRF漏洞。
此处识别相册是通过CategoryID来识别的,同样存在越权逻辑漏洞。
修改数据至如下:
编辑
前端共发型存储型DOMXSS四个:

编辑
补充:功能疏忽
访问其实也是一种功能,这里碰巧发现了:
编辑

相册访问页面也是通过CategoryID来识别的,将该ID修改为他人相册后可以成功访问,此处存在水平越权逻辑漏洞。
2.6 动态功能测试动态这里会展示自己关注的用户上传的资源,之前测试到的资源功能里的存储型XSS会在这里生效:
编辑
动态功能如下:1、发布微博 2、点赞 3、评论 4、回复 5、分享 6、删除
1、发布微博功能测试
微博发布处的http请求如下:
​​
编辑
此处添加了token作为请求验证,故CSRF漏洞失效,而评论数据是通过JSON格式来进行传输的,其中会过滤<>之前的全部内容,暂未想到有什么好的利用方法。
2、点赞功能测试
http请求包如下:
编辑

同样是有token,且身份识别依靠的是SESSION故无CSRF及越权漏洞。
3、评论功能测试
同样,身份识别是依靠SESSION且存在token对请求的唯一性进行验证:
编辑
同样,评论会过滤两个尖括号之间的内容,并未想到好的过滤方式。
​​4、回复功能测试
回复功能采用相同的功能架构,不作赘述了。
5、回复删除功能测试
同样存在token对请求唯一性进行验证,同时删除他人回复会进行权限检测:
编辑
6、分享功能测试
功能存在问题,不能正常执行
7、删除功能测试
删除功能http请求包如下:
编辑

同样支持Get方式传输http请求,同样存在CSRF漏洞。
对删除功能进行了权限校验,不存在越权漏洞。
2.7 话题功能测试话题功能和动态采取的是同一套框架,这里不作赘述了。
2.8 私信功能测试私信功能有两个功能:1、回复消息 2、清除记录
1、回复消息功能测试
回复的http请求如下:
编辑

能够自主控制的只有接收方和发送内容,不过好在这里同样可以通过Get方式传递http请求,故此处存在CSRF漏洞。
而回复的内容不在DOM树当中,且尖括号中的内容会被过滤,暂未想到好的绕过方法。
​​2、清除记录功能测试
请求的http数据包如下:
编辑

同样支持Get方式发送请求,故此处同样存在CSRF漏洞。而发送者由SESSIOIN来确定,无法伪造发送人。
2.9 关注功能测试关注功能主要有:1、关注 2、取消关注 3、查找用户
关注和取消关注功能之前测试过,存在CSRF漏洞,身份识别依靠的是SESSION,故也不存在越权漏洞
3、查找用户
查找用户方面最直接的联想就是SQL注入,这里查找的关键词只有一个keyword,对该参数使用fuzz排查之后并未发现有特殊的回显,故判断此处没有SQL注入漏洞。
2.10 设置功能测试2.10.1 个人资料功能测试个人资料功能之前提到过csrf漏洞,此处不在赘述。
在测试相关功能中,会很自然的想到此处是否存在SQL注入漏洞,不过根据排查其他功能时候对SQL注入的测试,这个网站还是对相关漏洞防护功能做的挺不错的,但是这个地方的SQL注入功能没有关闭报错信息,这导致虽然只能获取少部分信息,但是一些异常操作还是能够获取到信息的。
该功能的http请求如下:
编辑
我们这里将UserName这个字段删去之后数据库会返回如下错误信息:
编辑
2.10.2 修改头像功能测试由于上传的文件会被上传至CDN服务器,且自动对文件进行重命名,所以这里针对文件名的XSS漏洞尝试就失败了。
2.10.3 安全设置功能测试安全设置主要的功能有:1、安全邮箱 2、绑定手机 3、密码
经过测试,邮箱、手机绑定存在逻辑漏洞,这两处功能即使密码错误的情况下也能够修改绑定的邮箱、手机号,同时支持Get方式发送http请求,也就造成了逻辑漏洞。两者配合即可在验证码有效期内修改受害人绑定的手机、邮箱账号。
2.10.4 隐私设置功能测试隐私设置功能主要用于设置各个功能他人的访问权限,此处存在CSRF漏洞。
​​
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-30 03:28 , Processed in 0.013906 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表