小编And*_*ger的帖子

Ubuntu 9.04漏洞演示

对于 IT 安全课程,我想向学生演示权限提升。为此,我查看exploit/linux/local了 Metasploit 框架中的列表,发现(其中包括)exploit/linux/local/sock_sendpage2009 年 8 月。

从 2009 年 4 月起,我使用 32 位 Ubuntu Server 9.04 ( http://old-releases.ubuntu.com/releases/9.04/ubuntu-9.04-server-amd64.iso )设置了一个 VM 。uname -r给了我2.6.28-11-generic. 根据漏洞利用说明

相信自 2001 年 5 月以来的所有 Linux 2.4/2.6 版本都受到影响:2.4.4 到并包括 2.4.37.4;2.6.0 至并包括 2.6.30.4

所以看起来我设置的Ubuntu服务器应该适合演示。但是,我无法让它工作。

我在服务器上添加了一个(普通)用户并且 SSH 访问有效。在 Metasploit 框架中,我可以使用auxiliary/scanner/ssh/ssh_login. 但是,当我运行漏洞利用时,我得到

[*] Writing exploit executable to /tmp/mlcpzP6t (4069 bytes)

[*] Exploit completed, but no session was created.
Run Code Online (Sandbox Code Playgroud)

我没有得到任何进一步的信息,即使设置DEBUG_EXPLOIT为 true。/tmp是写的,同样来自 Metasploit SSH 会话:

$ …
Run Code Online (Sandbox Code Playgroud)

security ubuntu privileges metasploit

15
推荐指数
1
解决办法
7148
查看次数

转义关联数组中的字符串 (bash)

我正在编写一个脚本,该脚本执行多个带参数的程序。为了尽可能地简化它,请考虑以下示例:

programs=( "ls" "echo" )
declare -A parameters
parameters["ls"]="-l /tmp/foo"
parameters["echo"]="Hello"

for program in "${programs[@]}"
do
  $program ${parameters[$program]}
done
Run Code Online (Sandbox Code Playgroud)

只要参数中没有空格,这就可以正常工作。当然,转义字符串之前已经讨论过,所以我尝试了在 StackExchange 和其他一些页面上可以找到的所有不同方法。但是,我找不到适用于我的使用关联数组的解决方案。例如,当我想获得“/tmp/foo bar”的列表时,这既不是

parameters["ls"]="-l /tmp/foo bar"
Run Code Online (Sandbox Code Playgroud)

也不是这个

parameters["ls"]="-l \"/tmp/foo bar\""
Run Code Online (Sandbox Code Playgroud)

也不是这个

parameters["ls"]="-l /tmp/foo\ bar"
Run Code Online (Sandbox Code Playgroud)

按预期工作。同样,在循环中的程序调用周围加上引号

  $program "${parameters[$program]}"
Run Code Online (Sandbox Code Playgroud)

也不起作用,因为两个参数(-l 和路径)被解释为一个参数。

我在这篇文章中找到了最接近解决方案的方法,它建议为程序调用使用多个单独的变量,每个参数一个变量。但是,这在我的用例中是不可能的,因为每个程序需要可变数量的参数 - 因此我使用了关联数组。

有没有其他方法可以转义路径名?

最好的问候安德烈亚斯

bash string escape-characters

6
推荐指数
1
解决办法
2586
查看次数