0x00 前言php
很久没有更新了,已经长草无疑。html
以前团队要搞个测验的系统,用来安全培训考核,团队内又没啥人搞开发的,本身又想学一下vue,就用vue+ci 撸了一个。vue
搞了一个星期基本搞完(开发能力真的菜),后面又测试修了几天bug,这才有点时间研究一下其余的,原本今天还有一篇文章的,可是有一些其余缘由暂时就不发了。mysql
有一个计划是想把先知通用列表的软件都研究一下,慢慢搞起来。linux
0x01 wdcp安装和简介web
为何选择wdcp呢?主要是由于以前在先知看到了一个宝塔面板的漏洞,随想找一些主机面板的软件研究一下,而先知通用列表里面就有一些。sql
那么先从wdcp开始,分析一下wdcp的源码。shell
从官网介绍开始(https://www.wdlinux.cn/wdcp/install.html),咱们知道wdcp的安装有两种方式,一种是源码安装的方式,另外一种RPM包安装,这里为了研究咱们选择用源码安装。数据库
下载lanmp_laster.tar.gz,解压发现都是一些shell文件。一是安装的shell,二是配置的conf文件。ubuntu
为了方便就开了一个腾讯云的ubuntu实验室,来测试。(主要是没钱)
安装
wget http://dl.wdlinux.cn/lanmp_laster.tar.gz tar zxvf lanmp_laster.tar.gz sh lanmp.sh
等了将近三十分钟安装好了。
目录放不了了,腾讯云到时间了,没截图。
大概凭借着记忆列一下关键的信息
1,wdcp的存放目录都在/www/wdlinux/下
2,/www/wdlinux/web/default 目录下放着的是80端口的页面 包含了安装完成的主页面、探针、phpinfo等,与及一个phpmyadmin,这个phpmyadmin的目录名是有pma_xxx组成.
3,/www/wdlinux/wdcp/目录下放着8080端口,也就是后台页面的一些东西,好比/www/wdlinux/wdcp/data/ 目录下放着一个名为wdlinuxdb.db的sqlite3数据库,有几张表,用于记录登陆日志,后台用户,ftp,网站,任务等信息。
4,其中/www/wdlinux/wdcp/bin/ 目录下放着一个wdcp的执行文件,全部的后端逻辑都在里面。
目录大概就这样,登进后台看了一下:
1,web和mysql默认帐号密码为 admin/wdlinux.cn 和root /wdlinux.cn,基础信息。可是密码不是在第一次登陆进去以后就强制让用户修改的,只是提醒而已。
2,cookie是httponly的
3,用超级管理员admin修改时,原密码能够不用输入,那么若是咱们有后台xss的话就能够修改密码了。
4,其余的一些建站,ftp等没有看。
0x02 攻击思路
根据现有的东西进行扩展联想:
1,首先是是否存在有绕事后台验证的方法?
思路是:sqlite3会记录登陆日志,登陆日志会在web页面中展现,而后admin修改密码是不用输入原密码的。
咱们是否能够在登陆的时候放一个xss?
web页面展现的字段有:登陆的用户名,登陆密码前两位,登陆的ip。
1,用户名和密码的xss payload测试,发现<>\'等都没法在用户名字段中插入,程序有过滤。
2,密码字段虽然能够插入脏字符存储在数据库中,但只有两位可控,且后台展现页面已经作了过滤。
3,登陆ip尝试用X-Forwarded-For ,Client-IP等请求头来绕过皆无果。
因为不知道后端是怎么请求的,尝试用fuzz一下用户名的可容纳长度,尝试截断或者溢出,但测了将近10w多个字符依旧没有问题,暂时放弃了。
2,前台可访问的东西
转眼去看其余的东西,发如今wdcp v3的时候新增了一个phpmyadmin在80端口中
可是有8位字符是随机的。
基于此有这么一个攻击思路:pma目录名8位字符,若是可以爆破(存在问题),基于人性弱点考虑,或许不少用户只是把后台管理的用户名和密码改了,
而mysql的默认密码没改,或者说由于mysql在内部,使用弱密码的可能性也是很大的,那么咱们利用phpmyadmin来getshell也是彻底有可能的。
首先寻找phpmyadmin目录名的生成方法,在源码压缩包里面,搜索pma,找到了生成方式:
其中$RANDOM 变量为0--32767 ,随机以后进行md5sum,以后截取前8位;
注意这里的命令:
echo $RANDOM | md5sum
是会在随机以后加入一个换行符的,因此实际上生成的应该是这样:
随机生成的数字为:1234,那么在后面加一个换行符"\n",以后再进行md5。
在用php生成字典的时候踩出来的坑。
因此其实爆破最多也就32768个而已,用不了多久。放一个爆破成功的截图:
0x03 小结
就暂时研究到这里,以后会进行深刻研究,好比后台其余的一些功能,以绕事后台验证为优先,也会尝试对wdcp的执行文件反编译,看能不能提取出源码。(binwalk了一下,没有深刻)