• 命令执行漏洞


    什么是命令执行漏洞

    命令执行漏洞是指攻击者可以随意执行系统命令。

    命令执行漏洞的原理

    脚本语言有点事简洁,方便,但也伴随一些问题,比如运行速度慢,无法接触系统底层,如果我们开发的应用(特别是企业级的一些应用)需要除去web的特殊功能时,就需要调用一些外部程序。在应用需要去调用外部程序去处理的情况下,就会用到一些执行系统命令的函数。如php中的system,exec,shell_exec等,当用户可以控制命令执行的函数时,可以恶意注入系统命令到正常命令中,造成命令执行

    命令执行漏洞的分类

    代码过滤不严或无过滤

    系统漏洞造成的命令执行

    调用第三方组件

    PHP命令执行函数

    exec(): 执行一个外部程序,该函数可执行系统命令,命令执行结果的最后一行内容。

    passthru() :执行外部程序并且显示原始输出

    system(): 执行外部程序,并且显示输出,成功则返回命令输出的最后一行,失败则返回FALSE

    shell_exec(): 通过shell环境执行命令,并且将完整的输出以字符串的方式返回命令执行的输出,如果执行过程中发生错误或者进程不产生输出,则返回NULL.

    Java命令执行

    structs2框架,Java的三大框架之一。

    Linux特殊命令

    1)         >重定向输出符号。

    2)         >>重定向输出符号,但有追加的功能。

    3)         2>错误重定向输出符号,覆盖原文件内容。

    4)         2>>错误重定向输出符号,有文件内容追加的功能。重定向:I/O。Linux Shell 环境中支持输入输出重定向,用符号<和>来表示。0、1和2分别表示标准输入、标准输出和标准错误信息输出,可以用来指定需要重定向的标准输入或输出,比如 2>a.txt 表示将错误信息输出到文件a.txt中。

    5)         *匹配任意字符。

    6)         ?匹配任意一个字符。

    7)         |管道符号。解释:command1|command2,将command1的输出作为command2的输入,比如ls -al|less,表示将ls -al的输出作为less的输入,即将la -al的输出分页。管道命令只接受标准输入(standoutput)。

    8)         &后台运行符。

    9)         &&  逻辑与符号。用法:命令1 && 命令2 表示如果命令1执行成功,继续执行命令2。

    10)     ||逻辑或符号。用法:命令1 | | 命令2 表示如果命令1执行成功,不执行命令2;但如果命令1执行失败才执行命令2。

    实验测试

    实验环境DVWA, Linux操作系统

    安全级别LOW

    接下来我们试试能不能直接执行其它

     

    既然不能直接执行,那我们换个方式试试吧

    在这里我们用了管道符,就可以输出我们想要的东西了

     

    这就是一个简单的命令执行漏洞的利用了。

  • 相关阅读:
    QAU 18校赛 J题 天平(01背包 判断能否装满)
    滚动数组
    Leapin' Lizards HDU
    Sabotage UVA
    Food HDU
    两个Button 加通一个手势,那么 第一个的就失效了,
    终于把聊天记录保存到数据库当中去了,
    添加好友,
    XEP 0055 (Jabber search) with iphone SDK
    手机ip,
  • 原文地址:https://www.cnblogs.com/qswz/p/11857083.html
Copyright © 2020-2023  润新知