自己接过的一个项目,不过其实是客户自己在使用的一个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漏洞。不过我也不清楚这里将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漏洞。
推荐阅读:
实战 | 记一次实战中SelfXSS+CSRF+越权漏洞的组合拳
点赞,转发,在看
文章来源:http://www.b1ak2.xyz/
作者:b1ak2
如有侵权,请联系删除