主机发现
发现存在 IP地址为 192.168.145.148的地址
可疑 ,对其进行端口扫描 已经基本信息搜集
端口扫描
端口扫描结果
1 |
|
发现存在 三个端口 分别是53 80 9999
1 |
|
特别是 53 端口 和 9999 端口开放的服务
先看53 端口
ISC BIND
ISC BIND是美国Internet Systems Consortium(ISC)公司所维护的一套DNS域名解析服务软件。
存在一下漏洞(CVE-2021-25216按照说明是可执行代码的,但这里没有找到POC)
CVE-2021-25216(高危)
GSS-TSIG是TSIG协议的扩展,旨在支持密钥的安全交换,以用于验证网络上各方之间通信的真实性。SPNEGO是GSS-TSIG的应用程序协议接口GSSAPI使用的协商机制。经发现,BIND使用的SPNEGO实现容易受到缓冲区溢出攻击。可能造成服务崩溃甚至代码执行。
CVE-2021-25215(高危)
RFC 6672中描述的DNAME记录提供了一种重定向DNS中域名树的子树的方法。 named处理这些记录的方式中的缺陷可能触发多次尝试将相同的RRset添加到ANSWER节中的尝试。 这会导致BIND中的断言检查失败。DNAME记录由权威服务器和递归服务器处理。 对于权威服务器,可以从区域数据库中检索触发漏洞的DNAME记录。 对于执行递归的服务器,在发送给权威服务器的查询过程中会处理此类记录。
当named的易受攻击版本接收到触发上述漏洞的记录查询时,named进程将因断言检查失败而终止。
CVE-2021-25214(中危)
损坏的入站增量区域更新(IXFR)可能导致named意外终止
看了一圈没有可以用的Poc ,这里是启动了DNS服务的可以看出,先留着,下一个
Tornado 框架
Tornado是Tornado社区的一个Python Web框架和异步网络库。该库通过使用非阻塞网络I / O,可以扩展到成千上万的开放连接,使其非常适合长时间轮询,WebSocket和其他需要与每个用户建立长期连接的应用程序。
众所周知,python框架比较多的漏洞是SSTI 模板注入漏洞,经过网上操作,Tornado是存在模板注入的,也存在文件包含漏洞
Tornado常见漏洞
WEB信息收集
okey 接着访问 80 9999端口查看存在什么信息
80端口
9999端口
看了眼9999端口是一个登录框,不存在sql注入等,暴力破解无解
查看80端口,去发现是否存在突破口吧
1 |
|
句子的意思是服务器的机主给他取了一个臭名昭著的黑客,然后黑了他的服务器,只有挖掘更多,才能发现他
这里存在一个DIG ,DIG是DNS工具,先留着
使用常见F12 大法查看源代码
在F12大法下发现了一个参数
1 |
|
使用 page_no 查看更多
但另外还有两个页面
但是吧,并没有什么用处,再反过来看page_no
出现了一句
1 |
|
再深入一点? ??
对这个数字进行爆破试一下
发现21存在不一样
果然,出现的提示更多了
1 |
|
意思他拥有很多个子域名,但是其中有一个家 ,主域名算是 hackers.blackhat.local
去访问一下,但是这里要添加 这个域名到/etc/hosts 文件里面。不然访问不了的是
DNS区域传输
要加上这么一条192.168.145.148 hackers.blackhat.local
但是好像还是主页面,并不存在什么 ,这里还是提到了"More you will DIG me,more you will find me on your servers..DIG me more...DIG me more"
DIG工具
DIG 工具全称为域名信息搜索器(Domain InformationGroper),显示DNS查询过程的全过程,是一个不错的DNS故障诊断工具。
常见使用方法
1 |
|
我们这里使用迭代查询 和 指定域名查询
指定域名服务器进行查询
dig hackers.blackhat.local @192.168.145.148
dig afxr @192.168.145.148 blackhat.loca
这条命令还是一点超时,有很多域名没有显示出来 ,没关系先把显示出来的域名加入
加上这两条到 /etc/hosts 再去访问这两条,页面看看是存在什么效果
XXE注入攻击
访问
hackerkid.blackhat.local
的时候出现了一个新的页面 , 创建用户的意思 ,抓包创建一下 ,因为刚才9999端口是存在一个登录框的
邮箱出,输入是什么就返回是什么数据 ,这里呢一般想到两种漏洞 xxe ,ssti模板注入
然后这里是php 页面 ,所以大概率不是ssti模板注入
那就使用xxe 去访问 /读去本地文件试试看、
使用XXE 文件读取代码是可以读完本地文件的
发现除了root 用户还存在一个saket用户是可以bin/bash的 ,但是这里又没有开22端口,不能ssh
查看/home/saket用户目录下存在些什么数据
先看本地基本会有的是哪些文件
这几个是常见的,文件优先查看。
随便查询一个都没有返回
PHP封装器(伪协议)
选择使用php伪协议去读取一下
其他文件均没有返回,唯独这个 .bashrc 配置文件返回了
对其进行解密
解密之后会发现账号密码,我们可以记得 9999端口存在一个登录的地方 ,尝试登录一下
1 |
|
SSTI模板注入
好像不对啊,这个账号密码,
这个密码感觉也不像是admin 用户的,密码带有saket
是不是saket 用户的呢 ,本来就存在这么一个用户 ,对其进行测试登录看看
成功登录上了
1 |
|
让告诉他名字 可能是以 name 作为参数的
试一下
这个和前面那个邮箱差不多 ,但是把这里python的环境 而且是 Tornado是框架
是可能存在ssti 模板注入的
简单的使用 49 payload 测试一下
我这里输入 payload 返回了49 ,证明执行了49的表达式
那往上找一下反弹shell的payload
1 |
|
对这段代码进行url编码然后进行反弹shell
1 |
|
成功反弹shell了
Capabilitie提权
但是把只是普通用户不是root 用户
尝试了suid 提权
内核提权
都是没有的,
经过百度 Google 找到了可以使用Capabilitie提权
linux2.2之后,产生了Capabilities用于分隔root权限,以便于用户更好,更安全,更精细的管理机器的功能和权限。
先使用
1 |
|
升级shell,
然后使用getcap工具查找是否存在CAP_SETUID标志的进程
1 |
|
如果存在 /usr/bin/python2.7= cap_setuid+ep 就可能存在Capabilities提权
这里是存在的
使用python脚本进行提权
1 |
|
然后上传到 靶机上去
可以使用这个脚本进行批量测试
1 |
|
查看5600 进程是否开启
netstat -ano | grep “5600”
然后直接使用nc 连接就好了
1 |
|
成功提权到root