引言

最近朋友跟我一起把之前废弃的公众号做起来了,更名为鹿鸣安全团队,后面陆续会更新个人笔记,有趣的渗透经历,内网渗透相关话题等,欢迎大家关注

前言

Hvv中的一个很有趣的漏洞挖掘过程,从一个简单的API泄露到一系列漏洞。这次的经历更让我体会到了细心的重要性。

挖掘起始

Hvv中拿到了一大堆的资产,有IP和URL的,我一般会先去手动挖掘已经给了的URL资产。面对众多的URL资产,怎么下手呢,我通常会选择去跑一下Title,然后根据Title来选择软柿子捏。

比如下面某个业务应用系统,定位好了,就开始手动测试挖掘了。



打开URL进入这个业务应用系统,首页就是登录页面,见到这样的无验证码登录页码,直接起Burpsuite固定用户名字典然后爆破弱口令尝试。尝试了5分钟的弱口令爆破无果后,选择转换攻击思路。

转换思路

转头去看下URL:http://fxxx/wxxx/login.html感觉可以尝试下是否存在目录遍历的问题



于是转到上层目录查看的时候http://fxxx/wxxx,发现页面有一个渲染的加载的过程,然后才跳转到login.html登录页面,而且/wxxx目录看上去又像一个未授权的页面。于是Burpsuite在/wxxx一个一个放包,观察转到/wxxx/login.html过程中加载了什么东西。



通过Burpsuite一个一个放包发现了一个特别的API调用接口



在这个API接口之上再往前跨目录,直到回到根目录/DFWebAPIServiceHT下发现是一个接口数据库系统



该系统存在非常多开放的接口,并且每个接口下面,还有详细的调用参数以及调用方法,过多的接口数据就不放了



因为进入该业务系统后是一个登录页面,于是我直接去寻找是否有用户信息的一些相关接口开放。找到了如下接口



通过/SXXXX_User/get接口可以获取到用户名相关的Json数据,其中的user_id键值就是用户名



通过该接口获取到了很多的用户名,这些用户名的设置确实刁钻,例如pte,dpsas等用户名,这是难以简单猜解到的。通过收集获取到的这些用户名,再次进行弱口令爆破。这里的登录页面对表单中的用户名密码进行了Base64的加密。



有一个很简单的方法,将收集到的用户名和简单的几个弱口令全部B ase64编码后放到txt里,然后导入Burpsuite的Simple list模式的payload中。这是比较简单的方法。

我这里用的是BurpCrypto插件来定义Execjs来将两个表单项在爆破过程中同时进行Base64编码。需要我们定位到加密或者编码的js位置,由于用的是Base64编码,图简单,用上面字典的方法即可。同样的Burpsuite爆破模块中可以通过设置payload processing进行Base64编码设置也可以起到一样的加密效果。

柳暗花明

使用上述方法一顿爆破后,真的爆破出来了一个普通用户弱口令123456。拿着这个弱口令,我登入了系统,发现该系统只是一个外壳,里面还有很多的分系统。



这让我非常的欣喜,我猜想这些系统的账号密码可能是互通互联的。经过测试发现,这里面只有两到三个系统可以正常访问,且账号密码并不都是互联互通的。其中有一个决策系统,通过刚刚爆破出来的用户弱口令是可以进入该系统的,且用户认证为灌区管理员,权限还是非常的低。



由于权限还是太低,只有两个没什么用途的菜单,翻找了很久,都没有发现可利用的地方,或者可以上传shell的地方,索性放弃拿shell。但是打开右上角人员设置界面的抓包中发现了有意思的地方,在人员设置中有一个修改密码的表单设置,虽然是********,看不到具体明文,但是在返回的包中是直接显示出来的。而且Get请求里有一个很有趣的参数就是id=用户名的这个参数。



也许我可以遍历之前用户接口泄露出来的用户名来尝试获取用户密码?

有了这个想法后,我直接起Bp的爆破模块,来遍历用户名尝试,果不其然。

这里没有鉴权机制,可以直接通过遍历ID用户名参数,就可以获得对应的用户密码。



通过上面的越权漏洞获取到了高权限的用户密码,如root,admin,xxadmin等。利用高权限用户登录后,发现后台多了非常多的菜单,然后查找下敏感信息,发现泄露了很多敏感信息,并且高权限用户是可以直接看到所有的用户密码的。



通过上述组合式的漏洞发现和利用,提了不少分。通过这次测试感受到了手测的魅力,还是非常的有意思的。其中这个接口数据库还有非常多的敏感接口,比如权限变更,文件上传,而且在此次测试中,发现了两个类似的API数据库,但是另一个利用价值不大,所以这里没写。

结语

总结下上述的流程,从一个跨目录的尝试到大量API接口的泄露再到垂直越权获取管理系统的管理员账号,再到后台敏感数据泄露。总之,就是在手动挖掘漏洞的时候,要注重每一个细节,尝试多种可能性,富有创造力的去将一些可能的漏洞点结合,这样能大大的增加漏洞挖掘的命中率。

该文章首发于奇安信攻防社区

