远程命令执行

命令如何被执行?

命令组;管道;子命令(如 git --open-file-in-pager);

Shell 的内置命令(https://www.tldp.org/LDP/abs/html/internal.html

反引号

$(())

命令如何被注入?

判断是否可以注入

观察目标的被动响应(侧信道)

目标控制进行主动操作(发起请求)

场景分析

有过滤

  • 过滤空格

    • tab、${IFS}

有回显

无回显

  • 有网络链接

    • 反弹 Shell

    • 应用层协议(out of band)

      • HTTP 协议

        • curl

      • DNS 协议

        • dnslog

    • 网络层协议

      • ICMP 协议

  • 无网络链接

    • 执行命令,将输出结果通过侧信道读出来

    • 侧信道

      • 时间信道

        • 将命令结果写文件,通过读取文件类似时间盲注入拿到命令执行结果(sleep命令、benchmark)

        • 二分查找

辅助命令

  • sed

  • base64

  • hex

最后更新于