渗透测试技术----常见web漏洞--命令执行原理及防御

2023-10-27

一、命令执行漏洞介绍

1.命令执行漏洞简介
命令执行漏洞时指服务器没有对执行的命令进行过滤,用户可以随意执行系统命令,命令执行漏洞属于高危漏洞之一,也属于代码执行的范围内。

2.命令执行漏洞的原理
应用程序有时需要调用一些执行系统命令的函数,如在PHP中,使用System()、exec()、shell_exec()、passthru()、popen()、proc_popen()等函数可以执行系统命令。当攻击者可以控制这些函数中的参数时,就可以将恶意的系统命令拼接到正常命令中,从而造成命令执行攻击。命令执行主要是对输入的命令没有进行过滤,攻击者可以使用&、&&、|、||等命令拼接自己想要查看的信息的相关命令,这样,连同攻击者的命令就会一块执行,这样就造成了命令执行漏洞。

3.命令执行漏洞产生的原因
(1):代码过滤不严或者无过滤。(没有过滤&、&&、|、||等连接符)
(2):系统漏洞造成的命令执行,bash破壳漏洞,该漏洞可以构造环境变量的值来执行具有攻击力的脚本代码,会影响到bash交互的多种应用,如http、ssh和dhcp等。
(3):调用第三方组件,如php(system()、shell_exec()、exec()、eval()),java(struct2),thinkphp(thinkphp是一个老牌的php)(比如一句话木马<?php @eval($_GET[cmd]); ?>)

4.命令执行常用的管道符

  • Windows
    (1):"|":无论前面的命令是否执行成功,直接执行后面的命令(并且只执行后面的命令,不显示前面的命令执行结果)。
    (2):"||":如果前面的命令执行成功,则不执行后面的命令;如果前面的命令执行失败,则会执行后面的命令。
    (3):"&":如果前面的命令执行成功,则会接着去执行后面的语句;如果前面的语句执行失败,还会执行后面的语句。
    (4):"&&":如果前面的命令执行成功,后面的命令也会执行;如果前面的命令执行失败,则会直接报错。
  • Linux
    (1):";":执行完前面的命令再执行后面的命令。如果前面的命令执行成功,后面的命令也会执行;如果前面的命令执行失败,则会执行后面的命令。
    (2):"|":无论前面的命令是否执行成功,直接执行后面的命令(并且只执行后面的命令,不显示前面的命令执行结果)。
    (3):"||":如果前面的命令执行成功,则不执行后面的命令;如果前面的命令执行失败,则会执行后面的命令。
    (4):"&":如果前面的命令执行成功,则会接着去执行后面的语句;如果前面的语句执行失败,还会执行后面的语句。
    (5):"&&":如果前面的命令执行成功,后面的命令也会执行;如果前面的命令执行失败,则会直接报错。

5.命令执行中常用的命令

  • Windows
    dir----查看文件目录
    ipconfig----查看Windows的IP地址
    arp -a----查看ARP缓存表
    calc----在命令行打开计算器
    regedit----打开注册表
    netstat -ano----查看开放的端口信息
  • Linux
    cat /etc/passwd----查看passwd文件
    id----查看该用户的ID号
    groups----查看用户所属的组
    cat /etc/group----查看组信息
    whoami----查看当前用户
    pwd----查看当前路径
    uname -a----查看主机信息
    cat /etc/issue----查看主机的配置信息
    netstat -pantu----查看开放的端口信息
    netstat -nr----查看路由信息

二、命令执行漏洞实例

注意:以下测试是基于DVWA上进行的!

Windows

1."|":无论前面的命令是否执行成功,直接执行后面的命令(并且只执行后面的命令,不显示前面的命令执行结果)
127.0.0.1|dir(前面的命令执行成功,但是只显示后面的命令结果)
在这里插入图片描述
pwd|dir(前面的命令执行失败,但却执行了后面的命令)
在这里插入图片描述

2."||":如果前面的命令执行成功,则不执行后面的命令;如果前面的命令执行失败,则会执行后面的命令
127.0.0.1|dir(前面的命令执行成功,只显示前面的结果)
在这里插入图片描述
dir||ipconfig(前面的命令执行失败,只执行了后面的命令)
在这里插入图片描述

3."&":如果前面的命令执行成功,则会接着去执行后面的语句;如果前面的语句执行失败,还会执行后面的语句
127.0.0.1&dir(前面的命令执行成功,两条命令都执行)
在这里插入图片描述
ipconfig&dir(前面的命令执行失败,只执行了后面的命令)
在这里插入图片描述

