一种电力移动应用越权访问漏洞检测方法与流程

文档序号:12068187阅读:310来源:国知局
一种电力移动应用越权访问漏洞检测方法与流程

本发明属于领域,具体涉及一种电力移动应用越权访问漏洞检测方法。



背景技术:

近年来,在物联网、云计算等互联网信息技术高速发展的背景下,电力移动应用进入全面建设阶段。目前在电力营销、现场作业、数据采集、移动办公等各个领域,都在进行移动应用的建设与推广应用,以降低运营成本,提高工作效率。

移动应用在高速发展的同时,其信息安全问题也得到了越来越高的关注,如果移动应用在需求、设计、开发过程中产生的安全漏洞未在集成测试阶段被发现并整改,黑客利用移动应用的安全漏洞入侵电力系统,将给公司和用户造成损失。目前对电力移动测评工作表明,现有自动化安全测试工具中可以发现信息泄露、SQL注入、跨站脚本等传统的Web安全漏洞,但对于移动应用越权访问这种逻辑漏洞缺乏有效的检测手段。越权访问漏洞包括平行越权访问和未授权访问2种:平行越权访问是指某个用户可以访问其他用户的私有信息,例如每个用户只能查询自身的电量信息,如果可以查询其他用户的电量信息,则应用存在平行越权访问漏洞;未授权访问是指低权限用户可以获取到只有高权限用户才能获取的信息,例如只有管理员能够获取系统配置信息,如果普通用户也获取了该信息,则应用存在未授权访问漏洞。利用该漏洞可实施非法信息获取、数据篡改、违规操作等恶意攻击行为。



技术实现要素:

为了克服现有自动化安全测试工具中的不足,提高移动应用的安全性,本发明提出一种电力移动应用越权访问漏洞检测方法,解决了现有自动化漏洞测试工具无法发现越权访问这种逻辑漏洞的问题,能够用于在移动应用上线前的集成测试阶段开展越权访问漏洞检测工作,为移动应用的安全建设工作提供支持。

实现上述技术目的,达到上述技术效果,本发明通过以下技术方案实现:

一种电力移动应用越权访问漏洞检测方法,包括以下步骤:

(1)获取并存储移动应用存在的所有用户类型和与每种用户类型对应的用户数量;

(2)构造属于同一用户类型的不同用户针对同一操作的http请求,修改其中一个用户的http请求,并将修改后的请求发送给服务端,分析执行结果以检测平行越权访问漏洞;

(3)构造属于不同用户类型的不同用户的http请求,并修改属于部分用户类型的用户可执行但其他类型用户无法执行操作的http请求,将修改后的请求发送给服务端,分析执行结果以检测未授权访问漏洞;

(4)综合步骤(2)和步骤(3)中检测发现的漏洞,完成电力移动应用越权访问漏洞检测。

进一步地,所述步骤(1)中获取并存储移动应用存在的所有用户类型和与每种用户类型对应的用户数量,具体包括以下步骤:

(1a)建立数据库;

(1b)根据移动应用的实际业务,确定移动应用存在的用户类型,并存储到数据库中;

(1c)根据移动应用的实际业务,确定并存储每种用户类型支持的用户数量,用户数量1个或多个,并存储到数据库中;

(1d)在数据库中增加“未登录的用户”这种用户类型,由于未登录用户的具有相同的权限,因此未登录用户的数量为1个。

进一步地,所述步骤(2)中的检测平行越权访问漏洞,具体包括以下步骤:

(2a)筛选出包括多个用户的用户类型,针对每种用户类型,分别执行步骤(2b)-(2f);

(2b)选择与该用户类型对应的其中2个不同的用户A和用户B,获取与该用户类型对应的用户可以执行的全部操作;

(2c)对于每个操作,分别执行步骤(2d)-(2f);

(2d)分别获取用户A和用户B执行该操作的http请求,如果2个请求的返回的结果不相同,则执行步骤2e;

