freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

关于漏洞检测适用命令的思考
2022-01-21 23:10:58
所属地 北京

通常会遇到需要发包,去观察返回结果。通过返回结果去判断命令是否执行。在一大段返回文本中去匹配字符查看命令是否执行。

由于对于服务器是未知的,我们无法判断服务器的系统类型。如windows/linux。这就造成了命令选取的差异,如查询ip,在windwos下是ipconfig,linux下是ifconfig。

我查询了一些同行的脚本编写,

案例1  如下,通过执行ip a 然后在返回结果中查看是否包含inet 和inet6判断命令是否执行。
imageimage
案例2 如下,通过执行netstat -ano 去判断命令是否执行,这个命令同时满足了windows/linux两个系统。我觉得可用性非常高。

但是在后续的批量测试中,我似乎发现了这种验证方式的弊端,批量测试我需要一个时间,netstat命令有时候返回的时间太长,会有连接超时的情况,在批量测试下会有很多地址测试不到。
image那么有没有一个命令能满足我的需求,返回结果速度快,且误报率小;

通过查询资料我想到我可以用&进行连接 & 之后的命令无论如何都会被执行;

如下 ifconfig&ipconfig:
image但是这并不是最优解,后续我并不知道匹配哪一段文字会让我的误报最小。

于是有了如下命令:

echo 1^2^3^4^5  1\2\3\4\5

windows 执行效果:
image
linux 执行效果:
image
我只需要构建一个我认为根本不可能存在的字符串,然后去判断结果中是否存在这个字符串。就能得到我想要的测试效果:
image
ps.脚本利用的是ognl命令执行,有点特殊,4个\代表一个。

# web安全
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者