Python代码审计中一些须要重点关注的项

SQL注入:html

若是是常规没有进行预编译,或者直接使用原生的进行拼凑,那么在view的时候就须要多去观察了python

【PythonSQL预编译】https://www.cnblogs.com/sevck/p/6733702.htmllinux

若是项目使用例如Django,虽然Django本身封装了操做数据库的函数,可是Django也支持raw:shell

def index(request, *args, **kwargs):
        for e in Person.objects.raw('select * from FIRST_Person WHERE first_name = ' + '"' + request.GET.get('user') + '"'):
            print(e.last_name)
        return render(request, 'home.html')

 

命令注入:数据库

os,commands,subprocess,multiprocessing,pty,Cpickle/pickle,PyYAML安全

若是使用了这些须要多去关注和跟踪相关的信息。curl

例如:函数

os.system("curl %s",(request.get("url")))post

那么攻击者也能够进行拼凑,例如 http://a.com|id等等多种方式去绕过,姿式有$IFS\;\#,等等,url

pickle可进行序列化和反序列化操做:

# Create your tests here.
import os
import pickle


# Exploit that we want the target to unpickle
class Exploit(object):
    def __reduce__(self):
        return (os.system, ('ls',))


shellcode = pickle.dumps(Exploit())

pickle.loads(shellcode)

在pickle中,查了网上的,发现关于解决办法,如何修复一直没有人提。

昨天和Phithon交流的时候,总结以下:

https://docs.python.org/3/library/pickle.html?highlight=pickle#restricting-globals

pickle默认也支持作白名单,用户自定义find_class方法便可。

 

YAML注入:

可参考:

http://blog.knownsec.com/2016/03/pyyaml-tags-parse-to-command-execution/

 

参考:

【linux下不用空格执行带参数的5种姿式】https://www.cnblogs.com/sevck/p/6072721.html

 

XSS和其余平台相似,再次再也不累赘,主要介绍python特色中须要关注的点.

 

CSRF:

Django,默认自带且支持防止CSRF,若是取消须要增长修饰符

 

越权/逻辑/水平漏洞:

python开发不少可能没有特别的关注这方面,在作黑盒或者白盒审计的时候须要多去关注此方面

 

------------------------------

自动化检测:

笔者在甲方安全实践过程当中,开发了代码审计系统,而且上线检测,发现了一些高危、甚至严重的安全漏洞。

在作跟踪安全问题总结了如上,须要关注的安全点;提供pythoner、secer参考:

[甲方安全建设之路]自动化代码审计系统 https://www.cnblogs.com/sevck/p/10432981.html

360的安全客文章也总结的不错,能够参考:

https://www.anquanke.com/post/id/87007

相关文章
相关标签/搜索