(2e)修改用户B的http请求,将用户B的http请求中的请求参数设置为用户A的请求参数,形成一个新的http请求;

(2f)将新的http请求以用户B的身份发送给服务端,获取服务端的返回结果,如果返回结果包含了用户A的http请求的结果,则说明用户B获取了用户A的信息,检测出平行越权访问漏洞。

进一步地,所述步骤(2d)还包括:如果2个请求的返回的结果相同,返回步骤2c处理下一个操作。

进一步地,所述步骤(3)中构造属于不同用户类型的不同用户的http请求,并修改属于部分用户类型的用户可执行但其他类型用户无法执行操作的http请求,将修改后的请求发送给服务端,分析执行结果以检测未授权访问漏洞,具体包括以下步骤:

(3a)筛选出不同的用户类型,对于任意两种不同的用户类型,分别执行步骤(3b)-(3f);

(3b)分别选择与两种不同用户类型对应的用户C和用户D,获取用户C可以执行的全部操作和用户D可执行的全部操作;

(3c)对于用户C的每个操作,如果该操作用户D不可以执行,则执行步骤(3d)-(3e);

(3d)获取用户C执行该操作的http请求,修改该http请求,将其中的请求用户信息设置为用户D的请求用户信息,形成新的http请求;

(3e)新的http请求以用户D的身份发送给服务端,获取服务端的返回结果,如果返回结果包含了用户C的http请求的结果,则说明用户D获取了用户C的信息,检测出未授权访问漏洞。

(3f)对于用户D每个操作,如果该操作用户C不可以执行,则执行步骤(3g)-(3h);

(3g)获取用户D执行该操作的http请求,修改该请求,将其中的请求用户信息设置为用户C的请求用户信息,形成新的http请求;

(3h)新的http请求以用户C的身份发送给服务端,获取服务端的返回结果,如果返回结果包含了用户D的http请求的结果,则说明用户C获取了用户D的信息,检测出未授权访问漏洞。

进一步地,所述步骤(3c)还包括:对于用户C的每个操作,如果该操作用户D也可以执行,则不处理该操作。

进一步地,所述步骤(3f)还包括:对于用户D每个操作,如果该操作用户C也可以执行,则不处理该操作。

本发明的有益效果:

本发明提出一种电力移动应用越权访问漏洞检测方法,解决了现有自动化漏洞扫描工具无法发现越权访问这种逻辑漏洞的问题,能够用于在移动应用上线前的安全测试阶段开展越权访问漏洞检测工作,为移动应用的安全建设工作提供支持,避免漏洞被利用后造成的信息泄露和非法操作行为,以及由此给电力企业和用户造成的损失。

附图说明

图1是本发明的一种电力移动应用越权访问漏洞检测方法执行流程示意图;

图2是本发明的平行越权访问漏洞检测流程图;

图3是本发明的未授权访问漏洞检测流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

下面结合附图对本发明的应用原理作详细的描述。

实施例一

(1)确定移动应用存在的不同的用户类型,确保获取用户类型的全面性,并且得到与每种用户类型对应的用户数量;

(2)构造属于同一用户类型的不同用户针对同一操作的http请求,修改其中一个用户的http请求,并将修改后的请求发送给服务端,分析执行结果以检测平行越权访问漏洞;

(3)构造属于不同用户类型的不同用户的http请求,并修改属于部分用户类型的用户可执行但其他类型用户无法执行操作的http请求,将修改后的请求发送给服务端,分析执行结果以检测未授权访问漏洞;

(4)综合步骤(2)和步骤(3)中检测发现的漏洞,完成电力移动应用越权访问漏洞检测。

所述步骤(1)中,确定移动应用存在的不同的用户类型,确保获取用户类型的全面性,并且得到与每种用户类型对应的用户数量,具体包括以下几个步骤:

(1a)根据移动应用的实际业务,确定移动应用存在的用户类型,使用types=<type1,type2……typen>数组保存用户类型;

