缓冲区溢出
缓冲区溢出
当缓冲区边界限制不严格时,由于变量传入畸形数据或程序运行错误,导致缓冲区被“撑 暴”,从而覆盖了相邻内存区域的数据;
•成功修改内存数据,可造成进程劫持,执行恶意代码,获取服务器控制权等后果
程序漏洞哪里来?
罪恶的根源:变量
数据与代码的边界分不清
最简漏洞原理--shell脚本漏洞
(发送数据正常情况是数据处理 异常情况 欺骗计算机将数据当做代码来执行)
首先我这里准备了一个shell脚本
1.sh
在目录下面 cat查看里面的内容
正常情况下我在后面输入一串数据然后它会显示出来
但是我们在后面加一个分号效果会完全不一样
看的出来他把我们输入的字符当成命令代码来使用了
那我们如何去发现呐?
源码审计
•逆向工程
•模糊测试
•向程序堆栈半随机的数据,根据内存变化判断溢出
•数据生成器:生成随机、半随机数据
•测试工具:识别溢出漏洞(动态调试工具)
现在我们进行预备软件的安装(选择windows2003)
SLMail 5.5.0 Mail Server
netstat -nao 查看计算机开启的端口
开启了25 8376 110端口 安装slmai成功
•ImmunityDebugger_1_85_setup.exe(会自动安装py)
•mona.py (粘贴到debug pycommnd的文件夹下面)
安装完成后我们可以进行 嘻嘻😳
FUZZER了
漏洞原理
SLMail 5.5.0 Mail Server
•POP3 PASS 命令存在缓冲区溢出漏洞
•无需身份验证实现远程代码执行
•DEP:阻止代码从数据页被执行
•ASLR:随机内存地址加载执行程序和DLL,每次重启地址变化
接下来我们ping一下邮件服务器 能ping 然后我们监听nc 192.168.1.104 25端口 和110端口 也可以进行一系列的操作
我们能访问
这里我们通过刚才第一个脚本那样的调试来测试
我们也可以在服务端通过debug‘调试来看见服务端对我们输入的命令进行的调试的结果是什么从而判别漏洞
这里我们刚好是这个PASS参数存在缓冲区溢出漏洞
SLmail(不兼容win7 win10)且win>7都有DEP 结合软硬件实现防止代码指令从内存的数据页里面执行(也可以绕过 我不会但是 哈哈)
而ASLR 程序加载调用的内存地址随机 你想让程序固定内存地址从而实现攻击 很难实现了。