APP账号密码传输安全分析

最近在搞公司的安卓APP测试(ThinkDrive 企邮云网盘)测试,安卓app测试时使用代理抓包,发现所此app使用HTTP传输账号密码,且密码只是普通MD5加密,存在安全隐患,无法防止sniffer攻击、中间人攻击(因此这次安全问题,加强对这两安全术语的了解):

问题1:账号密码采用http传输,账号与密码(MD5值)均可以捕获;

问题2:密码虽采用MD5加密,简单密码可以在线解密;

问题3:密码不解密也一样可以登录,通过A账号在app登录,再用sniffer得到的B 帐号与密码(MD5值),使用Fiddler修改A账号的请求完成B账号在APP登录

公司邮箱各版本其实使用的也是明文传输,最近WEB虽采用了HTTPS传输,但仍是传输的明文,可以抓包查看(HTTPS也可通过Fiddler解析成明文),基于此原因,于是对主流邮箱登录进行抓包分析,本文主要分析QQ是如何把账号密码从客户端传到服务端,学习借鉴相关经验。

===========分析结果(Findyou)===============

【QQ触屏版】

测试帐号:2198400585

用户密码:123qwe

加密方法:RSA非对称加密

传输协议:HTTPS

【WEB版】

测试帐号:2198400585

用户密码:123qwe

加密方法:MD5(hexchar2bin(MD5(密码))+QQ号16进制)+验证码)

传输协议:HTTPS

分析结论:使随机验证码混合MD5加密以保证每次登录的值不一样

===========分析结果(Findyou)===============

  • 【QQ触屏版分析】

操作步骤:1.使用Chrome修改浏览器User Agent为iphone

2.打开Fiddler准备抓包

3.访问mail.qq.com,QQ会自动适配到触屏版

4.查看http://w.mail.qq.com/cgi-bin/loginpage?f=xhtml源码

得到关键代码如下:

    loginForm.onsubmit = function(){
        var pwd = document.getElementById("pwd");
        var p = document.getElementById("p");
        var tsValue = document.getElementById("ts").value;
        var PublicKey = "CF87D7B4C864F4842F1D337491A48FFF54B73A17300E8E42FA365420393AC0346AE55D8AFAD975DFA175FAF0106CBA81AF1DDE4ACEC284DAC6ED9A0D8FEB1CC070733C58213EFFED46529C54CEA06D774E3CC7E073346AEBD6C66FC973F299EB74738E400B22B1E7CDC54E71AED059D228DFEB5B29C530FF341502AE56DDCFE9";
            var RSA = new RSAKey();
            RSA.setPublic(PublicKey, "10001");
        var Res = RSA.encrypt(pwd.value+ ‘\n‘ + tsValue + ‘\n‘);
        if (Res)
        {
            p.value = hex2b64(Res);
            pwd.value = "";
        }
        return true;
    }

如此可以看使用加密方法: RSA公钥加密算法

Fiddler抓包如下:(P为密码加密后的值)

  • 【WEB版分析】

注:网上查阅众多相关资料(网上有许多介绍QQ登录相关的内容),总结实践测试截图抓包如下

Step1:  打开mail.qq.com,向服务器 获取验证码

捕获请求:

https://ssl.ptlogin2.qq.com/[email protected]&appid=522005705&ptlang=2052&js_type=2&js_ver=10009&r=0.8771616001613438

返回数据有两种情况:

1). ptui_checkVC(‘1‘,‘aabf7b95f41689c5872740515288dcb5b1911c3de95f2092‘,‘\x00\x00\x00\x00\x83\x08\xee\x49‘);

2). ptui_checkVC(‘0‘,‘!BQI‘,‘\x00\x00\x00\x00\x83\x08\xee\x49‘);

其中 ‘1’代表需要验证码,‘0’代表不需要验证码 ,‘!BQI‘ 就是默认的验证码;

Step2: 密码加密

腾讯JS加密代码:

M=C.p.value;

var I=hexchar2bin(md5(M));

