• 安全牛-溢出漏洞



    0day漏洞


    程序漏洞从哪里来
    罪恶的根源:变量
    数据与代码边界不清
    最简漏洞原理—— shell脚本漏洞

    原理
    正常情况下,用户向计算机发送一个指令/数据,计算机会把这段代码,作为一个数据进行处理
    如果程序本身设计的不严,用户向计算机输入的数据/代码,通过某种方法/规则欺骗计算机,让它原本是输入数据部分的内容,当作代码在计算机中执行,结果导致内存注入的漏洞
    无论数据,还是代码,都是因为程序没有严格限定和区分数据与代码的边界在哪里,从而导致原本输入数据的地方,但是输入一段代码,这段代码又被计算机所执行,执行之后就会造成对程序的各种各样的破坏,比如程序的奔溃,控制计算机

    案例
    #!/bin/bash
    echo $1
    这个脚本可以输入数字/字母,但是当输入系统命令呢,会不会执行
    当输入123,输出为123;
    当输入abc,输出为abc;
    当输入pwd,输出为pwd;
    当输入;pwd,输出为 当前目录;
    当输入nc进行侦听端口,其他人就可以进行连接;
    当输入id,
    当输入ls,
    出现此种情况,就是由于没有对输入的数据部分,到底输入的是命令还是数据,没有进行区分/判断,所以导致了问题的出现。    
    当输入|pwd,输出为 当前目录;
    当输入&&pwd,输出为 当前目录;
    当输入&pwd,输出为 当前目录;
    计算机漏洞产生的根本根源,用户向程序输入的数值,程序本身没有做过滤,没有做检查,没有做消毒,就直接接收了,接收之后就交给计算机,放到内存里,让cpu执行

    缓冲区溢出
    当缓冲区边界限制不严格时,由于变量传入畸形数据或程序运行错误,导致缓冲区被“撑暴”,从而覆盖了相邻内存区域的数据;
    成功修改内存数据,可造成进程劫持,执行恶意代码,获取服务器控制权等后果

    缓存区:属于内存中的一个片段,向程序输入一些需要程序执行的参数和变量,通过参数和变量传递给程序,程序把参数和变量的数据部分提交给计算机,先放到内存中(缓存区属于内存的一个片段),然后内存交给cpu运算处理,结果返回给客户端或写入到计算机硬盘中保存

    本质:程序是动态的,可以接收用户输入的数据,根据用户输入的数据,产生不同的反馈和结果


    缓冲区溢出:如果应用程序没有参数做限制,会导致命令被执行;如果程序没有对缓存区边界大小做限制,会造成用户提交的数据溢出,当用户提交大量的数据,大量的数据会蔓延到默认缓冲区大小之外的空间里,就会导致数据占用其他进程或者其他数据所该有的缓冲区内存里面的数据内容,从而导致程序奔溃/进程被劫持/执行恶意代码/获取服务器控制权等


    如何发现漏洞
    源码审计
    逆向工程
    模糊测试变量
      向程序堆栈半随机的数据,根据内存变化判断溢出
      数据生成器:生成随机、半随机数据
      测试工具:识别溢出漏洞


    源码审计:接触到源代码,在代码里检测相应的安全漏洞,程序是不是使用不安全的函数,用户数据是否过滤,输出是否编码,发现其中的安全漏洞
    逆向工程:如果源代码已经经过封装编译打包之后,可能看不到原始代码的样子,这时就使用逆向工程,进行反汇编进行逆向工程的分析
    模糊测试变量:在拿不到程序的源代码,但是可以拿到程序的安装包,自己构建一个运行环境,把安装包在运行环境中部署,向程序发送生成随机、半随机数据插入到程序中,利用调试工具动态的监测,程序运行过程中输入不同数值的反馈(根据调式工具检测程序运行过程中,对输入的随机/半随机的数据是如何进行响应/反馈)
    模糊测试工具:半随机数值+数据生成器+动态调试工具



    WINDOWS 缓冲区溢出
    1.FUZZER
    SLMail 5.5.0 Mail Server
    ImmunityDebugger_1_85_setup.exe
    mona.py
    http://pan.baidu.com/s/1o6kT6gM

    准备工具
    软件:SLMail 5.5.0 Mail Server
    调试工具:ImmunityDebugger_1_85_setup.exe  可以调用python脚本
    辅助工具:mona.py
    环境:window xp

    环境搭建
    安装SLMail 5.5.0 Mail Server
    安装ImmunityDebugger_1_85_setup.exe

    思路
    向程序发任何字符组合,在服务端使用Debugger调式程序,查看不同数据被提交到内存里执行的过程,会不会发生缓冲区溢出


    2.SLMail 5.5.0 Mail Server
      POP3 PASS 命令存在缓冲区溢出漏洞
     无需身份验证实现远程代码执行
      DEP:阻止代码从数据页被执行(结合cto特性以及通过操作系统软件的实现,来防止代码指令从内存数据页被执行,之后出现很多绕过)
      ASLR:随机内存地址加载执行程序和DLL,每次重启地址变化(动态地址分配)

    不建议使用win7/win8的原因
    SLMail 不兼容win7/win8
    win7/win8全面支持DEP/ASLR(属于安全防护机制)



    3.POP3
    Nc 110端口
    了解未知协议
    Wireshark
    RFC
    01.py

  • 相关阅读:
    VS Code 快捷键(中英文对照版)
    一些网络资源
    VS Code插件
    Angular for TypeScript 语法快速指南 (基于2.0.0版本)
    Angular2 中的依赖包详解
    《ECMAScript 6 入门》阮一峰
    《JavaScript 标准参考教程》阮一峰
    Angular内提供了一个可以快速建立测试用web服务的方法:内存 (in-memory) 服务器
    由angular命令行工具(angular-cli)生成的目录和文件
    Angular 4.x 修仙之路
  • 原文地址:https://www.cnblogs.com/-lyr/p/10884485.html
Copyright © 2020-2023  润新知