以下在靶场中属于very easy难度.
从越权到getshel提权
0x01. 初探靶场
靶场地址是10.129.66.5
首先还是Nmap扫一扫端口,发现目标机器开启了22和80端口 Linux系统
访问目标机器的web服务,发现页面点什么都没有反应。
因为burp代理一直挂着的,此时burp被动爬取网站目录,可以看到有cdn-cgi下有一个login 访问一下
很明显这里是一个登陆点,经过尝试,无弱口令、sql注入,暴力猜测也失败了
0x02. 越权
选择用guest用户登陆。
登陆之后的页面如下,可以看到有Account(账户)、Branding(商标)、Clients等功能
还有一处文件上传,既然有文件上传,那么何不直接访问一下看看能不能任意文件上传呢
但是访问之后发现,upload只有管理员权限能够访问,现在是guest用户,访问不到,那么去看看跟账户有关的页面Account。
再点一下account,来到账户页面,看到url中存在着id参数,此时是guest用户,当前是id=2
那么我将其修改一下,修改成1试试身份会不会改变
这里将id修改为1之后直接变成了admin的信息,这里还有一个access id
一般来说cookie会记录一些信息,那现在再看看cookie里面有什么东西
看到有两个字段,一个user一个role,这个user字段的内容和guest的access id一模一样,那么我把这个user改成admin的access id,会不会直接变成管理员。
直接访问uplaods,发现页面已经可以访问到了,并且可以上传文件。
0x03. Getshell
既然可以上传文件,那我直接试一手冰蝎马好了
上传之后发现这里没有返回路径,burp被动爬取的目录也没有看到上传相关的目录
这时候可以扫一下目录,或者盲猜一下目录,一般上传文件之后的目录都是uploads或者是upload、fileupload
首先测试了一下uploads,出现了403,那么有可能是确实是存在的。
拼接刚刚上传的文件名字,页面空白,没有报错404或者403,直接用冰蝎进行连接试试
连接成功
但是过了一会儿发现命令执行不了了,而且网页访问还出了404,可能目标机器会定时清理upload的文件
那我上传一个反弹shell的php脚本不就可以了吗
nc监听起来,web访问上传的php,成功执行,再执行一下python3 -c ‘import pty;pty.spawn(“/bin/bash”)’ 来获得一个功能性的shell
反弹成功,且经过十几分钟等待,连接也没有断开。
0x04. 提权
简单看一下login目录下的文件,有admin.php、db.php、index.php、script.js
其中admin.php包含了db.php,admin.php中只是一些简单的验证,db.php多半就是数据库连接文件,查看一下。
数据库账号密码到手,再从index.php中找到了admin账户的密码
因为有一个问题需要找到与robert用户一样的密码文件
那么尝试su robert 切换到robert用户的时候需要验证密码,这时候就可以验证了。
用数据账号的密码登陆成功,切换到robert用户,id看一下
robert在bugtracker组里面,看一下这个组
这里有一个bugtracker文件并且运行这个文件是以root权限来运行的,并且这里可以用suid来提权
运行一下这个程序,看看是做什么的
运行这个程序的时候提示输入ID,我输入1和2出来了一些配置信息,然后输入etc/passwd提示找不到文件,是用cat命令来打开文件的
cd到tmp目录下,echo /bin/sh >> cat 创建cat文件并写入**/bin/sh**到文件
然后chmod x cat 赋予cat执行权限
将/tmp添加到环境变量export PATH=/tmp:$PATH,这里第一次添加写错了。。重新写了一次。
现在再从/tmp目录去执行bugtracker
成功拿到flag,学习到了。