实战渗透-文件上传垃圾字符Bypass waf

从1月份入坑到现在,已经5个月了。这五个月来一直在刷edusrc,并且在本月初成功达到了总榜第五名。很多人问我如何快速批量刷站?那么,他来了。本次分享一次对自己学校的一次安全检测实战文章。帮助萌新理清思路,同时,欢迎各位大佬指点不足。

0x01

先看学校的域名ip地址
注意:这里我建议不要看主域名的,看二级域名的ip地址。因为一些地区的职业院校都是集中统一在一台服务器上的,只有一些二级域名才会搭建在学校的机房里面
如我们学校的二级域名:
creat..com 上面搭建的系统是智慧校园系统。IP归属地与学校地理位置符合。
那么开始找C段。
fofa关键词: 12.230..1/24
在12.230..194:8000下面找到一个系统。功能不详。
因为只有一个登录

1.jpg

类似系统有很多,比如OA等。这些系统开始都是一些登录,且是一个闭源程序,一没办法本地测试,二是不能代码审计。

我个人比较常用的方法:

查看HTML源代码-》提取特有文件名/路径等-》FOFA寻找相同网站-》猜测弱口令-》挖掘0day-》Getshell

因为程序本身就是闭源,开始的一个登录就让大部分人束手无策。无法探测到里面的内容
所以,遇到此类程序的第一种快捷方法: 找相同程序的弱口令

在首页HTML源代码中,发现一处AJAX请求地址,

/Service/C.asmx/Get
2.jpg
那么我们就可以直接搜索这个文件名,就能获取到一些相同程序的站点

3.jpg

同样,搜索到的站点也是只有一个登录页面。那么我们可以挨个测一下弱口令

最终。发现一个类似于开发厂商的测试站点。 admin /admin 成功登录进去

4.jpg

看到相应功能,就知道,这是啥了。。我们学校的大屏幕就是这玩意管理的

那么,废话不多说,开始测试功能

简单粗暴的来到个人中心(因为这里一般都会有更换头像的地方)
5.jpg

先试着穿一个jpg文件。

成功上传并返回一个地址:
6.jpg

然后更改文件名为:test.aspx
7.jpg

出现error,根据个人经验,出现这类问题,我一般喜欢在传一个ss.jpg。与成功上传的test.jpg同类型不同名

来判断是否为白名单。

发现ss.jpg也会出现error

8.jpg

那么,这里可以得出结论,之前的手法与白名单无关。

看了对应的参数:fileToUpload (上传的文件) directory(文件存储路径) ticket不详

当我将返回包更改为初始成功上传的状态的时候,更改了Ticket的内容。发现出现error
9.jpg

那么可以肯定,能否成功跟这个Ticket有关系。

将所有窗口关闭,一步一步对比。发现Ticket生成的请求包
10.jpg

多次测试。发现。生成Ticket的文件名必须要跟上传文件名相同才能成功上传。

那么生成一个test.ashx(个人喜欢) 得到的Ticket替换之前的

成功拿到shell。

那么这就是一个0day。有了这个系统的0day。我就可以拿去打自己学校的系统了

0x02

将HOST地址改成自己学校的地址,发送数据包,发现直接rest了。。。。不用想,肯定是有狗。

11.jpg

asp,aspx,ashx,asmx,cshtml(不解析) 多个测试。发现都是直接rest

进行信息收集,知道了是奇安信WAF

。。。类型检测+内容检测。。。

玩nm!!!!!!!!!!!!!!

于是求助RG大哥的帮助,知道了NET平台下还有一个扩展名是SVC

github地址:https://github.com/ysrc/webshell-sample/blob/master/others/svcSmallSpy.svc

成功上传。。

12.jpg

但是访问地址出现了 500错误,也就是。。并没有被执行。。。

想到了之前自己发过的文章。。

用垃圾字符来绕。。。

Blog: www.websecuritys.cn/?p=274

经过测试发现。当内容字符逐渐变大,得到返回相应的时间也就越长。那么可以确定。后端在进行匹配。

Bypass原理。够多的垃圾字符可以消耗WAF的内存,导致Bypass

由于之前测试的结果。Ticket的文件名要跟上传的文件名相同

那么,先生成一个Ticket

这里用垃圾字符

我用了20w

内容{*.ashx}

13.jpg
得到文件的Ticket

那么,在上传的fileToUpload 的文件名,也要与Ticket的文件名相同,复制过来

同时,因为WAF自带内容检测。那么。将shell代码放在垃圾字符的末尾。

