HTTPS攻击
HTTPS攻击
防止恶意注入、DNS劫持
https的作用
- C I A
- 解决的是信息
传输过程中
数据被篡改、窃取 - 加密:对称、非对称、单向(Hash)
https攻击方法
-
降级攻击
-
解密攻击(明文、证书伪造)– 劫持
-
协议漏洞、实现方法的漏洞、配置不严格
常识
SSL
(安全套接层, Secure socket layer),后来使用TSL
取代了SSL,只不过习惯了叫SSL
SSL/TLS也被用于其他场景的传输通道加密:
- 邮件传输(服务器间、客户端与服务器间)
- 数据库服务器间
- LDAP身份认证服务器间
- SSL VPN
- 远程桌面RDP通信过程中的加密和身份认证
Web通信中SSL加密
- 公钥证书(受信任的第三方证书颁发机构签名颁发)
- 常见的证书颁发机构:VeriSign、Thawte、GlobalSign、Symantec
**加密过程:**握手、协商加密算法、获取公钥证书、交换会话秘钥、加密信息传输
非对称加密算法
非对称加密一般用来加密比较小的数据 例如:RSA, ECC等
对称加密算法
DES/3DES, AES, IDEA, RC4 ……
单向加密算法(Hash)
Hash算法 | Hash值长度(bit) |
---|---|
MD5 | 128 |
SHA-1 | 160 |
SHA-2 | 224,256,384,512 |
SSL的弱点
- SSL是不同的对称、非对称、单项加密算法的组合加密实现(
cipher suite
) - 服务器端为提供更好的兼容性,选择支持大量过时cipher suite
- 协商过程中墙皮降级加密强度
- 现代处理器计算能力可以在可接受的时间内破解过时加密算法
- 购买云计算资源破解
实践
查看web站点用了啥样的ssl协议,什么版本,什么组合
1.openssl
命令
|
|
Openssl需要大量密码学相关知识,命令复杂,结果可读性差
2.SSLScan
工具
- 自动识别ssl配置错误、过期协议、过时cipher suite和hash算法
- 默认会检查CRIME、心脏出血漏洞
- 绿色表示安全,红色黄色需要引起注意
查看TLS支持的cipher suite
|
|
分析证书详细信息
|
|
3.SSLyze
工具
- Python编写
- 检查ssl过时版本
- 检查存在弱点的cipher suite
- 扫描多站点时,支持来源文件(多个站点放到一个文件里面)
- 检查是否支持会话恢复
|
|
4.Nmap
|
|
5. 在线网站:
输入域名,对SSL进行检测 https://www.ssllabs.com/ssltest
SSL中间人攻击
概述
攻击者位于客户端和服务器通信链路中
- 1.ARP欺骗(最常用)
- 2.DHCP 如果有另一台机器,比之前的dhcp服务器离用户更近,那么攻击者的机器就会更快响应(DHCP第一步是广播)
- 3.修改网关
- 4.修改DNS(如果控制了客户机, 直接修改客户机的dns配置)
- 5.修改HOSTS
- 6.ICMP、STP(二层的生成树协议)、OSPF(三层的开放式最短路径优先协议) —>如果处在同一局域网
不仅是http和tcp/ip协议容易出现安全问题,底层的网络协议也存在很多问题,自己搭建环境练习
加密流量
ps:下来的演示,是基于ARP欺骗的:
利用
攻击的前提
- 客户端已经信任了伪造证书颁发机构
- 攻击者控制了核发证书颁发机构(CA证书服务器)
- 客户端程序禁止了显示证书错误告警信息
- 攻击者已经控制客户端,并强制其信任伪造证书
工具
对已经实现中间人欺骗(这里用arpspoof
)后,下面的工具对信息进行解密
1.SSLsplit
工具
- 透明SSL/TLS中间人攻击工具
- 对客户端伪装成服务器,对服务器伪装成普通客户端
- 伪装服务器需要伪造证书(利用
openssl
来生成伪造的证书) - 支持ssl/tls加密的smtp、pop3、ftp等通信中间人攻击
1). openssl
|
|
2).攻击机器设置路由转发 下面,当受害者的流量通过我的机器,我的机器来转发(需要我的系统来开启路由功能):
做个地址转换, 比如: 把我计算机443端口收到的数据包转发到8443端口
|
|
3).ARP欺骗
|
|
4).启动SSLsplit
|
|
- 然后让被害者访问https的一些网站(会显示证书有问题,是否继续浏览)
- 我们可以查看日志和浏览器证书以及证书保存信息(
cat connect.log
) , - 具体通信数据在:
ls test/logdir
, 每个log文件中内容会有被解密的明文信息(如果还有加密信息,那就是应用程序本身进行了加密的,这里的解密的只是通信过程中针对ssl部分) 通过关键词查找内容:grep xxx *.log
这样 - 在受害者机器上安装我们生成的服务器根证书之后再次访问(浏览器就不会弹出警告了)
全站https/非全站https(比如只是登录等部分页面加了https)
2.Mitmproxy
工具
- 设置路由表转发规则
|
|
- 也是使用
arpspoof
进行arp欺骗
|
|
- 最后,Mitmproxy侦听
|
|
3.SSLstrip
工具
与前两种工具不同,此工具将客户端到中间人之间的流量变为明文(不用通过安装证书)
|
|
SSL/TLS拒绝服务攻击
和流量式的拒绝服务攻击不同(打击的是网络带宽),而我们这里打击的是服务器的资源
Note:
- SSL协商加密,服务器资源加载速度会变慢(大量握手请求会导致拒绝服务),但是优化得当就可以没问题
- 利用SSL secure Renegotiation特性,在单一TCP连接中生成数千个SSL重连接请求,造成服务器资源过载
- 与流量式的拒绝服务攻击不同,thc-ssl-dos可利用dsl线路打垮30G带宽的服务器
- 服务器平均可以处理300次/s SSL握手请求
利用
thc-ssl-dos
工具
|
|
dig
命令,解析ip地址
补充概念
Ajax
Asynchronous JavaScript and XML
是一组现有技术的组合
通过客户端脚本动态更新页面部分内容,而非整个页面
降低带宽使用,提高速度
提升用户体验
后台异步访问
Ajax组件
- JavaScript(ajax的核心组件)
- Dynamic HTML(DHTML)
- DOM
ajax框架:
- jQuery
- Dojo Tookit
- Google Web toolkit
- Microsoft Ajax library
基于Ajax的Web应用工作流程
使用的技术混合越多,攻击面就越大(每个参数都可能形成独立的攻击过程)
Ajax的安全问题
- 多种技术混合,攻击面就越大(每个参数都可能形成独立的攻击过程)
- Ajax引擎,访问恶意站点可能后果严重,虽然浏览器有沙箱和SOP,但可能被绕过
- 服务器、客户端代码结合使用产生混乱,服务器访问控制不当,将信息泄露
- 暴露应用程序逻辑
Ajax对渗透测试的挑战
-
异步请求数量多且隐蔽
-
触发Ajax请求的条件无规律
-
手动和阶段大力爬网可能产生大量遗漏
检查方法:
- 手动查看页面源代码有没有使用ajax(效率低一些)
- 浏览器打开审查元素:net –> XHR / net –> javascript
- 使用ZAP,使用ajax爬站功能
Web Service
- 面向服务的架构,便于不同系统集成共享数据和功能
- 尤其适合不想暴露数据模型和程序逻辑而访问数据的场景
- 无页面
两种类型:
- SOAP (传统,xml是唯一的数据交换格式,繁琐,但是安全) – Simple object access protocol
- RESTful (json是首选的数据交换格式刷)
web service安全考虑:
- 使用API key或session token实现和跟踪身份认证
- 身份认证由服务器完成,而非客户端
- API key, 用户名, Session token 永远不要通过URL发送
- RESTful 不提供任何安全机制,需要使用SSL/TLS保护传输数据安全
- SOAP提供强于HTTPS的WS-security机制
- 使用OAuth或HMAC进行身份验证,HMAC身份认证使用C/S共享的秘钥加密API key
- RESTful应只允许身份认证用户使用PUT、DELETE方法
- 使用所及token防止CSRF攻击
- 对用户提交参数过滤,建议部署基于严格白名单的方法
- 报错信息消毒
- 直接对象引用应严格身份验证(电商公司以ID作为主索引)