Write-up地址:Exploiting an unknown vulnerability

作者:Abhishek Bundela

  这篇文章跟我之前看到的文章不太一样,作者是按照一个练习的方式简单描述了他对一个应用进行渗透测试的过程,其中提到的许多测试虽然没有成功,但是对于像我这样的菜鸟来说还是有很大的启发,事实上在看的过程中我会很疑惑,也可能是因为我之前并不是特别了解逻辑漏洞,而许多bug bounty的write-up中提到的漏洞类型是比较集中的XSS或者CSRF,所以这篇文章让我从另一个角度看待web漏洞。


背景:一个已经经过渗透测试的咨询应用程序

  作者首先对应用进行分析,在实现应用功能时的数据流动。之后开始渗透测试,并首先分析可能存在的逻辑漏洞,因为在软件开发或者测试的过程中可能存在没有被考虑到的临界条件。

应用分析

1. 用户角色

  ①咨询顾问:设置一个时间点的咨询费用

# consultant request

POST /set/fee/

{"value": 5, "timing":2}

  ②客户:预约某咨询顾问的时间,并扣除对应时间点的咨询费用

# client request

POST /consultant_username/book

{"timing":2}

  到这里,我也想到一些测试,例如xss,sql注入,把参数值修改为负数或者极大值,设置多个重复的参数,然后开始看下面作者给出的测试:

2. 测试案例

  这里作者提到了九个测试用例,有一些我不太明白,所以直接引用原文了。

  ① 注入漏洞,例如sql注入,命令注入

  ② 把content-type和请求数据修改为xml,测试是否存在xml注入

  ③ Booking consultant’s higher value time slots in less coin

  ④ Injecting “value” parameter from consultant request and using it in client request

  ⑤ 在客户的请求中使用两个timing参数

  ⑥ 在客户请求中把参数设置为{“timing[0]”:2} (这种把参数设置为数组的漏洞我之前也看到过两个,但是没有记录网址)

  ⑦ 修改HTTP方法,POST -> PUT

  ⑧ 同时订阅同一个咨询顾问的多个时间点(条件竞争)

  ⑨ 同时订阅两个不同咨询顾问的时间点(条件竞争)

  以上的条件竞争对我来说比较新颖,由于以上测试都失败了,作者对于具体的测试方法也并没有详细介绍,而作者记下来找到的漏洞也是一种条件竞争,所以我其实不是特别明白⑧⑨中的条件竞争漏洞如果真的存在,会是怎样的一种情况。

3. 发现漏洞

  之后作者把精力集中在了客户的请求上,由于客户发送的请求中并不包括value,所以如果在客户订阅之前,咨询顾问提高了咨询价格会发生什么?

  单个发送请求并没有问题,但是如果使用多线程,按照value值为{5,15,15,5}循环发送咨询顾问请求,客户有50%的可能性会支付更高的咨询费用。

4. 漏洞存在的原因

  我对条件竞争这个概念并不陌生,想必大家在学习条件竞争时接触到的模拟案例大多都是订票系统吧,而订票系统不就是一个web应用吗?可是刚看到这个漏洞的时候,我甚至都不理解为什么它会是一个漏洞。

  考虑到具体场景,客户已经在订阅提交的页面,而这时候咨询顾问修改了价格,如果应用实现不当,后台在发生客户订阅事件时没有锁定value变量,导致咨询顾问仍然可以对其进行修改,确实会发生客户以更高价格订阅服务的情况。


  之前的文章中,作者多是针对一个网站,分析它的各个子域名,对于每个子域名,查看实现其功能时发送的各种请求,分析其中可能的漏洞。然而文章中并没有详细说明作者是怎样找到了最终的漏洞的。

  而这篇文章,作者直接从该咨询应用的功能出发,描述了他怎样列出一系列测试案例,最终针对某个测试成功发现漏洞的流程,和之前文章的侧重点不同。

  但是有一点是相同的,那就是他们都强调了去分析应用的功能,查看请求历史,分析数据的流动方向,而这篇文章的作者尤其强调了要把更多的时间和精力用于构建smarter的测试案例,这样才能发现漏洞。

