首页 > 其他分享 >批量扫描并上报所有服务器已信任的authorized_keys

批量扫描并上报所有服务器已信任的authorized_keys

时间:2024-04-17 14:35:04浏览次数:29  
标签:keys authorized file output 服务器 row public bash user

https://www.cnblogs.com/iAmSoScArEd/p/18140656 - 我超怕的

code

from flask import Flask, request
import csv

app = Flask(__name__)

@app.route('/', methods=['POST'])
def receive_data():
    data = request.data.decode('utf-8')
    rows = data.split(':::')
    
    with open('output.csv', 'a', newline='',encoding="utf-8-sig") as file:
        writer = csv.writer(file)
        #writer.writerow(['ip', '用户名', 'public_key'])
        user = ""
        for row in rows:
            row = row.strip()
            if not row:
                continue

            if '|||' in row:
                _, *public_keys, _ = row.split('|||')
                for public_key in public_keys:
                    writer.writerow([request.remote_addr, user, public_key])
            else:
                user = row
    return 'Data received and saved to output.csv'

@app.route('/download_bash',methods=['GET'])
def download_bash():
    bash_str = '''#!/bin/bash
# 修改远程HTTP服务器URL
remote_server_url="http://127.0.0.1:5000/"
user_list=$(cut -d: -f1 /etc/passwd)
output_file="/tmp/ssh_public_keys.txt"
> ${output_file}

for user in ${user_list}; do
    home_dir=$(eval echo ~${user})
    known_hosts_file="${home_dir}/.ssh/authorized_keys"
    if [ -f "${known_hosts_file}" ]; then
        echo ${user}
        echo ":::${user}:::" >> ${output_file}
        while IFS= read -r line; do
            if [[ ! "${line}" =~ ^\s*(#|$) ]]; then
                public_key=$(echo "${line}")
                echo ${public_key}
                echo "|||${public_key}|||" >> ${output_file}
            fi
        done < "${known_hosts_file}"
        echo >> ${output_file}
    fi
done

curl -X POST -H "Content-Type: text/plain" --data-binary "@${output_file}" ${remote_server_url}
rm ${output_file}
'''
    return bash_str


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

How to use

1、部署代码并运行,并给出地址,如:10.100.100.1:5000
2、修改代码remote_server_url="http://127.0.0.1:5000/" 为上步骤的地址
3、在需要扫描的机器上执行 curl http://10.100.100.1:5000/download_bash | sudo bash即可

标签:keys,authorized,file,output,服务器,row,public,bash,user
From: https://www.cnblogs.com/iAmSoScArEd/p/18140656

相关文章

  • 试用阿里云GPU服务器进行深度学习模型训练
    试用阿里云GPU服务器进行深度学习模型训练最近在用PyTorch时发现在本地训练模型速度一言难尽,然后发现阿里云可以白嫖gpu服务器,只要没有申请过PAI-DSW资源的新老用户都可以申请5000CU*H的免费额度,三个月内有效。阿里云免费试用活动页面一、申请试用并创建实例点击试用,完成注......
  • C:\Windows\System32\spool 目录中,这个目录是与打印相关的系统服务的默认位置。 Pr
    C:\Windows\System32\spool目录中,这个目录是与打印相关的系统服务的默认位置。作用:drivers:这个文件夹包含了打印机驱动程序文件。Windows系统使用这些驱动程序来与不同类型和品牌的打印机进行通信。PRINTERS:这个文件夹通常用于存储正在打印的文档的临时文件。当......
  • 使用vbs脚本来监控windows服务器上的应用程序(不存在就启动)
    <p>这个vbs代码主要实现的功能就是运行该程序,就会在进程中出现一个wscript.exe它会每隔10s扫面一次进程中是否存在notepad.exe这个程序,不存在就启动。这个启动程序可能跟进程名不一样,好比tomcat应用,启动的是startup.bat,后台进程名为java.exe,这样就需要......
  • windows使用/服务(15)windows Server【开机启动和任务计划程序】实现服务器重启后项目自
    版权声明:本文为博客园博主「yclizq」的原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:windowsServer【开机启动和任务计划程序】实现服务器重启后项目自启动1.说明有些时候我们希望计算机开机后就启动一些服务或应用程序。2.开机启动使用Win+R......
  • nuxt3_使用pinia实现服务器端渲染状态管理
    目录安装nuxt3的pinia包修改nuxt.config.ts的配置在项目中创建pinia仓库创建本地的测试服务器用于测试ssr在nuxt项目中创建服务器端请求接口在/article/[id]路由页面中实现服务器端渲染使用postman向http://localhost:3000/article/95发送请求修改路由配置实现页面数据缓存安装nu......
  • flask框架图书管理系统服务器端
    fromflaskimportFlask,request,jsonifyapp=Flask(__name__)books=[{'id':1,'title':'book1','author':'au1'},{'id':2,'title':'book2','author':'au2'},......
  • 在Linux中,如何配置DNS服务器和解析服务?
    在Linux中,配置DNS服务器和解析服务通常涉及安装和配置DNS服务器软件,如BIND(BerkeleyInternetNameDomain),或使用操作系统自带的DNS服务。以下是配置DNS服务器的基本步骤:1.安装BIND安装BIND软件包:根据你的Linux发行版,使用包管理器安装BIND。sudoapt-getinstallbind9#......
  • 兼容流式套接字与数据报 套接字的回射服务器
    实验流程:1)设计基于select模型的双协议服务器方案创建套接字:为每种协议创建一个套接字(例如,TCP和UDP)。绑定套接字:将套接字绑定到指定的端口上。设置套接字选项:为每个套接字设置相应的选项,例如允许重用地址、设置超时时间等。监听套接字:对于TCP套接字,需要调用listen()函数进行......
  • 免费搭建个人博客网站,无需服务器和域名
    免费搭建个人博客网站,无需服务器和域名当你想要开始自己的博客之旅,但又不想花费金钱购买服务器和域名时,还有一些免费的选择可供你选择。以下是一种无需服务器和域名的方法,利用GitHubPages和Jekyll搭建个人博客网站的简要步骤:步骤一:准备GitHub账户如果你还没有GitHub账......
  • 新服务器部署docker环境
    新服务器部署docker环境为报错信息修改linux的yum源备份原yum源mv/etc/yum.repos.d/CentOS-Base.repo/etc/yum.repos.d/CentOS-Base.repo.backup使用新yum源curl-o/etc/yum.repos.d/CentOS-Base.repohttp://mirrors.163.com/.help/CentOS7-Base-163.re......