一个文件上传漏洞靶场

VSole2022-08-26 15:27:12

靶机说明:

步骤Web应用程序是一组轮询的背景图像,同时它也允许上传自己图像。

检测内容

首先页面本身没有透露什么太有趣的内容。那就从模糊测试开始,看看能不能找到更多内容:

ffuf -w /usr/share/wordlists/dirb/big.txt -u http://jewel.uploadvulns.thm/FUZZ

果然成功找到了更多的目录。快速浏览一下 CSS,你就会发现旋转的背景图像是从目录/content/中获取的。该目录/admin/显示一条注释,这就说明可以在这里激活一些模块。

其他目录并没有显示出其他什么有用的内容。

检测使用的技术

下一步是找出页面使用了什么技术,同时看看它们可能引用了哪些模块类型。因此我用Wappalyzer检查了一下页面:

这里显示出来的是在Express框架上运行的node.js应用程序。

在子目录中查找内容

接下来我检查子目录去查找其他内容。提供的单词列表中的命名模式与图像的命名模式匹配,因此我也使用该列表检查/content/目录。

ffuf -w ./UploadVulnsWordlist.txt -u http://jewel.uploadvulns.thm/content/FUZZ.jpg

果然,它找到了四个用作背景的图像。

获取反向shell的脚本

因为我知道该应用程序是一个Node.js应用程序,所以我从PayloadsAllTheThings那里得到了一个反向shell,并更改了IP /端口来匹配自己服务器:

上传shell

本来想说尝试上传脚本,但它被阻止了。不过这是一个由JavaScript触发的消息,因此我使用Burp历史记录来检查加载的脚本文件。

然后我就找到了罪魁祸首,客户端验证代码:/assets/js/upload.js

如果要拦截JavaScript文件,我需要更改代理选项以拦截JS文件,因为默认情况下Burp Proxy是不会拦截它们的:

删除条件^.js$后,使用Ctrl-F5重新加载页面来实现强制完全刷新。

upload.js请求被拦截时,再指示Burp拦截其响应(Do Intercept->Response to this request)并删除上面标记的行。

虽然我已经试图重新上传了,但它还是失败了,这次是在服务器端完成的验证。

在理想情况下,服务器应执行客户端执行的所有验证。毕竟客户端验证只是为了可用性。最终的安全性只能通过服务器端验证来提供。

不过现实很骨感,服务器执行了其他验证。我将文件扩展名更改为jpg并重试上传。这一次它成功了。

查找已上传的shell

我刚刚上传的文件在任何目录中都找不到其已知文件名。然后我使用提供的单词列表重新运行目录的模糊测试。

这一次,我在那里找到了一个额外的文件:

获取反向shell

/admin/页面上,我可以激活/modules/目录中的模块,服务器应该强制它不接受任何其他位置。

我刚刚上传的文件位于/content/ .不过可能没有适当的验证来防止路径遍历。

然后我在我的机器上启动一个监听器nc -nvlp 8888,并通过其相对路径激活模块:../content/WON.jpg

我收到的 shell 显示应用程序以 root 身份运行。因此,不需要权限提升,我可以立即获得flag:

shell
本作品采用《CC 协议》,转载必须注明作者和本文链接
研究人员在TorchServe中发现多个高分漏洞,影响数万AI 服务器。
通过从事件日志中写入/读取 shellcode 来实现持久化。
shellcode loader的编写
2023-04-17 11:15:39
改变加载方式指针执行#include?参数1:分配的内存的起始地址,如果为NULL则由系统决定。参数2:分配的内存大小,以字节为单位。参数3:分配的内存类型,MEM_COMMIT表示将分配的内存立即提交给物理内存,MEM_RESERVE表示保留内存但不提交。参数4:分配的内存保护属性,PAGE_READWRITE可读可写,PAGE_EXECUTE_READ可执行可读。结构体的指针,用于指定新线程的安全属性,NULL表示默认安全属性
shellcode动态注入!
2023-01-24 10:15:10
声明:本人坚决反对利用文章内容进行恶意攻击行为,一切错误行为必将受到惩罚,绿色网络需要靠我们共同维护,推荐大
跟第一代WebShell管理工具“菜刀”相比,冰蝎的流量是加密的,特征更不明显,能有效规避流量设备的检测。
shellcode编写探究
2022-06-09 15:34:57
前言shellcode是不依赖环境,放到任何地方都可以执行的机器码。shellcode的应用场景很多,本文不研究shellcode的具体应用,而只是研究编写一个shellcode需要掌握哪些知识。要使用字符串,需要使用字符数组。所以我们需要用到 LoadLibrary 和 GetProcAddress 这两个函数,来动态获取系统API的函数指针。
OneEDR 2.5版本让恶意Webshell“现原形”
今天脑子里面蹦出来个想法,免杀木马然后cs上线,本来想让cs与msf联动的,但是出了点小问题,还是先研究免杀火绒吧。
shell编程15例(三)
2022-03-25 07:43:19
1、统计当前 Linux 系统中可以登录计算机的账户有多少个 #!/bin/bash # 统计当前 Linux 系统中可以登录计算机的账户有多少个 #方法 1: grep "bash$" /etc/passwd | wc -l #方法 2: awk -f: '/bash$/{x++}end{print x}' /etc/passwd
shell编程15例(一)
2022-03-23 07:53:04
1、编写hello world脚本 #!/bin/bash # 编写hello world脚本 echo "Hello World!" 2、通过位置变量创建 Linux 系统账户及密码 #!/bin/bash # 通过位置变量创建 Linux 系统账户及密码
VSole
网络安全专家