内网扫描器在vCenter低权限下爆破Postgres的报错问题
前言:内网扫描器在vCenter机器低权限用户下爆破pg服务出现pgservicefile报错问题,这边简单进行修复
参考文章:https://github.com/lib/pq
参考文章:https://github.com/shadow1ng/fscan/issues/77
参考文章:https://3gstudent.github.io/vSphere开发指南4-PostgreSQL
问题情况
在内网中使用扫描器发现在vCenter低权限机器下面进行扫描爆破相关的pg服务的时候会导致出报错情况,如下图所示
通过查阅fscan相关的issues中也发现了类似出现的问题,如下图所示
在三好学生的文章中发现具体报错的原因,发现这是因为vCenter环境下默认设置了环境变量$PGSERVICEFILE
,而通过go get github.com/lib/pq
安装的第三方包默认引用了这个变量,这就导致了错误,如下图所示
解决方法
这边直接可以观察go get github.com/lib/pq
第三方库的的github.com/lib/pq@v1.10.9/conn.go:2009
实现情况,如下图所示
如果当前机器存在环境变量的话,那么首先会解析机器中的环境变量情况,如果存在PGSERVICE, PGSERVICEFILE, PGREALM
的变量信息的话,那么则直接会调用unsupported异常情况
完整的报错调用链情况,如下所示
github.com/lib/pq@v1.10.9/conn.go:329
github.com/lib/pq@v1.10.9/conn.go:334
github.com/lib/pq@v1.10.9/connector.go:47
github.com/lib/pq@v1.10.9/conn.go:2009
重新forkgithub.com/lib/pq
,然后注释pgservicefile部分,进行重新推送
最后在扫描工程中进行replace或者直接引用即可