前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AD线下赛——防守思路分析

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

作者头像
安恒网络空间安全讲武堂
发布2018-09-21 14:56:29
5470
发布2018-09-21 14:56:29
举报
文章被收录于专栏:安恒网络空间安全讲武堂
进攻的重要性

如果没有一定的攻击基础,以及扎实的开发功底,想要做好防御是不可能的,因此想要在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源码,还有数据库文件

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

代码语言:javascript
复制
tar -zcf ../1.tar.gz ./
mysqldump --all-databases -uroot -p >../1.sql

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

记流量,恢复源码
  1. 记流量 :这里需要自己准备自己使用习惯的记流量的脚本,当然也可以自己写一个。在部署这个脚本的时候,也是有技巧的,一般的框架开发的应用,应该会有一个入口文件,就是所有逻辑流程的入口路由控制文件,我们需要在这个文件里面引入我们记流量的文件,才能达到全局引入的目的,当然这并不能保证所有的流量都能被记下来,只能保证按照代码逻辑的流量可以记录,如果有权限修改一些特殊的配置文件,比如 .htaccess,可以强制在每个php文件里面引入记流量的脚本,也是比较好的选择
  2. 恢复源码:这里使用的是 linux自带的一个命令 crontab,用到的命令如下:
代码语言:javascript
复制
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. 这个时候就只能同时杀掉进程和产生的一句话木马,就可以完整的清除这个内存马:

代码语言:javascript
复制
killall -u www-data
killall apache2

这两条可以直接杀掉进程

代码语言:javascript
复制
rm -Rf config1.php

拼接起来就是

代码语言:javascript
复制
killall -u www-data && rm -Rf config1.php

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-08-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 恒星EDU 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 进攻的重要性
  • 防守要做的事情
  • 具体详细分析
    • 修改密码
      • 备份
        • 记流量,恢复源码
          • 修补漏洞
          • 查杀php内存木马
          相关产品与服务
          数据库
          云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档