记一次Linux靶机的Capture The Flag|DC-1

记一次Linux靶机的Capture The Flag|DC-1


前言:前段时间一直备考ing,没有继续更新blog,寒假期间希望好好学习,及时更新,愿和大家一起学习,一起进步!

0X01 Main Point

  • find命令查找有特殊权限suid的命令进行提权
  • /etc/passwd和/tec/shadow的获取(如果二者都能得到,可通过john爆破)
  • searchsploit和msf框架的了解掌握
  • msf里的shell部分无回显,可利用python.pty模块进行shell

0X02 正文

这里是使用的vulnhub的DC1的Linux靶机,VM加载镜像后发现让你输入登录账户和密码,应该就是一个服务器。所以在攻击机上先得到靶机的目标IP。
记一次Linux靶机的Capture The Flag|DC-1_第1张图片
得到目标IP是172.20.10.9后进行嗅探端口,nmap启动。
记一次Linux靶机的Capture The Flag|DC-1_第2张图片
这里-p-参数是指定所有的端口都进行扫描,-sV参数是版本检测是用来扫描目标主机和端口上运行的软件的版本.它不同于其它的扫描技术,它不是用来扫描目标主机上开放的端口,不过它需要从开放的端口获取信息来判断软件的版本.使用版本检测扫描之前需要先用TCP SYN扫描开放了哪些端口. 得到开放了22、80/111/32850这些端口。我们知道80端口是针对HTTP,而22端口则是针对SSH。
记一次Linux靶机的Capture The Flag|DC-1_第3张图片
我们发现 Drupal是使用PHP语言编写的开源内容管理框架 ,启动 msf
记一次Linux靶机的Capture The Flag|DC-1_第4张图片
这里我们使用rank:excellent的2018年的漏洞,发现可以反弹shell!
注意:选择后应该show options查看哪些是Required的,必须要全部填上最后exploit执行才有效!
记一次Linux靶机的Capture The Flag|DC-1_第5张图片
发现只需要设置rhost,set rhost 172.20.10.9设置后,执行可以反弹shell.
记一次Linux靶机的Capture The Flag|DC-1_第6张图片
这样我们就成功进入,看目录发现有flag1
在这里插入图片描述
提示说“每个网站都有日志,你的,你的也不例外”,这样我们就去找日志,在这个目录下有一个web.config看了一下发现没啥用,继续找!找到了一个CHANGELOG.txt但是无权打开,估计是要提权。找到了另外一个类似日志的PHP
记一次Linux靶机的Capture The Flag|DC-1_第7张图片
settings.php我们查看后发现:
记一次Linux靶机的Capture The Flag|DC-1_第8张图片
告诉了 flag2 和数据库用户名和密码,这样我们自然地想法是登录数据库查看userpassword,从而进行登录刚开始的80端口的页面,看里面的信息。
记一次Linux靶机的Capture The Flag|DC-1_第9张图片
但是发现在msf的shell下mysql连接没有回显,那这样我们并不能登录数据库,这里就用到了python的pty模块。
记一次Linux靶机的Capture The Flag|DC-1_第10张图片
查看Python版本后也是2.7,13,所以我们使用这个模块来获取交互式shell。
记一次Linux靶机的Capture The Flag|DC-1_第11张图片
www-data用户,在debian/ubuntu上,www-data是默认运行web服务的用户/组,一般在通过apt安装web服务程序时生成。
现在来登录Mysql,结合之前有的数据库名称和密码,进行连接。
记一次Linux靶机的Capture The Flag|DC-1_第12张图片
之后的操作就常规的看数据库,查表,查字段,发现有如下用户和密码,不过密码显然是经过加密的,个人感觉爆破得很费经,但事实上看了其他大佬的文章后发现用John the Ripper也比较容易得到,但是我的kali 2019并没有成功下载好,所以这一段我只能在物理机实践。
记一次Linux靶机的Capture The Flag|DC-1_第13张图片
看到有两个User,adminFred,这里继续启动 searchsploit,查看Drupal有哪些发现过的漏洞可以利用,但是我们先得知道目前的版本,以便于直接有针对性地选择出脚本。遍历各种目录后发现在bootstrap.inc这个文件下有说明。
记一次Linux靶机的Capture The Flag|DC-1_第14张图片
7.2.4的Drupal版本,现在查看searchsploitDrupal脚本。
记一次Linux靶机的Capture The Flag|DC-1_第15张图片
由于截图原因,无法看到每个脚本的用途(实际上有显示),这里我们选择的是34992.py这个脚本,cat查看这个脚本需要的参数,直接构造使用即可。
在这里插入图片描述
这个脚本的功能是新建一个权限用户,现在重新再mysql中查看用户发现:
记一次Linux靶机的Capture The Flag|DC-1_第16张图片

用户名:crispr 密码:123456,这样我们登录进去后得到flag3。
记一次Linux靶机的Capture The Flag|DC-1_第17张图片

提权

  • 以root账户登录(尝试使用爆破未果)
  • 普通用户登录,查找具有suid权限位的命令去get shell
    suid权限位:说明可以以root权限执行命令

这里提示的关键词有findperms-exec,使用的是find具有suid权限的文件,因为具有suid权限的文件,执行过程中会使用root权限,这样我们就可以利用root权限查看 /etc/passwd和/etc/shadow,主要是知道**/etc/shadow**,里面存放的是各种用户的hash密码,如果我们既知道 /etc/passwd 也知道 /etc/shadow ,就可以通过爆破来得到真实密码,从而SSH连接root账户得到flag。

flag4@DC-1:~$ touch getshell
flag4@DC-1:~$ find / -type f -name getshell -exec "whoami" \;
root
flag4@DC-1:~$ find / -type f -name getflag -exec "/bin/sh" \;
cd /root
ls
thefinalflag.txt
cat thefinalflag.txt

这里首先传建一个文件名为getshell的新的文件,然后执行find查找,由于find具有suid权限位,所以可以执行exec查看后是root权限,
/bin/sh

在shell脚本的开头往往有一句话来定义使用哪种sh解释器来解释脚本。
目前常见的shell脚本中主要有以下两种方式:
(1) #!/bin/sh
(2) #!/bin/bash

注意:每个脚本开头都使用"#!""#!"实际上是一个2字节魔法数字,这是指定一个文件
类型的特殊标记,在这种情况下,指的就是一个可执行的脚本。在#!之后,接一个路径名,
这个路径名指定了一个解释脚本命令的程序,这个程序可以是shell,程序语言或者任意
一个通用程序。

sh是bash的一种特殊的模式,也就是 /bin/sh 相当于 /bin/bash --posix。说白了
sh就是开启了POSIX标准的bash 。
在一般的linux系统当中(如redhat),使用sh调用执行脚本相当于打开了
bash的POSIX标准模式

得到最终的flag!

你可能感兴趣的:(CTF实践)