APP渗透(上)

APP渗透测试原理

App其实就是手机软件,你们不需要害怕他。问一个简单的问题,用你们的手机去访问我们的辛巴猫舍,难道他的SQL注入就不存在了吗?

大部分漏洞的存在并不是在客户端而是在服务端

例如:SQL注入、验证码绕过、越权漏洞、支付漏洞、CSRF、变量覆盖、反序列化、文件包含、SSRFXXE、文件上传等等

其实我们再换一个思路,渗透测试网站,其实核心是控制传参访问对吗?如果说我们不对他进行访问和传参,那么他有可能被你渗透攻击下来吗?

那么渗透测试的核心其实就是把控传参。其实和App交互的还是服务器,用的还是HTTP协议,交互的服务器还是同一个,网站和App和同一个服务器交互都是很正常的事情 [一般都是用api通信例如]

正常网站的交互: 浏览器 -> 网站

App的交互: App -> 网站

我们既然可以抓网站的数据包,那么我们能否抓App的数据包?

一般小型站点app和网站服务器为同一个,大型站点一般不是同一个。

App渗透的核心就是抓app的包。

夜深模拟器抓包配置

这里配置夜神模拟器抓包时首先我们需要查看本机的ip地址,这里不能用127.0.0.1。端口随便设置。

文档截图
文档截图

将模拟器的代理配置好了以后,在burp上添加一个相应的代理。

文档截图

然后我们就可以抓到app模拟器的包了,但我们这里还要添加一个证书。

文档截图

详细安装过程请参照:

https://blog.csdn.net/qq_36658099/article/details/81487491

可见我们安装证书之后,就可以抓到HTTPS的包了。

文档截图

随后我们就可以对其进行渗透测试了。

8.1.3 与web的区别

APP渗透和web区别不大,但还是有些的:

如app访问的地址一般都是在源码中写死的。

App也有服务端的,客户端就是个人的app,服务端就是服务器。

而我们这里的靶场是开源的,访问地址没有写死。

文档截图

注意:

如果我们在app上开起了抓包,发起了请求,但是没抓到数据,那就说明可能这个数据没有走http协议,还有很多协议如sock等,一般很多大型的app当涉及到敏感信息或者操作的时候他就不会去走http协议,估计是害怕被篡改。

8.1.4 靶场

这里是我们的靶场,一个开源的app.

文档截图

这里我们尝试进行一下忘记密码,但是这里写的请联系管理员修改。显然这里没有什么搞头了。

文档截图

然后这里我们尝试爆破一下账号密码,这里我们多尝试了几次发现尝试次数过多别拦截了。

文档截图

但其实这里我们是有方法绕过的,我们进行抓包尝试一下。

这里我们发现我们这里有一个字符串,经过尝试我们可以发现,我们只修改这段字符串就会变了,我们来尝试一下。

device=DA89C15D217EF9551473562C0F147991

文档截图

这里我们改掉字符串,这里就有显示密码不对了,不再显示登录频繁了。

device=DA89C15D217EF9551473562C0F147991

文档截图
小贴士 绕过登陆次数限制

这样我们可以说通过修改传参绕过了这个对登录次数的限制,一般我们登录次数频繁被限制的时候可以尝试3种方式进行绕过:

1.修改cookie

2.xff修改ip

3.修改数据包中传参

然后这里我们看见账号密码进行了加密,这里我们看到了百分号,我们尝试一下url解码。

文档截图

我们发现解完密之后是一个结尾是冒号的字符串,我们猜测他可能是模改的,我们假设如果没有它谁是什么样。

YWRtaW4:

文档截图

我们猜测是base64加密,我们进行一下解密,发现是admin,那我们尝试一下把冒号换成=,这次就是完整的admin了。

YWRtaW4=

文档截图
文档截图

所以加密方式为base64加密,并将=改成了冒号:。

然后这里我们来尝试一base64解密一下密码。

文档截图

然后我们要想获得一本base64的字典我们可以通过执行一段php脚本来完成。

这里我们只要写一个如此的php脚本,并且在当前目录下准备一个1.txt普通密码的字典,我们去访问这个1.php之后就会将1.txt中的文件进行base64加密。

文档截图

会制作字典之后我们来进行爆破,首先我们在登陆的地方进行抓包。