var H=md5(I+pt.uin);

var G=md5(H+C.verifycode.value.toUpperCase());

密码“123qwe”通过以上加密方法,得到的结果与抓包请求中的加密值一样(请求截图见Step3)

pt.uin =  \x00\x00\x00\x00\x83\x08\xee\x49     QQ号 2198400585的16进制 000000008308ee49

Step3:登录请求

捕获请求: 

https://ssl.ptlogin2.qq.com/login?ptlang=2052&aid=522005705&daid=4&u1=https%3A%2F%2Fmail.qq.com%2Fcgi-bin%2Flogin%3Fvt%3Dpassport%26vm%3Dwpt%26ft%3Dptlogin%26ss%3D%26validcnt%3D%26clientaddr%3D2198400585%40qq.com&from_ui=1&ptredirect=1&h=1&wording=%E5%BF%AB%E9%80%9F%E7%99%BB%E5%BD%95&css=https://mail.qq.com/zh_CN/htmledition/style/fast_login148203.css&mibao_css=m_ptmail&[email protected]&uin=2198400585&[email protected]&p= 15A6FB7C3A0F0F12BE2BB2BFA52F7BDF&verifycode= !BQI&fp=loginerroralert&action=2-6-30865&g=1&t=1&dummy=&js_type=2&js_ver=10009

登录成功后返回的数据:

