引言

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

前言

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. hashmap专题

    hashmap重要变量 源码中定义了很多常量,有几个是特别重要的. DEFAULT_INITIAL_CAPACITY: Table数组的初始化长度: 1 << 4,即 2^4=16(这里可 ...

  2. 【NX二次开发】获取对象边界包容盒的三个函数UF_MODL_ask_bounding_box

    今天看到胡工对bounding_box的分享,我也来测试一番(原帖地址:https://www.ugapi.com/thread-10287.html) 获取对象的边界盒子的三个函数: 1 UF_MO ...

  3. SpringCloud、Nginx高并发核心编程 【2020年11月新书 】

    文章太长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典极品 : 三大本< Java 高并发 三部曲 > 面试 + 大厂 + 涨薪必备 疯狂创客圈 经 ...

  4. vue调用子组件方法时,参数传不过去

    有可能是因为子组件方法用了 async  await 子组件去掉async就好了

  5. Java数据库开发(二)之——DBCP连接数据库

    1.载入jar包 DBCP需要以下几个jar包,可到apache及mysql的官网下载 2.程序编写 public static BasicDataSource ds = null; static f ...

  6. KDE桌面环境下konsole,kate等软件无法切换中文输入法

    解决方案(arch): 修改/etc/profile,增加以下语句: #fcitxexport XIM_PROGRAM=fcitxexport XIM=fcitxexport GTK_IM_MODUL ...

  7. AcWing 244. 谜一样的牛

    有n头奶牛,已知它们的身高为 1~n 且各不相同,但不知道每头奶牛的具体身高. 现在这n头奶牛站成一列,已知第i头牛前面有a头牛比它低,求每头奶牛的身高. #include<bits/stdc+ ...

  8. Linux:CentOS-7配置VMware-15.5与本机IP同网段

    确认本机IP ctrl+R:输入cmd 回车 输入命令:ipconfig  可以看出一下信息:本机ip: 192.168.1.162网关:192.168.1.1DNS服务器:192.168.1.1 设 ...

  9. 1.3.6、通过Path匹配

    server: port: 8080 spring: application: name: gateway cloud: gateway: routes: - id: guo-system4 uri: ...

  10. 苦B程序员的数据验证之路

    发生了什么事 在一次苦B程序员和苦C程序员的结对编程中发生的一段对话 代码是这样的: public void deleteAllExtendAclsFromContent(String content ...