实战|记一次从文件备份泄露到主机上线

VSole2023-08-08 09:22:19

前言

记录下某个测试项目中,通过一个文件备份泄露到主机上线的过程。

文件备份泄露

对于测试的第一项当然是弱口令,bp跑了一通词典,无果。目录又爆破了一通,发现一个web.rar可通,赶紧下载看看,如下图所示。

代码审计

解压瞅了瞅,源代码为ASP.NET框架的,这个真不懂,只能先用Fortify快速扫描一番,此处略过。

配置文件+未授权访问

扫描之后,看了下报告排除了误报,发现某个xml配置文件包含了很多信息,比如数据库账号密码,微信AppId等等。

习惯性将路径拼接一下访问一下url,好家伙,未授权。

默认账户密码

同时注意到了配置文件中还有一行定义了默认登录账户和密码哈希。

于是在cmd5对此哈希进行解密,并成功获取账号明文密码。

返回到登录界面,输入了刚才账户和解密的密码之后,果不其然,等登录验证成功之后跳转了系统内部。

储存型XSS

在Fortify的扫描报告中有多个反射xss漏洞信息,不过随便点开功能栏,存在许多输入框,便觉得肯定存在储存xss,随便找一处,输入经典测试语句<script>alert(1)</script>点击保存并刷新,果然弹出了窗。

文件上传

刚找到一个xss,便不在测试了,此站点未进行任何xss过滤,肯定到处是xss漏洞。又在项目信息处找到了一个上传点,简单用哥斯拉生成一个webshell:test.asp,点击上传发现webshell上传成功,但是未返回文件上传路径,且文件名被改写为参数形式了。

可以通过选择下载刚才上传的文件获取到新的文件名,但是问题是不知道上传到了那个目录下。

好在有源代码,通过关键词语搜索全局,找到多个名为uploadfile的文件夹的路径,通过这些路径拼接到url并一个个尝试访问即可,如下图,访问未报错即证明路径正确。

使用正确的url通过哥斯拉连接成功,GetShell达成。

未授权访问+数据查询+xp_cmdshell=RCE

在getshell之后,并未停止测试脚步,发现了一处sql查询页面,除了可以查询数据库内容外,还可以执行sql语句。

考虑到配置文件的未授权访问,于是又在bp中删除了cookie,发现此查询页面也可以未授权访问,而由代码审计中的配置文件知道数据库为sql server,如果可以开启xp_cmdshell,那么便可以直接远程命令执行。

xp_cmdshell

这里简单介绍一下xp_cmdshell 扩展存储过程将命令字符串作为操作系统命令 shell 执行,并以文本行的形式返回所有输出。

关闭

EXEC sp\_configure 'show advanced options',1;
RECONFIGURE;
EXEC sp\_configure 'xp\_cmdshell',0;
RECONFIGURE;

启用

EXEC sp_configure 'show advanced options',1;
RECONFIGURE;
EXEC sp_configure 'xp\_cmdshell',1;
RECONFIGURE;

这里直接将开启xp_cmdshell的sql语句执行,未报错。

再通过xp_cmdshell执行whoami命令,结果为system。

随后通过"dir /s /b c:\Web.config“命令查询应用系统的绝对路径,通过下图可知返回了两个路径,在排除一个之后获得了系统的绝对路径。

在获取绝对路径之后,通过echo命令将一句话木马写入,执行未报错即写入成功。

再将webshell拼接为url,通过哥斯拉连接,再次成功GetShell。

上线

虽然之前的都比较顺利,但是在执行上线的时候遭遇了挫折,首先是通过Cobalt Strike的pwoershell一句话和bitsadmin上线均失败,显示拒绝访问。

再生成可执行文件木马上传,直接上传失败,那几乎可以确定了存在杀软,其实在执行这些之前应该先查询杀软是否存在,此处不该莽撞。

查询

通过webshell执行tasklist命令列出进程列表,查看进程信息。

这里将进程信息放进潇湘老哥的杀软查询工具中快速对比,获知主机开启了360和安全狗。emm...看来只要过360免杀就行了。

免杀

对我而言,免杀只能找到github上的大佬工具来用了,在Cobalt Strike中生成shellcode并通过一个目前可用的免杀工具生成木马,在vps用python -m http.server开启一个简单http服务,获取一个远程下载地址,通过远程下载,将木马成功下载到目标主机。

执行,等待几秒钟,主机上线。

结语

