今天,我经历了一种情况,负责公司安全的人员要求渗透测试公司撤消合同中的一项条款,其中规定:

”在渗透测试期间,有可能删除或修改由于执行了一些工具,漏洞利用,技术等,无意中使生产环境中的敏感数据变得无用。”

客户说他不会接受该条款,并且他相信没有公司会接受该条款。他认为在渗透测试期间可以访问信息,但永远不会删除或修改信息。

我们知道,如果对Web应用程序进行了非常错误的编程,则执行某些工具(如Web爬网程序或Spider即可删除数据),因此

我知道这些是客户的条件,应该接受,但是:

可以熟练且专业的pentester可以确保在渗透测试期间不会删除或修改生产中的任何数据吗?

如果渗透测试团队存在无法创建或修改数据的限制,可以真正进行渗透测试吗?

为了以防万一,渗透测试公司应该始终包括免责声明吗?

评论

这让我想起了wtf的故事,其中Google索引了一个页面,该页面的链接在单击时会重置整个数据库。 Google只是盲目地去索引页面,跟随链接,然后擦除数据库。没有办法保证戊酯可能不会偶然做同样的事情。

谁知道您可能会偶然发现哪种逻辑炸弹。抵制恶意陷阱和可怕的错误配置的CYA是隐藏的灾难,它在有人首次触发多米诺骨牌字符串时等待取出数据。基本上是“对不起,您没有有效的备份,但是此问题早于我对您的系统的了解”子句。

@woliveirajr-thedailywtf.com/Articles/The_Spider_of_Doom.aspx和thedailywtf.com/Articles/WellIntentioned-Destruction.aspx-我的记忆力不强,但足够接近

当然,坚持要删除该子句的客户并不是没有道理的,而是不理解为什么存在该子句。他们认为您将在测试过程中采取某些措施破坏他们的系统。只是向他们解释,如果他们的代码中有一些可怕的错误,当您单击“保存”时,该错误会删除数据库,显然您将不为此承担责任。通常,这听起来像是人际沟通失败,而不是技术问题。

@ tom-oconnor更重要的是,与在某些黑客大刀阔斧地进行随机访问的情况下,以随机备份的方式以一种有控制的,有准备的方式保存最近的备份相比,丢失数据更好。如果在入网测试期间丢失数据甚至是一个问题,那么这大概是该公司的后顾之忧。因此,我赞同这样的说法,那就是通讯问题多于技术问题。

#1 楼

pentester不可能以100%的方式确保不会修改或删除数据,就像他们无法确保系统的可用性不会受到影响的方式一样(我用端口扫描或单'字符)。就像您说的那样,如果网络抓取工具设置不正确,它就可以从系统中删除数据。

我要说的是,诸如“将竭尽所能确保测试不会对所检查的系统产生负面影响,也不会刻意尝试修改或删除生产数据或对范围内系统的可用性产生负面影响。但是,对于所有安全性测试,都有可能会影响系统并且客户应确保在开始审查之前已对所有数据和系统进行备份。“

评论


我通过将Unicode字符放入客户的Web应用程序的字段中来关闭服务器。您永远不能百分百确定自己的行为不会影响正常运行时间-到处都有意外的故障向量。

–多项式
13年7月17日在20:06



我有团队成员测试客户提供的帐户,因为“测试”帐户不小心支付了国际款项:-)发生了。保留该条款!

–Rory Alsop♦
13年7月17日在22:04

我对安全性不了解很多,但是遇到了很多混乱的代码库,因此我批准了此消息。

–埃里克·雷彭(Erik Reppen)
13年7月18日在1:52

这和@MGOwen的评论,请尝试向客户解释其原因。如果他们仍然不接受它,那么最好是不接受这份工作。并不是我对渗透测试了解很多,但是您可能会尝试进行一些SQL注入以访问系统,并且如果不够仔细的话,这种mig破坏会破坏数据。

–霍尔格
13年7月18日在7:42

作为渗透测试人员,您实际上并最终将花费大量时间来研究系统的某些问题,例如“当我在此处输入此意外数据时会发生什么?”的问题,除非您被允许分析同时,代码本身无法完全保证答案不会是“系统会自行崩溃,删除其后端数据库并破坏备份,然后再用公司预算越过边界逃到Tijuana”。

– Shadur
13年7月18日在7:53

#2 楼

声称自己将永远不会改变生产数据的彭特斯要么是个肮脏的骗子,要么以为自己比实际能力更胜任,或者强烈打算什么都不做(这是永不中断任何事情的唯一保证) 。无论如何,您都不希望与那个人一起工作。

潜在客户认为熟练的测试人员永远不会损坏经过测试的系统,并且拒绝与测试人员合作,除非他们确切地承诺,是1.生活在童话独角兽梦境中的客户,并且2.几乎保证只与肮脏的骗子做生意。在某种程度上,他可能会幻想破灭。

对渗透测试者来说,在合同中加入可能破坏的条款是道义上的当务之急,也是一种基本的自我保护。即使pentester擅长于他所做的事,也存在附带损坏的风险(因为损坏不是来自pentester的好坏,而是来自于测试系统的设计和实施有多糟糕)。可能会因未警告客户的警告而被起诉。

