首页 > 其他分享 >安全测试的一些记录__基于fiddler工具

安全测试的一些记录__基于fiddler工具

时间:2023-05-23 21:55:19浏览次数:41  
标签:__ fiddler 加密 测试 解密 公钥 https 服务器 客户端

工作中做了部分安全测试,这里记录执行安全测试时,遇到和学习到的一些内容,其中在安全测试时,也涉及到了fiddler工具的使用:

1、 公司的安全规范中,规定平台涉及到文件上传时,后台接口需要对文件大小、文件格式、文件名长度做接口限制。当然这种限制是肯定的,因为前端虽然会做这些限制,来防止用户上传一些大文件、非正确格式的文件。但其实接口也需要做限制,来防止用户通过接口的方式传一些不合规的文件。

但我测试的时候发现,接口是没有做限制的,但是图片上传到阿里云时,抓包发现,上传接口中的图片是做了加密的。因此个人认为,既然上传的图片已做了加密,那接口其实不做文件的限制也是可以的,因为假如恶意用户或其他攻击者想要上传一些恶意文件的时,首先需要知道图片的加密方式,需要能够获取到加密的密钥,才能对恶意文件加密后发送给服务端。用户无法得到加密方式,就没办法模拟上传文件

但和网络安全部的人去确认了一下,给出的回答是:这种图片加密是前端做的,攻击者只需要察看前端代码就可以看到加密方式,

于是我去前端代码中察看了一下,确实能看到:

打开f12, 点击soureces,里面就是前端的代码,然后可以搜索关键词:encrypt 就能搜索到文件加密的代码,如下图。可以看到用的是aes加密、ecb模式、pkcs7补全方式

