AWD训练赛QWQ

使用D盾啥都没扫到,河马倒是扫了挺多东西,但是代码审计能力太差,不怎么看得懂

AWD训练赛QWQ_第1张图片

一般这里我们如果扫到那种很明显的一句话木马,直接删掉,爆出对手IP后尝试利用

AWD训练赛QWQ_第2张图片

代码审计能力不好,只能从网站页面入手

是一个登录界面,尝试一些弱口令登录,发现不行

AWD训练赛QWQ_第3张图片

找到登录界面的文件login.php,

检索一些关键字(password、email)

这里并没有发现什么有用信息

AWD训练赛QWQ_第4张图片

继续去找和这个文件相关的文件,容易发现它还包含了两个文件

AWD训练赛QWQ_第5张图片

经过查看head.php和connect.php,最终在后者发现了数据库远程连接的账号密码

$username = "cms";

$password = "eb0d39d2931c480f";

AWD训练赛QWQ_第6张图片

使用命令进行mysql远程连接

mysql -h47.104.192.166 -P3306 -ucms -peb0d39d2931c480f

AWD训练赛QWQ_第7张图片 

连上之后我们查它的数据库和表

最后在cms库下的users表里发现了页面的登录邮箱和密码

[email protected]
21232f297a57a5a743894a0e4a801fc3

AWD训练赛QWQ_第8张图片

 这里密码进行了加密,解md5得到密码为 admin

AWD训练赛QWQ_第9张图片

在cms库下有一个flag表,我们尝试查它的具体内容,并没有flag

AWD训练赛QWQ_第10张图片

AWD训练赛QWQ_第11张图片

先去登录网站页面

AWD训练赛QWQ_第12张图片

进去之后很容易发现存在文件上传漏洞

AWD训练赛QWQ_第13张图片

其实我们第一时间是应该修改自己的登录密码,防止被别人改了,每个队伍的账号密码是一样的

但是在网页上似乎改不了

我们可以在数据库里进行修改

update cms.users set password=password('testtest') where email='[email protected]';

改了之后最好刷新一下配置

flush privileges;

AWD训练赛QWQ_第14张图片

现在别人就无法使用默认的密码对我们的网站进行登录

但是这里还有个问题,别人依然可以远程连接我们的数据库来查看我们的users内容

也就是说,我们还需要修改数据库远程连接的密码

而那个密码并不在cms库,而是在mysql数据库下的user表

AWD训练赛QWQ_第15张图片

修改密码的命令

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;

AWD训练赛QWQ_第16张图片

修改cms的密码,假设改为111111

update mysql.user set authentication_string=password('111111') where user='cms';

修改成功后记得刷新配置

AWD训练赛QWQ_第17张图片

再次尝试使用默认密码连接数据库,发现已经不行了

 使用新修改的密码111111,连接成功

AWD训练赛QWQ_第18张图片

刚才查出的host其实还存在一个问题

AWD训练赛QWQ_第19张图片

如果Host=%,表示所有IP都有连接权限。

虽然我们已经修改了连接的密码,但是保险起见,我们最好还是再完善一下 

这里不能直接删掉这个%,因为删掉的话cms这个用户就彻底无法连接了,包括你自己

AWD训练赛QWQ_第20张图片

我们应该将%改为localhost

update mysql.user set host=localhost where user='cms';

修改后同理需要刷新配置

这样只要不是本地的ip(这里指的是非队伍白名单里的ip)都无法使用cms用户来远程连接我们的数据库了,当然更不能查看到我们修改后的网站登录密码。

接下来我主要再讲一下前面提到的文件上传漏洞利用,其实在awd里面我们更应该做好的是防护。

爆出对手的域名之后,使用ping命令就可以拿到对应的ip

AWD训练赛QWQ_第21张图片

我先上传的是普通一句话木马,成了,没有任何绕过

AWD训练赛QWQ_第22张图片

连上之后也很容易找到flag

AWD训练赛QWQ_第23张图片 

之后直接传不死马

关于不死马的原理利用和处理方法可以参考我另一篇博客:

http://t.csdnimg.cn/yU0vb 

同样上传成功

AWD训练赛QWQ_第24张图片

可以看到,尽管我删除了它,但是它依然存在,这就是不死马的魅力

AWD训练赛QWQ_第25张图片

不死马隐蔽性也比较好,只要对手还没处理掉这个不死马,我们就能通过这个shell拿flag

AWD训练赛QWQ_第26张图片

AWD训练赛QWQ_第27张图片

还有一个问题就是,虽然在数据库里select查不到flag,但我们通过系统命令其实可以cat到flag

但是这是一个错误的flag,不知道是完全错误的还是进行了加密的,有大佬可以告知一下原因吗?

AWD训练赛QWQ_第28张图片

这里cat出来的flag和蚁剑里面获取的flag内容不一样 ,很奇怪

此外,在比赛途中我们也要经常查看一下有没有其他用户登录了我们的服务器,以及有没有新产生的什么可疑文件:

AWD训练赛QWQ_第29张图片

如果有其他用户登录直接将它踢掉,发现被上传了木马直接删掉,如果遇到不死马就写脚本,基于条件竞争来克制,具体的awd常见防御操作请参考我另一篇博客:

http://t.csdnimg.cn/QKR2L 

我是Myon,后续会继续给大家更新CTF、AWD,网络安全、渗透测试等相关的内容,

喜欢的可以关注点赞支持一下,谢谢!

你可能感兴趣的:(web,AWD,数据库,web安全,AWD,linux,mysql)