未分类

Python Waf黑名单过滤下的一些Bypass思路

1.黑名单下的函数;

1.1 变量 = 函数名

1.2 空格+换行
经过测试,函数名后面加点空格换一行都能执行。

111.jpg

2.第三方库内置的函数;

一般都会有在白名单的第三方库的,除非他们程序员太厉害了,所有模块都自己实现。
如:numpy这个库,内置了很多可以执行命令的地方。

2222.jpg

3.import的方式;

大概常用的就几种,第三方的就不说了,欢迎补充
3.1 利用as取别名

3.2 内置函数 import

3.3 逗号+as(如果知道目录结构还可以用点号或者星号)

3.4 魔术方法(思路来自:美丽联合集团安全应急响应中心@Viarus)

3333.jpg

3.5 getattr函数(首先你需要在内存中已经加载这个库,@kttzd师傅的姿势)
如numpy库的

444.jpg

4.__init__.py 里面import的库;

这个地方很容易被程序员忽略...
__init__.py 里面import的库,我们可以直接使用。
如:dateutil这个第三方库。
dateutil/zoneinfo/__init__.py 下第三行就有import os

5555.jpg

5.反序列;

6666.jpg
这里有个经典的案例:https://www.leavesongs.com/PENETRATION/zhangyue-python-web-code-execute.html

再分享个没啥用tips,这次测试碰到的一个案例,因为之前被别人挖过,所以限制了对外发请求,又不能print打印出命令执行的结果,当时不是很肯定存在命令执行,没法证明就没法提交上去,后面用变量接收命令执行的结果然后用int函数强制转换,报错的时候就把命令执行返回的str带出来了(后面@kttzd 师傅翻出这个系统的文档,有个函数专门用来打印日志...)。
例如:
888.jpg

最后的最后再感谢下@kttzd 师傅的姿势。

参考:
https://docs.python.org/2/reference/datamodel.html#special-method-names
https://mp.weixin.qq.com/s?__biz=MzIzOTQ5NjUzOQ==&mid=2247483665&idx=1&sn=4b18de09738fdc5291634db1ca2dd55a
https://www.leavesongs.com/PENETRATION/zhangyue-python-web-code-execute.html

作者: Mosuan  原文链接:http://www.0aa.me/index.php/archives/123/

(0)

热评文章

发表评论