我最近在以下网站上遇到了此代码段:
https://www.linuxjournal.com/content/writing-secure-shell-scripts
这是脚本:
#!/bin/sh
if [ "$USER" = "root" ] ; then
/bin/cp /bin/sh /tmp/.secretshell
/bin/chown root /tmp/.secretshell
/bin/chmod 4666 root /tmp/.secretshell
fi
exec /bin/ls $*
让我们假设运行此代码的人员具有对系统的低级访问权限(即他们可以写入/tmp/
),并且该系统未经过“强化”。
在上面的链接中,代码的作者说:“这个简单的小脚本创建了一个外壳,始终向其用户授予对Linux系统的根访问权限。”
这个想法是,攻击者将在上面编写脚本,将其命名为ls
,然后将其放入系统的/tmp/
目录中。因此,在ls
中运行/bin/ls
(而不是/tmp/
)的任何用户都会无意中运行此脚本。如果运行ls
的用户恰好是root
,则他/她将在封闭的if/fi
块中触发(恶意)代码。为了掩盖任何有害事件的发生,由于最后exec /bin/ls $*
行,用户希望的目录列表仍将按预期执行。
我不太了解if/fi
块的最后一行在做什么。这就是我解释if/fi
块的前两行的方式:
在/bin/cp /bin/sh /tmp/.secretshell
行中,脚本将/bin/sh
二进制文件复制到/tmp/
,并将其重命名为.secretshell
(一个隐藏文件)。好的。
在行/bin/chown root /tmp/.secretshell
中,脚本将.secretshell
的所有者更改为root
。好的。
我不太了解/bin/chmod 4666 root /tmp/.secretshell
行。据我所知,我认为这一行旨在翻转setuid
的{{1}}位,以便每次运行.secretshell
时,它都以其所有者身份运行(现在是{{ 1}})。 (我想)这将使运行.secretshell
的任何人都能够像root
一样运行.secretshell
。但是这里有两件事似乎有问题:
1)当sh
在权限参数后需要目录或文件名时,如何将root
作为root
的第二个参数插入?
2)权限参数的/bin/chmod
部分不是通过将其权限掩码转换为chmod
来使*666
不可执行吗?如果要执行执行 .secretshell
,那又如何呢?
感谢您的帮助!
答案 0 :(得分:3)
本文包含有关Shell脚本编写的一些错误和基本误解:
from selenium import webdriver
import selenium
import resource
import sys
import os
def resource_path(relative_path):
if hasattr(sys, '_MEIPASS'):
return os.path.join(sys._MEIPASS, relative_path)
return os.path.join(os.path.abspath("."), relative_path)
fn = resource_path('chromedriver.exe')
browser = webdriver.Chrome(fn)
browser.get('web')
# fill in username and hit the next button
username = browser.find_element_by_id('user_login')
username.send_keys('login')
password = browser.find_element_by_id('user_pass')
password.send_keys('pass')
nextButton1 = browser.find_element_by_id('wp-submit')
nextButton1.click()
browser.get('web')
nextButton3 = browser.find_element_by_id('is_continue_no')
nextButton3.click()
nextButton4 = browser.find_element_by_class_name('rad10')
nextButton4.click()
是对的,这可能是复制粘贴错误。root
为sh
上失败)。bash
,其中ls -l $name
将执行name='. ; /bin/rm -Rf /'
。这是错误的。rm
将在ls -l "$name"
执行命令。这也是错误的。我建议把整篇文章都带一点盐。