(0day)某和oa\_sql注入漏洞审计分析过程
原创
深潜sec安全团队
深潜sec安全团队
深潜sec安全团队
2026年10月13日 15:24
浙江
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
免责声明
免责声明:文中所有涉及的内容均不针对任何厂商或个人,同时由于传播、利用文中所发布的技术或工具造成的任何直接或者间接的后果及损失,均由使用者本人承担。
关注公众号,输入“学习交流”加入交流群
觉得不错的话,可以多点赞、分享、关注
一、鉴权分析
1.首先找到对应的登录接口程序集,进行反编译
2.然后可以跟踪AjaxForLogin类,发现一些关键调用的方法
3.在InitVariable方法请求中取得操作类型、登录名和口令,并做用户标识映射,还会检查 AD/邮件登录相关状态。这里看到参数被读取,不代表认证成功
4.在回头去看Action方法,发现 OpType进入Login、Exit、IsLogin等分支。
5.跟进 Login,注意它不是总会调用LoginCheck该方法先计算登录策略结果,再检查Session[\"SMSValidate\"]、Session[\"NewPass\"],在其他分支调用 LoginCheck()。此时不能定性为绕过
6.沿常规分支继续分析LoginCheck方法,在该方法的UserValidate分支下进行口令检测
7.接着跟踪UserValidate方法,可以看pw的声明是怎么来的
8.接着在pw.IsPassword实现先调用Resume.EncryptPassword处理口令,再查询用户及口令相关字段;无记录时返回ERROR,有记录时还结合口令策略设置返回状态。方法名不能证明具体加密算法,也不能把所有返回值都当作简单的 true/false。(并且可以看到该处也是sql直接拼接获取对应的值)
9.然后在回到Login方法,继续点GetUserInfo,它调用pt\_GetUserInfoForLogin;再回到 CreateSession,就能看到身份落到会话里的位置
10.身份存在之后,再向下追踪角色检查,然后可以确认用户ID和角色代码进入角色判断存储过程,且返回1被当作成功
二、审计过程
搜索sql漏洞关键字,发现在该处直接拼接的。(根据前面鉴权分析,发现它没有调用RoleCtrl,也没有传入用户或角色信息给档案查询,实际也就是未授权就可以进行sql注入)
三、poc获取方法
1.圈主平时需要参与项目、比赛、上课及其他相关工作,时间相对有限,因此审计内容及漏洞更新频率可能不会太高,部分内容的更新周期也会相对较长。如对更新速度有较高要求,还请谨慎加入。2.圈内大部分漏洞及相关技术内容均为未公开内容,请勿擅自转载、传播或对外泄露。文中所涉及的技术、工具及相关内容仅供安全研究与学习交流使用。任何个人或组织因传播、使用或不当利用相关内容所造成的直接或间接后果及损失,均由使用者自行承担。
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论