前言
这是一次打DC-1靶机的实战,附上下载链接
https://download.vulnhub.com/solidstate/SolidState.zip
注:前面信息收集的部分太老生常谈了,熟练的可以直接看信息收集总结(不过其实信息收集宁愿麻烦一点,这样后面就不会有遗漏的地方)
信息收集
1.判断靶机ip
开靶机之前nmap扫一次网段,再开靶机之后扫一次,查看多出来的ip就是靶机ip
-
nmap -sP(使用ping扫描确定目标存活)扫网段出结果
这里ip=192.168.250.137
2.初步收集判断漏洞
a.先确定端口
-
以一个合适的速率对全端口进行扫描
port=22,25,80,110,119,4555
b.-p指定端口进一步收集
使用nmap -O(确定系统版本) -sT(TCP连接) -sV(服务版本) -sC(对sV的加深) 扫描ip获取信息然后存储到nmap文件
-
22是SSH服务远程连接端口,这里暴露了系统是ubuntu
-
80是apache端口 版本2.4.25
-
25(smtp),110(pop3),119,4555(admin-tools) 都是和james有关的邮件服务
-
其中4555端口有remote比较可疑
3.通过扫描进一步判断
a.nmap自带脚本扫描
-
a--script=vuln
b.niktio漏洞工具扫描
c.对照筛选重要信息
主要报两个可能的洞,csrf和sql注入,以及几个目录(连着下面的目录扫描一起看)
4.目录扫描
a.dirsearch和dirb判断存在目录
/assets/
/images/
/index.html/
/server-status
/about.html
/LICENSE.txt
/README.txt
5.页面查看
首页
wappalyzer插件看一下组件
下面是首页的目录
about.html
-
这里重点在于输入信息的地方(sql注入尝试)
asset
有一个目录泄露了,都是些重复的信息,scss查了一下是css的扩展功能,感觉没啥用
readme.txt
邮箱账号:aj@lkn.io | @ajlkn
-
这里是有关 Solid State 的设计相关信息,重点我认为是泄露的邮箱和账号,而且让我知道了AJ这个人是设计这个网站的
LICEMSE.txt
这个我是真看不出什么。
总结
-
linux系统是ubuntu,开放了几个和JAMES邮件服务有关的端口,其中有一个4555端口是用来远程管理邮件的(比较可疑)
-
其他的就是在80端口找到了几个目录,第一个页面有个上传信息的地方不知道可不可以sql注入,还有就是目录泄露,下面实战我先从JAMES 4555端口开始。如果能直接getshell其他收集的内容大家就可以不用看啦
james的原理
-
基于上面的分析,我们去查一下james
1.什么是James?
James(Java Apache Mail Enterprise Server)是Apache组织的子项目,由Java语言编写的,整合了诸如POP3,SMTP等邮件协议的企业邮件服务器。
2.POP3,SMTP等内容
概念可以有很多,但是内容其实就那么点
pop3就是只负责接收邮件的协议,SMTP是负责发送邮件的协议
而4555端口运行着的就是james的admin-tools,是专门用来管理所有邮件的工具
上实战
了解完原理以后,我们就要实战了
先到exploitdatbase搜一下这个版本的有无漏洞
我勒个天还真有,直接远程命令执行写我脸上了,去搜一下它的利用条件吧
说是要root账号,我们nc连接一下看看是不是默认账号
事实证明还真是,我们再下载一下刚刚那个执行脚本
审计源码
下面是对刚才那个攻击脚本的审计
总纲介绍
利用:
-
当我们进入/etc/bash_completion.d的目录的时候就会执行payload
漏洞解析:
-
首先要知道/etc/bash_completion.d的作用:补全。我们平时能够TAB补全就是因为这个目录
-
这个漏洞的原理就是,先往里面写入反弹shell的命令,然后当我们在ssh登录的时候(或者以其他方式进入shell的时候)系统就会触发/etc/bash_completion.d,自动补全代码,从而执行里面的命令
第一部分添加用户
这里讲的就是进入管理工具增加一个叫做/etc/bash_completion.d的用户
这样待会使用SMTP向该用户发送信息的时候,系统就会把payload写到这个目录里面去
第二部分SMTP向用户发送信息(payload)
利用漏洞
根据上面的分析,我们知道要利用这个还要先要有人进行SSH登录......(靶机应该不会设置定时有人登录SSH吧),那我们的思路就是去找泄露的ssh账号密码
我们去看ssh有没有版本漏洞,搜出来的全是用户名枚举,一般来说爆破都是最后无能为力的时候才做的,所以这里我们先不管
找SSH登录账号密码
思考
刚刚还有一些东西没有利用到呢,既然有邮件服务我们就去先看一下都有些什么邮件(pop3)。
那新的问题来了,既然要登录邮件,就要知道邮件的账号密码,怎么知道呢,想起了之前有个admin管理工具,应该可以改
1.我们先登录一下看怎么使用
2.大概了解了以后改密码
3.pop3挨个登录
4.看教程
5.挨个查看邮件
最后在mindy的邮件里面发现了一个ssh用户
mindy
password:P@55W0rd1!2@
SSH登录
发现需要shell逃逸(几乎所有的命令都被限制了......)
看来只能另辟蹊径了
还记得我们最开始的james漏洞不,我们尝试用一下那个
1.先把payload变成反弹shell
执行py代码
ssh登录触发
可以看见我们反弹的shell不用逃逸(原因是因为不是直接连的那个shell,原先那个被限制了)
创建虚拟终端
因为直接弹的shell不完整,我们这里用py建立一个虚拟终端
提权
这里先尝试了suid提权和定时任务提权,以及找它内核版本看看有没有可以用的脏牛提权漏洞啥的
(均无结果,没有sudo命令和当前用户的定时任务)
然后看到了一个思路,有没有平常和我一样懒狗的人平常是 chmod 777 给权限的,能不能有这样的命令文件,然后试了一下
find / -perm 777 -type f \( -name "*.sh" -o -name "*.py" \) 2> a.txt
看它权限没问题,再看下里面的内容
是一个清理tmp内容的,它会不会在高用户里面设置的是定时的?
我们把里面的内容改一下
提权成功
4.总结
内容到这里也就讲完啦,不知道大家有没有兴趣深入学网络安全呢~
如果大家想从事网络安全的学习,我推荐加入我们freebuf泷羽sec的帮会!学习的过程中优良的资源是必备的,这里有大量的工具插件,挖洞案例,免杀教程等等的资源!(B站搜泷羽sec还有免费课程!!!)
zg人不骗zg人,真的很有用,自己收集摸过去除了很累而且是很慢很慢的......(切身体会)!
附图
感兴趣的扫下面的码就可以啦