• 命令执行漏洞(附例题)


    一.原理

    应用有时需要调用一些执行系统命令的函数,如PHP中的system、exec、shell_exec、passthru、popen、proc_popen等,当用户能控制这些函数的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击。

    二.利用条件

    1、应用调用执行系统命令的函数

    2、将用户输入作为系统命令的参数拼接到了命令行中

    3、没有对用户输入进行过滤或过滤不严

    三.分类

    1.远程命令执行漏洞

    概念:远程命令执行漏洞,指用户通过浏览器提交执行操作命令, 由于服务器端,没有针对执行函数做过滤,就执行了恶意命令

    2、远程代码执行漏洞

    概念:代码执行漏洞也叫代码注入漏洞,指用户通过浏览器 提交执行恶意脚本代码,执行恶意构造的脚本代码

    四.例题

    [SWPUCTF 2021 新生赛]easyrce

    1.给一串代码,直接审计

    eval():把字符串按照 PHP 代码来计算,需以分号结尾

    1. error_reporting(0);:这行代码将错误报告设置为关闭状态。这意味着在执行PHP代码时,不会显示任何错误或异常信息。这可能会导致难以调试和发现潜在的问题。
    2. highlight_file(__FILE__);:这行代码使用highlight_file()函数来高亮显示当前文件的代码。__FILE__是一个预定义的常量,它表示当前文件的路径和文件名。这个功能可以在调试或查看代码时提供帮助。
    3. if(isset($_GET['url'])):这行代码检查是否有一个名为"url"的GET参数存在。$_GET是一个超全局数组,用于获取通过HTML表单或URL传递的变量值。如果存在名为"url"的GET参数,则继续执行代码。
    4. eval($_GET['url']);:这行代码使用eval()函数执行用户提供的代码。$_GET['url']获取前面检查的GET参数"url"的值,并将其作为字符串传递给eval()函数执行。这意味着用户可以在URL中输入任何PHP代码,并将其执行。

    发现通过GET传参,实现命令执行

    2.构造payload,查看权限,发现为www-data

    /?url=system("whoami");

    2.查看目录,发现flllllaaaaaaggggggg

    /?url=system("ls /");

    3.cat查看文件,得到flag

    /?url=system("cat /flllllaaaaaaggggggg");

  • 相关阅读:
    【生成式网络】入门篇(四):CycleGAN 的 代码和结果记录
    Vue基础入门(四):Vue3快速开发模板
    Pytorch lr_scheduler.LambdaLR()的简单理解与用法
    C++图书管理系统(管理员-读者)
    第59篇 QML 之 JS类型转换为 Number 类型
    大数据:数据策略之CAP理论和BASE理论
    ROS2——参数(十二)
    uniapp小程序实现上下固定中间滑动布局(附源码和实现过程讲解)
    学完自动化测试一年,达到月薪15K、我的这份笔记希望能让你受益良多...
    【前端】爱心代码
  • 原文地址:https://blog.csdn.net/lkbzhj/article/details/132725196