wargames-bandit-summary
wargames的bandit是以通关游戏的方式来认识和使用linux的靶场。
文章记录在通关过程中新学习和关注的知识盲点。
简单介绍
目前一共33关。通过SSH登录服务器。在level0
中有域名和端口
用户名为banditN
,N从0到34。
每一关的目标是通过关卡说明找至下一关的密码。
会提示用到哪些命令。
PS:
WeChall有记分面板,通过这个指引,可以登录后被统计进去。
Level 0 - 9 基础命令
- L0 :
cat
的直接使用 - L1 : 特殊的文件名称
- L2 : 含空格的文件名称
- L3 : 隐藏文件
- L4 : 通过
file
来判断文件类型。注意file可以按通配符批量判断的 - L5 :
find
的使用,按类型(-type
)、大小(-size
)、权限(-perm
)来查找 - L6 :
find
的使用,按大小、所有者(-user
)、所属组(-group
)来查找 - L7 :
grep
的使用 - L8 :
sort
、uniq
的使用。-u
选出重复的那个。 - L9 :
strings
的使用。这个题目描述是密码前面有=
号,不是以=
号开头
Level 10-20 编码与转化、网络交互
- L10 :
base64
解码 - L11 : 凯撒密码,偏移13,简易的替换式密码。
alias rot13="tr 'A-Za-z' 'N-ZA-Mn-za-m'"
- L12 :
xxd
的使用(类似hexdump
),涉及gzip
,bzip2
压缩方法,tar
归档、解归档。xxd -r data.txt | zcat | bzcat | zcat | tar -xO | tar -xO | bzcat | tar -xO | zcat
- L13 :
ssh
指定私钥登录 - L14 :
nc
或者telnet
,网络交互。cat /etc/bandit_pass/bandit14 | nc localhost 30000
- L15 : 通过
openssl s_client
建立SSL/TLS
网络交互cat /etc/bandit_pass/bandit15 | openssl s_client -connect localhost:30001 -ign_eof
,其中-ign_eof
指到了文件结尾也不关闭连接。 - L16 :
nmap
扫描的使用。nmap -p 31000-32000 localhost -sV
,其它同上一关。 - L17 :
diff
的使用 - L18 : ssh连上后直接断开。则在连接的时候就指定命令。
- L19 : 具有suid权限的执行文件的越权。
- L20 : 网终交互。开两个tmux窗口,
socat tcp-listen:8888 -
,./suconnect 8888
来进行交互。
Level 21-32 cron定时任务、git用法等
- L21 : 到
/etc/cron.d
看相关定时任务 - L22 : 看定时任务,分析脚本,去/tmp目录看结果
- L23 : 分析定时任务,创将脚本写到bandit24目录中去,就会自动执行
- L24 : PIN爆破(未完成)
- L25 : 用到了不同的shell,
more
的扩展用法,vim 的扩展用法。:e
命令 - L26 : vim设置shell的的用法。
:set shell=/bin/bash
,:sh
- L27 :
git
的用法,查看敏感信息。 - L28 :
git
的用法,通过历史记录查看敏感信息。 - L29 :
git
的用法,通过分支记录查看敏感信息。 - L30 :
git show-ref
的用法,通过分支记录查看敏感信息。 - L31 :
git add
,git commit
,git push
的用法 - L32 : 会把输入的命令输转化成大写后执行。这里用
$0
,代替上次执行的执令,使进入shell。
体会
之前自己试验环境都是root权限一把梭。
这套靶场环境体现linux上的多用户,多任务 环境。
对于各方面权限的设置,极其严格,起码是最小化权限的设置。
比如:
- 普通测试用户home目录,权限为
drwxr-xr-x 2 root root
,无法向自己的目录写东西呢,这应该是考虑会有同一个用户(账号)同时会被多个人登录的情况。 w
命令,连自己的登录信息都看不到,应该是控制的文件权限。/tmp
的权限是drwxrwx-wt 941 root root
,就是说其它人,不可读,可写。自己往里面写了东西,都无法读到。- 网络相关的权限都禁了,但localhost环境的还能
- 一些查看系统信息的命令,因权限问题,也只能看到自己的。(当然一个用户被多个人登录的情况,用
ps aux
也可以看到别的执行的什么命令的。看到一位在按指南看man ls
的) history
记录也看不到前人输入的过的信息- linux的内核是可以由多种
shell
接入的,这里面就用了好几种的。 L19
中对常见的一个因设置suid
及sgid
的越权做了深入的举例。
参考
wargames-bandit-summary
https://blog.fengcl.com/2022/08/27/wargames-bandit-summary/