【10.21总结】一个渗透测试练习实例——发现未知的漏洞(Race condition)
Write-up地址:Exploiting an unknown vulnerability
这篇文章跟我之前看到的文章不太一样,作者是按照一个练习的方式简单描述了他对一个应用进行渗透测试的过程,其中提到的许多测试虽然没有成功,但是对于像我这样的菜鸟来说还是有很大的启发,事实上在看的过程中我会很疑惑,也可能是因为我之前并不是特别了解逻辑漏洞,而许多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)的更多相关文章
- docker搭建一个渗透测试环境 bwapp为例
bwapp是一个渗透测试靶场,他其中中含有100多个Web漏洞 基本涵盖了所有主要的已知Web漏洞,包括OWASP Top 10的各种 首先要去搜索一下 看一下有哪些镜像可以下载 docke ...
- 用Python打造了一个渗透测试暴力探测器
资源探测的作用 通过资源探测,我们可以在目标系统中发现文件.目录.活动.服务还有相关的参数,为下一步的行动提供信息参考. 一个开源的模糊测试数据库 https://github.com/fuzzdb- ...
- 渗透测试学习 二十、 其他漏洞汇总之PHP相关漏洞
大纲: PHP相关漏洞 JSP相关漏洞 其他漏洞汇总 PHP相关漏洞 文件包含漏洞 php://input等伪协议利用 代码执行漏洞 变量覆盖漏洞 文件包含漏洞 程序开发人员一般会把重复使用的函数写到 ...
- 渗透测试学习 十七、 XSS跨站脚本漏洞详解
一般用途:拿cookie进后台,将后台地址一起发送过来 特点:挖掘困难,绕过困难 大纲: XSS漏洞基础讲解 XSS漏洞发掘与绕过 XSS漏洞的综合利用 XSS漏洞基础讲解 XSS介绍: 跨站脚 ...
- 【渗透测试】Squirrelmail远程代码执行漏洞+修复方案
最近网上有点不太平,爆出各种漏洞,等下会把近期的漏洞复现一下,发出来.安全圈的前辈总是默默的奉献,在这里晚辈们只能站在巨人的肩膀上,跟紧前辈们的步伐,走下去. -------------------- ...
- 使用WampServer和DVWA在Windows10上搭建渗透测试环境
前言: DVWA是一个具有脆弱性的Web测试应用,需要PHP和MySQL的环境支持.我们可以手动配置DVWA所需的运行环境,也可以使用WampServer进行搭建.WampServer是集成了Apac ...
- PJzhang:Firefox渗透测试插件HackTools样例
猫宁~~~ firefox插件hacktools地址: https://addons.mozilla.org/zh-CN/firefox/addon/hacktools/ HackTools由Ludo ...
- 《Metasploit渗透测试魔鬼训练营》第一章读书笔记
第1章 魔鬼训练营--初识Metasploit 20135301 1.1 什么是渗透测试 1.1.1 渗透测试的起源与定义 如果大家对军事感兴趣,会知道各国军队每年都会组织一些军事演习来锻炼军队的攻防 ...
- Kali Linux渗透测试实战 1.4 小试牛刀
目录 1.4 小试牛刀 1.4.1 信息搜集 whois查询 服务指纹识别 端口扫描 综合性扫描 1.4.2 发现漏洞 1.4.3 攻击与权限维持 小结 1.4 小试牛刀 本节作为第一章的最后一节,给 ...
随机推荐
- Android埋点技术分析
1.现有的几种埋点技术的实现原理和优劣分析 (1)代码埋点:将收集数据的代码直接写在需要的地方,当用户点击某个控件或者打开某个页面时调用到该部分代码完成数据的收集. 优势:准确性高,收集数据和发送数据 ...
- 删除maven本地库中下载不完全的jar包
@echo off rem 这里写你的仓库路径 set REPOSITORY_PATH= '本地仓库路径' rem 正在搜索... for /f "delims=" %%i in ...
- leetCode题解单链表反转
1.题目描述 反转一个单链表.链表节点结构如下: struct ListNode { int val; ListNode* next; }; 2.问题分析 特殊情况是输入的头结点是一个空的,或者只有一 ...
- CompletionService和ExecutorCompletionService
CompletionService用于提交一组Callable任务,其take方法返回已完成的一个Callable任务对应的Future对象. 如果你向Executor提交了一个批处理任务,并且希 ...
- Man's Best Friend: The Science Behind the Dog and Human Relationship
http://info.thinkfun.com/stem-education/mans-best-friend-the-science-behind-the-dog-and-human-relati ...
- [沫沫金]JavaWeb企业信息系统,增加操作记录、数据库记录
背景 系统出现数据莫名丢失,业务人员的反馈无法复现问题.纠结了很久,最终老板发话要记录操作,通过日志进行分析重现 环境 SSH框架 目标 1.记录访问了那个方法,使用的参数及返回的内容 2.记录新增. ...
- 解决windows 10英文版操作系统中VS2017控制台程序打印中文乱码问题
当您在windows 10英文版的操作系统中运行Vs2017控制台应用程序时,程序可能无法正常显示中文,中文都变成了乱码.这是由于大部分中文程序所使用的文字编码与Windows 英文系统的文字编码不同 ...
- Hadoop HBase概念学习系列之数据模型(七)
HBase是一个类似BigTable的分布式数据库, 它是一个稀疏的长期存储的(存在硬盘上).多维度的.排序的映射表.这张表(HBase)的索引是行关键字.列关键字和时间戳. HBase中的数据 ...
- Web通信协议:OSI、TCP、UDP、Socket、HTTP、HTTPS、TLS、SSL、WebSocket、Stomp
1 各层的位置 1.1 OSI七层模型全景图 OSI是Open System Interconnect的缩写,意为开放式系统互联. 1.2 五层网络协议 在七层的基础上, ...
- December 04th 2016 Week 50th Sunday
Learn wisdom by the follies of others. 前车之鉴,后人之师. Maybe my personal state is that others can learn w ...