记某网关系统通用漏洞的挖掘

前言

本篇文章分享一下通用漏洞挖掘的过程,想要获得通用漏洞证书,首先要求是中危及中危以上的通用型漏洞且所属公司的注册资本大于5000万。挖掘一个漏洞其实不难,个人觉得是目标公司资产的搜集。访问CNVD平台发现某网关系统被师傅提交过任意文件读取漏洞,然后搜索目标再来挖掘一下说不定能捡个漏。

未授权访问查看管理员账号密码

目标是个网关系统,使用弱口令进入系统后,开始测试功能点,在系统用户处测试抓包:

删除cookie后发现仍然可以访问管理员相关信息包括密码、手机号码等:浏览器直接访问,然后查看密码即可:

任意文件下载

后台存在日志查询功能点, 查看服务器日志时有下载功能:

点击下载并抓包:

将参数fileName的值删除重放后报错泄漏了物理路径,其中fopen(../../../log/)猜测是downFile.php文件中的源代码:

在参数fileName后拼接:../../../VAG/pag/web/html/serverLog/downFile.php,查看downFile.php源码。定义了$file_dir的值为../../../log/,这里用户传入的值$file_name没有进行任何过滤,就直接拼接在变量$file_dir后面然后使用fopen函数打开拼接后的文件。

这里使用../可以直接下载任意文件:

任意文件读取

在测试服务器日志时,服务器返回的代码中含有参数showFile.php?fileName=:这里构造数据包/serverLog/showFile.php?fileName= 可以直接查看目标源文件:

在测试过程中发现存在未授权访问,在浏览器中可以直接读取文件源代码:

未授权创建存储型XSS

发现在资源管理功能点存在未授权,可以创建存储型XSS,插入XSS平台地址:

当管理员访问资源管理功能点时:

XSS平台成功获取到系统管理员cookie:

任意用户密码修改

在后台管理测试修改密码功能点,这里原始密码随意输入,点击保存并抓包。
发现在/data/checkIsExist.php数据包中会对当前账户的原始密码进行校验,原始密码错误返回1,密码正确返回0。

这里将服务器返回的数据包修改为0,进入下一个数据包,这里是对密码进行修改。

释放数据包后显示密码修改成功:

使用修改之后的密码去尝试登录,可以成功登录到管理后台。

此时想到这个系统存在很多未授权操作,如果修改密码功能点也存在未授权,那么就可以直接重置系统任意用户的密码。

这里浏览器直接访问修改密码的URL,发现用户名为空:

这里按照之前的流程先走一遍,点击保存并抓包,发现name参数的值为空,这里修改为admin:

在修改服务器返回的数据包为0之后,再将参数name的值修改为admin:释放数据包后,显示修改成功:

使用修改之后的密码去登录,成功登录到管理后台。

后来测试发现,不需要原始密码的验证也是可以的,直接使用修改密码的数据包来进行修改密码,即可将密码重置:

总结

将漏洞提交CNVD平台后,存储型XSS被驳回了,但是因为是未授权创建存储型XSS,再次提交最终审核通过了。最后觉得挖掘漏洞的话还是要细心,并且资产搜集非常重要!

转 https://www.freebuf.com/vuls/331439.html