gophish的二开潦草记录
hikeny 安全鼓励师

gophish添加二维码

如何设置邮件模版?

先从接口入手/api/templates

controllers/api/template.go

post请求创建新的template

image

查看结构体

Template结构体里面包含了Attachments结构体

image

再跟进PostTemplate函数,该函数将结构体里的数据存入数据库中

image

查看一下数据库里template和attachment表

image

那么,写一下生成二维码的函数?二维码图片怎么弄?

  • 写入数据库或者文件中❌
  • go实时生成✅

.URL是怎么在保存邮件时解析成xxx?rid=xxx的

我一看,就是用go模版引擎的占位符,在运行时动态插入的(其实问的gpt)

gpt哥给我说这样用template.New来创建新的模版

image

我听gpt哥的,全局搜索一下这个函数

image

封装在ExecuteTemplate函数中,再看看哪里用了ExecuteTemplate函数

image

你很可疑!让我看看

image

哟西,找到了,这里设置模版的内容并返回

image

我直接在里面加二维码生成的函数

记得在PhishingTemplateContext这个结构体上也加上QRCode

image
image

让我来试试效果,完美~

再加个自动补全

image image image

gophish添加附件

设置自动生成附件名字

添加一个input

image

在js中传参(不只这一处,envelope-sender出现的地方都加上,dismiss函数里也加上)

最终需要在template.min.js文件中修改,因为gophish用的全是min.js里的。。。。

image

数据库和结构体添加这个AutoFile字段

json:从json里面的这个字段读取数据

gorm:保存到里面的这个字段的数据库里

image

添加自动生成附件功能

怎么生成附件?每发个邮件就编译生成一个exe是不是太繁琐了。突发奇想,初始化的全局变量和静态变量不都在data区吗?那不直接拿一个exe,直接替换url就行了

思路:

  • 先写一个exe,功能为使用默认浏览器打开指定的url
  • gophish每次发送邮件时,获取该exe的字符串值,并将url替换为phishUrl,然后再转换为base64,通过内置函数添加到附件里

如何在发送邮件添加附件?

直接看发送邮件的api

api/campaigns

image

查看路由,绑定了as.Campaigns函数,跟进看一下

image

看一眼Campaign的结构体,附件文件的内容就在Campaign->Template->Attachments->Content

附件的结构体

image

里面2个重要函数

  • PostCampaign:保存Campaign
  • LaunchCampaign:执行Campaign,就是发邮件
image

看看LaunchCampaign函数,只有一个地方实现了这个接口,进去看看

image image

代发送的邮件加入了w.mailer这个对象的队列,这个对象里看看有没有实现发送邮件的方法

image image

跟过来,找到了发送邮件的函数sendmail

image

Generate函数创建email的内容,在这个函数里应该就可以把自动添加附件的功能加上去了

image

找找看在哪,跟过去看到这里有三个地方实现了这个抽象方法,去mailog实现的方法去

为什么是maillog呢?

不知道,看注释里EmailRequest貌似是给发送测试邮件用的

image

发送邮件的时候添加附件的位置就在这儿了

image

添加自动生成附件功能

上面分析到了发送邮件添加附件的方法,在上面直接加判断,AutoFile不为空时,直接读取写好的exe,将url替换后转换为base64传入Attachment结构体中,用addAttachment函数加到邮件的附件中,顺便把原来的附件也给省略掉了。

我在ptx的结构体加了个phishURL,方便调用钓鱼url

image

试试看,可以用~

image
Powered by Hexo & Theme Keep
Total words 1.4k Unique Visitor Page View