基于Burpsuite的安全测试十六:业务接口调用模块测试

基于Burpsuite的安全测试十六:业务接口调用模块测试

情景1:接口调用重放测试

  1. 普通用户会提交一次订单,但是攻击者会通过抓取订单请求,进行接口调用重放,即短时间内通过Burp Suite工具的Repeater对请求进行多次重放从而生成多个订单。

系统修复方案:

  1. 对生成订单环节采用验证码机制,防止生成数据业务被恶意调用。
  2. 一个订单一个token,订单提交一次后token就失效。

 

情景2:接口调用遍历测试

  1. 举例,想要获得uid参数的位置,首先利用Burp Suite的爬虫功能,从重点关注的目录,一般为网站根目录开始爬取,在HTTP history选项中选中要开始爬取的项,右击选择Spider from here,爬取登录后的网站链接。
  2. 在Target---Site map中显示爬取的结果,爬取完毕后:
    1. 可以通过Burp Suite的过滤功能过滤出带uid参数的链接,Proxy---HTTP history---(Filter by search term),这样可以在请求中找到uid的位置.
    2. 对应的响应body中也能查到用户敏感信息。
    3. 对于这样的请求,可将其发送到Intruder中,将uid参数的后几位设置为标记位。
    4. 且Payload sets中payload type设置为Numbers,payload Options 设置为Sequential,且From---to设置为0000-9999的数字,step为1,Base设置为Decimal,Min integer digits为4,Max integer digits为4。
    5. Payload设置好后点击Start attack,开始遍历测试。
    6. 分析Intruder结果,如果uid存在则在响应中会包含“ip”这个字符串,可以通过在Intruder的Results tab下Filter by search term 写入"ip"过滤结果。如果存在这些预期结果则说明存在接口调用遍历测试漏洞。

系统修复方案:

Session中会存储当前用户的凭证或者id,所以只有传入凭证或者id参数值与Session中的一致才返回数据内容。

 

情景3:接口调用参数篡改测试

  1. 在密码重置环节,发送验证码处,攻击者在页面上触发重新发送验证码操作,此时抓包,将请求的手机号改为攻击者自己的,如果攻击者自己能收到验证码,这证明系统存在漏洞。
  2. 举例,如在短信验证码页面点击“重新发送”,同时抓包,将截取到的用户手机号改为攻击者自己的,之后攻击者收到了短信验证码信息。

系统修复方案:

  1. 在忘记密码或者重新发送验证码时,会话session中存储重要凭证,所以要从session中获取凭证而不是通过客户端的请求参数中获取。
  2. 如果要从客户端获取参数,则要和session中的凭证做对比,通过才能继续。

 

情景4:接口未授权访问/调用测试

  1. 通过Burp Suite记录登录状态下的所有请求和响应内容,并过滤出包含敏感信息的请求。再在未登录情况下,使用浏览器访问这些包含敏感信息的请求,如果返回内容和登录后的一致则存在漏洞。
  2. 例如网站中抓取接口:
    1. 网站根目录开始爬取:
    2. 在HTTP history选项中选中要开始爬取的项,右击选择Spider from here。
    3. 爬取的结果在Target---Site map中显示。
    4. 爬取完毕后通过Burp Suite的MIME type过滤功能筛选出接口相关的HTTP请求,重点关注json、script、xml、text MIME type等。
    5. 对过滤出来的接口相关的请求做查看,如果响应包中有包含敏感信息的,可以将完整的URL请求地址复制到未登录的浏览器中,如果能正常访问到内容则说明存在未授权访问的漏洞。

系统修复方案:

  1. 采用token校验的方式,url中加入token参数,只有token验证通过才返回接口数据且token使用一次后失效。
  2. 后端对接口的请求最登录验证,未登录返回自定义的错误信息。

 

情景5:Callback自定义测试

  1. 当使用Ajax异步传输数据时,非同源域名之间会存在限制(同源是指域名、协议、端口相同),可以通过JSONP(JSON with Padding)方法解决这个限制问题,原理:利用HTML里元素标签,远程调用JSON文件来实现数据传递。JSONP一般会使用Callback(回调函数)参数来声明回调时使用的函数名,这样容易让攻击者自定义Callback内容,从而引发XSS漏洞。
  2. 例如网站根目录开始爬取:
    1. 在HTTP history选项中选中要开始爬取的项,右击选择Spider from here。
    2. 爬取的结果在Target---Site map中显示。
    3. 爬取完毕后通过Burp Suite的过滤功能过滤出带Callback参数的链接(Proxy---HTTP history---(Filter by search term),勾选Filder by file extension中的Hider,隐藏js、gif等后缀的URL)。
    4. 找到URL带有Callback参数的链接。
    5. 查看URL对应得HTTP Response的Content-Type类型是否为text/html,如果是我们输入的HTML标签才会被浏览器解析。
    6. 将对应的请求发送到Repeater。
    7. 在callback参数值的前面加一些类似HTML的标签,如,如callback=Testjsonp1,Go之后发现Response的内容没有被影响。也可将callback参数换为有恶意行为的HTML标签,如callback=jsonp1

系统修复方案:

  1. 严格定义HTTP响应中content-type为json数据格式,即Content-type:application/json
  2. 建立callback白名单,如果传入的callback参数值不在名单内就阻止继续输出,跳转到异常页面
  3. 对callback参数进行html实体编码过滤<   >  等字符

 

情景6:WebService测试

  1. 略,后续补充

系统修复方案:

略,后续补充

你可能感兴趣的:(安全测试)