Web逻辑错误漏洞解析及靶场复现
1.概述
逻辑错误漏洞是指由于程序逻辑不严谨或逻辑过于复杂,导致的一些逻辑分支不能够正常处理或处理错误。逻辑错误漏洞一般出现在功能(业务流程)上且较为隐蔽,通过自动化扫描器很难识别出来。
逻辑错误漏洞一般出现的功能模块有:信息查询、密码修改与找回、个人资料修改、商品支付、新增用户等等。以下对常见的逻辑漏洞进行介绍。
2.逻辑越权漏洞
越权漏洞是由于服务器对客户端的数据操作请求没有进行合理的用户操作权限校验,导致不同用户之间可以越权进行数据的增、删、改、查。进而对系统带来巨大的危害。
越权不同于提权,越权指的是逻辑漏洞造成的权限控制不当;而提权指的是getshell后需要在服务器上提升权限。
越权漏洞从维度上来分可分为水平越权和垂直越权
2.1 水平越权
水平越权即相同级别(权限)的用户或者统一角色的不同用户之间,可以进行越权访问、修改甚至删除等非法操作。通俗的来讲,相当于两个同权限的用户A和B,用户A登陆系统进行查看个人信息操作。这时抓包修改传参ID,将ID改为用户B的,放包执行操作后若成功查询到用户B的个人信息则表明该模块存在水平越权漏洞。
靶场例子:隔壁老王正常登陆自己的账号
然后正常查询自己个人信息
这时刚喝了半斤假酒的老王突发奇想,想看公司新来的漂亮前台妹子小丽的个人信息。而老王和小丽都用着公司的系统,于是老王对着公司系统反手掏出BP就抓了个包。
果断看见这沙雕系统居然用人名传参,心里想不知道哪个开发搞的这倒霉(美滋滋)系统。然后修改人名参数将laowang改成xiaoli。
然后放包,xiaoli的个人资料果断查询到手,老王嘴角一歪漏出了邪魅一笑^>^。
2.2 垂直越权
垂直越权指的是不同级别之间的用户越权操作,垂直越权又分为向上越权和向下越权。向上越权指的是普通用户通过越权漏洞拥有管理员执行权限,向下越权虽然指的是高权限用户可以访问操作低权限用户,但低权限用户也是拥有隐私信息的。通俗来说就是当你登录时,发现cookie中有一个roleID的角色参数,那么可以通过修改该ID为1或者0,根据具体情况来定,就可以使用管理员权限了
靶场案例:管理员admin登陆后台新建用户胖虎
点击创建,抓包。然后将请求吧发至Repeater模块。
然后放包,用户胖虎创建成功。
然后登陆普通账号pikachu,该账号只有简单的查看权限。
抓该账号的登陆包,也发至Repeater模块。
然后在admin账号创建用户的请求包基础重新构造创建用户daxiong的请求,将cookie换成pikachu账号的cookie,之后放包发送请求,成功创建账号daxiong。利用pikachu账号的cooke,相当于用只有查看权限的pikachu账号越权创建了账号daxiong。
3.支付逻辑漏洞
支付逻辑漏洞的侧重点在于用户提交的参数,如购买数量、商品价格、折扣、运费、商品信息的中转页面、跳转到支付接口时等参数。由于程序设计开发时没有对这些参数增加严格的验证机制,攻击者可以通过修改参数任意改变商品价格和数量造成支付漏洞。逻辑漏洞的案例十分多,关机在于程序员的设计思维是否存在缺陷。此外大部分程序都是闭源的,对于逻辑漏洞的测试只能通过不断的修改请求包参数来实现,也就是进行FUZZ testing。
相关的支付漏洞案例乌云漏洞论坛(https://wooyun.x10sec.org/search?keywords=%E6%94%AF%E4%BB%98%E6%BC%8F%E6%B4%9E&content_search_by=by_bugs)上很多,下面简单已一个靶场举例:
点击立即 购买一件衣服,抓取其数据包。非常赤裸裸的用支付金额传参(这靶场。。)
修改金额参数,将100改为1。
已1元的价格买下了商品