并且在我们之前说的代表我们登陆的身份的地方打上一个变量,再在我们登陆密码的地方打入变量。这里pitchfork表示两个变量一一对应的意思。

文档截图
文档截图

这里我们第二个变量设置的是的登录的密码,第一个变量设置的是对device变量(及上述那个证明我们登陆身份的那个变量)通过此变量的设置,我们可以一直改变device变量相当于我们一直是以不同的身份登录,这样我们爆破密码不会被拦截。(这里我们根据字典的长度来调控变量一的个数,以为需要一一对应。)

而且这里的信呼是个cms,我们可以在本地搭建一个环境,我们会发现本地有很多测试账号,我们可以尝试登录下,因为很多管理员都会把admin管理员账号的密码重置掉,所以有时候想爆破管理员弱密码是有难度的,但大部分认识不会在意测试账号的,有很多低高权限的测试账号,所以我们可以从他们下手。

测试账号如:admin1 ,a,b,test,test1,ceshi1,ceshi,公司名,域名 等

文档截图

这里我们继续来看这个爆破看这里返回包长度不同,或许存在问题,我们将这个密码解密一下。

文档截图

这里经解密我们发现密码是:woaini1314520,这里我们尝试一下。我们尝试登陆一下。

文档截图
文档截图

可见这里我们使用爆破登录成功了,

文档截图

在这里我们可以尝试一些逻辑漏洞,xss等等sql注入等。

可见这里我们在我外出催办的地方打出了xss.

文档截图

这里我们发现了一个文件上传的点,我们尝试上传一个图片马,这里我们抓取一下返回包。

文档截图

然后这里我们抓一下他的返回包,然后将地址和图片路径拼接一下去访问一下这个上传的图片马。

文档截图

http://59.63.200.79:8105/upload//2020-07//03_14403180.jpg/.php?a=phpinfo();

然后这里我们这么对其进行传参,发现解析成功了,其实这里存在一个cgi解析漏洞。我们这样直接连接菜刀,就可以getshell了。

文档截图

我们在该目录下找到了flag。

文档截图

App渗透(下)

8.2.1 快速自建一个App

App难写吗?

我不懂Java我能写App吗?

我觉得大部分人都觉得自己不能。

你还记得CMS吗?

你会CMS里面的全部代码吗?

你也不会,但是网站就那么建立了起来。

App其实也可以快速自建:

在线自建App地址:https://www.bslyun.com/

文档截图

8.2.2 安装Xposed框架与Inspeckage

Xposed框架(Xposed Framework)是一套开源的、在Android高权限模式下运行的框架服务,可以在不修改APK文件的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作。

其实他是一个框架,然后里面可以安装各种各样的插件,这些插件对渗透测试很有用,我这里主讲Inspeckage【记住一定要Root】

如果安装后这里没显示更新,就将模拟器升级更新。

文档截图

夜神模拟器怎么Root (选择设置,选中开启Root然后重启)[默认我记得就是Root]

文档截图

Xposed更新好了之后我们安装插件,这里最重要得插件时inspecage.

如果下载模块加载不出来就是用vpn进行翻墙。

文档截图

我们是要到下载--> 版本 -->下载

文档截图

Inspeckage是一个用于提供Android应用程序动态分析的工具。通过对Android API的函数使用hook技术,帮助用户了解应用程序在运行时的行为。

Hook 技术又叫做钩子函数,在系统没有调用该函数之前,钩子程序就先捕获该消息,钩子函数先得到控制权,这时钩子函数既可以加工处理(改变)该函数的执行行为,还可以强制结束消息的传递。简单来说,就是把系统的程序拉出来变成我们自己执行代码片段。

其实类似于断点,代码执行到这个地方然后被你给卡住了,然后你可以去进行修改调试。

举一个例子:

传参加密: 如果在加密前Hook,不就可以获得加密前的明文了?

Inspeckage 功能强大 我们只讲简单用法,有兴趣的同学需要自己深究

文档截图

这里我们访问本地得8008端口,就可以对该界面app的各种请求信息进行管理。

但是在模拟器上并不方便,我们可以是用adb工具,在pc端对其进行管理。

文档截图

然后我们使用这两条命令让本地pc端来管理刚才的哔哩哔哩的进程请求。

文档截图

刷新好右上角显示true,就说明正常截断可以正常获取数据。

文档截图