发现漏洞却不会用怎么办?三个步骤轻松解决!

幸运草 2020年5月25日22:31:00安全防范评论阅读模式
自主渗透测试工作已经开展到第二期,相信大家已经在实践中学到了许多关于漏洞挖掘的技术。本文演示了对一台靶机从挖掘漏洞到获取权限的全过程。着眼于挖到漏洞之后,如何进一步获取Shell甚至最高权限的思路,希望可以帮到大家。

FIRST

Vulnhub简介

Vulnhub是一个收集渗透测试靶机的网站。作为一个开放的安全靶场,该网站包含了从入门到困难等三个难度的靶机。安全学习者可以搜索并下载存在漏洞的网站或者主机的虚拟机镜像,通过VMware Workstation或者Oracle VirtualBox等软件自行搭建环境,内容以CTF夺旗和Boot to root两种为主。长期练习并积累其中的渗透测试知识可以让个人有很大的提升,很多OSCP和OSCE的备考者也通过该网站练习渗透技术。

发现漏洞却不会用怎么办?三个步骤轻松解决!
图1 vulnhub网站界面

本文围绕Raven2靶机展开渗透测试,介绍了从信息收集到漏洞挖掘再到最后提权的全过程,成功的标志是找到靶机中的隐藏的四个flag。

 
SECOND

一起来找旗

首先需要配置网络。通过VMware的NAT机制,可以将Kali和Raven2靶机放入同一个C段网络地址,方便开展接下来的攻击。

01 信息收集

靶机渗透中有两个常用命令:

(1) netdiscover命令

netdiscover命令常用来在网络上扫描IP地址,进行主机发现,是一个主动/被动的ARP侦查工具。该命令在不使用DHCP的无线网络上非常有用。

例如:netdiscover –r 192.168.48.0/24

该命令可以通过ARP请求检索并罗列在192.168.48.0这个C段上存活的主机。

发现漏洞却不会用怎么办?三个步骤轻松解决!
发现漏洞却不会用怎么办?三个步骤轻松解决!
图2.1 使用netdiscover扫描存活主机 & 图2.2 扫描结果

(2) nmap命令

nmap命令常用来进行端口探测和漏洞扫描

例如:nmap –sV 10.10.10.2

该命令可以对目标靶机进行服务发现和服务版本探测。

例如:nmap –Pn 10.10.10.2

该命令可以在不进行ping访问的前提下,直接进行扫描。因为nmap在对目标进行扫描时,会默认先对该主机进行一次ping访问,如果有回应才会执行下一步。然而部分主机或者防火墙会屏蔽ping请求,导致nmap无法正常完成扫描,该命令可以绕过这个机制。

经过nmap扫描,我们发现某存活主机存在如下图所示的开放端口和服务。

发现漏洞却不会用怎么办?三个步骤轻松解决!
图3 nmap扫描结果

02 GetShell

WebShell是以asp、php、jsp或cgi等网页形式存在的一种命令执行环境,也可称为一种网页后门。攻击者利用WebShell的最终目的就是控制网站服务器

Web枚举是渗透测试中最常用的技术之一。通过爆破Web目录,可以发现网站管理员未能隐藏的敏感信息,例如管理后台、数据库文件等。常用工具包括御剑、dirb、dirsearch等。此处选用dirb工具。

发现漏洞却不会用怎么办?三个步骤轻松解决!
图4 目录爆破结果

进入/vendor/目录,可以发现多个文件。打开Path文件,发现第一个flag!

发现漏洞却不会用怎么办?三个步骤轻松解决!
发现漏洞却不会用怎么办?三个步骤轻松解决!
图5.1暴露出来的目录结构 & 图5.2 第一个flag

紧接着,观察其目录结构可以发现,其中包含了一个PHPMAilerAutoload.php文件。在扫描结果中也不难发现,这个网站使用的CMS是WordPress,判断出该网站使用了PHPmailer组件。访问VERSION文件可以发现该版本是一个存在RCE漏洞的版本,因此想到去exploitdb上下载相应payload [1]。注意需要针对环境修改payload的格式。

发现漏洞却不会用怎么办?三个步骤轻松解决!
图6 修改后的payload

该payload主要修改了三部分:目标地址、WebShell文件名和WebShell存放地址。目标地址即靶机地址,WebShell存放目录改成和contact.php同一目录(也就是vendor的父目录)。

