【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 小试牛刀 本节作为第一章的最后一节,给 ...
随机推荐
- js原生实现轮播
前两天同事面试新人,让现场写”轮播的实现”.我一想这玩意貌似我也没写过啊,就在旁边暗搓搓地拖了一张纸也在那写,同事都纳闷了! 这玩意实现方法有很多种,就看喜欢那种,喜欢怎么写而已.我这里是通过对img ...
- Nginx 配置多站点vhost
假设你想在Linux Nginx中用不同的域名访问不同的目录,这时就要配置多个vhost,具体配置如下,假设网站根目录设定在/var/www/ 1.在/var/www/下新建两个目录 /var/www ...
- clean-css
What is clean-css? Clean-css is a fast and efficient Node.js library for minifying CSS files. Accord ...
- linux命令 zcat
zcat命令查看一个gzip格式的压缩文件zcat file.gz > test.txt 查看一个压缩文件的内容,并将内容 輸入到 文件test.txt zcat命令也可以解压缩数据,并把解压 ...
- es知识点
版权声明:本文为博主原创文章,未经博主允许不得转载.转载请务必加上原作者:铭毅天下,原文地址:blog.csdn.net/laoyang360 https://blog.csdn.net/wojius ...
- vim和xshell配色
xshell配色: http://www.hookr.cn/xshell-pei-se.html vim配色: 参考该文中的配置方法,包括设置256色等.http://www.cnblogs.com/ ...
- 阿里云ECS服务器环境搭建 ubuntu 16.04 图形界面的安装
https://blog.csdn.net/zwq912318834/article/details/80528374
- [翻译] GiFHUD
GiFHUD progress hud for displaying only animated gif images. no labels (for now) 状态指示器,仅仅用来显示gif图片,不 ...
- [沫沫金]JavaWeb企业信息系统,增加操作记录、数据库记录
背景 系统出现数据莫名丢失,业务人员的反馈无法复现问题.纠结了很久,最终老板发话要记录操作,通过日志进行分析重现 环境 SSH框架 目标 1.记录访问了那个方法,使用的参数及返回的内容 2.记录新增. ...
- 电脑技巧——DOS和windows的区别?
本质:都是微软公司的操作系统,某种从程度上说windows是dos的后续操作系统版本.只是windows相比dos有质的飞跃.dos只支持命令操作,windows则有了良好的图形操作界面,window ...