渗透测试过程中,经常会遇到服务器的系统为Linux相关的情况,菜刀下查看权限的时候,有时候运气好还是root权限。很久之前对于root权限的linux服务器,在渗透过程中我还真不知道如何下手。后来,我知道了,如果是root权限,我们可以看一看是否开了22端口,如果开了,很好,可以通过SSH公钥认证方式登录服务器,达到对服务器的完全访问和控制操作。这篇文章也不是什么新文,网上也有,在这里我只是留个笔记,后续可能用得到。不多说,开始吧。
公钥认证:是使用一对加密字符串,一个称为公钥(public key), 任何人都可以看到其内容,用于加密;另一个称为密钥(private key),只有拥有者才能看到,用于解密。 通过公钥加密过的密文使用密钥可以轻松解密,但根据公钥来猜测密钥却十分困难。在使用公钥认证之前,先检查一下服务器的ssh配置文件/etc/ssh/sshd_config
RSAAuthentication yes # 启用 RSA 认证,默认为yesPubkeyAuthentication yes # 启用公钥认证,默认为yes
以上配置只是基础配置,看了其他文章中的配置,有几个关键点如下:
RSAAuthentication yesPubkeyAuthentication yesServerKeyBits 1024PasswordAuthentication yesPermitRootLogin yesAuthorizedKeysFile .ssh/authorized_keys
以上的配置可以保证既能通过证书免密码登录,又不影响通过用户名口令登录。如果配置都OK了,那就进行下一步吧。
本地生成公钥和私钥:使用ssh-keygen命令来生成公私钥。我在虚拟机中的Kali中实现,如下图所示:
执行上述命令后,就会在/root/.ssh/目录下生成公私钥。
服务器设置:
第一步:如果目标站点/root/.ssh/下已经存在authorized_keys文件,则将公钥文件追加到authorized_keys文件上。如果不存在authorized_keys,则上传公钥文件id_rsa.pub并重命名为authorized_keys。
id_rsa.pub >> ./authorized_keys
第二步:修改authorized_keys权限为600,修改.ssh目录权限为700:
chmod 700 /root/.sshchmod 600 /root/.ssh/authorized_keys
设置完成后,执行命令service sshd restart(有些可能是service ssh restart)来重启ssh。
这样就可以免密码登录了。