作者:whoamiecho

来源:ichunqiu

本文参加i春秋社区原创文章奖励计划,未经许可禁止转载!
一.  过程
1.1、事情起因:暴力破解
测试给了个普通用户账号,可以登录。APP一来就要登陆,遇到这种情况只能先抓个登陆的包看看是个什么情况,登陆时抓取数据包如下:

发现验证码是本地验证的,并没有发送到服务端去。那就好办了,二话不说先爆破试试。

        爆破了半天也没爆破处能登陆的用户。过了一会儿发现,用户名带入引号时居然报错了。这样的情况要么是被拦截了,要么存在注入。不巧是后者。看来以后爆破的字典里面都要带入几个常用的fuzzing语句啊。
        登陆点注入先试试万能密码。结果没能登陆,只能走注入拿密码的道路了。先来看看注入点:

GET
/AppBusi/login.jsp?jsoncallback=jQuery16407473715976811945_1478502187123&loginCode=admin'&loginPass=111111&pf=1&_=1478502216927
HTTP/1.1

Host: *.*.*.*:*

在loginCode字段后面加上单引号测试,发现报错。

使用sqlmap对loginCode参数进行注入测试:
sqlmap.py -r C:\Users\echo\AppData\Local\Temp\\1478502827550.req –dbs

得到众多数据库:

找当前数据库的管理员表,当我看到1762个表的时候腿都软了。我还是假装找了下,没找到。机制的管理员将好几个站点的数据库都放在了这里面,什么OA系统、BBS啊。香菇!

不能这样干坐着。先用普通测试用户登录进去看看是个什么情况。一顿狂点抓包测试。服务端做的真的很烂,一堆SQL注入,XSS。其他的就不多说了。



1.2、重点来了-任意文件下载漏洞

为了看看app都有什么功能,开启fidder一顿狂点,抓了所有的包,一个一个看看,当看到下面这个包时,我嘴角微微上扬了45度。

http://*.*.*.*:*/AppBusi/Flow/sat_down.jsp?filePath=E:/apache-tomcat-6.0.41/webapps/jxzmcc/files/satflow27/9d102ebd32dca338053c49ea1d015b37.txt
明显的任意文件下载漏洞,还带入了绝对路径。

构造链接下载网站源码:
http://*.*.*.*:*/AppBusi/Flow/sat_down.jsp?filePath=E:/apache-tomcat-6.0.41/webapps/jxzmcc/index.jsp

提示是个后台管理。访问http://*.*.*.*:*/jxzmcc/index.jsp发现不能能访问。猜测这么几个情况:
1:访问端口不对。
2:网站只能APP访问。
3:在内网。

先用nmap扫一下端口看看有些什么对外的服务:nmap -vv -p 1-65535 *.*.*.*

发现唯一能访问的8080端口还是代理转发出来的。证明了网站在内网。现在只能通过下载文件来找其他的东西了。最先想到的就是下载web.xml,server.xml、tomcat-users.xml。但是WTF,管理员真的是太懒了,居然都没配置。
为了证明站点在内网,想到可以下载http访问日志。于是翻看了下本地tomcat日志存储的格式:

构造好文件名:localhost_access_log.2016-10-31.txt。访问:
http://*.*.*.*:*/AppBusi/Flow/sat_down.jsp?filePath=E:/apache-tomcat-6.0.41/logs/localhost_access_log.2016-10-31.txt。

不出预料,访问均来自内网。又下载了几个日志,都是一样的情况。看来这个站是拿不到了,本以为到这里就要到头了。

1.3、转机出现
突然想到前面APP报错时候的tomcat版本不是6.0.41,而这里下载的站点的版本是6.0.41。说明这个站根本不在APP接口站的目录下。
通过访问不存在的链接,http://*.*.*.*:*/AppBusi/login.jsp121212报错显示出中间件版本信息。Tomcat/7.0.54

如果两个tomcat的安装目录相同的话,E:/apache-tomcat-7.0.54/目录应该是存在的,抱着试一试的态度构造了另一个下载地址:
http://*.*.*.*:*/AppBusi/Flow/sat_down.jsp?filePath=E:/apache-tomcat-7.0.54/logs/localhost_access_log.2016-10-31.txt
奇迹发生了。我都佩服我自己,貌似看穿了管理员的套路。在日志中发现了三个东西:
一个对外的管理后台:http://*.*.*.*:*/jxc/login.jsp

当前APP接口:http://*.*.*.*:*//AppBusi/login.jsp
另一个APP接口:http://*.*.*.*:*//JXZXAPP/xtgl/login.jsp


1.4、意外收获-后台登陆密码找回漏洞
如果能选择APP或者WEB我会优先试试WEB站。是管理后台没有验证码,又尝试了爆破,每一个请求都302跳转,爆破失效。


运气真是不行。也没有注入什么的。身残志坚的我没有放过任何一个链接,点击了 “获取密码”。

网站提示未查到admin用户的手机号。

通过本地元素调试填入自己的手机号,发包。

抓包:


腻害了我的哥,居然在在第二个数据包中看到密码:s3M1Kz

通过动态密码成功登陆了后台。

但是并没有什么luan用。后台什么功能都没有。Getshll失败。


1.5、最后的挣扎


在心有不甘的情况下,找了找另一个APP接口的情况。首先想到找出这是个什么APP,看看能不能有所突破,结果发现这个APP和测试的APP功能基本相同。看来是没戏了。在日志中还找到了一个未授权访问的上传点:

访问:http://*.*.*.*:*//JXZXAPP/gdsl/upload1.jsp

