参考资料
- https://www.cnblogs.com/binHome/p/13389965.html -CSRF攻击
- https://www.cnblogs.com/rockmadman/p/6836834.html -同源策略
- https://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html -ssh
常见协议
同源策略
什么是同源?
• 源(origin)就是协议、域名和端口号。
以上url中的源就是:http://www.company.com:80
若地址里面的协议、域名和端口号均相同则属于同源。
以下是相对于 http://www.a.com/test/index.html 的同源检测
• http://www.a.com/dir/page.html ——成功
• http://www.child.a.com/test/index.html ——失败,域名不同
• https://www.a.com/test/index.html ——失败,协议不同
• http://www.a.com:8080/test/index.html ——失败,端口号不同
什么是同源策略?
同源策略是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源。所以a.com下的js脚本采用ajax读取b.com里面的文件数据是会报错的。
SSH
什么是ssh?
简单说,SSH是一种网络协议,用于计算机之间的加密登录。 如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。 最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。 需要指出的是,SSH只是一种协议,存在多种实现,既有商业实现,也有开源实现。本文针对的实现是OpenSSH,它是自由软件,应用非常广泛。
基本用法
ssh user@host 以用户名user登录远程主机hostssh host 以当前用户名登录远程主机hostssh -p 2222 user@host 连接host的2222端口
口令登录
ssh加密登录
- 服务器生成一对公私钥;
- 客户端使用公钥加密登录密码生成加密字符串,发送给服务器;
- 服务器用私钥解密加密字符串,获得原始密码,判断是否正确;
- 正确则登录成功,错误则返回登录失败;
该登录方式可能收到中间人攻击。
解决方法:公钥指纹。服务端在其网站公布自身公钥哈希运算后得到的哈希值,用户通过判断公钥指纹来确定是否在使用正确的公钥。
ssh免密登录(公钥登录)
公钥登录的过程使用了对称加密和非对称加密两种方式。
第一步为生成对称的会话秘钥(session key):
- 客户端请求连接服务器;
- 服务器将生成的会话ID(session ID)P,与自身公钥SPK返回给客户端;
- 客户端生成会话秘钥Q,再进行计算R = P xor Q,再将R使用SPK加密返回服务器;
- 服务器用自身私钥解密获取R,再用Q = R xor P获取对称秘钥Q;
- 至此客户端和服务器都得到了对称秘钥,即会话秘钥(session key);
第二步为客户端使用公钥进行登录:
- 客户端生成一对公私钥;
- 手动将客户端公钥保存在服务器的authorized_key文件中;
- 客户端发起连接请求时,将公钥发送给服务器;
- 服务器检索authorized_key文件,如果匹配成功则生成一个随机字符串R,使用对应公钥对其进行加密后发送给客户端(匹配失败直接登录失败);
- 客户端使用私钥对消息解密,并将解析出的随机字符串;
- 客户端将该随机字符串与session key组合,进行MD5哈希运算,生成摘要传递给服务器;
- 服务器已经存有随机字符串和session key,因此它可以比较由这些值生成的MD5哈希摘要,对比客户端发来的摘要,如果一致则登录成功;
常见攻击方式
CSRF攻击
CSRF(Cross-site request forgery),中文名称:跨站请求伪造。主要针对浏览器可以存储cookie这一特点展开攻击。
攻击步骤
- 用户打开浏览器,访问受信任网站 A,输入用户名和密码请求登录网站 A;
- 在用户信息通过验证后,A 产生 Cookie 信息并返回给用户,此时用户登录成功,可以正常发送请求到 A;
- 用户未退出网站 A 之前,在同一浏览器中,访问网站 B;
- 网站B的js中有一些代码,让用户去访问网站A(发送用户C对网站A的request);
- 浏览器在接收到这些攻击性代码后,根据网站 B 的请求,在用户不知情的情况下携 带 Cookie 信息,向网站 A 发出请求。网站 A 据用户的 Cookie 信息以用户的权限处理该请求,导致来自网站 B 的恶意代码被执行。
中间人攻击
攻击者伪造成服务器,截取ssh登录请求,返回攻击者自身的公钥,骗取用户发送用其公钥加密的密码,再用自己的私钥获取用户登录密码。
