Vulnhub-靶机-PWNLAB: INIT
本篇文章仅用于技术交流学习和研究的目的,严禁使用文章中的技术用于非法目的和破坏,否则造成一切后果与发表本文章的作者无关
靶机下载之后使用仅主机模式加载到本地VMware Workstation工作站,需要发现目标靶机的IP地址,可以使用nmap,netdiscover,或者arp之类的工具 arp-scan 例如:sudo arp-scan -I eth1 -l 当然也是可以使用Windows环境下mac地址扫描工具都是可以的,那么本次演示就是arp-scan工具发现
地址:https://www.vulnhub.com/entry/pwnlab-init,158/
sudo nmap -sC -sV -n -p- 192.168.202.10 -oN pwnlabinit.nmap
nmap扫描结果
开放了4个端口,有个web应用,按照套路来使用gobuster进行目标爆破扫描下看看
发现了一个配置文件URI地址config.php ,访问看看
显示空白,擦啊,猜测目标靶机做了一定的限制,那么使用扫描器nikto扫描看看
同样也发现了URI地址config.php但是还有其他的信息,是关于配置文件config.php 里面包含数据库的id和密码等信息,这是个提示,我们先正常访问目标点击下每个功能点看看
看到一个登陆界面,但是看URL地址,第一反应是不是又有LFI ,但是试了下正常文件包含显示空白,猜测目标靶机代码做了一定的过滤,这里需要通过为协议进行读取操作,相关资料参考:https://github.com/SewellDinG/LFIboomCTF 最终我以下面的形式读取文件
将显示的信息进行base64解码
得到了数据库的账号和密码,前面nmap扫描的记过显示开放了3306端口,直连看看
直连进去了
切到Users表看到用户名和密码,密码看形式猜测就是base64编码, 拿第一个解码
登录目标靶机的web应用,发现上传功能
通过修改kali自带的webshell反弹shell代码,使用vim编辑器在此代码的开头添加GIF字样,并将扩展名后缀改成gif的格式,以达到绕过的目的
最终上传成功,查看上传的图片信息得到如下
到了此时就要想办法进行文件包含使其反弹shell,后台开头的伪协议文件包含的情景,我们刚开始使用gobuster爆破的目录中含有index.php,尝试包含此文件读取代码看看
代码如下:
<?php //Multilingual. Not implemented yet. //setcookie("lang","en.lang.php"); if (isset($_COOKIE['lang'])) { include("lang/".$_COOKIE['lang']); } // Not implemented yet. ?> <html> <head> <title>PwnLab Intranet Image Hosting</title> </head> <body> <center> <img src="images/pwnlab.png"><br /> [ <a href="/">Home</a> ] [ <a href="?page=login">Login</a> ] [ <a href="?page=upload">Upload</a> ] <hr/><br/> <?php if (isset($_GET['page'])) { include($_GET['page'].".php"); } else { echo "Use this server to upload and share image files inside the intranet"; } ?> </center> </body> </html>
根据上述代码显示,可以通过包含cookie的内容来包含我们上传的文件,那么这里使用curl命令带入cookie参数比较方便
执行上述之前先本地kali监听8833端口,最终反弹shell成功,并升级成tty-shell
赶紧到家目录看看有哪些用户
发现有4个用户,刚好我们前面查看数据库发现了3个用户
| user | pass |
+------+------------------+
| kent | Sld6WHVCSkpOeQ== | JWzXuBJJNy
| mike | U0lmZHNURW42SQ== | SIfdsTEn6I
| kane | aVN2NVltMkdSbw== | iSv5Ym2GRo
+------+------------------+
试试其中的用户 ,su切换到kent,没什么可以利用的信息,切到mike显示密码错误,切到kane有点可利用的信息
上述是使用全局环境变量提权,这个之前的靶机有演示过,不过这里是提权到另一个用户,上述已经成功跳转到mike用户,在该用户下发现一个含有setuid的二进制文件,通过执行然后输入参数即可提权