通过某OA批量获取CNVD证书的技巧

admin 2024年3月3日04:57:39评论19 views字数 2393阅读7分58秒阅读模式
通过某OA批量获取CNVD证书的技巧



前言


一些刚刚接触CNVD的师傅可能对于平台获取证书的条件还不是很了解,通常对于证书站都是没目标、没思路、没想法。

不急,下面这篇文章来自于讲师“爱挖洞的小崔”,从真实案例通达OA批量获取证书100+的经验,来分享本次的主题《通达OA证书批量获取的技巧》,话不多说,我们开始吧!


确定资产是否达到获取证书条件

师傅们的目标是获取证书,首先拿到一个目标资产,第一步就是确定该资产是否需达到了CNVD下证书的条件才可以进行下一步的漏洞挖掘等后续操作,而CNVD获取证书的条件如下图所示:

可以看到通用型漏洞获取证书的条件是中危及以上且CVSS(可以理解成危害)大于4.0分。而事件型漏洞获取证书的条件则更为苛刻,需要国家或者政府的直属事业单位的高危漏洞。

而这里在通用型证书颁发的条件中,官方没有写到一点,也可以理解为隐性条件,就是该企业的注册资金必须大于5kw或者该企业的产品影响(互联网资产数量)很广,而不是像下图所说的所有通用型中危漏洞都可以获取证书的。

这点是想要获取证书的师傅们必须要了解的一个坑点。

通过某OA批量获取CNVD证书的技巧

通过某OA批量获取CNVD证书的技巧

我们本次的目标是通达OA,首先我们确定的是其属于通用型漏洞,因为是OA产品所以字面理解,OA产品是公用的,通用的,所以产品的漏洞都可以叫做通用型漏洞。接下来我们去寻找其是否符合下证书的条件,从官网上我们发现该OA的所属公司。

通过某OA批量获取CNVD证书的技巧

在企查查或者天眼查中查找该单位的注册资金不足5KW,所以不满足下发证书条件。

通过某OA批量获取CNVD证书的技巧

但是在互联网资产中,通达OA的互联网资产在同类型OA中相比是非常多的,所以即使注册资金条件不满足的的情况下,也是可以达到下证书条件的。

通过某OA批量获取CNVD证书的技巧

此时确认该产品可以获取到证书,接下来就是寻找漏洞了!


通达OA漏洞挖掘

这里我们通过源代码找到一处可能存在SQL注入的点,如下图:

这里$W_EXPERIENCE_ID参数是可控的,在11行中去拼接了SQL语句,在12行将SQL语句执行。

通过某OA批量获取CNVD证书的技巧

在功能点处,我们访问该文件(俗称路由)也可以看到该功能点,如下图的删除某人的工作经历,就是该处可能存在SQL注入的功能点。

通过某OA批量获取CNVD证书的技巧

接着看看代码,表面上上述代码带到12行去执行了,但是在执行之前使用了db_query()方法,在该方法中其实是存在一定的全局过滤的。

可以看到,这里的使用了很多正则匹配进行过滤的,单双引号是会被替换为空的。通过某OA批量获取CNVD证书的技巧

通过正则匹配过滤掉大部分的SQL关键字,如果匹配到关键字符,就会输出提示“不安全的SQL语句”并将检测到的SQL语句打印出来。

通过某OA批量获取CNVD证书的技巧

通过某OA批量获取CNVD证书的技巧

这里使用union select则会被检测,如下图所示:

通过某OA批量获取CNVD证书的技巧

既然我们可以进行代码审计,那么我们就可以通过其代码的检测,来尝试绕过该处的检测从而达到SQL注入的效果,这也是我课程中提到的审计的好处。

通过上述代码的过滤机制,其实我们可以通过笛卡尔积盲注的方式来进行SQL注入。

payload如下:

1)%20and%20(substr(DATABASE(),1,1))=char(116)%20and%20(select%20count(*)%20from%20information_schema.columns%20A,information_schema.columns%20B)%20and(1)=(1
我们通过源码知道他的数据库名是td_oa,所以截取库名的第一位比较ASCII码,如果为t则会进行笛卡尔积查询默认库,由于默认库较大则会产生较长的查询时间,所以页面会延时,从而达到绕过常规的sleep等延时类函数,达到盲注的效果。

通过某OA批量获取CNVD证书的技巧

将ASCII码改成115则不会延时,所以这里通过笛卡尔积绕过了通达OA的全局过滤。


1)%20and%20(substr(DATABASE(),1,1))=char(115)%20and%20(select%20count(*)%20from%20information_schema.columns%20A,information_schema.columns%20B)%20and(1)=(1



通过某OA批量获取CNVD证书的技巧


通达OA批量SQL注入漏洞挖掘

本次的主题是进行批量证书的获取,所以接下来的部分才是文章的精华部分,我们通过审计绕过了通达OA的全局过滤,所以我们去思考,是不是所有使用db_query()函数去执行SQL语句的地方都可以造成SQL注入呢?答案是可以的!

我们通过过滤代码中发现所有没被单双引号包裹的参数,且带到db_query()去执行SQL语句的功能点都可以造成SQL注入。

所以我们就要针对性的去找一些没有被单双引号包裹的参数,且会被带到db_query()去执行的功能点或者说是文件。

如下图所示的文件:

通过某OA批量获取CNVD证书的技巧

其实在审计的过程中,通过观察开发者的开发规律,我们发现,通达OA的所有delete文件也就是删除XXX功能点处都没有进行单双引号包裹,都是可以进行利用的。

这也是课程中讲到的一个点,一个产品的代码中具有一定的规律,所以如果发现开发者存在的一些开发习惯,就可以找到代码中存在的一些通用性安全问题,从而实现批量漏洞的挖掘。

我们在代码文件中搜索包含delete关键字的文件

果不其然,其中包含delete关键字的500+文件中,有100+文件存在SQL注入的问题,也就是说有100+处功能点存在SQL注入。

通过某OA批量获取CNVD证书的技巧

找到其代码中的规律,其实想要更快的批量进行证书获取的话,我们可以通过phpstorm正则中找到,SQL语句中没有被单双引号包裹的参数即可更精确快速的定位漏洞文件,这是给师傅们提供的另一个思路。

通过某OA批量获取CNVD证书的技巧
通过通达OA一个应用的一个注入洞,就拿到了100+证书,下面是部分的证书展示:

通过某OA批量获取CNVD证书的技巧


感谢关注

想要了解《CNVD证书挖掘课程》的师傅可以加课程老师进行咨询。

通过某OA批量获取CNVD证书的技巧

公开课录播下载地址

链接:https://pan.baidu.com/s/18Rn7PkK-9J7zQ68H-nMwWw 提取码:LYWA


原文始发于微信公众号(零幺sec):通过某OA批量获取CNVD证书的技巧

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年3月3日04:57:39
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   通过某OA批量获取CNVD证书的技巧https://cn-sec.com/archives/2099987.html

发表评论

匿名网友 填写信息