type
status
date
slug
summary
tags
category
icon
password
matrix-breakout-2-morpheus
信息收集
端口扫描与服务识别
攻击机ip:192.168.108.50
靶机ip:192.168.108.132
信息收集
端口扫描与服务识别

图片.png
端口 | 服务 | 常见漏洞 |
22 | SSH | 弱口令、默认账户、版本漏洞 |
80 | HTTP | XSS、SQL注入、目录遍历等 |
81 | 自定义HTTP | 同样可能存在 Web 漏洞 |
先访问80和81端口,发现80是个普通端口,源码也没放东西,81是个登录端口,弱密码和万能密码无效

图片.png

图片.png
尝试使用使用nmap扫一下,发现也没东西
Web目录爆破
尝试对80端口和81端口进行目录爆破
发现了5个页面
- index.html
- robots.txt
- javascript
- graffiti.txt
- graffiti.php
index之前看过了,其他的全部尝试curl一下

图片.png

图片.png

图片.png

图片.png

图片.png
漏洞发现
发现graffiti.php是一个带留言板功能的主页,而且具备潜在的文件写入或命令注入入口,而且联系同名的.txt文件可以判断这个页面大概率可以对.txt文件进行修改

图片.png
漏洞利用
文件写入获取WebShell
尝试传入123看看是否能写入.txt文件
可以写入,尝试传入shell
成功拿到RCE,用攻击机进行连接
获取反向Shell
权限提升
内部信息收集
进入之后尝试信息收集,一番搜寻之后发现第一个flag并且带有后续提示

图片.png

图片.png
说明下一步和neo的图片有关
将图片拿回本地,尝试查看元数据
没有发现有用的信息,因为是png格式所有考虑LSB隐写和判断真实文件类型
无果,先暂时放弃这里,继续收集其他消息
Docker环境探查
ip a 后发现还存在一个docker环境,ip为172.17.0.1,尝试查看docker容器,依旧没有权限,当前用户也不在用户组,也跑不了docker命令,先用python在攻击机上开个端口,上传linpeas脚本进行信息收集,并将结果传回攻击机查看
Linpeas脚本扫描
Capabilities分析
发现了python被赋予了
cap_sys_admin
能力,并且权限是 effective (e) 和 permitted (p),所以当我们以普通用户身份运行 /usr/bin/python3-9
时,这个进程也拥有 CAP_SYS_ADMIN
权限,而这个权限在linux中很强大,几乎等价于 root 权限https://book.hacktricks.wiki/zh/linux-hardening/privilege-escalation/linux-capabilities.html#cap_sys_admin
但是我们发现只有root和humans组的成员能执行这个python,线索又断了
Nginx配置审计
回到开头尝试在靶机上查看两个主页的信息
目录根路径:
/var/nginx/html
用户名密码存储在:/var/nginx/html/.htpasswd
查看一下发现是apache使用的md5hash,使用john直接破解,无果
发现index还给了一点提示
将图片拿下来分析,发现也没什么东西 : (
进程监控
上传pspy64
发现有定期执行任务
查看程序发现并不在本机上,应该在docker中,程序定期连接到81端口,我们可以想办法截获一下
流量劫持获取凭证
用iptables重定向81端口的TCP流量到3333端口
iptables | 管理防火墙规则的命令 |
-t nat | 指定操作的表是 nat 表(用于网络地址转换) |
-D | 删除(delete)一条规则 |
PREROUTING | 链名:数据包刚到达网卡,还未被路由前触发 |
-p tcp | 匹配协议类型为 TCP 的数据包 |
--dport 81 | 匹配目标端口为 81 的数据包 |
-j REDIRECT | 动作为重定向(REDIRECT),即转发到本地端口 |
--to-port 3333 | 重定向目标端口为 3333 |
启动socat监听并转发
将拿到的凭证解密
https://www.freebuf.com/articles/system/358115.html
横向移动与提权
拿到凭证后登录到ssh,发现刚好也是humans组的那我们之前收集到的信息就有用了,直接开始使用
cap_sys_admin
进行提权,伪造一个passwd,将密码为password的密码加密,写入伪造的passwd
图片.png
利用CAP_SYS_ADMIN提权
基于python的exp
利用
libc.mount()
和 Python 的 ctypes
库,通过 MS_BIND
(绑定挂载)机制将伪造的 /etc/passwd
文件挂载覆盖到真实的 /etc/passwd
上,从而实现提权函数定义
这是为了告诉
ctypes
函数 mount()
的参数类型是什么:参数名 | 类型 | 含义 |
source | c_char_p | 源路径(你要挂载的文件) |
target | c_char_p | 目标路径(你要挂载到哪里) |
filesystemtype | c_char_p | 文件系统类型, MS_BIND 时为 "none" |
mountflags | c_ulong | 挂载选项,这里是 MS_BIND = 4096 |
data | c_char_p | 一些额外选项(通常为 None 或 b"" ) |
结束
- Author:axlfpe
- URL:https://tlifecafe.xyz/article/a5a59973-8262-4683-b753-ac8ed9b13d01
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!