泛微oa参数keywordid sql注入漏洞

哎呀,这是泛微OA。
2 02 2 年有一个很大的漏洞。
关键就在这个 getdata.jsp 文件中。
V8 版本的朋友一定要小心了。
这个漏洞就像是一个无底洞。
如果不小心,敏感数据就会飞出。

当时我就很困惑,这个漏洞是怎么发挥作用的?简单来说,有人给getdata.jsp传了一个cmd参数,值为getSelectAllId,然后传了一个sql参数,没有过滤就直接执行了。
我当时就感叹这个漏洞真是“入木三分”。

如何确认此安全问题?让我举个例子。
如果访问这个URL:http://xxx/js/hrm/getdata.jsp?cmd=getSelectAllId&sql=select3 8 4 3 8 asid,就可以看到该漏洞的存在。
如果您想获取敏感数据,请尝试以下操作:http://xxx/js/hrm/getdata.jsp?cmd=getSelectAllId&sql=selectpasswordasidfromHrmResourceManager。
您也许可以获得管理员密码,但这很危险。

该漏洞主要影响Panwei OAV8 版本。
我查了一下,在FOFA上可以找到,app=“泛微-协同办公OA”,一看就是这样。

危害极大,不仅可以泄露管理员密码,还可以窃取服务器权限。
我当时也慌了。

我该怎么办?作为防御建议,您必须先升级Panwei OA,最好是最新的安全版本。
那么getdata.jsp中的sql参数必须严格过滤,不允许直接执行。
最后,必须限制这个接口的访问权限,防止无权限的人乱搞。

嗨,这个网络安全确实令人担忧。

安全测试|常见SQL注入攻击方式、影响及预防

SQL注入依靠数据来攻击数据库。

基于故障注入:使用'OR1 =1 --跳过输入。
联合查询注入:使用“UNIONSELECT 用户名...”窃取数据。
延时注射:使用'SLEEP(5 )--查看响应延迟。
布尔盲注:使用 'ANDSUBSTRING... 查找数据库名称。
堆叠查询:使用 ';DROPTABLE... 删除表。

数据泄露:数百万用户密码被盗。
数据篡改:更改订单金额。
系统关闭:使用“SLEEP...”使数据库崩溃。
后门打开:进入WebShell。
声誉受损:3 0% 的用户流失。
法律义务:2 00万欧元罚款。

SQL注入预防: 参数化查询:使用占位符。
输入验证:过滤单引号。
最低权限:使用普通帐户。
补丁:修复Log4 j漏洞。
SCDN 防御:阻止攻击。
安全培训:不要使用动态SQL。

自己掂量一下。

本以为用了 MyBatis 框架就万无一失了,没想到还是被黑客注入了....

MyBatis SQL注入有这样的情况:
模糊查询是最糟糕的。
因为使用时会出现语法错误,所以有人用$代替,直接注入。
例如,标题为“%{title}%”。
您可以使用 concat 函数或直接绑定变量。
concat('%', {title}, '%')
像 IN 语句这样的标题也很容易被忽略。
直接连接ID列表,例如${ids}。
攻击者只需添加1 '或1 =1 就是这样。
使用 foreach 标签动态生成参数化查询。
你写的foreach使用正确。

ORDERBY 是最容易玩的。
要动态排序,请直接使用 ${columnName}。
如果攻击者改变了这个,整个 ORDERBY 将被他改变。
执行白名单检查或手动查看框架生成的条目。

审核步骤如下: 首先,我们搜索 XML 中的所有 $ 符号,重点关注 like、in 和 orderby。
遵循代码并确保直接传递用户输入。
配置并测试您的有效负载或使用工具扫描它。

防御措施: 必需的,除非白名单不允许 $. 动态内容必须经过严格过滤。
不要将数据库用户权限设置得太高。

说白了,不要乱用$符号。
标准化使用,添加白名单,多重审核。
你的分析是正确的。

我不记得数据了,但大概是这样的。
这是第一位的。