AD线下赛——防守思路分析

进攻的重要性

如果没有一定的攻击基础,以及扎实的开发功底,想要做好防御是不可能的,因此想要在AD类竞赛中做好防御,首先是有足够的基础,这里面的基础有很多,大概包括以下几个方面:

  1. web安全进攻技巧
  2. 框架开发使用经验
  3. linux运维经验

防守要做的事情

其实防守要做的事情很多,只有好的防守,才有足够的精力去进攻,防守要做的事情大概总结如下:

  1. 修改各种弱密码
  2. 源码备份、数据库备份
  3. 设置记录流量的脚本、定时恢复源码
  4. 根据流量做出应急响应,修补漏洞

具体详细分析

修改密码

这里的密码包括 ssh连接密码, mysql账户密码, web应用弱密码等等。

1.修改 ssh密码一定要快,否则很容易被对手利用脚本直接改掉密码从而失去控制权,当然很多比赛也使用了每个队不同 ssh登陆的密码,那也可以改一个自己队伍都熟知的密码,但是注意不要又改成弱密码即可。 2.修改 mysql密码,这个因为每个队伍的内部配置是一样的,所以大家的 mysql密码一定是一样的,这个密码是存在web应用的配置文件里面的,所以要想得到mysql密码,要先找到web的配置文件,这就考到了对框架开发的熟悉程度,如果机器开放了 mysql的远程连接,那拿到 mysql还是有可能很危险的。 3.修改 web后台密码,这个和上面说的一样,大家的密码都是一样的,这个密码是存在数据库文件里面的,所以需要先备份完数据库以后,才能拿到,然后拿到以后还需要解密,这里也考到了你对框架的熟悉程度,是不是知道这种密码的解密方式,如果你拿到了后台密码,就可以登陆到 web后台,如果配合后台 getshell,也可以得到不错的进攻收益。

备份

备份包括web源码,还有数据库文件

具体使用的命令差不多有:

tar -zcf ../1.tar.gz ./
mysqldump --all-databases -uroot -p >../1.sql

这里简单解释一下,为什么要放在上层目录下,其实只要不在当前目录下,就比较方便,你也可以直接放到 tmp目录下,然后解压 web目录,就可以得到一个干净完整的web目录,不用担心含有对手中下的木马,然后在找到漏洞之后,直接在这里改掉代码,然后重打包,放回原来的web根目录下,这样就算之前web被攻击,被中下了简单的一句话木马,也可以直接杀掉,但是如果已经被对手中下了内存马,这个时候就需要先杀掉内存马,然后在做上面的恢复操作,否则是没有用的。

记流量,恢复源码
  1. 记流量 :这里需要自己准备自己使用习惯的记流量的脚本,当然也可以自己写一个。在部署这个脚本的时候,也是有技巧的,一般的框架开发的应用,应该会有一个入口文件,就是所有逻辑流程的入口路由控制文件,我们需要在这个文件里面引入我们记流量的文件,才能达到全局引入的目的,当然这并不能保证所有的流量都能被记下来,只能保证按照代码逻辑的流量可以记录,如果有权限修改一些特殊的配置文件,比如 .htaccess,可以强制在每个php文件里面引入记流量的脚本,也是比较好的选择
  2. 恢复源码:这里使用的是 linux自带的一个命令 crontab,用到的命令如下:
cd /var/www/ && tar -zxvf j.tar.gz
 mysql -uroot -proot </var/www/j.sql

这样就能保证每分钟都恢复一下源码和数据库,所以在一分钟以上比较复杂的攻击基本都可以被ban掉,比如一些登陆后台,改模板文件然后拿shell的操作,如果后台是有验证码登陆验证的,这个攻击在比赛中基本对我们无效。

修补漏洞

这个也能叫做应急响应吧,其实,这个方面是考的就是开发功底了,能不能快速定位到漏洞点,漏洞产生的根源,如何快速有效的修改,而且不被check掉,都是需要很多经验和技巧才能做好的。 因为是ad比赛,所以有些修改可以是暴力的,比如说你通过流量知道了某个参数是有 ssrf漏洞的,可以直接拿到 flag,这个时候你就可以在之前说过的入口文件中,将这个变量直接赋值为空,或者是默认值,只要不影响功能的实现,应该就没有大的问题,总之这个部分就看发挥了,也看你对源码的熟悉程度。

