一次失败的APP业务渗透测试
作者: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业务渗透测试的更多相关文章
- Android App安全渗透测试(一)
一. 实验环境搭建 1. 安装JDK 2. 安装Android Studio 3. 模拟器或真机 我的是夜神模拟器和nexus 工具 Apktool ...
- 【原创】记一次对X呼APP的渗透测试
获取CMS并本地安装 X呼是一款开源的客服CMS系统,访问官网,下载安卓版本的app和源码本地搭建: 发现这cms预留admin表中的用户就不少.... 直接用预留的密码解密,然后就能登录手机APP了 ...
- Android App渗透测试工具drozer,Qark,Androguard
一. drozer简介 drozer(以前称为Mercury)是一款Android安全测试框架. drozer允许您通过承担应用程序的角色并与Dalvik VM,其他应用程序的IPC端点和底层操作系统 ...
- Android App渗透测试工具汇总
网上搜集了一些App安全学习教程及工具,项目地址:https://github.com/Brucetg/App_Security 一. drozer简介 drozer(以前称为Mercury)是一款A ...
- 移动安卓App+BurpSuite的渗透测试
从Android 7.0及以上版本开始,安卓系统更改了信任用户安装证书的默认行为,用户安装的证书都是用户证书,因此不管是filddle还是burp,都是把他们的根证书安装到了用户证书,而有部分移动ap ...
- app渗透测试 服务端篇
基本知识 平时安装的应用位置,里面主要是odex可运行文件 /data/app 系统应用位置(需要root权限),里面主要是odex可运行文件 /system/app 应用的数据相关的位置,里面包含一 ...
- chapter1 渗透测试与metasploit
网络对抗技术课程学习 chapter1 渗透测试与metasploit 一.读书笔记 二.渗透测试 通过模拟恶意攻击者的技术与方法进行攻击,挫败目标系统安全控制措施,取得访问控制权,并发现具备业务影响 ...
- APP弱网测试
APP弱网测试 App弱网测试方法,常用工具有使用fiddler进行网络模拟,也可以使用Network Emulator Toolkit控制模拟网络,相对来说Network Emulator To ...
- 互联网App应用程序测试流程及测试总结
互联网App应用程序测试流程及测试总结 1. APP测试基本流程 1.1流程图 仍然为测试环境 Pass 1.2测试周期 测试周期可按项目的开发周期来确定测试时间,一般测试时间为两三周(即15个工作日 ...
随机推荐
- 学习使用 CSS3 制作网站面包屑导航效果
作为最重要的导航展示形式之一,面包屑导航能够让用户更清楚的知道他们所在页面的层次结构,让他们可以方便的导航到上一层页面.在本教程中,您将学习如何使用 CSS3 技术创建自己的面包屑导航效果. 效果演示 ...
- Android之Activity的生命周期
PS:写一发关于Activity的生命周期,也算是面试的重点内容. 学习内容: 1.Activity的生命周期 2.面对多种情况的时候Activity的生命周期 3.onSaveInstanceSta ...
- Elasticsearch聚合 之 Date Histogram聚合
Elasticsearch的聚合主要分成两大类:metric和bucket,2.0中新增了pipeline还没有研究.本篇还是来介绍Bucket聚合中的常用聚合--date histogram.参考: ...
- 第16/24周 SQL Server 2014中的基数计算
大家好,欢迎回到性能调优培训.上个星期我们讨论在SQL Server里基数计算过程里的一些问题.今天我们继续详细谈下,SQL Server 2014里引入的新基数计算. 新基数计算 SQL Serve ...
- Twitter Bootstrap深受开发者喜爱的11大理由
Bootstrap,作为创新技术框架,使开发者.设计者更容易.更快捷.更出色地完成网站及应用的搭建工作.如果你还没有使用Twitter Bootstrap,建议你去了解一下.Bootstrap为开发者 ...
- VMware中网络设置之Bridged
1.设置linux虚拟机Bridged模式. 2.查找网关地址:点击虚拟机工具栏编辑---Virtual Network Editor,选中VMnet0,然后在Bridged to 下拉框中选择可以本 ...
- Git undo 操作
相比传统的版本管理工具,git 的 undo 操作也不是很简单明了,本文尝试总结常用的 undo 操作. 重新提交 应该避免考虑不周全的提交,但这太难了.因此Git 专门提供了一个命令来弥补粗心的提交 ...
- C语言学习014:结构化数据类型
struct的基本使用 #include <stdio.h> //定义数据结构 struct fish{ const char *name; const char *species; in ...
- js清除cookie
例如要清除键为abc的cookie: document.cookie = "abc=0;expires=" + new Date().toUTCString();
- LINQ的Contains方法
此方法,判断集合中是否包含有某一元素. source code: Enumerable.Where(stringArray, n => n.Contains("t"));