ptuiCB(‘0‘,‘0‘,‘https://ssl.ptlogin2.mail.qq.com/check_sig?pttype=1&uin=2198400585&service=login&nodirect=0&ptsig=9mgQ2dwnOftcwH965zksFLFPidMP2zxKQZJXkxdfOy0_&s_url=https%3a%2f%2fmail.qq.com%2fcgi-bin%2flogin%3fvt%3dpassport%26vm%3dwpt%26ft%3dptlogin%26ss%3d%26validcnt%3d%26clientaddr%3d2198400585%40qq.com&f_url=&ptlang=2052&ptredirect=101&aid=522005705&daid=4&j_later=0&low_login_hour=0&regmaster=0‘,‘1‘,‘登录成功!‘, ‘QQ‘);

分析以上两种方法,采用非对称式(公/私钥)加密方法较为安全,已建议APP小组研发采用RSA非对称加密,使用HTTPS实现登录

http://www.cnblogs.com/findyou/p/3244917.html?utm_source=tuicool&utm_medium=referral

时间: 2025-01-16 23:11:38

APP账号密码传输安全分析的相关文章

对登录中账号密码进行加密之后再传输的爆破的思路和方式

一. 概述 渗透测试过程中遇到web登录的时候,现在很多场景账号密码都是经过js加密之后再请求发送(通过抓包可以看到加密信息)如图一burp抓到的包,request的post的登录包,很明显可以看到password参数的值是经过前端加密之后再进行传输的,遇到这种情况,普通发包的爆破脚本就很难爆破成功.鉴于这种情况,这边分析四种方式进行绕过加密爆破. 二. 方法和思路 1. 分析找出是哪个js文件进行了password参数值的加密,将该js导入本地动态执行,建一个小型的web服务器,利用浏览器页面

利用SharedPreferences完成记住账号密码的功能

利用SharedPreferences完成记住账号密码的功能 效果图: 记住密码后,再次登录就会出现账号密码,否则没有. 分析: SharedPreferences可将数据存储到本地的配置文件中 SharedPreferences会记录CheckBox的状态,如果CheckBox被选,则将配置文件中记录的账号密码信息回馈给账号密码控件,否则清空. SharedPreferences使用方法: 1.创建名为config的配置文件,并且私有 private SharedPreferences con

archive成功了,但是在输出ipa时要求有账号密码

archive成功了,但是在输出ipa时要求有账号密码 可以通过命令行方式输出,绕开账号检查1.进入Windows-Organizer-Archives,找到要输出的scarchive列表项:2.右键点击它,选择[Show in Finder]:3.右键点击.xcarchive文件,选择[显示包内容]:4.依次进入子目录 Products-Applications-找到你的目标文件,它其实是一个.app文件(目录):5.使用Go2Shell打开终端,进入该文件所在的目录:(也可以手动cd进入)6

493万Gmail用户的账号密码遭泄露,疑从其他网站数据库提炼而成

据国外媒体报道,周二近493万的Gmail用户账号和密码被发布到了俄罗斯的比特币论坛上.发布这些账号密码的比特币论坛用户,表示这其中约60%是有效的.不过谷歌公司并不认为Gmail有任何安全漏洞. 谷歌方面发言人表示,目前并没有证据表明,谷歌的系统被入侵过.一旦发现任何帐户有可能已经受到安全威胁,谷歌方面将会采取适当措施对其进行保护.同时,谷歌建议用户启用两步验证,并给出建议 “不管你是否是在名单上,换掉你的密码,以防万一.” 随后,论坛的管理员对这些账号中的文本内容进行了清理,只留下了用户名等

WPF-本地保存登录账号密码

WPF-本地保存登录账号密码 在登录界面,记住账号密码,当然,前提是正确的账号和密码. App.config 在App.config文件,<configuration>中添加以下代码,其中key是键,value是具体保存的值,在这声明了三个,分别是账号.密码和是否记住的bool属性 1 <appSettings> 2 <add key="userName" value=""/> 3 <add key="passwo

APP手势密码绕过

之前写的文章收到了很多的好评,主要就是帮助到了大家学习到了新的思路.自从发布了第一篇文章,我就开始筹备第二篇文章了,最终打算在07v8首发,这篇文章我可以保障大家能够学习到很多思路.之前想准备例子视频,请求了很多家厂商进行授权,但是涉及漏洞信息方面的,厂商都是很严谨的,所以,整个过程没有相关的实际例子,但是我尽可能的用详细的描述让大家能够看得懂.大家不要睡着呦~ 说到APP手势密码绕过的问题,大家可能有些从来没接触过,或者接触过,但是思路也就停留在那几个点上,这里我总结了我这1年来白帽子生涯当中

注册邮箱账号十大品牌分析

电子邮箱是指通过互联网作特点.现在电子邮箱已经***到了我们工作,生活的每一个角落,电子邮箱已经无所不在为渠道发送和接收邮件的工具,电子邮箱具有快速.环保.安全.便利.多媒体等多种.相对于个人用户来说,一般使用的是互联网公司免费提供的电子邮箱.下面为大家介绍一些流行的.实用的.安全的.稳定的.可靠的.大容量的免费电子邮箱. 电子邮箱 常见的免费电子邮箱有哪些 1.谷歌电子邮箱(Gmail) Google提供的免费电子邮箱,第一个推出G级别电子邮箱的公司. 优点:目前提供15 GB的免费存储空间.

c#登录时保存账号密码到cookie

登陆界面有用户名.密码输入框,一个’记住账号密码‘的复选框. 1.登录时,勾选‘记住账号密码‘复选框,则会把用户名密码保存在客户端cookie里,保存时间为最大值(直到用户清除浏览器缓存或者取消勾选’记住账号密码‘复选框): 2.登录时,取消勾选‘记住账号密码‘复选框,会清除cookie保存的用户名密码. 3.登录时,当修改了用户名密码,会判断cookie保存的值是否与输入的相同,如果不同,则会修改cookie的值. 4.登录时,当勾选了‘记住账号密码‘复选框,下次打开登录界面,‘记住账号密码‘

最近开始努力学python 写了一个python小代码:判断一个登陆程序,如果账号密码输错3次,锁定账号无法再登陆

1 count = 0 2 username = 'zhangsan' 3 userpassword = '111111' 4 5 f = open('lock.txt','r+') 6 file_list = f.readlines() 7 f.close() 8 #打开文件夹 读取数据 9 10 name = input("请输入用户名:") 11 12 if name in file_list: 13 print("您的账号被锁定!") 14 #判断文件夹中的