4."&&":如果前面的命令执行成功,后面的命令也会执行;如果前面的命令执行失败,则会直接报错
ipconfig&&dir(前面的命令执行失败,直接报错)
在这里插入图片描述
127.0.0.1&&dir(前面的命令执行成功,后面的命令也会执行)
在这里插入图片描述

Linux

1.";":执行完前面的命令再执行后面的命令。如果前面的命令执行成功,后面的命令也会执行;如果前面的命令执行失败,则会执行后面的命令
127.0.0.1;pwd(前面的命令执行成功,后面的命令也会执行成功)
在这里插入图片描述
ls;pwd(前面的命令执行失败,只执行后面的命令)
在这里插入图片描述

2."|":无论前面的命令是否执行成功,直接执行后面的命令(并且只执行后面的命令,不显示前面的命令执行结果)。
127.0.0.1|pwd(前面命令执行成功,执行后面命令,只显示后面命令执行的结果)
在这里插入图片描述
ls|pwd(前面命令执行失败,执行后面命令,只显示后面命令执行的结果)
在这里插入图片描述

3."||":如果前面的命令执行成功,则不执行后面的命令;如果前面的命令执行失败,则会执行后面的命令。
127.0.0.1||pwd(前面的命令执行成功,后面的命令不会执行)
在这里插入图片描述
ls||pwd(前面的命令执行失败,然后会执行后面的命令)
在这里插入图片描述

4."&":如果前面的命令执行成功,则会接着去执行后面的语句;如果前面的语句执行失败,还会执行后面的语句。
127.0.0.1&pwd(前面的命令执行成功,接着执行了后面的命令)
在这里插入图片描述
ls&pwd(前面的命令执行失败,还是会执行后面的命令)
在这里插入图片描述

5."&&":如果前面的命令执行成功,后面的命令也会执行;如果前面的命令执行失败,则会直接报错。
127.0.0.1&&pwd(前面的命令执行成功,后面的命令也执行成功)
在这里插入图片描述
ls&&pwd(前面的命令执行失败,直接报错)
在这里插入图片描述

三、防御命令执行的方法

1.尽量不要使用命令执行函数,尽量不要执行外部命令
2.使用自定义函数或者函数库来代替外部命令的功能
3.客户端提交的变量在进入执行命令函数钱要做好过滤和检测
4.在使用动态函数之前,确保使用的函数是指定的函数之一
5.对PHP语言来说,不能完全控制的危险函数最好不要使用

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

