DaXin Space

DaXin Space

5rKh6ZSZIOi/meaYr+S4gOS4qkJhc2U2NCDkvaDmmK/lr7nnmoQ=
github

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

今天在分析資料包搜索資料的時候,偶然看到了一篇 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 回連等操作了。

如果後續有新的學習心得,再補充吧~

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。