python渗透测试实战
用Python写一个ARP欺骗脚本,渗透实战代码不到30行,测试跑起来就能截获局域网里另一台机器的渗透实战流量。这不是测试电影桥段,是渗透实战我上周在自家路由器下实测的结果。渗透测试的测试核心不是工具多花哨,而是渗透实战你能否用最少的代码撬开目标的口子。Python在这件事上几乎无可替代——库多、测试语法快、渗透实战胶水能力强,测试写个exp比泡碗面还利索。渗透实战
先说说环境。测试Kali Linux自带Python3和大部分渗透库,渗透实战但别急着敲pip install。测试我见过太多人一上来就装一堆用不上的渗透实战包,结果依赖冲突把系统搞崩。实际常用的就那几个:scapy处理网络包,requests搞Web交互,paramiko做SSH爆破,pwntools打二进制。装scapy时注意,它依赖libpcap,apt install python3-scapy比pip稳。
拿信息收集来说。写个端口扫描器,不用nmap的Python封装,自己用socket写反而更可控。下面这段代码我经常用:
import socket def scan(host, port): s = socket.socket() s.settimeout(0.5) try: s.connect((host, port)) return True except: return False finally: s.close() 五十行不到就能跑多线程扫描,比调nmap库轻量。有次我在客户内网扫445端口,发现三台没打MS17-010补丁的机器,直接拿ms17_010_eternalblue模块打进去,整个过程没超过十分钟。Python脚本的好处是你能随时改逻辑——比如遇到防火墙丢包,加个重试机制就完事。
Web渗透更明显。用requests写目录爆破,配合concurrent.futures开线程池,速度不比Burp差。关键是你能自定义payload编码方式。有回碰上个WAF,对../过滤得严,我改成%2e%2e%2f再URL编码两次,脚本跑起来照样穿过去。这种灵活度,现成工具给不了。
密码爆破环节,Python的paramiko库连SSH,ftplib连FTP,写个循环读字典就行。但别傻乎乎用rockyou.txt硬怼——先跑top100,再根据目标域名生成定制字典。我习惯用cewl爬目标网站生成词表,再拿Python去重排序。去年打一个CMS,管理员密码是公司名+2023,字典里根本没这条,但爬完官网“关于我们”页面后,脚本自动拼出来了。
提权阶段Python也能帮上忙。Linux下用os.system跑sudo -l,解析输出找SUID;Windows下用ctypes调Win32 API查未引用服务路径。有次在Windows Server 2012上,脚本检测到AlwaysInstallElevated注册表项开启,直接生成msi提权,比手动翻半天快得多。
不过得说清楚:这些技术用在没授权的目标上就是犯罪。我所有测试都在自己搭的靶场或客户书面授权的环境里做。Python渗透脚本就像手术刀——医生手里救人,歹徒手里伤人。区别不在工具,在拿工具的手。
最后提个坑。很多人写扫描脚本不考虑异常处理,目标一关端口就抛ConnectionRefusedError,整个脚本崩掉。加个try...except包住核心逻辑,再写个日志模块记录失败IP,能省一半调试时间。我现在的习惯是每个脚本开头先定义logging.basicConfig,输出带时间戳的日志文件,事后复盘一目了然。
Python渗透测试的实战价值,在于把重复劳动自动化,把零散技巧固化成可复用的代码块。你不需要成为算法大师,但得清楚每个库的边界在哪。比如scapy发ARP包时,sendp比send快十倍,因为前者走二层;再比如socket的settimeout设0.5秒比1秒效率高一倍,但网络差时又容易漏报。这些细节,只有真正跑过几百次脚本的人才有体会。









