安全牛-溢出漏洞


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

python

相关文章
相关标签/搜索