然后就可以自己写python脚本来进行图片加密,加密的时候需要有密钥,一般如果实现简单的话,前端加密代码中会固定写死密钥。不过下面截图可以看到密钥是没有写死的。其实是通过后端获取的。所以需要先调接口获取密钥,然后通过密钥和python脚本将图片进行加密。加密后数据,模拟上传接口来上传图片即可。(理论就是这样, 后面我会把python脚本实现一下,看看能不能上传成功

2、 测敏感信息时,要求接口在传敏感信息时,对于一级敏感信息(密码、指纹信息、人脸信息等)接口中需要加密传输。如下图可以看到不是明文密码

 

对于二级敏感信息(身份证、手机号、地址、邮箱等)通过fiddler 抓包发现,这些信息是明文传输的。咨询了网络安全部门的人,说是只要保证二级敏感信息是https传输就可以,可以不对这种信息再单独加密

然后就很不理解,无论是不是https传输,但最终我还是通过抓包工具获取到了这些敏感信息啊。那就是没有安全性呀。很是疑惑为什么只要是https 传输就可以呢,

然后查询https的原理和fiddler截取https请求原理,大概明白了,https协议下传输的数据本身是加密传输的,我在fiddler 上虽然抓取到了请求可以看到是明文的,但是这是因为fiddler 抓取https 请求后对数据进行了解密然后展示出来的。而fiddler能够解密https请求的数据,是因为fiddler有伪造证书的能力。

这里一篇将https的文章,讲的很不错:https://zhuanlan.zhihu.com/p/43789231

大致的原理就是:首先https传输的原理,https传输重点的一点就是信息加密,加密需要密钥,而https采用的是非对称加密+对称加密相结合的方式:即服务器有公钥a 和私钥a, 通过公钥a加密的数据只能通过私钥a进行解密。服务器先把公钥a发给客户端—>客户端收到公钥a保存下来,以后给服务器发数据就用这个公钥a进行加密—>客户端随机生成一串数字X并通过公钥a进行加密并传给服务器—> 服务器接收到数据后通过私钥a解密出来这一串数据X并保存下来,以后服务器和客户端互发数据时就通过这串随机数进行加密和解密。按照这种方式,就可以保证密钥安全的送达到双方手里,保证了后续的加密通信。

但上述有个问题,假如服务端给客户端发公钥a 时,中间被黑客给截获了数据,然后黑客把公钥a 保存下来,然后黑客伪装成服务器发给客户端一个公钥b(此公钥b 对应的私钥b黑客肯定是知道的 ), 客户端收到公钥b后保存下来,生成一个随机数X并通过公钥b加密后发给服务器, 此时黑客再次截获数据,并通过私钥b 将加密了的随机数X解密出来保存下来,然后用公钥a对此随机数X加密后发给服务器。服务器通过私钥a解密出来随机数X保存下来。那之后客户端和服务器后面的通信,就通过随机数X进行加密和解密,但因为中间的攻击者也同样保存了随机数X,所以,截获的通信信息也就可以解密出来。

以上的问题,主要是因为,中间的攻击者截获了公钥,然后又伪装成服务器给客户端发了一个错误的公钥,那客户端接收到发来的含有公钥a 的数据,能证明就是服务器发过来的,那就可以解决此问题,而用的技术就是数字签名证书。(有这个证书,就能证明你就是你),就像身份证一样。浏览器(或客户端)会验证服务端发过来的证书与域名相吻合,避免冒充,这就是身份认证

Fiddler 有伪造证书的能力(服务器发回响应,Fiddler 获取到服务器的 CA 证书, 用根证书公钥进行解密, 验证服务器数据签名, 获取到服务器 CA 证书公钥。然后 Fiddler 伪造自己的 CA 证书, 冒充服务器证书传递给客户端浏览器),具体可以参考https://zhuanlan.zhihu.com/p/25591288  ;https://www.zhihu.com/question/395294859

 

最后又专门用wireshark抓包验证一下https请求中的数据 是否真的是加密了的,下方截图中,encrypted application data 后面的数据可以看到是加密的,application data protocol 后面写的是http-over-tls,指的是截获的此请求是https请求(https的全称就是http-over-tls)

 

然后再看一下wireshark 截获的http 请求,如下图,可以看到请求是明文传输的,并没有加密

 (不过,好像wireshark 也可以对https的数据进行解密,后续有需要的话,再查资料学习把)

标签:__,fiddler,加密,测试,解密,公钥,https,服务器,客户端
From: https://www.cnblogs.com/ccnn9/p/17426517.html

相关文章

  • Solution Set - “我献上明月一盏,照满河山”
    目录0.「集训队互测2018」「洛谷P9248」完美的集合⭐1.「UR#6」「UOJ#74」破解密码2.「NOISimu.」苯为3.「NOISimu.」西克4.「NOISimu.」尼特⭐5.「UR#6」「UOJ#75」智商锁⭐6.「UR#7」「UOJ#82」水题生成器7.「NOI2011」「洛谷P1971」兔兔与蛋蛋游戏⭐8.「BJOI......
  • 外观模式(Facade Pattern)
    外观模式(FacadePattern)一、定义 外观模式(FacadePattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对......
  • 2023-05-23:如果交换字符串 X 中的两个不同位置的字母,使得它和字符串 Y 相等, 那么称 X
    2023-05-23:如果交换字符串X中的两个不同位置的字母,使得它和字符串Y相等,那么称X和Y两个字符串相似。如果这两个字符串本身是相等的,那它们也是相似的。例如,"tars"和"rats"是相似的(交换0与2的位置);"rats"和"arts"也是相似的,但是"star"不与"tars","rats",或&quo......
  • C语言--编译过程
              ......
  • 深入理解 python 虚拟机:花里胡哨的魔术方法
    深入理解python虚拟机:花里胡哨的魔术方法在本篇文章当中主要给大家介绍在cpython当中一些比较花里胡哨的魔术方法,以帮助我们自己实现比较花哨的功能,当然这其中也包含一些也非常实用的魔术方法。深入分析hash方法在Python中,__hash__()方法是一种特殊方法(也称为魔术方法......
  • AIGC源码-架构图智能生成系统
    近日,微软发布guidance模块库,并迅速登上github网站TOP榜首:guidance,传统的提示或链接更有效、更高效地控制新式语言模型。协助用户将生成、提示和逻辑控制交错到单个连续流中,以匹配语言模型实际处理文本的方式。简单的输出结构,如思维链及其许多变体(例如ART,Auto-CoT等)已被......
  • go检查所有主机的时间同步
    funccheckTimeSync(sssh.Interface,ipList[]string)error{logger.Info("checker:timeSync%v",ipList)for_,ip:=rangeipList{timeStamp,err:=s.CmdToString(ip,"date+%s","")iferr!=nil{ret......
  • vm ware tools
    以下为AI生成内容,仅供参考:在命令行中配置VMwareTools共享文件夹,需要按照以下步骤进行操作:首先,确保VMwareTools已经安装在虚拟机中。如果没有安装,需要先安装VMwareTools。在虚拟机中打开终端或命令行窗口。输入以下命令,以挂载共享文件夹:sudomount-tvmhgfs.host:/......
  • Linux安装软件包(b站up主"码农论坛"所讲的做的笔记)
    在线安装/升级:yum-yinstall 软件包名删除软件:yum-yremove 软件包名如果不确定软件包名, 可以百度一下yum(YellowdogUpdater,Modified) 可以解决软件包的依赖关系, 下面另一种方法却没有 ----------------------------------------------------------------......
  • CF1303E
    EraseSubsequences-洛谷|计算机科学教育新生态(luogu.com.cn)我们首先可以把T拆成两部分L和R,再考虑L和R是否能从S中获取那么我们可以设置出一个比较套路的dp状态:dp[i][j][k]表示S前i位,成功匹配了L的前j位,R的前k位的状态是否成立这个dp状态还是很好转移的:......