python渗透脚本
一个合格的渗透渗透测试脚本,往往不是脚本从零写起的。多数时候,渗透它是脚本从网上抄来的PoC,改两行,渗透跑通,脚本再塞进自己的渗透工具链里。真正值钱的脚本部分,是渗透你知道去哪抄、改哪几行、脚本以及跑不通时怎么救回来。渗透这听起来不太酷,脚本但真实世界就是渗透这么运作的。 我见过最离谱的脚本一个脚本,是渗透同事用来测某内部系统登录接口的。那系统有个毛病,验证码校验能绕过——只要把cookie里的某个字段置空,服务端就当你验过码了。他写了个三十行的Python,用requests库循环撞密码,每试一次就随机生成一个User-Agent,免得触发WAF的频率限制。脚本跑了一晚上,第二天早上看结果,密码字典里第两百多个就中了。整个过程没有任何高深技术,连多线程都没用,就是单线程死磕。但人家赢在知道那个字段能置空,这信息是翻旧文档翻出来的。 写这类脚本最大的坑,不是语法错误,而是你把目标环境想得太理想了。真实目标哪有那么乖?返回的JSON可能带BOM头,编码可能是GBK,接口偶尔超时,代理池里的IP一半是死的。所以我的习惯是,每个请求都包一层try-except,状态码非200就重试,重试三次还不行就换下一个payload。代码丑没关系,能出结果就是好脚本。你写的时候多花十分钟处理异常,可能省下的是半夜爬起来重启脚本的麻烦。 另一个容易被忽略的点是日志。别只print到控制台就完事,把每次请求的URL、参数、响应状态、耗时都写进文件。这不是为了好看,是为了出事的时候能复盘。有次我跑一个目录扫描脚本,扫到一半目标把IP封了,当时没日志,我只知道断了,却不知道断在哪个路径上。后来补上日志再跑,发现封禁前最后访问的那个路径,恰好是后台管理入口的备份文件。要是早写日志,那次可能就进去了。 脚本写多了你会发现,真正考验人的不是技术,是耐心。一个注入点测到一半,目标突然上了CDN,请求全被拦。你得停下来,换IP、换指纹、换payload编码方式,有时候甚至得把整个请求头伪装成浏览器。这活儿烦人,但没办法,渗透就是这样——你永远在跟对方的安全团队玩猫鼠游戏。而脚本,就是你手里的弹弓。别指望弹弓能打坦克,但打中鸟窝,有时候比坦克管用。 最后说点实在的。别把时间花在写那种全自动、一键拿shell的“大而全”脚本上,不现实,也容易被针对。小而精的脚本才是王道——一个脚本只干一件事,干到极致。比如专门测未授权访问的,专门测越权的,专门测文件上传的。每个脚本控制在两百行以内,参数用argparse写清楚,输出格式统一成JSON。这样你就能像搭积木一样,把多个小脚本串成一条流水线。我自己的工具目录里躺着几十个这种小玩意儿,每个都丑得要命,但每个都救过我一次。