渗透测试技术----常见web漏洞--命令执行原理及防御 的相关文章

  • A+B和C C语言

    1011 A B 和 C 15 分 给定区间 231 231 内的 3 个整数 A B 和 C 请判断 A B 是否大于 C 输入格式 输入第 1 行给出正整数 T 10 是测试用例的个数 随后给出 T 组测试用例 每组占一行 顺序给出 A
  • GET与POST 进行用户登录的区别

    GET登录 登录后 我们会在url地址栏中看到登录的用户名和密码 控制台中也可看到登录的账号密码 由此可见 GET方法登录不够安全 相对于GET方法 POST方法登录就更为安全 POST登录 登录后 我们在url地址栏中看不到登录的用户名和
  • error: reference to 'left' is ambiguous

    原因 自定义的left 变量与库中重名 解决 修改一下变量名
  • 哈希函数学习笔记

    一 哈希函数的定义 哈希函数 Hash Function 是一公开函数 用于将任意长的消息M映射为较短的 固定长 度的一个值H M 又称为散列函数 杂凑函数 我们称函数值H M 为哈希值 杂凑值 杂凑码 或消息摘要 杂凑值是消息中所有比特的
  • mysql8.0新增数据库保存在哪里_mysql-connector-java升级到8.0后数据库保存时间出现了时差...

    useUnicode 是否使用Unicode字符集 如果参数characterEncoding设置为gb2312或gbk 本参数值必须设置为true false 1 1g characterEncoding 当useUnicode设置为tr
  • JAVA7 判断学生成绩等级

    描述 现有如下成绩等级A B C D 其中A代表优秀 B代表良好 C代表及格 D代表不及格 现在请你来为学生的成绩进行分级 如果用户输入错误则输出未知等级 输入描述 成绩等级对应的中文表述 输出描述 优秀 良好 及格 不及格 未知等级 im
  • Android APP逆向分析工具和方法汇总

    一 概述 受益于移动设备的广泛普及 移动应用近年来得到了蓬勃发展 基于移动设备集成的各类传感器 众多功能丰富的移动应用被开发出来 聚集了大量高价值用户隐私数据 包括用户身份信息 地理位置信息 账户资料信息等 用户在享受移动应用带来便利的同时
  • 写给天天说“程序员完了”的人,android开发入门到精通

    他是咸宁通山人 今年在华科获得博士学位 目前的工作之一是在阿姆斯特丹大学INDE Lab进行博士后研究工 主要研究方向是AI for System 张霁在博士期间 以第一作者身份 在ATC DAC ICPP SIGMOD等会议和期刊上发表了
  • UDP 头部结构及协议特点

    UDP 头部结构 头部结构中各部分的作用 1 16位源端口号 记录源端口号 在需要对方回信时选用 不需要时可用全0 2 16位目的端口号 记录目标端口号 这在终点交付报文时必须要使用到 3 长度 UDP数据报的长度 包括数据和首部 其最小值
  • 关于pychram 本地编码问题的情况subprocess.py

    将None设置成 utf 8 就是 将全部都设置成了utf 8
  • 如何在idea中配置java项目

    文章目录 项目地址 1 检查jdk版本 2 配置modules 3 引入tomcat jar包 4 设置Artifacts 5 发布 项目地址 https blog csdn net qq 37855749 article details
  • python开发基础篇2——登陆机制

    文章目录 一 管理平台页面布局 二 登录页面 2 1 token登录 2 2 kubeconfig登录 2 3 添加装饰器 一 管理平台页面布局 应用名称 dashboard 存放公共 k8s Node K8s集群计算节点 Namespac
  • 大数据课程K13——Spark的距离度量&&相似度度量

    文章作者邮箱 yugongshiye sina cn 地址 广东惠州 本章节目的 掌握Spark的距离度量和相似度度量 掌握Spark的欧氏距离 掌握Spark的曼哈顿距离 掌握Spark的切比雪夫距离 掌握Spark的最小二乘法 一 距离
  • [c++] 大整数乘法(字符串乘法)

    include
  • 详解 ROI Align 的基本原理和实现细节

    http blog leanote com post afanti deng gmail com b5f4f526490b https www bilibili com video av21410129 from search seid 5
  • abap alv新增行数据_一键复制ALV数据到剪贴板

    1 3 需求背景 众所周知 当ALV中数据条目较多时 点全选按钮 再点复制 会有下图这样的提示 而且 直接复制中的坑 还不止这些 它还包括 1 带负号的数字 粘贴出来之后 负号也是在后面的 不方便统计 当然 可以通过自己写转换例程来实现AL
  • Qt添加资源文件编译出错

    编译显示错误 no rule to make target needed by 发现添加的资源文件中有中文命名的 将之改成英文 错误解决

