用户
搜索
  • TA的每日心情
    开心
    2018-9-11 11:32
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]经常看看I

    i春秋-核心白帽

    Rank: 4

    118

    主题

    147

    帖子

    1610

    魔法币
    收听
    0
    粉丝
    34
    注册时间
    2016-6-6
    发表于 2019-10-8 09:45:32 0428

    上次跟大家分享了如何在Ubuntu虚拟机上搭建起CTF线下赛AWD的训练平台来练练手。这次跟大家一起来深入的了解下CTF线下赛AWD的竞赛模式以及在赛上的一些常规攻击思路。

    随着前段时间的热播剧《亲爱的,热爱的》播出,网络安全竞赛CTF也慢慢的走进了大家的视野中。那么,如何成为韩商言级别的大佬呢?当然是好好学,好好干,多实践。接下来就来学习一下在CTF线下赛AWD竞赛模式的常规攻击思路。

    那么,什么是线下赛AWD竞赛模式呢?

    AWD(Attack With Defense),在比赛过程中要求攻防兼备,即是攻击方也是防守方。比赛中每只队伍维护一台或多台服务器,服务器中存在多个漏洞,利用漏洞攻击其他队伍可以进行得分,修复漏洞可以避免被其他队伍攻击丢分。

    1. 比赛开始前会分配各支队伍的SSH账号,比赛开始用该账号登录到服务器进行维护。

    2. 服务器某处存在flag,一般是在根目录下。

    3. 主办方会设定时间对flag进行刷新。

    4. 主办方会对每支队伍的服务进行check,服务宕机会扣除相对应的分数,扣除的分值由服务check正常的队伍平分。

    5. 一般情况下每支队伍都会给一个低权限用户,非root权限。

    第一步,前期的准备工作很重要,很重要,很重要。重要的事情要说三遍。

    装备一定要齐全,各种工具,各种脚本,各种WAF,各种不死马等等。老话说得好,工欲善其事,必先利其器。装备要全要好,在准备最坚固的防御的同时也要进行最猛烈的攻击。各个队员要分工明确,发挥其优势在第一轮攻击中避免丢分。

    以下只是列举了一些工具,文末也会大家分享一些工具或脚本的链接。

    常用工具:

    ● Burpsuite

    ● sqlmap

    ● nmap、masscan

    ● nc

    ● Chrome、Firefox各类插件

    一句话木马:

    ●php

    ●asp

    ●aspx

    ●jsp

    ●内存马

    py库、脚本:

    ●pwntools

    ●requests

    ●软waf

    ●日志分析

    ●Exp

    SSH客户端:

    ●PuTTY

    ●XShell

    编辑器:

    ●Sublime

    ●VS Code

    ●Notepad++

    ●Vim

    等等......

    快,手速要快。请拿出你们单身十几二十年的手速。咳咳咳,如果有女票的,当我没说。比赛中主要是攻防两个方面,一方面负责防守加固、做基线、加AWF、流量回放等等。一方面负责源码审计、写攻击脚本、维持权限、持续渗透等,具体安排视情况以及队员能力而定。

    拿到服务器的密码时,第一时间修改各种密码(服务器密码、后台管理员密码、数据库密码等等),而有的主办方可能会不让修改后台管理密码,这个就要视情况而定。同时尝试对其他队伍进行远程连接,因为主办方可能会使用统一的密码,或者有规律性的密码。这里就要用到Xshell或mobaxterm远程连接软件,连接上去当然是搞波事情了。例如直接找flag文件,删文件,让其他队伍在check时被扣分。如果能一直连接,那就能每轮刷新flag都能吃到这只队伍的分数了。嘿嘿嘿嘿~~~

    dump源码!dump源码!dump源码!重要的事情再次说三遍。在搞ssh时,也要第一时间将源码给dump下来。可以用图形化工具:Winscp或FileZilla、Client等服务器管理软件,使用工具操作起来比较便捷,也可以用scp命令:scp -r -P Port

    remote_username@remote_ip:remote_folder local_file

    第一,当你网站被其他队伍搞挂掉后,可以迅速第一时间恢复,不被check导致丢分。

    第二,将服务器上的源码下载到本地后,利用D盾进行扫描,因为主办方一般都会留一些后门。发现后门后,赶紧交给做防守的队友去删后门,然后利用这个后门尝试去打其他队伍。使用菜刀去连接就慢了,你连的时候人家就也已经把后门删的差不多了。这时候就又到了拼手速的时候了,所以最好是事先准备好脚本。这里给大家贴一个大佬写的脚本。

    脚本.webp.jpg


    第三,可以先上Seay源码审计系统工具,进行一波源码审计。可以全局搜索一些字符,和自动审计一些危险函数和上传点文件执行函数等等。也方便我们自己进行源码审计。

    进行了第一轮的攻击后,开始一般的攻击流程。Web攻击流程一般分为信息收集、攻击端口、攻击web服务、维持权限这四个步骤。

    信息收集

    第一步,探测主机。使用nmap或HTTPscan等工具,扫描主办方给的内网存活主机,整明白网络拓扑。

    第二步,探测端口。因为主办方给的机器都是一样的,所以可以看下自己的开了什么端口,如果是不一样的话,使用nmap进行常见端口扫描,先对常见端口进行攻击。再放后台进行全端口的扫描,发现新端口再进入到攻击队列中。

    第三步,探测端口服务。端口服务一般用nmap就能扫到,并可以用nmap的脚本扫一下漏洞,但要注意nmap的相关参数。

    除了nmap外,也可以使用自己熟悉的工具,比如msf等,方便后续渗透。


    端口攻击

    在AWD中,手速就是要快,要好好锻炼锻炼五姑娘。弱口令的问题很经常考到,端口一般也会有弱口令的情况存在,比如常见的22、3389、1443、3306等主机登录、数据库端口。还有中间件的端口以及默认密码等,可以准备一个爆破脚本对这些常见端口进行爆破。


    Web攻击

    Web方面的语言多为 PHP,小部分为 Java 和 Python。这里的 Web 环境分两种情况,一种是已有漏洞的框架,一种是出题人写的框架。

    如果是已有漏洞的框架,通常会比较明显。比如说 Struts 2 各种漏洞等等,用工具扫就可以扫出来。这个需要准备得比较充分,在电脑中备好 EXP 库、漏洞库和各种扫描工具库,以便能够快速利用比较明显的漏洞。总之手要快!

    如果是出题人出的框架,那就直接上seay源码审计工具先审计一遍。

    然后进行常规的渗透测试,获取到的CMS版本啥的,先找一波已被爆出来的漏洞进行利用。


    权限维持

    使出各种神通后拿到了webshell,接下来当然是维持权限了!普通的shell一眼就被人家看出来的好吧,在比赛中优先上不死马、反弹shell。用一般木马的留后门方式维持权限,以便后续刷flag,不死马其原理是,将程序写入内存中,无限执行。当你比别人多维持一轮的权限,也就意味着你比别人多刷一轮的分。

    总结一下在比赛中,获取flag来进行得分的两种方式,一种是先获取webshell权限,然后去读flag文件,另一种则是直接通过漏洞读取flag文件。

    Getshell:

    ●官方后门、文件上传

    ●文件写入、文件包含

    ●命令注入、反序列化

    ●Redis写shell

    ●MySQL写shell

    直接读文件:

    ●SSRF

    ●任意文件读取

    ●XXE

    ●文件包含

    Sqli

    本次主讲了在比赛中攻方的一个攻击思路,赛场上的实际情况有可能会有所不同,但大致的情况就是这么个情况,不至于萌新们第一次参加CTF线下赛AWD模式时一脸懵逼,不知道应该要干嘛。后续文章会跟大家讲一下作为防守方应该怎么进行防守不丢分,怎么挂WAF,如何使用流量监控脚本等等。

    参考资料:
    https://www.freebuf.com/articles/network/201222.html

    https://xz.aliyun.com/t/25#toc-7

    工具:

    https://pan.baidu.com/s/1US3VpxNgma7qEjXETGhksQ  提取码:idfn


    Linux提权:

    http://www.4hou.com/technology/13105.html https://www.freebuf.com/articles/system/129549.html

    漏斗社区二维码.jpg

    发新帖
    您需要登录后才可以回帖 登录 | 立即注册