(1b)根据移动应用的实际业务,确定每种类型用户支持的用户数量,用户数量为1个或多个,例如有些应用规定可以有多个申请用户,但只有1个审核用户。在数组中的每个用户类型后面,增加该用户类型的用户的数量,1表示只有1个,n表示可以有多个,types=<type1:1,type2:n……typen:1>;

(1c)增加未登录的用户这种特殊的用户类型,并且未登录用户的数量为1个,在数组中增加未登录用户,types=<unlogin:1,type1:1,type2:n……typen:1>,其中unlogin表示未登录的用户。

如图2所示,所述步骤(2)中,构造属于同一用户类型的不同用户针对同一操作的http请求,修改其中一个用户的http请求,并将修改后的请求发送给服务端,分析执行结果以检测平行越权访问漏洞,具体包括以下几个步骤:

(2a)从types数组中选择包括多个用户的用户类型得到数组types_s,types_s=<type2:n,type3:n……typem:n>,对于types_s中每种用户类型,分别执行步骤(2b)-(2f);

(2b)选择typei∈types_s类型的2个不同用户userA和userB,获取typei类型用户可以执行的全部操作,使用数组保存这些操作cmds=<cmd1,cmd2……cmdn>;

(2c)对于cmds每个操作cmdi,如果该操作需要访问后台服务端则执行步骤(2d)-(2f);

(2d)分别获取userA和userB用户执行该操作的http请求,http=<url,cookie,paramters,response>,其中url为请求的地址,cookie为请求的身份信息,paramters为请求参数,response为请求的返回结果。由于是同一个操作,因此2个请求的url地址是相同的,如果2个请求的返回的结果相同,则说明不同用户得到的结果是相同的,返回步骤2c处理下一个操作,否则执行步骤2e;

(2e)修改userB的httpB请求,将其中的请求参数设置为用户A的请求参数,得到的请求为http'=<url,cookieB,paramtersA,null>;

(2f)将http'请求发送给服务端,获取服务端的返回结果response',如果返回结果response'包含了userA的responseA的结果,则说明userB仅需要修改请求参数就可以获取userA的信息,检测出平行越权访问漏洞。

如图3所示,所述步骤(3)中,构造属于不同用户类型的不同用户的http请求,并修改属于某些用户类型的用户可执行但其他用户类型的用户无法执行操作的http请求,将修改后的请求发送给服务端,分析执行结果以检测未授权访问漏洞,具体包括以下几个步骤:

(3a)从types数组得到用户类型的数目n,选择任意两种不同的用户类型,分别执行步骤(3b)-(3f),总共有种不同的组合;

(3b)两种类型分别选择一个用户userC和userD,获取userC可以执行的全部操作cmds.userC=<cmdC1,cmdC2……cmdCn>,和userD可执行的全部操作cmds.userD=<cmdD1,cmdD2……cmdDn>;

(3c)对于userC执行每个操作cmdsCi,如果cmdsCi需要访问后台服务端,获取cmdsCi的http请求,httpCi=<urlCi,cookieCi,paramtersCi,responseCi>;对于userC的每个httpCi,如果该操作的urlCi在userD的可执行操作列表的http请求中也存在,则不处理该操作,否则执行步骤(3d)-(3e);

(3d)修改httpCi请求,将其中的cookieCi信息设置为userD的用户信息cookieD,得到的请求为httpCi'=<urlCi,cookieD,paramtersCi,null>;

(3e)将httpCi'请求发送给服务端,获取服务端的返回结果responsei',如果返回结果包含了userC的httpCi请求的结果responseCi,则说明userD可以执行不在其可执行操作列表中的操作,并且获取了userC的信息,检测出未授权访问漏洞。

(3f)对于userD的每个操作cmdsDi,如果cmdsDi需要访问后台服务端,获取cmdsDi的http请求,httpDi=<urlDi,cookieDi,paramtersDi,responseDi>。对于userD的每个httpDi,如果该操作的urlDi在userC的可执行操作列表的http请求中也存在,则不处理该操作,否则执行步骤,否则执行步骤(3g)-(3h);