使用netcat工具来接受反弹Shell。netcat是一个在渗透测试和网络工程中常用的网络连接工具,在Kali里可简写为nc。常用来传输文件,接受反弹Shell等。

使用命令 nc -lvp 4444 在Kali里建立一个监听端口,然后访问刚上传的WebShell

(http://192.168.48.131/val.php),即可成功建立一个反弹Shell。

发现漏洞却不会用怎么办?三个步骤轻松解决!
图7 成功反弹shell

注意,此时我们获得的只是一个console(命令行),并非tty(终端),很多功能不能使用。例如su命令无法使用、部分字符显示存在问题、部分命令执行存在问题等。因此我们需要将命令行提升为一个伪终端(Pseudo Terminal),具体指令如下图所示。

发现漏洞却不会用怎么办?三个步骤轻松解决!
图8 成功将命令行提升为伪终端

先通过find命令,在网站的工作文件夹/var/www下进行检索,尝试能否找到其它flag。

发现漏洞却不会用怎么办?三个步骤轻松解决!
图9 find命令找flag

果然,发现了flag2和flag3!但是最后一个flag还是没有现身,看来必须得提权之后再找flag4了。

 
03 提权

提权就是通过各种办法和漏洞,提高自己在服务器中的权限,以便控制全局。

常用的提权方法有如下几种[2]

  • 系统漏洞提权
  • 数据库提权
  • 系统配置错误提权
  • 权限继承类提权
  • 第三方软件/服务提权
  • WebServer漏洞提权
通过查看系统中的进程,可以方便地看出哪些进程在用高权限运行。

发现漏洞却不会用怎么办?三个步骤轻松解决!
图10 正在用root权限运行的MySQL

靶机的MySQL是一个用高权限运行的进程,可以考虑采用User-Defined Function实现在MySQL进程中注入自定义代码,进一步完成提权。

首先试着用root账户登录MySQL数据库,发现需要进行身份认证。常见破解思路是去网站源代码或者配置文件里找密码。

本网站采用WordPress,则该CMS的密码存放在wp-config.php。通过查看该文件的内容,可以获取密码。

发现漏洞却不会用怎么办?三个步骤轻松解决!
图11 文件中泄露的密码和用户名

得到密码后,就可以使用exploitdb上的UDF提权工具,根据exp中的提示一步步完成提权[3]。

发现漏洞却不会用怎么办?三个步骤轻松解决!
图12 在kali上完成提权程序的编译

有人可能会问,如何在只有Shell没有上传接口的情况下完成文件上传?其实Kali自带一个Apache服务器,可以把要上传的文件放到Kali的Apache网站目录下,在目标机器的Shell上通过wget或者curl之类的命令完成下载。或者使用netcat工具来完成文件传输。

UDF提权的过程如下。

首先,需要在MySQL中创建UDF函数。

发现漏洞却不会用怎么办?三个步骤轻松解决!
图13 创建UDF函数

接着通过创建的UDF函数对find命令的权限进行修改,然后就是通过find命令来执行新的Shell命令。

发现漏洞却不会用怎么办?三个步骤轻松解决!
图14 完成提权

现在,我们获得了root权限,并且在/root目录下找到了最后一个flag!

发现漏洞却不会用怎么办?三个步骤轻松解决!
图15 找到了最后一个flag

THIRD

小结

本文通过完整地演示一台靶机的渗透过程,展示了一次完整的渗透测试流程。在这个流程中,我们学习发现漏洞->利用漏洞->GetShell->提权的完整流程。希望大家看了这篇文章,可以在后续的渗透测试中有更多收获。

特别声明:以上文章内容仅代表作者本人观点,不代表变化吧观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与变化吧联系。

流量劫持这事,真相究竟是什么?

“流量劫持”到底是什么?是谁在劫持流量?这个互联网及通信行业的冷门话题突然被炒热的背后,真相究竟如何? 什么是“流量劫持”? 提起流量劫持,其实几乎每个网民都遇到过。例如,明明点击的A网站,打开的内容却是B网站;有时打开一个网页就能看到各种让人眼花缭乱的弹窗及…

  • 赞助本站
  • 微信扫一扫
  • weinxin
  • 加入Q群
  • QQ扫一扫
  • weinxin
幸运草

发表评论