不论上传什么都谈框,上传失败。路都死完了。SQL注入也没能找到后台登陆地址,相比也是徒劳。Oracle时DBA权限,但是却没能直接GETSHELL。

二.  来个小姐(结)
想说的一下几点:
1:jsp的任意文件下载不像php那样包含文件。要想利用目前比较好的方法就是下载中间件配置文件,日志文件。liunx的话可以尝试下载/ect/passwd等等。
2:信息泄露还是有用的从找到Tomcat/7.0.54版本确定目录存在,从而扩大了攻击面。
3:找回密码,暴力破解有时候还是能有意外收获。

更多安全技术、精品好文、白帽黑客大佬尽在:http://bbs.ichunqiu.com/portal.php

一次失败的APP业务渗透测试的更多相关文章

  1. Android App安全渗透测试(一)

    一.            实验环境搭建 1.      安装JDK 2.      安装Android Studio 3.      模拟器或真机 我的是夜神模拟器和nexus 工具 Apktool ...

  2. 【原创】记一次对X呼APP的渗透测试

    获取CMS并本地安装 X呼是一款开源的客服CMS系统,访问官网,下载安卓版本的app和源码本地搭建: 发现这cms预留admin表中的用户就不少.... 直接用预留的密码解密,然后就能登录手机APP了 ...

  3. Android App渗透测试工具drozer,Qark,Androguard

    一. drozer简介 drozer(以前称为Mercury)是一款Android安全测试框架. drozer允许您通过承担应用程序的角色并与Dalvik VM,其他应用程序的IPC端点和底层操作系统 ...

  4. Android App渗透测试工具汇总

    网上搜集了一些App安全学习教程及工具,项目地址:https://github.com/Brucetg/App_Security 一. drozer简介 drozer(以前称为Mercury)是一款A ...

  5. 移动安卓App+BurpSuite的渗透测试

    从Android 7.0及以上版本开始,安卓系统更改了信任用户安装证书的默认行为,用户安装的证书都是用户证书,因此不管是filddle还是burp,都是把他们的根证书安装到了用户证书,而有部分移动ap ...

  6. app渗透测试 服务端篇

    基本知识 平时安装的应用位置,里面主要是odex可运行文件 /data/app 系统应用位置(需要root权限),里面主要是odex可运行文件 /system/app 应用的数据相关的位置,里面包含一 ...

  7. chapter1 渗透测试与metasploit

    网络对抗技术课程学习 chapter1 渗透测试与metasploit 一.读书笔记 二.渗透测试 通过模拟恶意攻击者的技术与方法进行攻击,挫败目标系统安全控制措施,取得访问控制权,并发现具备业务影响 ...

  8. APP弱网测试

    APP弱网测试   App弱网测试方法,常用工具有使用fiddler进行网络模拟,也可以使用Network Emulator Toolkit控制模拟网络,相对来说Network Emulator To ...

  9. 互联网App应用程序测试流程及测试总结

    互联网App应用程序测试流程及测试总结 1. APP测试基本流程 1.1流程图 仍然为测试环境 Pass 1.2测试周期 测试周期可按项目的开发周期来确定测试时间,一般测试时间为两三周(即15个工作日 ...

随机推荐

  1. 学习使用 CSS3 制作网站面包屑导航效果

    作为最重要的导航展示形式之一,面包屑导航能够让用户更清楚的知道他们所在页面的层次结构,让他们可以方便的导航到上一层页面.在本教程中,您将学习如何使用 CSS3 技术创建自己的面包屑导航效果. 效果演示 ...

  2. Android之Activity的生命周期

    PS:写一发关于Activity的生命周期,也算是面试的重点内容. 学习内容: 1.Activity的生命周期 2.面对多种情况的时候Activity的生命周期 3.onSaveInstanceSta ...

  3. Elasticsearch聚合 之 Date Histogram聚合

    Elasticsearch的聚合主要分成两大类:metric和bucket,2.0中新增了pipeline还没有研究.本篇还是来介绍Bucket聚合中的常用聚合--date histogram.参考: ...

  4. 第16/24周 SQL Server 2014中的基数计算

    大家好,欢迎回到性能调优培训.上个星期我们讨论在SQL Server里基数计算过程里的一些问题.今天我们继续详细谈下,SQL Server 2014里引入的新基数计算. 新基数计算 SQL Serve ...

  5. Twitter Bootstrap深受开发者喜爱的11大理由

    Bootstrap,作为创新技术框架,使开发者.设计者更容易.更快捷.更出色地完成网站及应用的搭建工作.如果你还没有使用Twitter Bootstrap,建议你去了解一下.Bootstrap为开发者 ...

  6. VMware中网络设置之Bridged

    1.设置linux虚拟机Bridged模式. 2.查找网关地址:点击虚拟机工具栏编辑---Virtual Network Editor,选中VMnet0,然后在Bridged to 下拉框中选择可以本 ...

  7. Git undo 操作

    相比传统的版本管理工具,git 的 undo 操作也不是很简单明了,本文尝试总结常用的 undo 操作. 重新提交 应该避免考虑不周全的提交,但这太难了.因此Git 专门提供了一个命令来弥补粗心的提交 ...

  8. C语言学习014:结构化数据类型

    struct的基本使用 #include <stdio.h> //定义数据结构 struct fish{ const char *name; const char *species; in ...

  9. js清除cookie

    例如要清除键为abc的cookie: document.cookie = "abc=0;expires=" + new Date().toUTCString();

  10. LINQ的Contains方法

    此方法,判断集合中是否包含有某一元素. source code: Enumerable.Where(stringArray, n => n.Contains("t"));