zoukankan      html  css  js  c++  java
  • Python代码审计中一些需要重点关注的项

    SQL注入:

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

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

    如果项目使用例如Django,虽然Django自己封装了操作数据库的函数,但是Django也支持raw:

    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

    如果使用了这些需要多去关注和跟踪相关的信息。

    例如:

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

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

    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

  • 相关阅读:
    java 取汉字首字母
    详解intellij idea搭建SSM框架(spring+maven+mybatis+mysql+junit)(下)
    详解intellij idea搭建SSM框架(spring+maven+mybatis+mysql+junit)(上)
    IntelliJ IDEA maven项目new里没有package
    IntelliJ IDEA上操作GitHub
    IntelliJ IDEA部署tomcat时Edit Configuration Deployment无artifact选项
    Java开发需掌握的常用Linux命令(持续更新)
    Spring JDBC 示例
    java 获取日期的几天前,几个月前和几年前
    Anaconda3(0)环境基本使用
  • 原文地址:https://www.cnblogs.com/sevck/p/10491147.html
Copyright © 2011-2022 走看看