简单总结一下,通过文件备份泄露,简单审计一下获取配置文件的账号密码登录到系统内部,再找到文件上传点和sql执行点,通过webshell绕过杀软并主机上线,思路为:信息搜集=>打点=>命令执行=>防御绕过=>上线。在fofa搜索一下,使用此应用系统的资产大约有二十几个,算是个小通杀。

webshell
本作品采用《CC 协议》,转载必须注明作者和本文链接
webshell新工具 -- PyShell
2023-07-24 10:21:11
0x01 工具介绍PyShell是多平台Python WebShell。该工具可以帮助您在web服务器上获得shell式的界面,以便远程访问。与其他webshell不同的是,该工具的主要目标是在服务器端使用尽可能少的代码,而不考虑使用的语言或服务器的操作系统。您可以在 Windows 和 Linux 中使用不同类型的 shell,具有命令历史记录、上传和下载文件,甚至可以像在目录中一样移动标准外壳。
场景:己经拿到了一个webshell,但是无法正常执行命令,因为被360安全大脑的主动防御拦截了。由于目标是 java 环境,这里可以尝试利用 jsp 执行系统命令上线,具体做法是先写一个 jsp的脚本然后放到 weblogic 的 webshell 路径下,如果找不到 webshell 可以使用文件查找命令dir c:\ /s /b |find "fuck4.jsp"
Webshell-Sniper是一款使用Python编写的基于终端的Webshell管理器,和以往我们分享的Webshell管理工具有所不同,所有操作都在终端中完成。使用它可对您的网站进行远程管理。虽然它没有图形化的GUI也没有WEB界面,但这样的操作也是另有一翻感觉。功能基于终端的shell交互反向连接shell数据库管理Webshell-Sniper安装与使用环境服务端 :. 需要注意的是,Webshell-Sniper服务端只支持Unix系统环境。
0x01 工具介绍该工具没什么技术含量,学了一点javafx,使用jdk8开发出了几个简单功能用来管理webshell。工具整合并改写了各类webshell,支持各个语言的cmd、蚁剑、冰蝎、哥斯拉,又添加了实际中应用到的一些免杀技巧,以方便实际需要。0x02 安装与使用直接下载releases版即可。
Webshell 检测综述
2022-12-15 09:45:32
通过Webshell,攻击者可以在目标服务器上执行一些命令从而完成信息嗅探、数据窃取或篡改等非法操作,对Web服务器造成巨大危害。Webshell恶意软件是一种长期存在的普遍威胁,能够绕过很多安全工具的检测。许多研究人员在Webshell检测领域进行了深入研究,并提出了一些卓有成效的方法。本文以PHP Webshell为例。
动态函数PHP中支持一个功能叫 variable function ,变量函数的意思。//最终是system;当一个变量后边带括号,那他就被视作一个函数。编译器会解析出变量的值,然后会去找当前是否存在名为“system()”的函数并执行它。这里就不给实例了,很多免杀案例中都用到了这个特性。也是被疯狂查杀的特征。回调函数回调函数,简单来说就是一个函数不是由我直接调用,而是通过另一个函数去调用它。
前言提到webshell免杀,方法无外乎对静态特征的变形,编码,或利用语言特性绕过。计算机中有很多符号,它们在编程语言中占据一席之地,这些符号作为运算符号,标识符号或起到特殊含义。本文以PHP为例介绍一些利用符号免杀方法。免杀WAF检测通过对安全狗、护卫神、D盾等常见软WAF的测试,发现WAF查杀主要依赖两种检测方法1.静态检测:通过匹配特征来查找webshell。如危险函数,文件特征码等。例如 ${$my_var[8]}与${$my_var}[8]的区分${xxx} 括起来的要当成变量处理。
通过URL信息获取如果能获取到恶意请求的URL信息,就可以根据URL信息定位到Webshell文件。URL信息可以通过态势感知、WAF等监测预警系统获取,也可以通过对系统异常时间段的Web日志进行审计获取。通过扫描工具扫描获取通过Webshell查杀工具进行扫描,可以定位到部分免杀能力不强的Webshell文件。默认情况下,Windows将仅在索引位置中查找最近修改的文件。
webshell免杀之传参方式及特征绕过传参方式 在这里解释一下为什么,需要讲述传参方式,由于在很多情况下,以请求头作为参数传递并非waf和人工排查的重中之重且非常误导和隐藏
VSole
网络安全专家