(3g)修改httpDi请求,将其中的cookieDi信息设置为userC的用户信息cookieC,得到的请求为httpDi'=<urlDi,cookieC,paramtersDi,null>;

(3h)修改后的httpDi'请求发送给服务端,获取服务端的返回结果responsei',如果返回结果包含了userD的httpDi请求的结果responseDi,则说明userC可以执行不在其可执行操作列表中的操作,并且获取了userD的信息,检测出未授权访问漏洞。

实施例二

下面结合附图和“掌上车辆管理(简称:掌上车管)”具体的移动应用对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。

参照图1所示,本发明一种电力移动应用越权访问漏洞检测方法,包括确定移动应用的用户类型、平行越权访问漏洞检测、未授权访问漏洞检测、测试结果汇总4个步骤进行。

确定移动应用存在的不同类型的用户,具体包括以下几个步骤:

(1a)根据移动应用的实际业务,确定移动应用存在的用户类型,使用types=<type1,type2……typen>数组保存用户类型,“掌上车管”存在申请者(applicant)、审批者(approver)和驾驶员(driver)3种不同用户。

types=<type1=applicant,type2=apporver,type3=dirver>

申请者在需要使用车辆的时候提交用车申请,并且可以查询自己的历史用车申请记录;审批者对车辆新申请的用车进行批准或驳回,并为批准的用车记录指定车辆和驾驶员,审批者可以查询所有的用车申请记录;驾驶员可以查询分配给自己的用车申请记录,并在提供用车服务完毕后确认用车流程结束。整个系统后台还存在数据备份、台帐管理、统计分析等管理功能,但是这些功能并未在移动端实现,因此不属于本实施例的检测范围。

(1b)根据移动应用的实际业务,确定每种用户类型支持的用户数量,“掌上车管”中存在多个申请者和驾驶员,但只有一个审批者。在数组中的每个类型后面,增加该类型用户的数量,1表示只有1个,n表示可以有多个types=<type1=applicant:n,type2=apporver:1,type3=dirver:n>;

(1c)增加未登录的用户这种特殊的用户类型,并且未登录用户的数量为1个,在数组中增加未登录用户,其中unlogin表示未登录的用户,types=<unlogin:1,type1=applicant:n,type2=apporver:1,type3=dirver:n>。

所述步骤(2)中,所述检测平行越权访问漏洞,具体包括以下几个步骤:

(2a)从types数组中选择包括多个用户的用户类型得到数组types_s,types_s=<type1=applicant:n,type3=dirver:n>,共有申请者和驾驶员2种用户类型包含多个用户,分别执行步骤(2b)-(2f);

(2b)选择typei∈types_s类型的2个不同用户,申请者类型的2个用户为:userA和userB,驾驶员类型的2个用户为:userC和userD。获取typei类型用户可以执行的全部操作,使用数组保存这些操作,申请者存在的操作包括:登录、查询历史用车申请记录、提交新的申请记录、个人设置、注销:

cmds.applicant=<cmd1=login,cmd2=newapply,cmd3=searchapply,cmd4=setting,cmd5=logout>

驾驶员存在的操作包括:登录、查询历史用车申请记录、结束用车申请记录、个人设置、注销:

cmds.driver=<cmd1=login,cmd2=finishapply,cmd3=searchapply,cmd4=setting,cmd5=logout>

(2c)对于每类每个操作,如果该操作需要访问后台服务端则执行步骤(2d)-(2f),cmds.applicant和cmds.driver中的所有操作都需要访问服务端;

(2d)cmds.applicant中的每个操作分别获取userA和userB用户执行该操作的http请求,以查询查询历史用车申请记录请求(searchapply)为例,获取userA和userB的http请求,其余请求参照下述过程执行平行越权访问漏洞检测过程。

userA的原始http请求是:

userB的原始http请求是:

从上述原始请求中提取出请求的4要素,http=<url,cookie,paramters,response>,其中url为请求的地址,cookie为请求的身份信息,paramters为请求参数,response为请求的返回结果。

