我们的fscan已经集成了600+个POC,新增的大多数是内网监控、运维等设备,共3000+个指纹,由于新版的fscan很多问题,issue很多,原作者还没解决,所以我们也给旧版的编译一份。
本次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键,这个在下文讲解。只要知道值自己占一行或多行就使用|号就行
POST的WebPOC
对于POST的大致请求格式和GET差不多,主要想说一下body键,body键可以占多行,用|号表示一下就行,要注意的是body值每一行开头与body键的相对位置。
特征值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中也是可以实现这种情况的:
这里使用到Set规则,这个规则就相当于一个全局变量,你可以在Set规则中定义他,在其他地方使用{{xxx}}使用他。另外这里出现的base64Decode函数也就是解码用的,fscan内置挺多函数的,可以在WebScan/lib/eval.go文件中看到:
还有额外的,例如hex、url编码,随机数、substr函数、wait函数等,在这里就不再解释他们了。注意的是wait函数不是验证延时的,所以fscan似乎没有提供判断延时的方法函数(如果我有疏忽私信我哈)。
Set规则中还有一些使用场景,可以减少很多的工作量:
其他规则
groups规则
如果遇到这样一种情况,文件读取,目标系统可以是windows或linux,就可以用到groups规则了,会对groups下一级的规则都进行验证,直到验证完或有一种情况满足。
follow_redirects规则
这个是重定向,如果设置为true则expression验证对象会变成重定向之后的:
search规则
如果第二次请求需要用到上一次请求返回的值,则需要使用到search规则:
detail规则
这个规则可以添加作者、链接、描述等内容,主要是如下四要素:
指纹
旧版的fscan是可以根据根据特定指纹信息去打出对应POC的:
指纹添加的地方在WebScan/info/rules.go中:
但是指纹越多误报率就越高,所以作者新增了一些特定的指纹,只有是特定的指纹才会调用特定的POC:
对于指纹信息,fscan还提供了body的md5信息,但是这个功能被注释掉了(没啥用):
圈子介绍
圈子内部致力于红蓝对抗,武器免杀与二开,不定期分享前沿技术文章,经验总结,学习笔记以及自研工具与插件,进圈联系~、
圈子已满165人,目前价格199,学生优惠30
200人后升价249
原文始发于微信公众号(半只红队):【Fscan】| POC与指纹编写
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论