记一次Hvv中遇到的API接口泄露而引起的一系列漏洞的更多相关文章

  1. 在Winform混合式框架中整合外部API接口的调用

    在我们常规的业务处理中,一般内部处理的接口多数都是以数据库相关的,基于混合式开发的Winform开发框架,虽然在客户端调用的时候,一般选择也是基于Web API的调用,不过后端我们可能不仅仅是针对我们 ...

  2. MVC代码中如何调用api接口

    关于代码解释,为了方便读者浏览时更好理解代码的含义,我把注释都写在代码里面了.因为一开始我只考虑到功能上的实现并没有考虑代码的优化所以代码我就全写在一个页面了.至于那些生成扑克牌类.计算类等代码优化方 ...

  3. windows服务中对外提供API接口

    public class SendMqService { private static bool isExcute = true; private static HttpListener listen ...

  4. 转载-常用API接口签名验证参考

    原文地址: http://www.cnblogs.com/hnsongbiao/p/5478645.html 写的很好,就做个笔记了.感谢作者! 项目中常用的API接口签名验证方法: 1. 给app分 ...

  5. 常用API接口签名验证参考

    项目中常用的API接口签名验证方法: 1. 给app分配对应的key.secret2. Sign签名,调用API 时需要对请求参数进行签名验证,签名方式如下: a. 按照请求参数名称将所有请求参数按照 ...

  6. abp 基于api接口的页面内容提交

    项目中,后端api接口需要接收来自页面提交的数据.注意下拉控件对应值,应该按以下方式赋值 @Html.DropDownListFor(m => m.IsFolder, new List<S ...

  7. 初识Django —Python API接口编程入门

    初识Django —Python API接口编程入门 一.WEB架构的简单介绍 Django是什么? Django是一个开放源代码的Web应用框架,由Python写成.我们的目标是用Python语言, ...

  8. 循序渐进VUE+Element 前端应用开发(13)--- 前端API接口的封装处理

    在前面随笔<循序渐进VUE+Element 前端应用开发(12)--- 整合ABP框架的前端登录处理>介绍了一个系统最初接触到的前端登录处理的实现,但往往对整个系统来说,一般会有很多业务对 ...

  9. 在基于MVC的Web项目中使用Web API和直接连接两种方式混合式接入

    在我之前介绍的混合式开发框架中,其界面是基于Winform的实现方式,后台使用Web API.WCF服务以及直接连接数据库的几种方式混合式接入,在Web项目中我们也可以采用这种方式实现混合式的接入方式 ...

随机推荐

  1. yum安装时提示“尚未安装任何 GPG 公钥,请下载您希望安装的软件签名公钥并安装”

    在Linux操作系统中,安装软件依赖包时,出现了尚未安装任何 GPG 公钥,要求使用rpm --import public.gpg.key导入  问题: [root@server7 yum.repos ...

  2. 【Azure 机器人】微软Azure Bot 编辑器系列(4) : 使用语言生成功能[LG: Language Generation] (The Bot Framework Composer tutorials)

    欢迎来到微软机器人编辑器使用教程,从这里开始,创建一个简单的机器人. 在该系列文章中,每一篇都将通过添加更多的功能来构建机器人.当完成教程中的全部内容后,你将成功的创建一个天气机器人(Weather ...

  3. Java后端精选技术:SpringBoot配置读取

    在早前的博客中曾经写过 Spring 程序通过 Bean 映射实现配置信息的读取. 在SpringBoot 框架中读取配置的方式变得非常多样,这导致读者在搜寻资料时反而容易迷糊. 到底,SpringB ...

  4. 有模有样解决Flutter里Webview无法访问HTTP页面的问题

    探索过程 Android9(好像是吧)开始谷歌就默认不让开发者访问不安全HTTP内容了,如果非要用HTTP,那必须在networkSecurityConfig里配置cleartextTrafficPe ...

  5. Scala语言笔记 - 第三篇(容器方法篇)

    Scala语言笔记 - 第三篇(容器方法篇) 目录 Scala语言笔记 - 第三篇(容器方法篇) map和flapMap方法: ​ 最近研究了下scala语言,这个语言最强大的就是它强大的函数式编程( ...

  6. VScode如何设置模板字符串html标签自动补全

    在学习Vue的过程中,很多时候都需要用到模板字符串,但是里面的html标签一个字符一个字符的去敲未免也太麻烦了吧,其实我们可以通过设置来实现在模板字符串中按Tab键快速补全html标签. 1.在VSC ...

  7. R语言--读取文件(数据输入)

    1 数据的输入 1.1 键盘输入 首先新建一张空表: dat<-data.frame(age=numeric(0),gender=character(0),weight=numeric(0)) ...

  8. layui 小细节知识点

    1.layui-textarea 赋值总是居中 问题   需要 放在同一行 <textarea class="layui-textarea" style="text ...

  9. 编译x86_64 Linux内核并基于QEMU运行

    编译并运行内核镜像 安装包准备 $ sudo apt install git $ sudo apt install build-essential kernel-package fakeroot li ...

  10. [网络编程]mqtt概念&数据包

    目录 前言 1. MQTT 简介 2. MQTT 通信模型 2.1 MQTT 协议 2.2 MQTT 协议中的订阅&主题&会话 2.3 MQTT 协议中的方法 3. MQTT 协议数据 ...