随机推荐

  • rabbitmq基础4——单机多节点集群、多机集群部署、基础功能测试

    文章目录 一 一机多实例集群 1 1 三机启动 1 2 立主纳从 1 3 查看集群状态 1 4 web监控 1 5 测试 1 5 1 数据同步 1 5 2 一从死 主仍战 1 5 3 从复活 死亡期间数据同步 1 5 4 主死 从活但不可用
  • RestTemplate发送请求使用总结

    一 注入RestTemplate配置类 Rest配置类 Configuration public class RestTemplateConfiguration LoadBalanced Bean public RestTemplate r
  • 【器件选型】TVS二极管在复杂电路中的三大应用

    欢迎关注 玩转单片机与嵌入式 公号 回复关键字获取更多免费视频和资料 回复 加群 单片机 STM32 硬件知识 硬件设计 经典电路 论文 毕业设计 3D封装库 PCB 电容 TVS 阻抗匹配 资料 终端电阻 Keil 485 CAN 振荡器
  • Spark Streaming实现WordCount

    利用Spark Streaming实现WordCount 需求 监听某个端口上的网络数据 实时统计出现的不同单词个数 1 需要安装一个nc工具 sudo yum install y nc 2 执行指令 nc lk 9999 v import
  • 纯JS实现购物车&jQuery实现购物车

    目录 案例 纯JS实现购物车 主要功能 案例 jQuery实现购物车 主要功能 案例 纯JS实现购物车 主要功能 全选 全不选 单个删除 批量删除 数量的增减 合计
  • 机器学习 day33(误差分析、添加数据、迁移学习)

    误差分析 我们可以手动查看分类错误的子集样本 通常为100个 并统计他们的错误类型 在所有错误类型中 选择一种或几种最常见的错误 进行改进 这可以最高效的改进你的模型 误差分析的一个限制是 它只能很好的解决人类擅长的问题 添加数据 添加数据
  • 2.6 内核 tasklet 和workqueue 的区别

    work queue 跟tasklet 不同 1 work queue 运行环境的是内核线程 所以可以休眠 可以分配内存 获得信号量 执行阻塞I O 2 tasklet 的运行环境是软中断 所以不能休眠 3 tasklet的使用跟timer
  • 串口异步通信——时序宽度测试

    一般情况下串口 bit 1 与 bit 0 宽度能基本维持对等 脉宽接近 把串口 0x55 理解为一个占空比为50 的方波 在占空比接近50 的情况下 通信一般不会出现错误 但是 在一些脉宽有损失的场景中 则非常需要注意脉冲宽度要求 使用波
  • Unity中射线Ray和RaycastHit的简单介绍

    射线是在三维世界中从一个点沿一个方向发射的一条无限长的线 在射线的轨迹上 一旦与添加了碰撞器的模型发生碰撞 将停止发射 我们可以利用射线实现子弹击中目标的检测 鼠标点击拾取物体等功能 1 Physics Raycast public sta
  • pycharm修改快捷键

    pycharm修改快捷键 很多使用使用pythcharm的同学 如果想运行程序 通常需要 第一步右键 第二步 选择运行或者直接点击运行 但是往往厉害的程序员 一般直接键盘操作 如果你使用pycharm自带的快捷键 需要按下 Ctrl Shi
  • Python3 使用 selenium 获取 JS 代码里边的变量值

    from selenium import webdriver driver webdriver Ie r IEDriverServer exe 找一个合适版本的IEDriver js var hello hello world return
  • C语言实验——大小写转换oj1168

    C语言实验 大小写转换 Time Limit 1000ms Memory limit 65536K 有疑问 点这里 题目描述 把一个字符串里所有的大写字母换成小写字母 小写字母换成大写字母 其他字符保持不变 输入 输入为一行字符串 其中不含
  • 数据结构与算法 -- 基础篇

    本文主要用于记录学习过程中的一些总结 适用于一些刚学习数据结构和算法的同学 能够给予一些概括性认识 而且从下面的一些算法题中能够获得一些对于算法题目常用解题思路 如果能够对你有些帮助 是我之幸 接下来 将一共分为三部分来介绍如下内容 1 基
  • ElasticSearch 数据迁移方案

    一个人不论赋有什么样的棋 他如果不知道自己有这种棋 并且不形成适合于自己棋的计划 那种棋对他便完全无用 休漠 ElasticSearch 常用api ElasticSearch 版本说明 name node 3 cluster name t
  • python3 题解(10)打印金字塔1

    打印金字塔1 问题 用星号在控制台上输出一个金字塔的形状 可以看出 它的第n行的星号的个数是 2 n 1 这个问题的思路可以很多 比如 先造出指定数目的星号 再计算出前后补的空格数 这里采用如下的思路 已知了n 最后一行的星号的数目就固定了
  • 杭电ACM-A+B problem

    topic Calculate A B Input Each line will contain two integers A and B Process to end of file Output For each case output
  • QT QDockWidget 重叠方法

    主要通过如下红色代码的方法实现 效果图片如下 代码如下 void MainWindow createDockWindows QDockWidget dock new QDockWidget tr Customers this dock gt
  • curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to raw.githubusercontent.com:443

    MacOS系统使用 Homebrew 官方地址时 报错 Mac安装homebrew的时候报错 Mac bin bash c curl fsSL https raw githubusercontent com Homebrew install
  • 自定义openwrt的配置界面:luci进阶之路

    5 20 晴 今天的太阳挺大的 晒得我进园区直接37 3警告 于是我百度搜索微信朋友圈怎么关闭 才把温度稳定下来 算了算了 上班说事 由于公司部门调动 逐渐接触到新的知识 新的模块 还听说这玩意比较冷门 没办法 该搞还是得搞 又不是搞不了
  • 渗透测试技术----常见web漏洞--命令执行原理及防御

    一 命令执行漏洞介绍 1 命令执行漏洞简介 命令执行漏洞时指服务器没有对执行的命令进行过滤 用户可以随意执行系统命令 命令执行漏洞属于高危漏洞之一 也属于代码执行的范围内 2 命令执行漏洞的原理 应用程序有时需要调用一些执行系统命令的函数