拒绝具有此类条款的合同的客户有另一个名称:“麻烦”。通常最好完全跳过此类客户。

评论


+1个客户闻起来很有趣,退后一步。这是所有pentest活动中包含的100%标准语言。

– bobince
13年7月17日在20:03

在我看来,他读它的意思是“我们可以对您的系统做我们想做的事,并在发生问题时要求'事故'”,而不是“由于不可预见的情况我们不想被起诉”。但是,是的,要避免。

–deworde
13年7月18日在7:57

@deworde对条件的任何澄清,例如“我们将采取所有合理的步骤以避免破坏系统”,以后可能会因其步骤不够合理而被起诉。根据他们造成的损害的影响,很可能会超出他们的帐单,并需要大幅增加其费用(即:“为什么笔测试要花费100万美元?”“因为那是我们期望的结果可以起诉我们,如果您同意不起诉,可以享受900k的折扣”)。

–马特
13年7月18日在14:22

@马特我同意。这是无法理解的,不是无法传达的。如果这是标准语言,那么合同真的不能说什么,而没有零风险的巨大风险。在最坏的情况下,您最终会发送一条消息,表示您愿意协商罪魁祸首。

–deworde
13年7月18日在21:31

#3 楼

警告:我不是一个专业的学生。我在备份软件中工作。


能不能熟练地使用专业的pentester来确保在渗透测试期间不会删除或修改生产中的任何数据?


我会说不,没有绝对的保证,当您尝试破坏事物时不会意外删除某些内容。但是,话虽如此,一个pentester通常应该尝试以不涉及删除数据的方式来利用系统。例如,虽然每个人都喜欢的SQL语句是:

select * from users where userid='dave'; DROP ALL TABLES;


一种更负责任的方法只是列出所有数据:

select * from users where userid='2' OR 1=1;


通常,我想大多数笔测试人员都开发了一系列非破坏性的漏洞利用方法,如后者。

各种形式的Javascript注入都可以使用简单的概念证明代码例如alert("exploited you");而不是真正的漏洞利用代码。


如果渗透测试团队存在无法创建或修改数据的限制,那么渗透测试真的可以完成吗?


我会拒绝。在无法将XSS存储在数据库中的情况下,如何显示已存储XSS的概念证明?这总是会创建新数据。

有很多示例,即使是暂时的,漏洞也需要写入数据。


考试中心公司是否应始终包括免责条款,以防万一?


我再次在这里扩展个人知识,但我要说是。

但是,这首先要回到聘请笔测试公司的全部要点。笔测试的目的是识别可能需要评估的风险,并在坏人发现它们之前将其修复。

我也希望任何优秀的pentester都会问,并且任何好的企业都会想到大规模的灾难恢复。当然,您应该在系统上拥有某种形式的备份,以便可以根据需要进行还原。您不仅需要通过渗透测试来破坏您的数据,还需要这样做,以防万一您真的受到了坏人的破坏,在这种情况下,您可能希望将未受污染的备份回滚。

评论


我在这里只是想保持警惕(“剥削了您”);如果有一些“有用的”脚本使用警报系统并作用于以例如'e'

– medivh
13年8月12日在9:03

@medivh可能是的。您希望有问题的公司为渗透测试人员提供有关其系统的一些文档,以便他们知道如何执行不会破坏系统的工作...

–user2213
13年8月12日在10:05

@medivh甚至不必这么复杂。如果大多数自动UI测试工具无法处理意外警报,它们将失败。

–传真
20年5月4日13:19

#4 楼

我在自己的网站上定期进行渗透测试。

我第一次运行该网站时,我将网站停顿了下来,并用垃圾邮件淹没了他们的邮件服务器。消除垃圾邮件的几种形式,它可以识别并修复所有其他已知漏洞,而无需将服务器停顿下来。

坦率地说,剥削者的vious回使我感到惊讶,我不得不塞进我没有考虑过的漏洞。

但是,事情是,在运行测试之前,我认为我的网站是安全的。我一直遵循最佳实践来进行网站设计,但是仍然存在问题。

现在,借助事后观察,我很高兴测试可能会影响我的生产站点。 />
,所以我要提前计划。

,请确保首先备份所有内容。

如果该站点确实非常重要,我将创建一个完成克隆,然后先测试该克隆。

我从经验中学到,如果创建克隆,请在其他服务器上创建它。否则,当克隆副本停止运行时,服务器仍会影响您的生产环境。

但是我仍然进行测试。您认为黑客如何访问网站?他们大概以未经授权的方式运行这些测试。因此,在您的网站受到保护之前,它始终将很容易受到攻击。比起在最不期望的情况下不得不捡起零碎的碎片,首先做好测试并准备好预防措施(备份等)要好得多。

所以,是的,这是可以接受的,但是它也是可以预见的,应该进行相应的管理。

评论


如果硬件很紧,您可以将测试克隆放入受限制的VM中。这样,当它停止运行时,它仅使用25%的CPU进行研磨,而prod仍然可以使用75

