nebula-explorer-3.1.2.x86_64
nebula版本3.2.0
点信息
vid: “45.155.205.130”
default.timestamp: “1663568762491”
边信息
id: $attack 45.146.164.80->172.18.120.106 @1663568762804
attack.app_proto:
attack.attacker_port: 55278
attack.name: 端口扫描
attack.phase: recon
attack.proto: TCP
attack.result: unknown
attack.severity: 3
attack.tag: 扫描器
attack.timestamp: 1663568091005
其中timestamp是13位时间戳
在通过条件筛选时候会报错
paload
{“gql”:“MATCH p=(v)-[e:attack
|:visit
*1]-(v2) \nWHERE id(v) IN ["172.18.120.106"] \n AND ALL(l IN e WHERE l.undefined >= undefined) RETURN p LIMIT 100”}
截图,显示500
刷新页面后还会复现吗?过滤其他属性字段呢?我们用统一的版本试了下,没复现出来这个问题,另外看你报错的请求和截图貌似不是一个状态下的。最好能清空状态后,拓展然后看下报错
测试发现并不是只有timestamp字段筛选不行,其他字段也有可能报错。这是proto字段筛选报错
ErrInternalServer::-1009:SemanticError: Alias used but not defined: `http’
举个例子:这样是报错的
{“gql”:“MATCH p=(v)-[e:attack
|:visit
*6]-(v2) \nWHERE id(v) IN ["45.155.205.130"] \n AND ALL(l IN e WHERE l.name == HTTP) RETURN p LIMIT 100”}
这样是OK的
{“gql”:“MATCH p=(v)-[e:attack
|:visit
*6]-(v2) \nWHERE id(v) IN ["45.155.205.130"] \n AND ALL(l IN e WHERE l.name == 222) RETURN p LIMIT 100”}
大概了解了,原因是name这个字段是int类型的,所以对name的过滤值必须是数字。后面我们对这个处理一下,int类型输入非字符串给个提升。
timestamp字段的问题我们再看下原因
name字段是string类型 这是让我疑惑的点。timestamp
这是对timestamp的过滤gql
{“gql”:“MATCH p=(v)-[e:attack
|:visit
*6]-(v2) \nWHERE id(v) IN [“45.155.205.130”] \n AND ALL(l IN e WHERE l.timestamp == 1663568486473) RETURN p LIMIT 100”}
name我看获取到是Int64,所以才有大于小于号可选。这行ngql我看没毛病,会报错吗?
找到原因了,timestamp是关键字 ,所以导致了报错,这个我们下个版本处理下关键字,感谢发现了这个BUG
name是string类型,在查询的时候需要加双引号。
可以考虑在文档中列一下关键字列表,因为我在创建tag和边的时候也遇到过因为关键字导致创建失败的问题,所以我把所有的属性都加了``作识别。
system
关闭
2022 年10 月 28 日 03:11
18
此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。