【10.21总结】一个渗透测试练习实例——发现未知的漏洞(Race condition)的更多相关文章

  1. docker搭建一个渗透测试环境 bwapp为例

    bwapp是一个渗透测试靶场,他其中中含有100多个Web漏洞  基本涵盖了所有主要的已知Web漏洞,包括OWASP Top 10的各种 首先要去搜索一下  看一下有哪些镜像可以下载    docke ...

  2. 用Python打造了一个渗透测试暴力探测器

    资源探测的作用 通过资源探测,我们可以在目标系统中发现文件.目录.活动.服务还有相关的参数,为下一步的行动提供信息参考. 一个开源的模糊测试数据库 https://github.com/fuzzdb- ...

  3. 渗透测试学习 二十、 其他漏洞汇总之PHP相关漏洞

    大纲: PHP相关漏洞 JSP相关漏洞 其他漏洞汇总 PHP相关漏洞 文件包含漏洞 php://input等伪协议利用 代码执行漏洞 变量覆盖漏洞 文件包含漏洞 程序开发人员一般会把重复使用的函数写到 ...

  4. 渗透测试学习 十七、 XSS跨站脚本漏洞详解

      一般用途:拿cookie进后台,将后台地址一起发送过来 特点:挖掘困难,绕过困难  大纲: XSS漏洞基础讲解 XSS漏洞发掘与绕过 XSS漏洞的综合利用 XSS漏洞基础讲解 XSS介绍: 跨站脚 ...

  5. 【渗透测试】Squirrelmail远程代码执行漏洞+修复方案

    最近网上有点不太平,爆出各种漏洞,等下会把近期的漏洞复现一下,发出来.安全圈的前辈总是默默的奉献,在这里晚辈们只能站在巨人的肩膀上,跟紧前辈们的步伐,走下去. -------------------- ...

  6. 使用WampServer和DVWA在Windows10上搭建渗透测试环境

    前言: DVWA是一个具有脆弱性的Web测试应用,需要PHP和MySQL的环境支持.我们可以手动配置DVWA所需的运行环境,也可以使用WampServer进行搭建.WampServer是集成了Apac ...

  7. PJzhang:Firefox渗透测试插件HackTools样例

    猫宁~~~ firefox插件hacktools地址: https://addons.mozilla.org/zh-CN/firefox/addon/hacktools/ HackTools由Ludo ...

  8. 《Metasploit渗透测试魔鬼训练营》第一章读书笔记

    第1章 魔鬼训练营--初识Metasploit 20135301 1.1 什么是渗透测试 1.1.1 渗透测试的起源与定义 如果大家对军事感兴趣,会知道各国军队每年都会组织一些军事演习来锻炼军队的攻防 ...

  9. Kali Linux渗透测试实战 1.4 小试牛刀

    目录 1.4 小试牛刀 1.4.1 信息搜集 whois查询 服务指纹识别 端口扫描 综合性扫描 1.4.2 发现漏洞 1.4.3 攻击与权限维持 小结 1.4 小试牛刀 本节作为第一章的最后一节,给 ...

随机推荐

  1. linux 文件操作命令 touch、cat、more、less、head、tail

    touch /bin/touch 创建空文件 linux 创建文件可以使用特殊符号,/除外 touch test test1 创建了两个文件touch "test test1" 创 ...

  2. mybatis 的动态SQL

    在XML 中支持的几种标签: • if • choose.when.otherwise • where • set • trim • foreach OGNL 表达式 1. el or e22. el ...

  3. maven一键部署linux的tomcat(wagon-maven-plugin)

    Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Depen ...

  4. npm与gulp的使用

    这边将工作中使用的npm以及gulp的一些方法做了整理,方便以后查阅,至少不用去麻烦度娘了~ A.npm的使用: 1.在你所需要的文件夹里面初始化npm-->  npm init -y    - ...

  5. windows操作系统中安装、启动和卸载memcached

    今天总结一下如何在Windows操作系统中安装.启动和卸载memcached:下载地址: http://download.csdn.net/download/wangshuxuncom/8249501 ...

  6. django项目设计

    我们以前是只建立一个项目只建立一个app,如果我们要建立多个app的时候 并且这个app要写很多额视图的函数views内函数,要是建立很多种的时候就会造成很冗杂,不美观  我们未来增强解耦性,就把那个 ...

  7. EditPlus 自动格式化js、html、css,以EditPlus 文本编辑器v3.41(1145)为例

    工具/原料   edtools.rar 方法/步骤     下载工具包:edtools.rar ,解压后放到磁盘的一个目录,如D:/edTools   打开ED,打开“工具”-“配置用户工具”,在弹出 ...

  8. 占位符 %s

    a = input("Name:")b = input("Age:")c = input("Job:")d = input("ho ...

  9. BZOJ 3171 循环格 最小费用流

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=3171 题目大意: 一个循环格就是一个矩阵,其中所有元素为箭头,指向相邻四个格子.每个元 ...

  10. BZOJ4891:[TJOI2017]龙舟(Pollard-Rho,exgcd)

    Description 加里敦大学有一个龙舟队,龙舟队有n支队伍,每只队伍有m个划手,龙舟比赛是一个集体项目,和每个人的能力息息相关,但由于龙舟讲究配合,所以评价队伍的能力的是一个值c = (b1*b ...