–棘轮怪胎
13年7月18日在10:20

您绝对不应在生产服务器上(虚拟化与否)测试(虚拟化)vm应用程序可能存在的错误(例如:内核空间中的泄漏内存)

– Borrel
13年7月18日在18:39

如果使用所备份来在另一台服务器上创建克隆,则还将测试灾难恢复技能。

–放松在塞浦路斯
13年7月18日在21:44

#5 楼

您的标题的答案是“是”,客户需要知道这一点!

此免责声明不是CYA的情况,而是客户为准备渗透测试所需的重要信息。 。我不是笔测试员,但IMO不应将其埋在精美印刷的最后一页,而应在合同的第一页,正面和中间以及大胆的字体中。客户公司需要为出错做准备-需要进行备份,创建恢复计划并实施备份等等。让客户认为笔测试没有风险是不负责任的。根据定义,您是在尝试触发错误的行为,而无法控制坏行为的扩展范围或行为。

帖子正文中的3个问题的答案是:(1)不,您无法对其他代码做任何保证(2)如果不进行任何故意的修改或创建数据(如果您排除了应用程序可能执行的任何日志记录),则可能会进行有限形式的笔测试(但不能最终完成) (3)您应该始终包含此免责声明-为客户带来与您一样多的收益。

测试人员基本上是在寻找要利用的缺陷,并且绝不能保证他们不会找到确实会损坏的缺陷。考虑一个不希望遇到或造成缺陷的典型软件免责声明,然后考虑您可能没有编写要测试的代码...

评论


因此,答案应该是“是”,不是吗?因为在渗透测试期间修改生产数据是可以接受的(并且可以预期的)。

–坚决
13年7月22日在6:34

如果您不打算以非标准的方式有意修改生产数据,那么签订合同是不寻常但并非不负责任的。从技术上讲,不可能保证未知的代码库不会在正常使用时造成损害,更不用说笔测试中涉及的异常使用了。我看到我应该扩大我的答案。

– jmoreno
13年7月22日在16:49

#6 楼

也许您可以确保仅在某些条件下才能做到。显然,Pentest是许多因素之间的折衷,某些因素直接阻碍了系统可用性,其中之一就是分析的深度。有人可能会说,没有利用就可以做到的渗透测试不是渗透测试。

过去,我不得不渗透一些以脆弱性而闻名的SCADA系统,我可以向您保证,可以进行调优大多数工具要足够温和。例如,禁用NMAP指纹和增加数据包之间的延迟很有帮助。

但是,就我个人而言,无论如何回答您的问题,我绝不会同意为我的客户提供保证该条款的条款。我会告诉他我的话,但从商业角度来讲,如果在您的笔试期间他们的应用程序本身中断了,您将不承担任何责任。

评论


+1表示没有利用的渗透测试不是渗透测试

–坚决
13年7月19日在10:20

管理层只是将渗透测试视为“昂贵”,将漏洞评估视为“廉价”。如果他们付给您足够的钱,那就永远是笔墨。

– Francesco Manzoni
13年7月19日在10:33

#7 楼


“熟练且专业的pentester可以确保在渗透测试期间不会删除或修改生产中的任何数据吗?”


否。


“如果渗透测试团队有不能创建或修改数据的限制,真的可以进行渗透测试吗?”


不这样认为。.


“为了以防万一,渗透测试公司是否应始终包括免责声明条款
?”


内部协议看起来与第三方协议有很大不同。我不知道没有任何责任保险限制的笔测试公司,还有其他保护措施...

#8 楼

渗透测试应遵循一种方法,即只能在非生产场景(例如分期或实验室环境)中进行可能导致损坏的测试。

真正的问题不是删除或修改数据,因为测试人员可以将那些测试用例留给非生产系统。真正的问题是留下了新数据,例如错误日志或泄露机密信息的多余错误文件,甚至是渗透测试本身的存在,包括渗透测试人员的客户端数据材料。

另一个渗透测试中普遍存在的问题是在演示或截屏期间显示其他客户数据,工作电子邮件或浏览器书签。

评论


渗透测试在生产中已经进行了很多次,例如,由于网络的行为,您不能保证似乎无害的测试会删除某些内容。

–坚决
2015年4月19日在18:10

我可以;也许你不能

– atdre
15年4月19日在23:51

我认为您没有阅读其余答案,也没有有效答案。如果程序员已经编程了该功能并且您无权访问源代码,那么如何预测“搜索”按钮会删除数据库中的信息?

–坚决
2015年4月20日在6:25



这个论坛上某些遵循法律原则的人与我遵循法律精神的人之间的区别是,我可以从问题中重新解释含义,并“质疑问题”。可以辩论。有不同的观点是可以的。这就是我想要生活的世界。我所有的笔测试都是全面的知识。我总是总是首先获得源代码。

– atdre
2015年4月20日在10:31



程序员在提出使他们的程序易碎的方法方面无穷无尽的创造力。例如,我使用的一个软件(一个数据库系统)可能会因为一个简单的半开端口扫描器而崩溃,并伴有数据丢失的风险。

–马克
2015年4月21日,下午3:27