电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 2898 人浏览分享

awd自动化(一)

[复制链接]
2898 0
前言

之前用finalshell,但是总感觉有时候比较卡顿 download源码 有些bug 现在已经转成electerm了
写了几个小脚本来自动化 代码比较烂 还在不断更新中

修改ssh弱口令
  1. # coding:utf-8
  2. # py2
  3. import paramiko
  4. import os,sys
  5. import logging
  6. logging.raiseExceptions = False
  7. username = 'root' # 修改
  8. file = open('ip.list') # 修改
  9. newpasswd = "asdasd" # 修改

  10. def ssh_connect(ip_line,username):
  11.     ip = str(ip_line.split(' ')[0])
  12.     port = str(ip_line.split(' ')[1])
  13.     oldpasswd = str(ip_line.split(' ')[2]).strip()
  14.     ssh = paramiko.SSHClient()
  15.     ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  16.     try:
  17.         ssh.connect(ip,port,username,oldpasswd)
  18.         print(ip + " 连接成功!")
  19.         return ip,ssh
  20.     except:
  21.         print(ip + " 连接失败!")
  22.         exit()
  23. # 方法一 暂时没有办法判断是否密码修改成功
  24. def change_pwd_1(ssh,newpasswd):
  25.     stdin,stdout,sterr = ssh.exec_command('echo root:%s | chpasswd' % (newpasswd))
  26.     out, err = stdout.read(), sterr.read()
  27. # 方法二 可以判断密码是否修改成功 并输出返回信息
  28. def change_pwd_2(ssh,newpasswd):
  29.     command = "passwd %s" % (username)
  30.     stdin, stdout, stderr = ssh.exec_command(command)
  31.     stdin.write(newpasswd + '\n' + newpasswd + '\n')
  32.     out, err = stdout.read(), stderr.read()
  33.     successful = 'password updated successfully'
  34.     if successful in str(err):
  35.         print(ip + " 密码修改成功!")
  36.     else:
  37.         print(str(err))
  38.         print(ip + " 密码修改失败!")

  39. for line in file:
  40.     ip,ssh = ssh_connect(line,username)

  41.     # change_pwd_1(ssh,newpasswd)
  42.     change_pwd_2(ssh,newpasswd)

  43.     ssh.close()
  44. file.close()
复制代码

ip.list格式
ip 端口 老密码
  1. node3.buuoj.cn 25139 asdasd
  2. node3.buuoj.cn 25360 asdasd
复制代码

效果演示

修改密码前

mk-2021-06-20-22-46-08.png

修改密码

mk-2021-06-20-22-48-01.png

连接失败

69.png

更换密码 连接成功

68.png

自动化download web源码
  1. # coding:utf-8
  2. # py2
  3. import paramiko
  4. import os,sys
  5. import logging
  6. logging.raiseExceptions = False
  7. ip = "127.0.0.1" # 修改
  8. port = 22222 # 修改
  9. username = 'root' # 修改
  10. PrivateKey_id_rsa_file = "./id_rsa" # 修改
  11. game_dir = "/Users/asura/asura/za/xxxxctf/" # 修改
  12. server_web_DOCUMENT_ROOT = "/var/www/html" # 修改
  13. web_zip_name = "web1.tar.gz" # 修改
  14. private_key = paramiko.RSAKey.from_private_key_file(PrivateKey_id_rsa_file)
  15. def ssh_connect(ip,port,username):
  16.     ssh = paramiko.SSHClient()
  17.     # 把要连接得机器添加到 known_hosts 文件中
  18.     ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  19.     try:
  20.         ssh.connect(ip,port,username,pkey=private_key,allow_agent=False, look_for_keys=False)
  21.         print(ip + " 连接成功!")
  22.         return ssh
  23.     except:
  24.         print(ip + " 连接失败!")
  25.         exit()
  26. def download_bak_html(ssh):
  27.     # 压缩源码到服务器的tmp目录下
  28.     command1 = "tar -zcvf /tmp/{} -C {} .".format(web_zip_name,server_web_DOCUMENT_ROOT)
  29.     stdin, stdout, stderr = ssh.exec_command(command1)
  30.     # stdin.write(newpasswd + '\n' + newpasswd + '\n')
  31.     out, err = stdout.read(), stderr.read()
  32.     print(out)
  33.     # 将源码传到本地
  34.     transport = paramiko.Transport((ip, port))
  35.     transport.connect(username='root', pkey=private_key)
  36.     sftp = paramiko.SFTPClient.from_transport(transport)
  37.     sftp.get("/tmp/{}".format(web_zip_name),"{}{}".format(game_dir,web_zip_name))
  38.     # sftp.put('/tmp/location.py', '/tmp/test.py') # 上传1到2
  39.     transport.close()
  40. if __name__ == "__main__":
  41.     # 创建ssh连接
  42.     ssh = ssh_connect(ip,port,username)
  43.     download_bak_html(ssh)
  44.     # 创建解压目录,解压源码
  45.     os.system("mkdir {} && tar -zxvf {} -C {}".format(game_dir+web_zip_name.split(".")[0],ga
  46. me_dir+web_zip_name,game_dir+web_zip_name.split(".")[0]))
复制代码

效果演示

docker中的web目录

66.png

  1. 2ec43556ad8a        kalinew2                          "bash"                   13 hours ago      
  2.   Up 13 hours         0.0.0.0:22222->22/tcp, 0.0.0.0:10011->80/tcp   kalinew
复制代码

docker22端口映射到了22222端口
docker /tmp目录也-v 挂载了出来

xxxxctf文件夹

62.png

运行脚本

8.png

成功tar打包靶机的web源码 到靶机的/tmp目录下 然后sftp从靶机中拷贝到本机
的这次xxxxctf比赛的文件夹下  并解压

29.png

您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

关注

0

粉丝

9021

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.