DaXin Space

DaXin Space

5rKh6ZSZIOi/meaYr+S4gOS4qkJhc2U2NCDkvaDmmK/lr7nnmoQ=
github

浅学$IFS在Shell与Web攻击中的用法

今天在分析数据包搜索资料的时候,偶然看到了一篇 Freebuf 文章提到了 ${IFS}。
附下链接:
https://www.freebuf.com/articles/web/286513.html

知识盲区,所以特地搜了一圈,记录下自己的理解。

$IFS 是 shell 脚本中的一种 set 变量,当 shell 处理 "命令替换" 和 "参数替换" 时,shell 根据 IFS 的值,默认是 space, tab, newline 来拆解读入的变量,然后对特殊字符进行处理,最后重新组合赋值给该变量。

如果直接 echo "cd${IFS}/home" %{IFS} 内的值应该是 \n

image
但是 当用双引号包裹住 $IFS 时,$IFS 会失效。比如创建 shell 文件写入下方内容
输入

IFS='-'
string2="1--2--3--4"
echo $string2
echo "$string2"

输出:

1  2  3  4
1--2--3--4

根据链接中的黑客攻击操作,尝试在服务器上直接执行:

/bin/sh${IFS}-c${IFS}'cd${IFS}/home/target;ls${IFS}-l'

这种写法的命令是可以被执行的,并且能拿到命令的执行结果
如果这种命令出现在了 URL 中,且 WEB 中存在目录穿越漏洞,且 IPS 或者 WAF 在检测 URL 时没有包含对 ${IFS} 的判断 那么很有可能会被攻击者得手
那时候攻击者可能就是提取的 passwd 文件,nc 回连等操作了。

如果后续有新的学习心得,再补充吧~

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。