提取之后userA的http请求是:

提取之后userB的http请求是:

由于是同一个操作,因此2个请求的url地址是相同的,如果2个请求的返回的结果相同,则说明不同用户得到的结果是相同的,返回步骤2c处理下一个操作,此时2个请求的返回结果不相同,则执行步骤2e;

(2e)修改userB的httpB请求,将其中的请求参数设置为用户A的请求参数,得到的请求为:

(2f)将新构造的http'请求发送给服务端,获取服务端的返回结果response'为:

返回结果response'包含了userA.httpA.responseA的结果,则说明userB仅需要修改请求参数就可以获取userA的信息,检测出平行越权访问漏洞。如果返回结果response'不包含userA的responseA的结果,该请求则没有平行越权访问漏洞。

cmds.applicant中的其他请求和cmds.driver中的所有请求,参照上述(3d)-(3f)的过程执行平行越权访问漏洞检测过程。

所述步骤(3)中,所述检测未授权访问漏洞,具体包括以下几个步骤:

(3a)从types数组得到用户类型的数目n,选择任意两种不同的用户类型,分别执行步骤(3b)-(3f),总共有种不同的组合。“掌上车管”中存在未登录用户(unlogin)、申请者(applicant)、驾驶员(driver)、审批者(apporver)4种不同类型的用户,因此总共产生6种不同的组合分别是:<unlogin,applicant>,<unlogin,driver>,<unlogin,apporver>,<applicant,driver>,<applicant,apporver>,<driver,apporver>。以<unlogin,applicant>为例执行步骤(3b)-(3f)的未授权访问漏洞检测过程,其他用户类型组合参照下述过程检测。

(3b)unlogin类型选择一个用户userC,applicant类型选择一个用户userD,获取userC和userD可以执行的全部操作:

userC可以执行登录操作:

cmds.userC=<cmdC1=login>

userD可以执行的操包括:登录、查询历史用车申请记录、提交新的申请记录、个人设置、注销:

cmds.userD=<cmdD1=login,cmdD2=newapply,cmdD3=searchapply,

cmdD4=setting,cmdD5=logout>

(3c)对于userC执行每个操作cmdsCi,如果cmdsCi需要访问后台服务端,获取cmdsCi的http请求,httpCi=<urlCi,cookieCi,paramtersCi,responseCi>;对于userD的每个操作cmdsDi,如果cmdsDi需要访问后台服务端,获取cmdsDi的http请求,httpDi=<urlDi,cookieDi,paramtersDi,responseDi>。此时userC只有登录操作,该操作需要访问后台,但该操作在userD的可执行操作列表中存在,因此不处理该操作,跳过步骤(3d)-(3e)。

(3f)对于userD的每个操作cmdsDi都需要访问后台,其中查询历史用车申请记录、提交新的申请记录、个人设置、注销5个操作的urlDi在userC的可执行操作列表中不存在,因此对这5个操作执行步骤(3g)-(3h)。

以查询查询历史用车申请记录请求(searchapply)为例,获取userD的http请求,其余请求参照下述过程执行未授权访问漏洞检测过程。

userD的原始用车申请记录查询http请求是:

提取之后userD的http请求是:

(3g)修改httpD3请求,将其中的cookieD3信息设置为userC的用户信息cookieC,从userC的登录请求中,获取userC的cookieC信息。

userC的原始登录http请求是:

提取之后userC的http请求是:

替换httpD3请求中的cookieD3信息,得到的请求为:

(3h)修改后的httpD3'请求发送给服务端,获取服务端的返回结果response3'为:response3'={success:'false',reason:'-1'},该结果不包含userD的httpD3请求的结果responseD3,则说明userC无法执行不在其可执行操作列表中的操作,不存在未授权访问漏洞。

如果返回结果包含了userD的httpD3请求的结果responseD3,则说明userC可以执行不在其可执行操作列表中的操作,并且获取了userD的信息,检测出未授权访问漏洞。

以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1