一.下载地址
https://www.vulnhub.com/entry/pwnlab-init,158/任务目标
二.找到主机地址
arp-scan -l扫描一下
nmap扫描一下端口
访问一下web服务
先看看服务先,点击上传需要我们先登录,但是我们没有账号和密码
所以我们先扫描一下目录,使用nikto扫描一下
发现一个config.php我们去访问一下看看,直接访问发现是空白的,去掉后缀是404
这里我们还是先回到主页,点击功能发现页面后带的参数就是每个页面的名称,所以我们思考一下是否存在文件包含之类的,
我们测试一下看看先
包含它自己页面直接就挂了,可以确定这里的参数是可控的
php常见的文件包含利用大多数靠协议,比如php协议file协议这两个用的比较多,我们先使用file协议看看
测试发现没动静,我们试试php协议,php://filter/read=convert.base64-encode/resource=config
发现回显了,我们拿去解密
拿到了数据库的账号和密码,之前扫描发现数据库是开着的,我们连接数据库进去看看
看下users数据库
只有一张users表
发现有三个账号,拿去解密一下先
账号:kent
密码:JWzXuBJJNy
账号:mike
密码:SIfdsTEn6I
账号:kane
密码:iSv5Ym2GRo
尝试登录一下看看先,使用kent账号登录成功
尝试上传一下文件看看,我们用kali自带的webshell,这里我们用之前看到的一个小技巧,先生成一个webshell的php马,因为只能上传图片所以我们先把它修改成图片
在前面加个gif,然后拷贝成webshell.php.gif文件进行上传,我们不知道上传点是不是会检测文件内容,先试试能不能正常上传
可以看到已经上传上去了,先看看图片的路径
可以看到图片的路径是这样的,upload/b1a99ebaad4dd28f57517de36e770484.gif我们利用之前发现的文件包含尝试去包含一下这个文件
这里我们直接引入图片发现是没有用的,我们先把index.php整下来看看代码研究一下
解密之后发现这里会包含cookie参数,抓包测试一下看看
curl -v --cookie "lang=../upload/b1a99ebaad4dd28f57517de36e770484.gif" 目标地址
这样我们就拿到了一个低权限的shell
看看有没有suid提权
看到su有suid权限,我们尝试一下切换之前我们拿到的用户和密码
kent账号里面没啥东西不是我们想要的
再试一下其他的账户
mike登录失败
尝试一下最后一个账户
最后一个账户是可以登录的,我们看看有什么东西
发现下面有一个文件,我们使用file命令查看一下
可以看到是一个elf可执行的文件
运行一下看看
这个文件权限是mike账户的
我们发现运行会出现一个cat命令执行这个文件
这里涉及到linux的环境变量劫持提权,利用前提是elf文件会调用某个命令操作某文件
原理很简单,创建一个简单的伪造命令文件,赋值权限之后,我们将PATH全局路径改成当前目录
这样系统在执行这个文件的时候就会优先从当前目录选择命令来执行这个文件
最后一定要把path里面的/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games还原回去
这样才能正常执行命令
我们进入mike目录下发现一个关于root权限的文件
执行一下这个文件,发现输入什么都没用
我们利用linux的特性添加;/bin/sh试试
可以看到账户的权限已经变了,尝试进入root目录
已经拿到flag了,到此渗透结束