越权访问(Broken Access Control,简称BAC)是Web应用程序中一种常见的漏洞,由于其存在范围广、危害大,被OWASP列为Web应用十大安全隐患的第二名。
所谓越权,顾名思义即超过当前用户的权力范围,越至不同用户或获得更高的系统权限的一类漏洞。
具体到应用当中,当服务器处理用户发起的请求时,没有对该用户的操作权限进行判定,从而导致不法分子利用该漏洞篡改用户信息,达到增删改查的目的。
该类漏洞在当前的测试中可通过Fiddler手工测试或Appscan自动扫描测试。越权漏洞一般可分为两类,即水平越权和垂直越权。
水平越权是指角色权限相同的用户之间能非法地互相操作对方的数据。
例如,我们有用户A和用户B,可以通过Fiddler来代理抓包,截取用户A登录时的WEB请求报文,然后分析其Cookie、Uid等信息,通过将相关值篡改为用户B的信息,从而发掘该类漏洞。
垂直越权是指不同角色权限的用户之间能非法地互相操作对方的数据。
该类漏洞的测试原理同水平越权,区别为被篡改的目标用户B可能为系统管理员等更高权限的用户,从而达到获取不同层级权限的目的。
跨站脚本攻击XSS(Cross Site Scripting)是指恶意攻击者向Web页面里插入恶意Script代码,当用户浏览该页时,嵌入Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
XSS漏洞可以理解为借彼之手、诱其上钩。该漏洞一般通过PHP的输出函数将Javascript代码输出到HTML中,通过用户本地浏览器执行,所以测试XSS漏洞关键就是寻找未过滤的输出函数。
在一般的研发实践中,通过查找常用函数如echo、print、var等来定位目标。具体XSS可以分为三类,分别为反射型XSS、存储型XSS、DOM型XSS。
该类漏洞在实际操作中较为常见,攻击者通过使用带有恶意脚本的链接接触用户,由用户触发XSS来实现攻击。
①用户收到带有恶意脚本的链接;
②通过访问该目标抵达目标服务器;
③HTML展示预期内容同时将未过滤的用户输入记入XSS;
④该部分XSS恶意代码向恶意服务器发起请求;
⑤攻击者从恶意服务器获取用户原始输入。
该类漏洞相对反射型更加隐蔽,攻击者绕开用户层预先在目标数据库铺底恶意脚本,实现用户被动触发进而实现信息窃取和后续攻击。
①攻击者在目标数据库预埋恶意XSS脚本;
②用户正常操作访问服务器并触发该部分XSS;
③HTML展示预期内容同时将未过滤的用户输入记入XSS;
④该部分XSS恶意代码向恶意服务器发起请求;
⑤攻击者从恶意服务器获取用户原始输入。
该漏洞是基于文档对象模型(Document Objeet Model,DOM)的一种漏洞,通过利用当前URL将返回的HTML静态文本写入DOM中的document当做JavaScrip代码执行,从而导致敏感信息泄露。
①类比反射型XSS攻击者给用户发送目标URL;
②用户访问目标服务器;
③服务器返回包含JavaScrip的HTML展示给用户;
④该部分XSS利用①中的URL返回给攻击者;
⑤攻击者获取敏感信息对目标发起攻击。
文件上传类漏洞指文件上传功能模块或接口,未对文件类型、附件大小等信息进行校验,从而导致攻击者通过文件上传接口上传恶意文件。
如果上传的文件类型和访问权限不作控制,则攻击者可利用此漏洞上传恶意脚本或后门程序,获取服务器权限,控制服务器。
同时,也可达到消耗服务器资源使其拒绝服务进而瘫痪。
文件上传漏洞在测试中的关注要点:
关注是否限制了上传文件的大小,通过比对Post支持的大小来判断上传大文件是否会导致内存、磁盘耗尽从而拒绝服务。
关注上传文件类型是否进行了控制,通过修改文件名最后一个点号后面的后缀(包括点号)后做上传,判断是否可以绕过文件类型、扩展名等校验判断。
关注上传的文件存放路径安全性、上传目录解析、读取、下载等权限控制。
以上三类为渗透测试中较为常见的漏洞,也是研发过程中容易被忽视的地方。
工欲善其事,必先利其器。在针对漏洞的测试过程中,通过对Fiddler、Wireshark、Jmeter、Burpsuite等工具的应用可以在操作层面掌握截取、抓包、断点、篡改、再请求等操作,结合研发过程中的通用实践来判断程序结构和目标函数。
工具、知识及经验的不断积累与组合应用会助你更高效地开展渗透测试,发掘各类漏洞。
下面是一份配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
这些都可以以在公众号:伤心的辣条 ! 免费领取,还有一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中资料包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。
学习不要孤军奋战,最好是能抱团取暖,相互成就一起成长,群众效应的效果是非常强大的,大家一起学习,一起打卡,会更有学习动力,也更能坚持下去。
喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!
转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!
面试经:一线城市搬砖!又面软件测试岗,5000就知足了…
面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…
什么样的人适合从事软件测试工作?
那个准点下班的人,比我先升职了…
测试岗反复跳槽,跳着跳着就跳没了…