当前位置: 首页 > news >正文

命令执行漏洞(附例题)

一.原理

应用有时需要调用一些执行系统命令的函数,如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");

http://www.lryc.cn/news/157415.html

相关文章:

  • iOS开发Swift-类型转换
  • python基础爬虫反爬破解
  • Maven 必备技能:MAC 系统下 JDK和Maven 安装及环境变量配置详细讲解
  • electron笔记无边框窗口、DLL调用、DLL函数返回指针
  • 递归算法学习——黄金矿工,不同路径III
  • pg 创建分区表 --chatGpt
  • 长城网络靶场,第一题笔记
  • el-form表单中不同数据类型对应的时间格式化和校验规则
  • Python代码雨
  • java.util.Optional
  • 微服务--Seata(分布式事务)
  • 发光太阳聚光器的蒙特卡洛光线追踪研究(Matlab代码实现)
  • (涨知识)-圣诞灯串类产品出口都需要做哪些认证?
  • ROS地图/像素坐标描点调试【Python源码实现】
  • 2023年7月京东笔记本电脑行业品牌销售排行榜(京东数据平台)
  • 用户忠诚度:小程序积分商城的用户保持方法
  • [前端] 使用lerna version更新版本号
  • winform嵌入浏览器 webView2
  • stm32---用外部中断实现红外接收器
  • Filter过滤器及HttpServletRequest和HttpServletResponse
  • 02-打包代码与依赖
  • Kotlin(五) 循环语句
  • 数字孪生产品:数字化时代的变革引擎
  • 对接西部数据Western Digital EDI 系统
  • ClickHouse进阶(十):Clickhouse数据查询-4
  • FPGA原理与结构——FIFO IP核的使用与测试
  • ABB CMA120 3DDE300400面板
  • 【代码随想录day25】动态规划:01背包理论基础
  • Python Opencv实践 - 轮廓检测
  • c#保留两位小数