使用D盾啥都没扫到,河马倒是扫了挺多东西,但是代码审计能力太差,不怎么看得懂
一般这里我们如果扫到那种很明显的一句话木马,直接删掉,爆出对手IP后尝试利用
代码审计能力不好,只能从网站页面入手
是一个登录界面,尝试一些弱口令登录,发现不行
找到登录界面的文件login.php,
检索一些关键字(password、email)
这里并没有发现什么有用信息
继续去找和这个文件相关的文件,容易发现它还包含了两个文件
经过查看head.php和connect.php,最终在后者发现了数据库远程连接的账号密码
$username = "cms";
$password = "eb0d39d2931c480f";
使用命令进行mysql远程连接
mysql -h47.104.192.166 -P3306 -ucms -peb0d39d2931c480f
连上之后我们查它的数据库和表
最后在cms库下的users表里发现了页面的登录邮箱和密码
admin@bugku.com
21232f297a57a5a743894a0e4a801fc3
这里密码进行了加密,解md5得到密码为 admin
在cms库下有一个flag表,我们尝试查它的具体内容,并没有flag
先去登录网站页面
进去之后很容易发现存在文件上传漏洞
其实我们第一时间是应该修改自己的登录密码,防止被别人改了,每个队伍的账号密码是一样的
但是在网页上似乎改不了
我们可以在数据库里进行修改
update cms.users set password=password('testtest') where email='admin@bugku.com';
改了之后最好刷新一下配置
flush privileges;
现在别人就无法使用默认的密码对我们的网站进行登录
但是这里还有个问题,别人依然可以远程连接我们的数据库来查看我们的users内容
也就是说,我们还需要修改数据库远程连接的密码
而那个密码并不在cms库,而是在mysql数据库下的user表
修改密码的命令
update mysql.user set password=password('新密码') where user='用户名';
一定注意:
MySQL 5.7.6版本以下,才能使用此方法来修改密码,从MySQL 5.7.6版本起,user表使用authentication_string列代替之前版本中的password列来存储密码,并且它删除了password列。
我们使用最新的列名进行修改
update mysql.user set authentication_string=password('新密码') where user='用户名';
先查一下它原本的信息(登录IP,用户名,密码)
select host,user,authentication_string from mysql.user;
修改cms的密码,假设改为111111
update mysql.user set authentication_string=password('111111') where user='cms';
修改成功后记得刷新配置
再次尝试使用默认密码连接数据库,发现已经不行了
使用新修改的密码111111,连接成功
刚才查出的host其实还存在一个问题
如果Host=%,表示所有IP都有连接权限。
虽然我们已经修改了连接的密码,但是保险起见,我们最好还是再完善一下
这里不能直接删掉这个%,因为删掉的话cms这个用户就彻底无法连接了,包括你自己
我们应该将%改为localhost
update mysql.user set host=localhost where user='cms';
修改后同理需要刷新配置
这样只要不是本地的ip(这里指的是非队伍白名单里的ip)都无法使用cms用户来远程连接我们的数据库了,当然更不能查看到我们修改后的网站登录密码。
接下来我主要再讲一下前面提到的文件上传漏洞利用,其实在awd里面我们更应该做好的是防护。
爆出对手的域名之后,使用ping命令就可以拿到对应的ip
我先上传的是普通一句话木马,成了,没有任何绕过
连上之后也很容易找到flag
之后直接传不死马
关于不死马的原理利用和处理方法可以参考我另一篇博客:
http://t.csdnimg.cn/yU0vb
同样上传成功
可以看到,尽管我删除了它,但是它依然存在,这就是不死马的魅力
不死马隐蔽性也比较好,只要对手还没处理掉这个不死马,我们就能通过这个shell拿flag
还有一个问题就是,虽然在数据库里select查不到flag,但我们通过系统命令其实可以cat到flag
但是这是一个错误的flag,不知道是完全错误的还是进行了加密的,有大佬可以告知一下原因吗?
这里cat出来的flag和蚁剑里面获取的flag内容不一样 ,很奇怪
此外,在比赛途中我们也要经常查看一下有没有其他用户登录了我们的服务器,以及有没有新产生的什么可疑文件:
如果有其他用户登录直接将它踢掉,发现被上传了木马直接删掉,如果遇到不死马就写脚本,基于条件竞争来克制,具体的awd常见防御操作请参考我另一篇博客:
http://t.csdnimg.cn/QKR2L
我是Myon,后续会继续给大家更新CTF、AWD,网络安全、渗透测试等相关的内容,
喜欢的可以关注点赞支持一下,谢谢!