这里必须要注意:

由于垃圾字符太大。必须要用注释符号注释掉

<%--
dsadas垃圾字符
--%>
shell代码

14.jpg

成功Bypass。

拿到webshell

15.jpg

本文链接:

https://www.websecuritys.cn/archives/54.html
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 这句话的意思是:husky > pre-commit hook 失败了(添加 --no-verify 来绕过)。 其中,husky 是一个 Git 钩子管理工具,pre-commit hook 是其中的一个钩子,用于在提交代码前执行一些操作,比如代码格式化、代码检查等。如果 pre-commit hook 失败了,就会出现这个提示。 提示中提到了一个 --no-verify 参数,可以用来绕过 pre-commit hook 的检查。但是,这并不是一个好的做法,因为 pre-commit hook 的目的就是为了保证代码的质量和规范性,绕过它可能会导致代码质量下降。所以,我们应该尽量避免使用 --no-verify 参数,而是要修复 pre-commit hook 的问题。 ### 回答2: 此问题涉及到git中的pre-commit钩子(hook),可以通过加入--no-verify命令来绕过验证。 在git中,pre-commit钩子是用于在代码提交前运行脚本的钩子。它用于在代码提交之前进行某些操作,如代码规范检查、语法检查和单元测试。如果pre-commit钩子在运行期间发现问题,则会防止代码提交。 然而,在某些情况下,因为某些原因,pre-commit钩子可能会失败。当您尝试提交代码时,您可能会看到如下错误消息:“husky > pre-commit hook failed (add --no-verify to bypass)”。 在这种情况下,可以使用--no-verify命令来绕过这个问题,如下所示: ``` git commit --no-verify -m "commit message" ``` 这将绕过pre-commit钩子并执行提交。但是请注意,这只会在特殊情况下使用,如果pre-commit钩子出现问题,最好不要轻易绕过它,而是需检查并解决问题。 解决pre-commit hook失败通常需要检查pre-commit脚本中的代码以确定具体错误,例如检查代码中的错误、语法错误等等。通过解决这些问题,可以解决pre-commit hook失败的问题。 总之,当您在git中遇到husky > pre-commit hook failed (add --no-verify to bypass)问题时,您可以使用--no-verify命令来绕过它,但是最好的解决方法是检查并解决pre-commit脚本中的问题。 ### 回答3: 这个问题通常发生在使用git管理代码时出现的错误,可能有几种情况导致这个错误的出现。首先,Husky是一个流行的Git Hook库,它能够在Git操作的不同阶段自动运行脚本。这个错误通常涉及到Husky的“pre-commit hook”,也就是在提交代码前验证代码质量的钩子。 什么是Git钩子? Git钩子是一些自动运行的脚本,它们被设置在特定的Git事件上,例如提交代码、合并代码等。Git钩子路径存放在.git/hooks目录下,你可以在这个目录下查看和编辑所有可用的Git钩子。 原因一:Husky pre-commit hook 校验失败 当你将代码提交到Git仓库的时候,Husky pre-commit hook 会自动运行验证脚本来保证代码的质量。如果这些验证脚本出现了问题,Husky会报错并禁止提交代码,出现“husky > pre-commit hook failed”这个错误。这时需要检查校验代码的脚本是否有问题,例如是否有语法错误或者程序错误等。 原因二:Git 钩子脚本出现错误 除了Husky pre-commit hook校验失败之外,还有可能是Git钩子脚本出现了错误。例如,某些开发者可能会自己编写Git钩子脚本,如果这个脚本出现了问题,就会导致上述错误的出现。这时,需要检查Git钩子脚本的路径是否正确、脚本是否有语法错误或程序错误等。 如何解决 为了解决这个错误,你可以使用”–no-verify”参数来绕过Git钩子的校验。但这并不是一个好的解决方案,因为这意味着你无法保证你提交的代码符合你自己或你团队的代码质量标准。正确的解决方案是修复你的Husky pre-commit hook验证脚本或者Git钩子脚本错误,并再次尝试提交提交你的代码。如果你不确定如何修复这些错误,可以向你的团队或社区寻求帮助。如果你遇到了严重的错误,你可能需要卸载和重新安装Husky。 总之,当你遇到“husky > pre-commit hook failed”这个错误时,你应该在修复验证脚本或Git钩子脚本之后再次尝试提交你的代码,而不是仅仅“绕过”钩子的校验。这将帮助你加强你的代码质量和保持团队的开发标准。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

J0hnson666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值