freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

Goby自定义编写EXP进阶篇:以SQL注入为例的高阶变量用法讲解
GobySec 2024-12-27 22:27:49 71344
所属地 湖南省

在上一篇中,我们已经介绍了Goby PoC模板的基础构成,但是遇到更加复杂型的漏洞,需要用到一些特殊参数和自定义变量。

入门篇传送门:Goby自定义编写EXP入门篇:编写模板基础使用讲解

今天,我们以 SQL注入漏洞类型为例,讲解一些基础参数和变量的用法。

进阶篇:Goby PoC/EXP编写中的参数及自定义变量用法

首先,我们拿到一个SQL注入类型漏洞的请求包和响应包信息(以“JeecgBoot onlDragDatasetHead/getTotalData SQL注入漏洞”为例)

POST /jeecg-boot/drag/onlDragDatasetHead/getTotalData HTTP/1.1
Host: 
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en-US;q=0.9,en;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.5414.75 Safari/537.36
Connection: close
Content-Type: application/json
 
{"tableName":"sys_user","compName":"test","condition":{"filter":{}},"config":{"assistValue":[],"assistType":[],"name":[{"fieldName":"concat(0x7e,version(),0x7e)","fieldType":"string"},{"fieldName":"id","fieldType":"string"}],"value":[{"fieldName":"id","fieldType":"1"}],"type":[]}}

扫描测试模块(PoC)

在漏洞扫面测试模块中,逻辑上分为两个步骤:

1.发送数据包

2.检测返回包中是否存在某特征来确定是否存在漏洞。

先捋一下思路:

需要在请求包中构造一个SQL注入语句,让测试目标网站进行响应(响应的内容需要证明SQL能够注入)。我们可以在请求包中执行一串8位数的随机数并进行MD5加密,需要判断响应包中是否返回了这条语句结果,来检测测试网站是否存在注入漏洞。

清晰检测逻辑后,返回到Goby的PoC编写页面:

首先需要定义两个全局变量,以实现”生成随机8位数“和”MD5加密“。

这里四个输入项分别代表:# 变量名称、值、源值、操作/类型

那么,这两条变量定义分别表示

1、给rand_int赋值一个变量1{{{rand|int|8}}}。在Goby的json编写规约中:rand表示随机生成大小写字符串或者纯数字,int表示随机生成的为数字(若需生成字符串则定义为str),8表示数量。

2、把{{{rand_int}}}作为变量2,进行md5加密操作后,赋值给rand_int_md5。

转编译到编辑器代码中展示为:

请求包:

根据上述思路,构建请求包:

把rand_int注入到请求包中发送,让测试目标服务器用MD5函数加密这串随机值,输出在响应包中。

响应测试:

在响应包中,响应码为200并且Body中有服务器加密后的MD5值则注入成功,判断漏洞存在。

输入靶场目标进行测试:

利用测试模块(EXP):

利用测试模块中,一共包含两个模块:输入(EXP Params)、输出(Output)

输入(EXP Params):

首先,在漏洞信息页面,勾选Has EXP,定义EXP Params(利用输入))

定义一个名称为attackType(攻击类型),给它的值为default(默认)、custom(自定义)、sqlpoint(输出请求包),模式为select,最后一个框默认为show,这里表示在图形化界面显示一个名称叫attackType的下拉列表,有default、custom和sqlpoint为它的三个选项。

default:默认值设置为“select database(),select version(),select user()”,以英文逗号隔开,模式设置为select。

在图形化界面中表示名称叫Default的下拉列表,提供三个默认SQL执行语句选项,分别为:

查询数据库名称、查询数据库版本号、查询数据库账号。

custom设置为input,提供默认值为select database(),支持自定义输出SQL语句。

sqlpoint模式:根据请求包内容进行输入,在注入点自动填充”*“,输出一个请求包语句,方便复制到sqlmap上进行检测。

(可根据需求自行选择是否增加此模式)

到这一步,已经了解变量用法的师傅应该清楚,此时需要在全局自定义变量中再增加一个变量,用于定义利用输入变量:设置全局自定义变量paylod,表示把在EXP Params中定义的attackType所选择的值赋值(switch))给payload且默认值为default。

输出(Output):

在SQL注入漏洞EXP测试中,我们需要构造一个能够返回执行语句结果的请求包,我们需要把想要执行的SQL语句传到注入点,发送请求包后再提取想要的输出信息。

请求包:

填写请求包对应信息,把响应测试中的请求包注入点替换为变量{{{payload}}}即可

响应包中会包含非常多的信息,可以在{{{payload}}}变量前后添加~~~,在Output中通过正则表达式过滤掉其他多余信息即可

在注入点构造一个SQL拼接语法:concat(0x7e7e7e,({{{payload}}}),0x7e7e7e),0x7e7e7e是”~~~“的16进制,将测试服务器对{{{payload}}}语句执行的结果用"~~~"包裹。

对应到output自定义变量,使用此正则表达式即可提取想要的执行结果。

在利用测试环节响应测试匹配响应码200即可:

若在attackType中定义了sqlpiont,则还需要增加一个output自定义变量(若在attackTye模块未定义则不需要添加):

此条变量表示当attackType选择为sqlpoint时,output的信息为

{{{lastreq}}}{"tableName":"sys_user","compName":"","condition":{"filter":{}},"config":{"assistValue":[],"assistType":[],"name":[{"fieldName":"concat(*)","fieldType":"string"},{"fieldName":"id","fieldType":"string"}],"value":[{"fieldName":"id","fieldType":"1"}],"type":[]}}

变量lastreq表示最后一个请求包的请求体,表示把最后一个请求包的请求体和PostData拼接成一个完整的请求包,并把注入点替换为“*",以便复制到sqlmap进行url检测。

EXP输出测试:

成功输出select user()的执行结果。

Goby 欢迎各位师傅加入我们的社区大家庭(添加:gobyteam,发送暗号“加群”),一起交流、生活趣事、奇闻八卦,结交无数好友~

# 渗透测试 # 网络安全 # web安全 # 网络安全技术
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 GobySec 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
GobySec LV.6
Goby作为一款新型网络安全测试工具,能够为目标企业梳理最为全面的攻击面信息。它不仅可以开展高效且实战性强的漏洞扫描工作,还能迅速从一个验证入口点实现横向切换。此外,Goby拥有超强的AI功能,能够高效率地转化PoC(概念验证)/EXP(利用验证)。 goby官网:https://gobysec.net/
  • 67 文章数
  • 117 关注者
Goby 漏洞发布|CVE-2024-9047 WordPress File Upload 插件 wfu_file_downloader.php 任意文件读取漏洞
2024-12-25
Goby自定义编写EXP入门篇:编写模板基础使用讲解
2024-12-20
Goby AI 2.0 自动化编写 EXP | Mitel MiCollab 企业协作平台 npm-pwg 任意文件读取漏洞(CVE-2024-41713)
2024-12-11
文章目录