首页 > 其他分享 >OS命令注入

OS命令注入

时间:2023-10-23 23:23:13浏览次数:29  
标签:web 调用 系统命令 命令 测试代码 OS 注入

原理以及成因

  程序员使用脚本语言开发的过程中需要去调用一些外部应用。当应用调用外部应用时就会用到一些系统命令的函数。应用在调用这些函数执行系统命令的时候,如果将用户的输入作为系统命令的参数拼接到命令行中,在没有过滤用户输入的情况下,就会造成命令执行漏洞。

 

漏洞危害

  1.继承web服务器程序权限,去执行系统命令

  2.继承web服务器权限,读写文件

  3.反弹shell

  4.控制整个网站

  5.控制整个服务器

 

相关函数

  system()

  调用终端,执行命令并输出

  测试代码如下:

  

<?php
	if($_GET['cmd']){
		$str=$_GET['cmd'];
		system($str);
	}
	else{
	echo '请通过get传参';
	}
?>

  exec()

    类似system,也是调用终端执行命令,但需要print来输出结果,并且有长度限制

    测试代码

    

<?php
	if($_GET['cmd']){
		$str=$_GET['cmd'];
		print exec($str);
	}
	else{
	echo '请通过get传参';
	}
?>

  shell_exec()同exec()

  passthru()自带输出结果

  popen()没有回显,但会执行指令

  反引号

    反引号[ `` ]里面的字符串也会被解析为OS命令

    测试代码如下

<?php
	if(isset($_GET['cmd'])){
	    $str=$_GET['cmd'];
	    print `$str`;
	}
	else{
	    echo 'please input ';
	}
?>

 

 

漏洞利用

  OS命令注入漏洞,攻击者直接继承web用户权限,在服务器上执行任意命令

  1.查看系统文件

    提交参数[ ?cmd=type c:\windows\system32\drivers\etc\hosts ],查看系统host文件

  2.显示当前路径

    [ ?cmd=chdir ]

  3.写文件

    echo "<?php phpinfo(); ?>" >> shell.php

防御方法

  1.尽量减少命令执行函数的使用,并在php.ini中禁用

  2.对用户输入的参数进行过滤

  3.参数的值尽量用引号包裹,拼接前调用addslashes进行转义(默认情况下会对单引号,双引号,空字符,反斜杠转义)

 

 

标签:web,调用,系统命令,命令,测试代码,OS,注入
From: https://www.cnblogs.com/dg05/p/17776826.html

相关文章

  • node.js 命令必须加 npx 才能执行
    问题描述在Windows上搭建Hexo环境,已经从官网下载安装node-v18.18.2-x64.msi,并且通过npm命令成功安装hexo。PowerShell中,直接执行hexo命令报错:hexo:无法加载文件C:\Users\zijia\AppData\Roaming\npm\hexo.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅http......
  • uboot配置usbhost及代码初步分析--Apple的学习笔记
    一,前言之前uboot没配置过usb,但是现在uboot基于DM模型基本和linuxdriver类似了。那么为了学习linuxdriver,我可以先学习uboot来做技术储备也是一样的。而且usb在uboot上应该也有用武之地,所以有必要进行刻意练习。二,分析1,之前对发现driver用了wraper的方式来打包进行绑定,我理解唯一......
  • HarmonyOS音频开发指导:使用AudioRenderer开发音频播放功能
    AudioRenderer是音频渲染器,用于播放PCM(Pulse Code Modulation)音频数据,相比AVPlayer而言,可以在输入前添加数据预处理,更适合有音频开发经验的开发者,以实现更灵活的播放功能。开发指导使用AudioRenderer播放音频涉及到AudioRenderer实例的创建、音频渲染参数的配置、渲染的开始与停......
  • Microsoft 365 解决方案:基于Teams平台的AI Bot使用场景
    博客链接:https://blog.51cto.com/u_13637423后疫情时代的到来,随着企业逐步转化为数字化办公模式,越来越多的电子邮件,会议和通知呈指数级涌入,大家都希望AI能帮助他们减轻繁重的工作量,把有限的工作时间集中在更有意义的工作上。今天给大家分享两款基于Teams平台的AIBot,帮助大家能更好......
  • Unity中国、Cocos为OpenHarmony游戏生态插上腾飞的翅膀
    Unity中国、Cocos为OpenHarmony游戏生态插上腾飞的翅膀2023年是OpenHarmony游戏生态百花齐放的一年!为了扩展OpenHarmony游戏生态,OpenHarmony在基金会成立了游戏SIG小组,游戏SIG小组联合cocos,从cocos2dx入手一周内快速适配了cocos2.2.6的MVP版本,随后又分别适配了cocos2dx 3.x、4.x版......
  • spring-cloud-starter-alibaba-nacos-discovery 配置信息
    spring-cloud-starter-alibaba-nacos-discovery1.spring-config-metadata.json{"groups":[{"name":"management.endpoint.nacosdiscovery","type":"com.alibaba.cloud.nacos.endpoint.NacosDiscovery......
  • FreeRTOS深入教程(任务的引入及栈的作用)
    (文章目录)前言本篇文章开始带大家深入学习FreeRTOS,带大家学习什么是任务,并且深入学习栈的作用。一、任务的引入在FreeRTOS中,任务(Task)是一个基本的执行单元,它代表了一个并行执行的工作单元。FreeRTOS是一个实时操作系统,允许你创建多个任务,每个任务都有自己的代码、堆栈和优......
  • linux常规命令
    1、cd上图,直接输入cd,会进入根目录2、treea/3、创建多个目录4、touch5、rm6、编译过程......
  • docker入门加实战—项目部署之DockrCompose
    docker入门加实战—项目部署之DockrCompose我们部署一个简单的java项目,可能就包含3个容器:MySQLNginxJava项目而稍微复杂的项目,其中还会有各种各样的其它中间件,需要部署的东西远不止3个。如果手动的逐一部署,就太麻烦了,同时也无法保证完整性。而DockerCompose就可以帮助我......
  • osg 改变obj模型的方向
    ////OpenSceneGraphQuickStartGuide//http://www.lulu.com/content/767629//http://www.openscenegraph.com/osgwiki/pmwiki.php/Documentation/QuickStartGuide////StateExample,Modifyingstateattributesandmodes#include<osg/Group>//组节点#i......