【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入门学习-天气预报app(一)
引言 学习<android第一行代码>根据书本开发的天气预报app,主要用于熟练操作android开发(android studio3.0平台). 今天主要分享一下从服务器上获取天气信息, ...
- Android自定义View探索—生命周期
Activity代码: public class FiveActivity extends AppCompatActivity { private MyView myView; @Override p ...
- Pig order by用法举例
sorted = order data by $0; 数值类型按照数值大小比较 chararray类型按照字符的字典顺序比较 bytearray按照字节的字典顺序比较 复杂类型(map.tuple ...
- uml各类图
原文:http://www.cnblogs.com/way-peng/archive/2012/06/11/2544932.html 一.UML是什么?UML有什么用? 二.UML的历史 三.UML的 ...
- AVAudioPlayer简易封装
AVAudioPlayer简易封装 [说明] AVAudioPlayer简易封装,仅仅支持播放,暂停,停止,暂停时候带有渐隐效果,自己用,没有参考价值. [源码] https://github.com ...
- Oracle数据库突然宕机,处理方案
一.现象 数据库突然断掉,无法响应,. 二.分析 查看日志发现错误如下(日志路径:D:\app\Administrator\diag\rdbms\orcl\orcl\trace\alert_hrpde ...
- 北美PM活着的攻略
http://www.followmedoit.com/bbs/forum.php?mod=viewthread&tid=47&extra=page%3D1 在北美,做PM不易,需要交 ...
- 解决华为交换机S5700无法解除ip/Mac绑定的问题
今天同事离职,需要解除他的个人笔记本Mac与ip的绑定 首先进入系统用户视图,然后进入vlanif4,解除151绑定 system-view interface vlanif 4 undo dhcp ...
- Vue安装以及Vue项目创建以及Vue Devtools安装
这几天一直在学习Vue.js框架. 因为以前没有前端项目的经验,也没学过什么前端框架,所以,对于vue.js的学习有些不知所措. 在vue.js官网看教程,按照教程指点,可以不用脚手架开发,也可以搭建 ...
- 一、CSS概述 二、CSS的选择器(认识) 三、CSS样式和属性(练习) 四、重构商城首页DIV+CSS(页面布局)(重点) 浮动/更改显示方式
一.CSS概述###<1>概念 DIV,就是一个HTML元素,块级元素,通常结合CSS进行页面的布局. CSS,层叠样式表,给HTML元素增强显示. ###<2>作用 样式定义 ...