DC-1
Created: November 8, 2023 11:41 PM
Tags: Drupal, SUID提权
Owner: 只惠摸鱼
打靶场过程
-
nmap扫描 存活主机
-
192.168.199.128可能性更大
- 80
- 111
- 22
- 端口开发 ,访问跳转出Drupal页面,确定为靶机
-
使用插件进行指纹识别
- 可知以下信息:
- CMS:Drupal 7
- 编程:PHP 5.4.45
- web服务器: Apache 2.2.22
- 操作系统:Debian
- JavaScript 库:jQuery 1.4.4
- 可知以下信息:
-
查一下CMS漏洞,
-
利用Kali,msf模块直接寻找相关漏洞
- 尝试最新的
- 选中一个2018年的查一下,发现与当前使用的版本对照,可以使用。
- 选中一个2018年的查一下,发现与当前使用的版本对照,可以使用。
- 尝试最新的
-
-
使用drupal_drupalgeddon2漏洞,并设置payload,攻击载荷
-
配置漏洞利用的参数
-
run,执行漏洞,输入shell,成功进入shell;查找flag,并准备提权。
-
尝试生成交互shell
-
查看当前目录,找到flag1,拿到第一个提示
-
根据第一个提示,找网站目录 找到Drupal配置文件的位置/var/www/sites/default/settings.php
-
查看settings.php内容得到flag2,拿到数据库的信息
- 数据库drupaldb
- 用户名 dbuser
- 密码R0ck3t
-
-
尝试使用数据库,登录进数据库
-
成功登录后,使用数据库drupaldb ,查看有什么表
-
找到users表,查看users表信息
-
找到管理员账号,但感觉是加密过的 ,数据加密脚本位置:/scripts/password-hash.sh
-
思路:先加密自己需要登录的密码,复制加密内容,替换到表中,实现更改密码
-
查看加密脚本,发现是php语言写的
-
找到用法,需要到根目录运行,先回到网址根目录在运行脚本
-
得到加密后的密码,复制:password: admin hash: S S SDqs5yBFjJUid/K7Te3FrSRCebsytuNX2SAK71VSgebmaqWENCSo2
-
回到mysql 修改admin账号的密码
-
-
-
返回浏览器,访问192.168.199.128,进入登陆页面,使用admin/admin登录
-
成功登录后,点击dashboard,发现flag3
-
获得第三个提示flag3
-
搜索全目录找到第四个flag和thefinalflag,但thefinalflag无权限读
-
根据提示,可以通过find 试试得到root权限
- 综合flag3 flag4的提示,可以知道,可以通过SUID提权获取thefinalflag
- 得到root权限
- 得到root权限
- 综合flag3 flag4的提示,可以知道,可以通过SUID提权获取thefinalflag
-
读thefinalflag.txt 拿到最后的flag
知识:SUID提权
什么是SUID
SUID (Set owner User ID up on execution) 是给予文件的一个特殊类型的文件权限。在 Linux/Unix中,当一个程序运行的时候, 程序将从登录用户处继承权限。
简而言之用户在执行程序/文件/命令的时候,将获取文件所有者的权限以及所有者的UID和GID。
设置方式
- chmod u+s file1.txt
- 将所有者的执行权限位被设置成s。
- chmod 4750 file1.txt
- 在 4750中, 4 说明 SUID 位被设置, 7 为所有者读写执行权限, 5 为所有组的读执行权限,其他无任何权限。
文件设置SUID位的判断
rwsr–r-- 1 xyz xyzgroup 148 Dec 22 03:46 file1.txt
**注:**给文件/文件夹设置 SUID后,如果在文件的权限部分看到 ‘S’ ,说明这个用户对这个文件/目录没有执行权。
功能
SUID可以让调用者以文件拥有者的身份运行该文件,运行root用户所拥有的SUID的文件,那么运行该文件的时候就是root用户的身份。所以常用于运行”/bin/sh”以提权。
常用的SUID提权指令
- nmap
- vim
- find
- bash
- more
- less
- nano
- cp
在Linux/Unix中寻找设置了SUID的文件
- find / -perm -u=s -type f 2>/dev/null
- find / -user root -perm -4000 -print 2>/dev/null
- find / -user root -perm -4000 -exec ls -ldb {} ;
查到相关文件
使用相应命令以执行”/bin/sh”提权得到root权限
例如:find / -exec “/bin/sh” ;
- \ 是转义字符,转义结尾的’;’以结束命令执行