python批量化提交100+shell
字数 919 2025-08-07 08:22:31

Python批量化提交Shell脚本教学文档

1. 背景介绍

本教学文档基于奇安信攻防社区中关于Python批量化提交100+ shell脚本的讨论内容,结合相关博客文章(https://www.wlhhlc.top/posts/997/)进行分析和扩展。

2. 核心功能

该脚本主要用于自动化批量提交shell漏洞,主要包含以下功能:

  • 批量处理多个shell地址
  • 自动验证shell有效性
  • 提交漏洞到安全平台

3. 脚本分析

3.1 基础结构

import requests
import re
import time

# 基础配置
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36'
}

# 读取shell列表
with open('shell.txt', 'r') as f:
    shells = f.readlines()

3.2 核心功能模块

3.2.1 Shell验证模块

def check_shell(shell_url):
    try:
        response = requests.get(shell_url, headers=headers, timeout=10)
        if response.status_code == 200 and 'php' in response.text.lower():
            return True
        return False
    except:
        return False

3.2.2 提交模块

def submit_vuln(shell_url):
    # 平台特定的提交逻辑
    submit_url = "https://example.com/submit"
    data = {
        'url': shell_url,
        'type': 'webshell',
        'desc': '自动提交的webshell漏洞'
    }
    
    try:
        response = requests.post(submit_url, data=data, headers=headers)
        if response.status_code == 200:
            print(f"[+] 成功提交: {shell_url}")
            return True
    except Exception as e:
        print(f"[-] 提交失败: {shell_url}, 错误: {e}")
    
    return False

3.3 主执行流程

for shell in shells:
    shell = shell.strip()
    if not shell:
        continue
        
    print(f"[*] 正在处理: {shell}")
    
    # 验证shell有效性
    if check_shell(shell):
        # 提交漏洞
        if submit_vuln(shell):
            # 记录成功提交
            with open('success.txt', 'a') as f:
                f.write(shell + '\n')
        else:
            # 记录提交失败
            with open('failed.txt', 'a') as f:
                f.write(shell + '\n')
    else:
        print(f"[-] 无效shell: {shell}")
        with open('invalid.txt', 'a') as f:
            f.write(shell + '\n')
    
    # 避免请求过于频繁
    time.sleep(5)

4. 关键技术与实现细节

4.1 反反爬机制

  1. User-Agent设置:使用常见的浏览器UA
  2. 请求间隔:使用time.sleep()避免高频请求
  3. 异常处理:完善的try-except块防止脚本中断

4.2 验证码绕过方案

针对评论中提到的"极难验证码"问题,可以考虑以下解决方案:

# 验证码处理方案示例
def handle_captcha():
    # 方案1: 使用打码平台API
    # 方案2: 机器学习识别(需训练模型)
    # 方案3: 人工干预模式
    pass

4.3 性能优化

  1. 多线程/协程:使用concurrent.futures或asyncio提高效率
  2. 代理池:集成代理IP轮换功能
  3. 结果缓存:避免重复处理相同的shell

5. 扩展功能

5.1 Shell分类功能

def classify_shell(shell_url):
    # 根据响应内容分类shell类型
    response = requests.get(shell_url, headers=headers, timeout=5)
    content = response.text.lower()
    
    if 'eval(' in content:
        return 'PHP_EVAL'
    elif 'system(' in content:
        return 'SYSTEM_SHELL'
    elif 'jsp' in content:
        return 'JSP_SHELL'
    else:
        return 'UNKNOWN'

5.2 自动化报告生成

def generate_report():
    with open('report.html', 'w') as f:
        f.write("<h1>漏洞提交报告</h1>")
        # 添加统计信息和详细列表

6. 安全注意事项

  1. 合法性:确保有授权进行漏洞扫描和提交
  2. 隐私保护:处理数据时注意敏感信息过滤
  3. 速率控制:避免对目标系统造成影响

7. 完整脚本示例

import requests
import re
import time
from concurrent.futures import ThreadPoolExecutor

