【Fscan】| POC与指纹编写

admin 2025年3月17日20:41:27评论18 views字数 2028阅读6分45秒阅读模式

我们的fscan已经集成了600+个POC,新增的大多数是内网监控、运维等设备,共3000+个指纹,由于新版的fscan很多问题,issue很多,原作者还没解决,所以我们也给旧版的编译一份。

【Fscan】|  POC与指纹编写

本次POC的编写会基于实际情况编写,之后根据POC跟着写就好啦

GET的WebPOC

写一个WebPOC需要http请求包、回显特征等,而http请求包可分为请求方法method、请求路径path、请求头headers、请求体body等。下面是一个基本的fscan WebPOC格式,其中注意的点是:

  • 尽量使用空格,不使用Tab,每个键与键之间间隔回车与两个或者四个空格(如headers和User-Agent),键和值之间相隔一个空格(如name: poc-xxx)。
  • 对于想要指定多个headers的POC可以在下面继续写,并且键是没有限制的(请求包的字段是什么就写什么,如User-Agent与Content-Type)。对于User-Agent、Accept、Accept-Language这些头,是有默认值的,除非需要,不用特意去写它们。
  • 对于需要多个请求来验证的如下,可以使用多个(- method)方式来请求,一个POST和GET是可以的,当前仅当前一个请求符合规则才会执行下一个。
  • 对于返回包的规则验证需要使用expression键,这个在下文讲解。只要知道值自己占一行或多行就使用|号就行
【Fscan】|  POC与指纹编写

POST的WebPOC

对于POST的大致请求格式和GET差不多,主要想说一下body键,body键可以占多行,用|号表示一下就行,要注意的是body值每一行开头与body键的相对位置。

【Fscan】|  POC与指纹编写

特征值expression

特征值单独起一行就行了,用|号表示。获取返回的数据可以使用response,其中有response.status、response.body、response.headers,下面列举我能想出了多种情况:

  • 响应码:response.status == 200 和 response.status != 200
  • 响应头:"Server" in response.headers 和 response.headers["Server"].icontains("Microsoft-IIS") 和 response.headers["Server"] == "abc"
  • 响应体:esponse.body.bcontains(b"404 not fount") 和 "root:[x*]:0:0:".bmatches(response.body)

注意的地方,bcontains是匹配二进制数据,需要使用b""形式或者其他返回值为byte的函数。如果要对字符串匹配则使用icontain函数,这个函数不会考虑大小写。bmatches函数则是正则形式的匹配。

Set规则以及一些函数

以上内容已经可以应对95%的情况了,下面讲讲一下别的情况,都知道最近的Tomcat 2025RCE漏洞吧,下面给出一张图。下图中内容有base64解码,fscan中也是可以实现这种情况的:

【Fscan】|  POC与指纹编写
【Fscan】|  POC与指纹编写

这里使用到Set规则,这个规则就相当于一个全局变量,你可以在Set规则中定义他,在其他地方使用{{xxx}}使用他。另外这里出现的base64Decode函数也就是解码用的,fscan内置挺多函数的,可以在WebScan/lib/eval.go文件中看到:

【Fscan】|  POC与指纹编写
【Fscan】|  POC与指纹编写

还有额外的,例如hex、url编码,随机数、substr函数、wait函数等,在这里就不再解释他们了。注意的是wait函数不是验证延时的,所以fscan似乎没有提供判断延时的方法函数(如果我有疏忽私信我哈)。

Set规则中还有一些使用场景,可以减少很多的工作量:

【Fscan】|  POC与指纹编写

其他规则

groups规则

如果遇到这样一种情况,文件读取,目标系统可以是windows或linux,就可以用到groups规则了,会对groups下一级的规则都进行验证,直到验证完或有一种情况满足。

【Fscan】|  POC与指纹编写

follow_redirects规则

这个是重定向,如果设置为true则expression验证对象会变成重定向之后的:

【Fscan】|  POC与指纹编写

search规则

如果第二次请求需要用到上一次请求返回的值,则需要使用到search规则:

【Fscan】|  POC与指纹编写

detail规则

这个规则可以添加作者、链接、描述等内容,主要是如下四要素:

【Fscan】|  POC与指纹编写

指纹

旧版的fscan是可以根据根据特定指纹信息去打出对应POC的:

【Fscan】|  POC与指纹编写

指纹添加的地方在WebScan/info/rules.go中:

【Fscan】|  POC与指纹编写

但是指纹越多误报率就越高,所以作者新增了一些特定的指纹,只有是特定的指纹才会调用特定的POC:

【Fscan】|  POC与指纹编写

对于指纹信息,fscan还提供了body的md5信息,但是这个功能被注释掉了(没啥用):

【Fscan】|  POC与指纹编写

圈子介绍

圈子内部致力于红蓝对抗,武器免杀与二开,不定期分享前沿技术文章,经验总结,学习笔记以及自研工具与插件,进圈联系~、

圈子已满165人,目前价格199,学生优惠30

200人后升价249

【Fscan】|  POC与指纹编写

【Fscan】|  POC与指纹编写

原文始发于微信公众号(半只红队):【Fscan】| POC与指纹编写

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年3月17日20:41:27
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【Fscan】| POC与指纹编写http://cn-sec.com/archives/3850495.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息