美文网首页网络安全安全
人人都可以挖CVE(个人挖CVE的方法)

人人都可以挖CVE(个人挖CVE的方法)

作者: Magicknight | 来源:发表于2018-10-22 00:05 被阅读183次

      最近在研究AI安全,已经好久没时间更新PWN的文章了,但最近也算有了一点成果,提了2个CVE漏洞,主要挖掘方法就是利用Fuzz方法。文字首先介绍下Fuzz的基本原理、然后说下业界主流的Fuzz工具,最后说下挖掘漏洞

    Fuzz的组成部分和简介

      传统的Fuzz的组成分为3大块:初始值、变异器、监控器,即通过变异器对初始值进行变异,然后输入到要测试的程序中,使用监控器监控测试程序的异常,以达到测试目的。
      还有种smartFuzz,基本原理差不多,只不过进行了优化,它是基于文件格式规范来生成,最著名的是Peach,以前是开源的工具,后来商业化了,华为使用的2大Fuzz工具是Peach和codenomicon。

    Fuzz原理图-引用腾讯(https://security.tencent.com/index.php/blog/msg/35)

    常用的Fuzz测试工具

      这里只介绍下免费或者开源的,github上有的。

    1. american fuzzy lop(AFL)(我挖掘漏洞主要是使用AFL)
    2. libfuzzer
    3. honggfuzz

    常用的内存分析工具

    1. valgrind
    2. ASAN(Address-Sanitizier),GCC 4.8以上版本使用ASAN时不需要安装第三方库,通过在编译时指定编译CFLAGS即可打开开关。

    Fuzz实践

    以jasper为例子:
    1.下载源代码 git clone https://github.com/mdadams/jasper.git

    1. 解压,
    tar -vzxf jasper-2.0.14.tar.gz
    cd jasper-2.0.14
    mkdir BUILD
    cd BUILD
    
    

    3.设定编译器,注意在编译前需要把编译器设定为AFL的的编译器

    export CC=afl-clang
    export CXX=afl-clang++
    
    1. 编译安装
    cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DCMAKE_SKIP_INSTALL_RPATH=YES -DCMAKE_INSTALL_DOCDIR=/usr/share/doc/jasper-2.0.14
    make install
    
    1. 创建AFL-FUZZ的输入文件
    mkdir inFuzz output
    
    1. 从AFL的官网获取Fuzz的样本文件,然后开始Fuzz
    afl-fuzz -i inFuzz -o outFuzz jasper --input @@ --output test.bmp --output-format bmp
    
    
    1. 跑出crash后,使用valgrind结合源码分析是否是漏洞
    valgrind -v --tool=memcheck --leak-check=full jasper --input id:000035,sig:06,src:002011,op:havoc,rep:2 
    --output test.bmp --output-format bmp
    
    
    1. 提交CVE漏洞
      提交流程可以看下文章:
      (1). CVE申请的那些事
      (2). CVE申请的那些事-后记

    CVE后记

    通过Fuzz的方法,1个月内发现了多个CVE,这说明CVE的发现并不是很困难,困难的是分析漏洞,然后利用漏洞,下一步的目标是通过学习缓冲区溢出来利用CVE漏洞,这也是我一直在学习PWN的原因。

    相关文章

      网友评论

        本文标题:人人都可以挖CVE(个人挖CVE的方法)

        本文链接:https://www.haomeiwen.com/subject/ylfwzftx.html