class ShellSubmitter:
    def __init__(self):
        self.headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36'
        }
        self.proxies = None  # 可配置代理
        self.max_workers = 5  # 并发数
        
    def load_shells(self, filename):
        with open(filename, 'r') as f:
            return [line.strip() for line in f if line.strip()]
            
    def check_shell(self, shell_url):
        try:
            response = requests.get(
                shell_url, 
                headers=self.headers, 
                timeout=10,
                proxies=self.proxies
            )
            return response.status_code == 200 and any(
                kw in response.text.lower() 
                for kw in ['php', 'jsp', 'asp', 'aspx']
            )
        except:
            return False
            
    def submit_vuln(self, shell_url):
        submit_url = "https://example.com/submit"
        data = {
            'url': shell_url,
            'type': self.classify_shell(shell_url),
            'desc': '自动提交的webshell漏洞'
        }
        
        try:
            response = requests.post(
                submit_url, 
                data=data, 
                headers=self.headers,
                proxies=self.proxies
            )
            return response.status_code == 200
        except Exception as e:
            print(f"提交错误: {e}")
            return False
            
    def process_shell(self, shell_url):
        print(f"处理: {shell_url}")
        if self.check_shell(shell_url):
            if self.submit_vuln(shell_url):
                return (shell_url, 'success')
            return (shell_url, 'failed')
        return (shell_url, 'invalid')
        
    def batch_process(self, shell_list):
        results = {'success': [], 'failed': [], 'invalid': []}
        
        with ThreadPoolExecutor(max_workers=self.max_workers) as executor:
            futures = [executor.submit(self.process_shell, shell) for shell in shell_list]
            for future in futures:
                shell, status = future.result()
                results[status].append(shell)
                time.sleep(1)  # 控制请求频率
                
        return results
        
    def generate_report(self, results):
        # 实现报告生成逻辑
        pass
        
if __name__ == '__main__':
    submitter = ShellSubmitter()
    shells = submitter.load_shells('shell.txt')
    results = submitter.batch_process(shells)
    submitter.generate_report(results)

8. 常见问题解决

  1. 请求被拦截

    • 更换User-Agent
    • 使用高质量代理
    • 模拟人类操作间隔
  2. 验证码识别

    • 使用OCR服务
    • 机器学习方案
    • 人工干预模式
  3. 性能瓶颈

    • 增加并发数
    • 优化网络请求
    • 减少不必要的验证

9. 最佳实践建议

  1. 模块化设计:分离验证、提交、报告生成等逻辑
  2. 配置化:将平台URL、headers等提取为配置文件
  3. 日志记录:详细记录操作过程便于排查问题
  4. 异常恢复:实现断点续传功能

10. 法律与道德声明

使用此类脚本必须遵守以下原则:

  1. 仅在获得授权的情况下使用
  2. 不用于非法渗透测试
  3. 提交漏洞时遵循平台规则
  4. 不保存或泄露敏感数据

请确保在使用前充分了解并遵守当地法律法规和道德准则。

Python批量化提交Shell脚本教学文档 1. 背景介绍 本教学文档基于奇安信攻防社区中关于Python批量化提交100+ shell脚本的讨论内容,结合相关博客文章(https://www.wlhhlc.top/posts/997/)进行分析和扩展。 2. 核心功能 该脚本主要用于自动化批量提交shell漏洞,主要包含以下功能: 批量处理多个shell地址 自动验证shell有效性 提交漏洞到安全平台 3. 脚本分析 3.1 基础结构 3.2 核心功能模块 3.2.1 Shell验证模块 3.2.2 提交模块 3.3 主执行流程 4. 关键技术与实现细节 4.1 反反爬机制 User-Agent设置 :使用常见的浏览器UA 请求间隔 :使用time.sleep()避免高频请求 异常处理 :完善的try-except块防止脚本中断 4.2 验证码绕过方案 针对评论中提到的"极难验证码"问题,可以考虑以下解决方案: 4.3 性能优化 多线程/协程 :使用concurrent.futures或asyncio提高效率 代理池 :集成代理IP轮换功能 结果缓存 :避免重复处理相同的shell 5. 扩展功能 5.1 Shell分类功能 5.2 自动化报告生成 6. 安全注意事项 合法性 :确保有授权进行漏洞扫描和提交 隐私保护 :处理数据时注意敏感信息过滤 速率控制 :避免对目标系统造成影响 7. 完整脚本示例 8. 常见问题解决 请求被拦截 : 更换User-Agent 使用高质量代理 模拟人类操作间隔 验证码识别 : 使用OCR服务 机器学习方案 人工干预模式 性能瓶颈 : 增加并发数 优化网络请求 减少不必要的验证 9. 最佳实践建议 模块化设计 :分离验证、提交、报告生成等逻辑 配置化 :将平台URL、headers等提取为配置文件 日志记录 :详细记录操作过程便于排查问题 异常恢复 :实现断点续传功能 10. 法律与道德声明 使用此类脚本必须遵守以下原则: 仅在获得授权的情况下使用 不用于非法渗透测试 提交漏洞时遵循平台规则 不保存或泄露敏感数据 请确保在使用前充分了解并遵守当地法律法规和道德准则。