查杀php内存木马

首先简单贴一下大家在比赛中使用很多的内存马的代码:

这个内存马在执行的时候,会销毁自己本身的文件,常驻在内存,然后不断的写入一句话木马,所以这种木马在执行了以后,不容易发现。 所以发现自己被打了以后,可以先尝试 rm -rf xxx.php,然后在查看是否被删除,如果没有被删除,那很大可能就是中了内存木马。

下面利用docker做一个实验来写一下怎么查杀这个内存木马:

  1. 首先我们可以看一下正常访问的过程中,www-data用户的进程是怎么样

2. 然后我们执行一下内存木马

然后我们很清楚的看到了增加了一条进程,进程id是244,所以到这里我们就可以知道,内存马其实是是apache的进程。

3. 然后我们尝试删除生成的一句话木马: rm-Rfconfig1.php 结果:

4. 这个时候就只能同时杀掉进程和产生的一句话木马,就可以完整的清除这个内存马:

killall -u www-data
killall apache2

这两条可以直接杀掉进程

rm -Rf config1.php

拼接起来就是

killall -u www-data && rm -Rf config1.php

这里为什么要同时删除呢,因为内存马的使用者也想到了这个问题,所以可能有一个脚本,在一直利用写好的一句话木马,重新写入并且激活内存木马

总之,AD模式是一个很有意思的比赛模式,比赛中可能会遇到很多突发情况,很考验选手的应急反应能力,和快速写脚本处理问题的能力,而且大家不断创新,甚至在比赛中用到了一些新加密套路:

类似于这样的,或者是利用rsa加密的各种各样的木马层出不穷,这也考验了选手们平时的脚本积累,有关进攻以及简单的权限维持,我们下次在写。

原文发布于微信公众号 - 安恒网络空间安全讲武堂(cyberslab)

原文发表时间:2018-08-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

深入解析Cookie技术

0×00 引言 在Web技术的发展史上,Cookie技术的出现是一次重大的 变革。但是, Cookie技术又是一项非常有争议的技术,从它诞生之日起就成了广大网络...

20810
来自专栏lgp20151222

开发网页时,127.0.0.1或者localhost能访问,而本机地址不能访问的解决

2713
来自专栏程序员宝库

对抗蠕虫 —— 如何让按钮不被 JS 自动点击

作者: EtherDream www.cnblogs.com/index-html/p/anti_xss_worm.html 前言 XSS 自动点按钮有什么危...

3596
来自专栏逸鹏说道

初始Windows Server 2012 R2 Hyper-V + 系统安装详细

干啥的?现在企业服务器都是分开的,比如图片服务器,数据库服务器,redis服务器等等,或多或少一个网站都会用到多个服务器,而服务器的成本很高,要是动不动采购几十...

3698
来自专栏Seebug漏洞平台

Seebug 每周一洞-2016-04-06

image.png 推荐语 Struts2 是全球使用最广泛的 Javaweb 服务器框架之一。Struts2 是 Struts 的下一代产品,是在 stru...

3465
来自专栏我的博客

Centos配置支持mail函数

实验证明一切:(不过我还是建议使用PHPmailer:http://www.0377joyous.com/archives/536.html) 在本机中写mai...

2325
来自专栏CSDN技术头条

Linux 4.6促进了容器的安全性,添加对OrangeFS的支持

如预期一样,Linux的核心任务Linux Torvalds周日发布了Linux Kernel 4.6。新版本支持一个新型的分布式文件系统OrangeFS,采用...

1956
来自专栏java学习

微信自动回复机器人

微信自动回复如图: ? 注意事项: 一、必须安装微信2.4.5.73版本(WeChatSetup2.4.5.73.exe),才能使用机器人 二、若被360误杀,...

7294
来自专栏张戈的专栏

分享一个支持https的CDN及启用SSL后续问题汇总

之前张戈博客全站启用了 https,并分享了相关经验心得。用了一段时间,问题还是不少,所以继续整上一篇文章,汇总一下网站启用 https 之后出现的问题以及解决...

4.3K7
来自专栏ASP.NET MVC5 后台权限管理系统

ASP.NET MVC5+EF6+EasyUI 后台管理系统(34)-文章发布系统①-简要分析

最新比较闲,为了学习下Android的开发构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(1)-前言与,虽然有点没有目的...

2106

扫码关注云+社区