• APP渗透测试:(一)信息收集


       一、APP渗透和web渗透,没有本质区别,相同点:

    •    都是客户端(浏览器是特殊的客户端),都要和服务器做数据交互
    •    APP发包很多也是走http协议,抓包的内容和浏览器发包的内容没区别
    •    SQL注入、验证码绕过、越权漏洞、支付漏洞、CSRF、变量覆盖、反序列化、文件包含、SSRF、XXE、文件上传等在web常见的漏洞,APP也可能存在(尤其是中小型APP,安全防护肯定不如大厂的全面);
    •   不管是APP,还是web,渗透的核心之一是通过控制传参,改变原本的代码执行流程和逻辑,达到我们想要的目的;http协议中能让用户自由发挥、随意设置参数的地方:GET(url传参)、POST(消息体)、COOKIE(一般和权限控制、用户行为记录等相关),后续会重点关注这3个地方;

      不同点:

    •   web前端多由html、js、css等构成,能直接通过浏览器查看,相对简单;
    •   APP多由java、c构成,查看源码还需要用jeb、jadx、anroid killer等反编译,甚至要先脱壳,有点麻烦;so层的C代码也可能被混淆、增加花指令,用IDA的F5反编译也可能看不出啥;

      二、数据从用户侧的APP或web传到服务器,中间会经过N多节点;为了保证每个节点都能无误地转发数据,开发人员可能会在客户端对关键性信息做base64编码,

      1、base64 编码后数据的特征:

    •  大写、小写、数字混杂,肉眼直观看不出有啥意义
    •  末尾有=号
    •  长度不统一,有长有短
    •  只要原字符串不同,编码后的结果绝对不同

      base64由于不是加密算法,所以不用密钥可以直接还原成编码前的样子,俗称解码;

      2、出了base64,另一种厂家的加密方式是MD5;MD5编码后的数据特征:

     不论原数据有多长,加密后一般都是32个字符;肉眼直观看不出有啥意义

    •  小写字母、数字混杂,没有大写字母
    •  算法不可逆,只能用加密后的密文和现有密文比对,匹配上了再反查明文

      以上特征很重要,只要在数据包看到了类似的数据,说明“此地无银三百两”,肯定是重要的参数,建议优先从这些信息突破;

      三、1、拿信创oa办公系统举例:打开APP就是这个界面;由于是办公oa,业务特性决定了该APP没有注册功能;“忘记密码”直接弹窗让联系管理员。这里已经没其他办法了,只能爆破管理员账号;

      

       管理员一般叫admin(这里为了方便识别,密码输入的123456),用burp抓包结果如下;仔细观察,有3个字段的内容直观无法理解,分别是:GET的device、POST的user和pass;

      从英语字眼看:

    •  device应该是设备的编码,编码方式暂时不详;
    •  user和pass从字面看可能是用户名和密码,但字段的value明显不是我输入的admin和123456;value是大写、小写、数字混杂,长度不一,有点像base64编码,所以这里尝试用base64先解码试试,发现pass确实是123456;但user结尾是%3A,url解码是:(冒号),不是base64常见的=结尾,怀疑是开发人员很鸡贼,故意用冒号替换等号,这里先换回等号结尾,再用base64解码,成功还原admin;

           

       2、接着就简单了,把常见的密码先用base64编码,结尾的 = 用 :替代,再用burp爆破;这里构造两个payload:deviceid末尾3位,从100到999随机选择,造成请求从不同设备发出的假象,避免被ban;

      pass用base64编码后的字典爆破;

          

      终于发现了一个返回包和其他不一样,从返回的字段看,登陆成功;把request的pass(d29haW5pMTMxNDUyMA%3A%3A)用base64解码,用得到的密码成功登陆;

       

       3、本着“见框就插”的原则,试了很多地方输入<script>alert(666)</script>,发现并未弹窗,抓包后重试,发现尖括号、斜杠等被前端转义了,如下:

           

       既然前端不让输入特殊符号,就直接在包里面添加,如下:

          

       结果还是不行;继续在其他能输入的地方都尝试,终于在催办找到一个xss漏洞,弹出了对话框;这还是个存储型的,任何人只要点开出差->查看详情的模块都有可能中招;

          

      4、出差这里有上传文件的地方,先上传图片马:

        

      从返回包看,这里有上传文件的路径:

       

      根据图片的存储路径,利用CGI解析漏洞,把jpg文件当成php解析,成功执行:

       

      接着用菜刀成功连接:

       

  • 相关阅读:
    【项目】项目188
    【项目】项目190
    【项目】项目192
    【项目】项目189
    【项目】项目185
    SpringBoot统一Api接口返回格式
    MySQL判断库、表、列是否存在
    java.net.SocketException: Connection reset by peer: socket write error
    NOI Online 2022 一游
    寒假 杂题题解
  • 原文地址:https://www.cnblogs.com/theseventhson/p/13595409.html
Copyright © 2020-2023  润新知