笔记本电脑维修查询_硅基智慧

关于漏洞检测

笔记本无法开机 漏洞补丁

“关于漏洞检测的事情。”现在有一种现象,一旦发布具有高危害性漏洞的验证PoC或使用EXP,就会出现一大堆饥饿且难以忍受的帽子。

漏洞的范围从披露到研究人员的研究和分析,再到PoC编写,再到大规模的扫描和检测。在这个相互关联的漏洞紧急生命周期中,我认为最关键的部分应该是PoC编写和漏洞检测。关:

PoC编写-再现漏洞环境的过程和编码再现漏洞的过程

漏洞检测-使用书面PoC来验证测试目标中是否存在漏洞。应该注意的是,此过程(或在编写PoC时)需要尽可能安全,有效且无害,或避免扫描过程对目标主机产生不可恢复的影响

首先谈一下PoC写作。在我看来,编写PoC是安全研究人员或漏洞分析师最基本的工作。作者通过代码描述漏洞验证和分析的过程,并根据不同类型的漏洞编写相应的PoC。根据多年编写PoC的积累经验,个人认为编写PoC时应遵循以下准则:

随机性

肯定

普遍

也许您认为我太学术了?然后,我将逐步解释它们。

0x01PoC写作指南和示例

1。随机性

PoC中涉及的关键变量或数据应该是随机的。只要可以随机生成有效负载,就不要使用固定变量值生成有效负载(例如上载文件的文件名,Webshel​​l密码,Alert字符串和MD5值),请看一些下面的例子

关于漏洞检测

上图所示的代码是验证代码的关键部分,此验证代码用于解决由WordPress中的主题引起的任何文件上传漏洞。您可以看到kstest.php被用作每个测试的上传文件名。显然,它已在此处修复。文件名违反了上述随机性标准。再说一遍,我并不是说在PoC中使用固定变量或数据是错误的,而是认为将随机数据随机化可以减少扫描过程中的某些风险(特定风险)。请自己动手做)。

更改后,上载文件的文件名每次都是随机生成的6个字符的字符。我个人认为,交互式数据被扫描和检测的可能性在一定程度上降低了。

2。肯定

在PoC中,您可以通过测试返回的内容以指示漏洞是否存在来找到唯一标识,并且需要将此标识作为目标。不要使用过于模糊的条件来判断(例如:HTTP请求返回状态,固定页面可控制的内容)。同样,以下示例说明:

漏洞检测

该代码是针对Web应用程序的UNION类型的SQL注入漏洞验证代码。通过缝合-1'unionselect1,md5(1)直接注入代码-因为该漏洞具有数据回显,所以如果测试注入成功,则md5(1)值c4ca4238a0b92320dcc509a6f75849b将被打印在页面上。显然,此PoC似乎没有任何问题,但结合标准的第一个随机性,我认为使用md5(rand_num)作为标识应该更好,因为在转换后,随机性的准确性更高:

如果您在某个站点中没有漏洞,但是如果页面上有c4ca4238a0b923820dcc509a6f75849b,这不是要告诉您的,您怎么看?

说到这,让我谈谈Python请求库的用户可能忽略的问题。有时,当我们获得一个请求返回对象时,我们将做出如下类似的预判断:

有人可能会说,如果条件判断不为空,则Python中的条件判断是正确的,但实际上是这样处理的吗?是不是经过实战维修和以后的测试,发现Response对象的状态判断通过HTTPCode返回状态来判断,何时当状态码范围在[400,600]之间时,条件判断将返回False。(我自己不相信)

我为什么要提到这一点,因为有时当我们测试漏洞或通过有效负载时,由于后端处理逻辑中的错误,目标可能会返回500,但这一次实际上有迹象表明存在漏洞这一页。如果您使用刚才提到的方法预先对Response对象进行条件判断,那么这次将导致报告不足。那么,你们知道该怎么办吗?

3。通用性

PoC中使用的有效负载或包含的检测代码应考虑每个环境或平台。如果可以构造通用有效负载,则不要使用单个目标检测代码,也不要仅考虑在其中重现漏洞的环境(例如:该文件包含path,该命令在命令执行期间执行)。下图是WordPress中的一个插件引起的任意文件下载漏洞:

关于漏洞

上面的验证代码的逻辑很简单,就是通过任何文件下载漏洞读取/etc/passwd文件的内容,并确定返回的文件内容是否包含密钥字符串或徽标。显然,此有效负载仅适用于*nix环境,不适用于Windows平台。更好的方法应该是根据漏洞应用程序的环境,找到一个必须反映漏洞存在的徽标。在这里,我们可以采用WordPress配置文件wp-config.php进行判断(当然,下图中的最终判断方法可能并不十分严格):

通过此更改,有效负载可同时考虑多个平台环境并变得通用。

PoC编写中存在大大小小的漏洞的经验使硅基智慧可以总结这三点。如果您觉得自己在说话,则无需低头。

0x02漏洞检测方法

漏洞检测!漏洞检测?漏洞检测...”说了这么多,如何总结漏洞检测方法?我认为,根据Web漏洞的类型和特征,可以将其分为两类:直接判断和间接判断。

直接判断:通过使用有效负载发送请求,您可以根据返回的内容直接判断相应的状态

间接判断:无法直接根据返回的内容判断,您需要使用其他工具来间接响应漏洞是否被触发

不用多说了,让我们直接以示例为例进行说明(以下所示的有效载荷并不完全是通用的)。

1.直接判断

一世。SQLi(回声)

对于使用echo进行SQL注入,检测方法相对固定。在这里,遵循“随机性”和“确定性”两点就足够了。

对于错误报告注入,使用有效载荷构造的随机性可以更稳定,更准确地识别漏洞,并且由于某些小概率事件,固定字符串将导致误报。不知道您是否了解上述两行代码的含义。简而言之,有效负载包含具有可预测结果的随机数据。验证时,您只需要验证可预测的结果是否存在。

标签:漏洞检测