0x01 痛点
跳板机一般以ssh 方法登录, 但我们一般都会给跳板机再安排一个 2FA/MFA 动态认证码.
那么普通的 expect 大法, 就不满足我们的一键登录了.
好在这个痛点早就有人解决了, 这里记录一下使用方法.
0x02 目标
最终的代码如下:
#!/usr/bin/expect
spawn ssh -p 22 USER@1.2.3.4
expect "*password*" {send "PWD\r"}
expect "*auth*" {
set code [exec oathtool --totp -b SECKEY ]
send "$code\r"}
interact
其中, USER, PWD 就是跳板机的固定登录信息.
SECKEY 是 MFA 的 密钥, 后面会讲到如何提取.
0x03 依赖安装
-
第一个需要安装的工具: oath-toolkit , 可以实现动态提取 MFA 码.
brew install oath-toolkit
-
SECKEY的提取工具.
这里用到另外一个 python 开源工具: https://github.com/scito/extract_otp_secret_keys/
git clone https://github.com/scito/extract_otp_secret_keys.git --depth=1
下载完成后, 记得先下载各种依赖:
cd extract_otp_secret_keys
python -m venv venv
. venv/bin/activate
pip install -r requirements-buildenv.txt
pip install -r requirements.txt
- 重点来了: 提取 MFA secret key
我们可以从 google authenticator 中的已经导入的账号进行二维码分享, 提取二维码信息后保存到文本文件 a.txt
接下来就可以通过上面的 python 脚本提取 sec key:
python3.8 extract_otp_secret_keys.py -p a.txt
正常执行后, 就可以得到 SECKEY 信息:
SECKEY提取
0x04 使用
将上述得到的 SECKEY代入 第二步代码中, 就完成了一键登录功能.
PS. 我们还可以这样使用 , 在需要网页登录的时候, 不需要去查手机APP啦~
alias smCode="echo `oathtool --totp -b SECKEY `| pbcopy"
命令行输入 : smCode
然后到网页上去 Cmd+V
hf ~
网友评论