linux - 这些 awk 命令容易受到代码注入(inject)的攻击吗?

标签 linux bash shell awk code-injection

当我阅读 How do I use shell variables in an awk script? 的答案时,我不确定如何正确编写使用 shell 变量的特定 awk 命令的脚本。 .

接受的答案演示了如何在 awk 命令中插入一个 shell 变量很容易被恶意代码注入(inject),虽然我能够重现该演示,但我找不到同样的问题以下两个命令:

#HWLINK=enp10s0
ip -o route | awk '/'$HWLINK'/ && ! /default/ {print $1}'
ip -o route | awk "/$HWLINK/"' && ! /default/ {print $1}'

因此,主要问题是这些(或两者)是否存在漏洞。

第二个问题是首选哪种形式。我试过 ip -o route | awk -v hwlink="$HWLINK"'/hwlink/&& !/default/{print $1}' 但这不起作用。

附注这是一个重构;原始命令是 ip -o route | grep $HWLINK | grep -v 默认 | awk '{print $1}'

最佳答案

当然,两者都很脆弱,第一个不那么脆弱。

这打破了你的第二行:

HWLINK="/{}BEGIN{print \"Your mother was a hamster and your father smelt of elderberries\"}/"

它不会破坏您的第一行的唯一原因是,为了能够注入(inject)到第一行,它不能包含空格。

HWLINK="/{}BEGIN{print\"Your_mother_was_a_hamster_and_your_father_smelt_of_elderberries\"}/"

我看到你已经有了正确的语法来使用:)

关于linux - 这些 awk 命令容易受到代码注入(inject)的攻击吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56591462/

相关文章:

linux - sed 搜索范围并打印第一组

linux - 我如何停止光标在 linux 控制台中闪烁(例如 cygwin)?

c - 来自 fork 进程的longjmp

bash - 使用 heredoc 重定向命令输出

android - 通过终端找不到用于 OUYA 驱动程序设置的 bash adb 命令?

regex - 如何构造正则表达式来比较 shell 脚本中不区分大小写的字符串?

c - Linux写整数

linux - Julia :找不到系统镜像文件 "sys.ji"

bash - 如果特定列之后超过 60% 或更多的列包含相同的特定值,我该如何删除整行?

regex - 使用来自另一个 EPS 的值更新一个 EPS 中的边界框的脚本