-
2022-04-09 16:41:14
目录
1 渗透测试方法论
1.1 渗透测试方法论的定义
渗透测试(penetration testing)是实施安全评估(审计)的具体手段。方法论是在制定,实施信息安全审计方案时,需要遵循的规则、惯例和过程。人们在评估网络、应用和系统或三者组合的安全状况时,不断摸索各种务实的理念和成熟的做法,并总结了一套理论——渗透测试方法论。
渗透测试的对象为网络、应用和系统或三者的组合。其中,网站和APP均属于应用,网站为web应用,APP为终端应用;路由器属于网络,社工1.2 渗透测试的种类
1.2.1 黑盒测试
在进行黑盒测试时,安全审计员在不清楚被测单位的内部技术构造的情况下,从外部评估网络基础设施的安全性。在渗透测试的各个阶段,黑盒测试借助真实世界的黑客技术,暴露出目标的安全问题,甚至可以揭露尚未被他人利用的安全弱点。其中,网络基础设施就包括网络、应用和系统或三者的组合。
渗透测试人员应能够理解安全弱点,将之分类并按照风险等级(高、中、低)对其进行排序。通常来说,风险等级(级别)取决于相关弱点可能形成危害的大小。老练的渗透测试专家应能够确定可引发的安全事故的所有安全模式。当渗透测试人员完成所有测试工作之后,他们会把测试对象安全状况有关的必要信息进行整理,并使用业务的语言描述这些被识别出来的风险,继而将之汇总为书面报告。黑盒测试的市场报价通常会高于白盒测试。
黑盒测试的例子:直接给一个域名,然后要求渗透测试人员进行测试,渗透测试人员首先需要进行信息收集,收集域名下有哪些资产,如有多少web应用、多少子域名、有多少服务(邮件服务、日志服务器、数据库服务)。
1.2.2 白盒测试
白盒测试的审计员是可以获取被测单位的各种内部资料甚至不公开资料,所以渗透测试人员的视野更为开阔。若以白盒测试的方法评估安全漏洞,测试人员可以以最小的工作量达到最高的评估精确度。白盒测试从被测系统环境本身出发,全面消除内部安全问题。从而增加了从单位外部渗透系统的难度。黑盒测试起不到这样的作用。白盒测试所需要的步骤数目与黑盒测试不相上下。另外若能将白盒测试与常规的研发生命周期相结合,就可以最早的消除全部安全隐患。这使得白盒测试的时间、成本,以及发现、解决安全弱点的技术门槛都全面低于黑盒测试。
白盒测试的例子:杀毒软件、微软的自动更新。
1.3 脆弱性评估与渗透测试
脆弱性评估通过分析企业资产面临安全威胁的情况和程度,评估内部和外部的安全控制的安全性。这种技术上的信息系统评估,不仅揭露现有防范措施里存在的风险,而且要提出多重备选的补救策略,并将这些策略进行比较。内部的脆弱性评估可保证内部系统的安全性,而外部的脆弱性评估则时验证边界防护的有效性。无论进行内部脆弱性评估还是进行外部脆弱性评估,评估人员都会采用各种攻击模式来严格测试网络的资产的安全性,从而验证信息系统处理安全威胁的能力,进而确定应对措施的有效性。不同类型的脆弱性评估需要的测试流程、测试工具和自动化的测试技术也不相同。这可以通过一体化的安全弱点管控平台(vulnerability management)来实现,现在的安全弱点管理平台带有可自动更新的漏洞数数据库,能够测试不同类型的网络设备,而且不会影响配置管理和变更管理的完整性。简单来说脆弱性评估其实就是漏洞扫描,只是在漏洞扫描的基础上要提出防御策略。
加粗样式
脆弱性评估和渗透测试最大的区别就是,渗透测试不仅要识别目标的弱点,它还要设计在目标的系统上进行漏洞利用、权限提升和访问维护。换句话说,脆弱性评价虽然可以充分发现系统里的缺陷,但不会取考虑取衡量这些缺陷对系统造成的危害。另外,相比脆弱性评估,渗透测试更倾向于入侵,会刻意使用各种技术手段利用安全漏洞;所以渗透测试可能对生产环境带来实际的破坏性影响,而脆弱性评估以非入侵的方式,定性、定量得识别已知的安全弱点。简单来说渗透测试就算发现漏洞,并进行漏洞利用。2 安全测试方法论
OWASP:Open Web Application Security Project 开放式Web应用程序安全项目,网址为
http://www.owasp.org.cn/
。(1)测试指南:
https://www.owasp.org/index.php/OWASP_Testing_Project
(2)开发人员指南:https://www.owasp.org/index.php/OWASP_Guide_Project
(3)代码审查指南:OWASP Top 10 (Web 十大安全漏洞)https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project
。也可以找中国区的官网:http://www.owasp.org.cn/OWASP-CHINA/owasp-project/2021-owasp-top-10/
。Web 十大安全漏洞如下,具体详见《OWASP-TOP10-2021中文版》- A01:2021-失效的访问控制(Broken Access Control)
从第5位上升成为Web应用程序安全风险最严重的类别;提供的数据表明,平均3.81%的测试应用程序具有一个或多个CWE,且此类风险中CWE总发生漏洞应用数超过31.8万次。在应用程序中出现的34个匹配为“失效的访问控制”的CWE次数比任何其他类别都多。 - A02:2021-加密机制失效(Cryptographic Failures)
排名上升一位。其以前被称为“A3:2017-敏感信息泄漏(Sensitive Data Exposure)”。敏感信息泄漏是常见的症状,而非根本原因。更新后的名称侧重于与密码学相关的风险,即之前已经隐含的根本原因。此类风险通常会导致敏感数据泄露或系统被攻破。 - A03:2021-注入(Injection)
排名下滑两位。94%的应用程序进行了某种形式的注入风险测试,发生安全事件的最大率为19%,平均率为3.37%,匹配到此类别的33个CWE共发生27.4万次,是出现第二多的风险类别。原“A07:2017-跨站脚本(XSS)”在2021年版中被纳入此风险类别。 - A04:2021-不安全设计(Insecure Design)
2021年版的一个新类别,其重点关注与设计缺陷相关的风险。如果我们真的想让整个行业“安全左移” ,我们需要更多的威胁建模、安全设计模式和原则,以及参考架构。不安全设计是无法通过完美的编码来修复的;因为根据定义,所需的安全控制从来没有被创建出来以抵御特定的安全攻击。 - A05:2021-安全配置错误(Security Misconfiguration)
排名上升一位。90%的应用程序都进行了某种形式的配置错误测试,平均发生率为4.5%,超过20.8万次的CWE匹配到此风险类别。随着可高度配置的软件越来越多,这一类别的风险也开始上升。原“A04:2017-XML External Entities(XXE) XML外部实体”在2021年版中被纳入此风险类别。 - A06:2021-自带缺陷和过时的组件(Vulnerable and Outdated Components)
排名上升三位。在社区调查中排名第2。同时,通过数据分析也有足够的数据进入前10名,是我们难以测试和评估风险的已知问题。它是唯一一个没有发生CVE漏洞的风险类别。因此,默认此类别的利用和影响权重值为5.0。原类别命名为“A09:2017-Using Components with Known Vulnerabilities 使用含有已知漏洞的组件”。 - A07:2021-身份识别和身份验证错误(Identification and Authentication Failures)
排名下滑五位。原标题“A02:2017-Broken Authentication失效的身份认证”。现在包括了更多与识别错误相关的CWE。这个类别仍然是Top 10的组成部分,但随着标准化框架使用的增加,此类风险有减少的趋势。 - A08:2021-软件和数据完整性故障(Software and Data Integrity Failures)
2021年版的一个新类别,其重点是:在没有验证完整性的情况下做出与软件更新、关键数据和CI/CD管道相关的假设。此类别共有10个匹配的CWE类别,并且拥有最高的平均加权影响值。原“A08:2017-Insecure Deserialization不安全的反序列化”现在是本大类的一部分。 - A09:2021-安全日志和监控故障(Security Logging and Monitoring Failures)
排名上升一位。来源于社区调查(排名第3)。原名为“A10:2017-Insufficient Logging & Monitoring 不足的日志记录和监控”。此类别现扩大范围,包括了更多类型的、难以测试的故障。此类别在 CVE/CVSS 数据中没有得到很好的体现。但是,此类故障会直接影响可见性、事件告警和取证。 - A10:2021-服务端请求伪造(Server-Side Request Forgery)
2021年版的一个新类别,来源于社区调查(排名第1)。数据显示发生率相对较低,测试覆盖率高于平均水平,并且利用和影响潜力的评级高于平均水平。加入此类别风险是说明:即使目前通过数据没有体现,但是安全社区成员告诉我们,这也是一个很重要的风险。
(4)CWE:Common weakness Enumeration,通用缺陷列表,简单来说就是漏洞类别的编号。例如CWE-79:XSS漏洞,网址为
http://cwe.mitre.org/data/definitions/79.html
;CWE-89:SQL注入,网址为http://cwe.mitre.org/data/definitions/89.html
。(5)CVE:Common vulnerabilities and Exposure,通用漏洞与披露,简单来说是具体某一个漏洞的编号.中国网站为信息安全漏洞门户(
http://cve.scap.org.cn/
),外国网站为http://cve.mitre.org/
。
tips:
1)MS17-010:微软在2017年发布的第10个安全公告。一个MS17-010对应多个CVE。可以打补丁修复该漏洞,微软的补丁为KB开头,应该打
2)S2-053:S2为Struts2,为APACHE开源开发java的框架,S2-053为S2发布的第53个安全公告。一般一个安全公告对应一个CVE。3 渗透测试流程
3.1 渗透测试执行标准PTES
渗透测试执行标准PTES(Penetration Testing Execution Standard)的先驱都是渗透测试行业的精英,渗透测试执行标准包含两个部分:PTES 方法论;PTES 技术指南。这个标准由渗透测试7个阶段的标准组成,可以在任意环境中进行富有成果的渗透测试。官网为
http:www.pentest-standard.org/index.php/Main_Page
。 渗透测试7个阶段如下:
(1) 事前互动
(2) 情报搜集
(3) 威胁建模
(4)漏洞分析
(5) 漏洞利用
(6) 深度利用
(7) 报告阶段
主要特点优势:- 它是非常全面的渗透测试框架,涵盖了渗透测试的技术方面和其他重要方面,如范围蔓延(scope creep)、报告,以及渗透测试人员保护自身的方法。
- 它介绍了多数测试任务的具体方法,可指导您准确测试目标系统的安全状态。
- 它汇聚了多名日行一“渗”的渗透测试专家的丰富经验。
- 它包含了最常用的以及很罕见的相关技术。
- 它浅显易懂,您可根据测试工作的需要对相应测试步骤进行调整。
3.2 通用渗透测试框架
从技术管理的角度来看,遵循正规的测试框架对安全测试极为重要。通用渗透测试框架涵盖了典型的审计测试工作和渗透测试工作会涉及到的各个阶段。相关阶段如下:
(1) 范围界定
(2) 信息搜集
(3) 目标识别
(4)服务枚举
(5) 漏洞映射
(6) 社会工程学
(7)漏洞利用
(8)权限提升
(9) 访问维护
(10) 文档报告3.2.1 范围界定
在开始技术性安全评估之间,务必要观察、研究目标环境的被测范围 。同时还要了解,这个范围牵扯多少个单位,是单个单位还是多个单位会参与到安全评估的工作中来,在范围界定阶段,需要考虑的典型因素如下:
- 取得授权。
- 测试对象是什么?
- 应当采取何种测试方法?
- 有哪些在测试过程中需要满足的条件?
- 哪些因素可能会限制测试执行的过程?
- 需要多久才能完成测试?
- 此次测试应当达成什么样的任务目标?
- 是否是复测?
3.2.2 信息搜集
(外围信息收集,非接触式信息收集)在划定了测试范围之后,就需要进入信息收集阶段。在这个阶段,渗透人员需要使用各种公开资源尽可能地获取测试目标的相关信息。他们搜集信息的互联网渠道主要有:
论坛/公告板/新闻组/媒体文章/博客/社交网络/github/其他商业或非商业性的网站。
此外,他们也可以借助各种搜索引擎中获取相关数据,如谷歌、雅虎、MSN必应、百度等。收集的信息主要包括:- DNS 服务器
- 路由关系
- whois 数据库
- 电子邮件地址
- 电话号码
- 个人信息
- 用户账户
收集的信息越多,渗透测试成功的概率越高。
3.2.3 目标识别
这个阶段的主要任务是识别目标的网络状态、操作系统和网络架构。该阶段工作旨在完整地展现目标网络里各种联网设备或技术的完整关系,以帮助测试人员在接下来的工作里枚举目标网络的各种服务。简单来说就是测试哪些主机在线,那些主机的IP地址是什么?被测单位的网络架构是什么?网络节点设备的牌子等。
3.2.4 服务枚举
这一阶段会根据前面各个阶段的成果,进一步找出目标系统中所有开放的端口。一旦找到了所有开放的端口,就可以通过这些端口来列出目标系统上运行的服务。主机上开放的端口都有相应的服务程序,对这些信息进行深度分析之后,可进一步发掘目标网络基础设施中可能存在的漏洞。即端口扫描,收集的主要信息如下:
- 开放了哪些端口
- 端口上运行的服务以及详细版本
- 技术架构
- Web 容器
- 开发语言以及框架
- 前后端分离
3.2.5 漏洞映射
可以根据已经发现的开放端口和服务程序,查找、分析目标系统中存在的漏洞。如果能够采用自动和手动这两种不同的测试方法结合起来,审计人员对目标系统的认知就会更为清晰、透彻,并能够仔细地检查任何已知和未知的漏洞。即漏洞扫描、漏洞挖掘。
3.2.6 社会工程学
如果目标网络没有直接的入口,欺骗的艺术 将起到抛砖引玉的重要作用。对目标组织中的人员进行定向攻击,很有可能帮助我们找到渗透目标系统的入口。例如,诱使用户运行安装存在后门的恶意程序,就可能为审计人员的渗透工作形成突破。社会工程学渗透分为多种不同实现形式。
- 伪装成网络管理员,通过电话要求用户提供自己的账户信息;
- 发送钓鱼邮件来劫持用户的银行账户;
- 诱使某人出现在某个地点。
在社会工程学中,达成同一既定目标的实现方式应有尽有。需要注意的是,在对目标实施欺骗以达成渗透目标之前,多数情况下需要长时间研究目标人员的心理。另外,在开展这个阶段的工作之前,您需要研究国内的法律是否有关于社会工程学的相关条款。
3.2.7 漏洞利用
在仔细检查和发现目标系统中的漏洞之后,就可以使用已有的漏洞利用程序对目标系统进行渗透。审计人员可以把客户端漏洞利用程序和社会工程学进行结合,进而控制目标系统。这个阶段的主要任务是控制目标系统 。这个流程可以分为三步,涉及攻击前、攻击、攻击后的相关行动。
3.2.8 权限提升
获取目标系统的控制权是渗透成功的标识 。接下来,审计人员就可以根据其所拥有的访问权限,在被测系统中自由发挥。审计人员也可以使用适用于目标系统的本地漏洞来提升自己的权限。只要他们能够在目标系统上运行提权漏洞利用程序,就可以获得主机的超级用户权限或者系统级权限。工程师还可以以该主机为跳板,进一步攻击局域网络。根据之前渗透范围的界定(授权),审计人员接下来会开展的攻击可能是受限制的,也可能是不受限制。然后,他们很有可能个以各种方式获得与控制系统有关的更多信息。具体的说,他们可能是用嗅探手段截获网络数据包,破解各种服务的密码,在局域网络中使用网络欺骗手段。所以说,提升权限的最终目的是获得目标系统的最高访问权限。
3.2.9 访问维护
多数情况下,审计人员需要在一段时间内维护他们对目标系统的访问权限。例如,在演示越权访问目标系统的时候,安装后门将节省重新渗透目标系统所耗费的大量时间。这种情况下,访问维护将节约获取目标系统访问权限所需要的时间、花费和资源。审计人员可以通过一些秘密的通信隧道,在既定时间内维持对目标的访问权限。这些隧道往往基于特定协议、代理或者点对点方法的后门程序。这种对系统的访问方法可以清楚地展示,入侵人员在目标系统实施攻击时隐藏行踪的具体方法。
- 埋藏后门
- 隧道技术
3.2.10 文档报告
在渗透测试的最后一个环节里,审计人员要记录、报告并现场演示那些已经识别、验证和利用了的安全漏洞。在被测单位的管理和技术团队会检查渗透时使用的方法,并会根据这些文档修补所有存在的安全漏洞。所以从道德角度来看,文档报告的工作十分重要。为了帮助管理人员和技术人员共同理解、分析当前IT 基础架构中的薄弱环节,可能需要给不同的部门撰写不同措辞的书面报告。
3.3 简化渗透测试流程
简化的渗透测试流程是在进行渗透测试过程中经常使用的流程,具体如下:
信息收集:- 基础信息:网络信息(IP等)
- 系统信息:网络拓扑图、路由器牌子、网络节点的牌子等
- 应用信息:终端设备等
- 人员信息:管理员、财务、人事等
- 防护信息:网络边界设备或网络节点设备,如有没有防火墙,有没有IPS、IDS或WAF,网络行为管理,全流量分析。
tips:
EXP为漏洞利用程序。4 归纳
(1)掌握渗透测试的定义
(2)掌握渗透测试的种类,分为黑盒测试和白盒测试,以及黑盒测试和白盒测试的定义
(3)了解脆弱性安全评估与渗透测试的区别
(4)掌握OWASP Top 10 (Web 十大安全漏洞)
(5)掌握渗透测试流程,特别是通用 渗透测试流程和简化渗透测试流程参考文章
[1]《通用渗透测试框架及简化渗透测试流程》
更多相关内容 - A01:2021-失效的访问控制(Broken Access Control)
-
从外部入侵公司:外部渗透测试
2018-05-21 15:46:19从外部入侵公司:外部渗透测试这个文章系列共有两篇,这是其一。你可能会有兴趣看另外一篇:从内部入侵公司:内部渗透测试。介绍有时候会有客户问我是如何处理那么多渗透测试的技术。你知道我在屏幕上打开的带有绿色...渗透测试”>从外部入侵公司:外部渗透测试
这个文章系列共有两篇,这是其一。你可能会有兴趣看另外一篇:从内部入侵公司:内部渗透测试。
介绍
有时候会有客户问我是如何处理那么多渗透测试的技术。你知道我在屏幕上打开的带有绿色文字的黑色小盒子是什么东西吗?偶尔,当我在和新的或有兴趣成为渗透测试的人交谈时,发现他们知道工具怎么使用,也知道他们经常了解漏洞的具体情况,但他们不一定知道漏洞是怎么结合在一起使用的。
另外,GracefulSecurity.com有非常多Web应用安全的相关内容,但没有任何关于它们如何结合使用的说明。所以我计划在这里写一个例子,来逐步地说明我是如何将一个web地址转换成实际的业务影响。
没有两个应用是完全一样的,但我作为”攻击者”,意图通常是相似的,所以这不会成为一个拿到系统权限的完整指南,如果你考虑让测试人员评估你的安全性,而他却在你工具包中徘徊,或者如果你刚在你第一本web书籍中领悟出了点东西,想更多地了解整个过程。那么,希望这篇文章能够填补一些你的空白。
攻击
提到攻击,入侵和攻击网络的实际行为,都会遵循一种方法。当询问你的渗透测试人员时,他们会告诉你操作方法。但要记住,每个网络环境都不同,每次攻击也都不一样。测试人员操作的标准方式是找到一个阻力最小的路径并使用它来获得尽可能高的权限,然后利用此权限来查找其他攻击入口。
渗透测试不是脆弱性分析。通常,在脆弱性分析的时候你要给评估者提供很多比较重要的信息和权限。他们会在授权的情况下进行网络扫描,来确定所有问题或尽可能多的问题。脆弱性评估通常对问题进行独立评级,不考虑在现实中的可利用性,也不考虑多个问题结合在一起使用所产生的影响。所以,脆弱性评估会给人广泛但不深刻的网络安全印象,但会突出一些系统问题,如补丁管理。
而渗透测试旨在尽可能地深入,尽管这可能会牺牲广度。但是这会让攻击者很直观地了解到这个漏洞的利用价值。这些评估很可能会涉及到实际利用的能故意损坏系统的漏洞,并且强调了攻击者为了获得最高权限不择手段,可能会带来的最严重的后果。
渗透测试人员通常会有以下步骤:
- 枚举和映射
- 漏洞发现
- 漏洞利用
- 内网漫游
- 提权
- 清除痕迹
渗透测试人员有可能运气很好,很快就直接通过了这些阶段。甚至有可能利用一些捷径来跳过某些阶段来达成目标。有可能也很蛋疼,必须要一次又一次地重复测试,来绕过一些保护机制。
枚举和映射
通常,在渗透测试开始前,会获得一些ip地址和网站的URL地址,类似于”*.example.org”。很明显,客户就是要你评估该域的所有子域。问题是通常一个配置良好的系统不应该输出一个所有可用子域列表,所以你应该自己去破解。
如果系统配置不当,你可以从权威域名服务器中读取域列表。你可以使用以下命令来找到这台服务器:
> nslookup > set querytype=soa > example.org
然后用下面的命令来和服务器交互:
dig axfr @dns-server example.org
其中,dns-server是nslookup命令中的权威域名服务器,执行之后将导致DNS区域传送并且输出一个有效的子域列表。(DNS域传送漏洞)
另一个可替代的方式是通过Google Hacking,使用Google “dorks”。使用一些具体的关键字来限制搜索引擎的结果。例如:
site:example.org
搜索的链接为:
https://www.google.co.uk/?gws_rd=ssl#q=site:example.org&filter=0
这会导致谷歌将搜索范围限制在目标域名,它可能会返回如 ftp.example.org,www.example.org之类的结果。为了节省搜寻信息的时间,我们可以记下发现的子域,然后使用否定搜索(negative searching) 来排除一些搜索结果:
site:example.org -site:ftp.example.org -site:www.example.org
直到你找到所有能搜索到的域名为止!
爆破子域的最后一种方式是使用常见的子域名称列表。这里不需要花里胡哨的操作,只需要创建一个名为subdomains.txt的潜在子域列表,然后运行一个bash命令:
cat subdomains.txt | while read line; do nslookup $line".example.org";done | grep "Name:"
如果有命中,会显示出像这样的结果:
Name: www.example.org
现在你已经掌握了范围内的应用列表,是时候开始映射应用本身了。几乎所有Web应用评估我都会使用Burp Suite,也可以使用另一个可替代的免费版本OWASP ZAP。如果你刚开始使用Burp,我写了一篇 Burp Suite专业版的使用教程
Burp有两个选项可以映射应用,”spider”和”discover content”。Spider使用相当简单,选择Target->Site map。然后右键选择Spider this host。如下图:
Spider(爬虫)只需要一个域名然后点击所有链接就可以有效地映射所有链接的内容。显然,这样就不会找到任何没有链接到的内容。如隐藏的管理界面、日志文件和备份内容。这时候”Forced Browser”(爆破路径)就派上用场了。
该选项尝试访问可能的文件和目录列表,然后会告诉你结果。你可以使用会话按钮启动浏览器:
结束之后你会得到关于该应用所有内容的映射(map),这个过程很有可能会花费很长的时间。这意味着,在Burp面板中会有一个列表,这个列表包含该应用提供的所有功能?并不是,这只是测试每个功能是否存在漏洞的一个例子。可以在Burp界面中看到唯一请求列表:
跑完整个应用之后,”Contents”会列出所有功能,然后我们就逐个地测试
漏洞发现
在这一步,我们将依次测试每个功能,可能会用到Burp suite的Intruder或者Repeater(这里有Burp suite的介绍)。有两个主要的评估方式,第一个是模糊测试-打破功能正常逻辑,看看是否有什么有趣的事情发生。”有趣”可能是详细的错误信息、信息泄露、绕过等。或者你可以从漏洞的角度去尝试一些特殊的payloads。比如HTTP头注入、SQL注入、命令注入、跨站脚本(XSS)、[跨站请求伪造(XSRF)]()、XML外部实体注入、不安全的直接对象引用(Insecure Direct Object References)等。
从通用模糊测试角度看,将各种payloads放在每个能输入的地方看看它们是什么反应,比如以下payloads:
1 10 100 1000000000000000000000000 -1 0.1 lizard ' " ; ) )))))))))))))))))))) ] ]]]]]]]]]]]]]]]]]]]] TRUE FALSE \0 %00 |
应用程序会以输出的方式响应,在上下文环境中就可能导致一个漏洞:详细的错误信息输出。或者,可以发送一些特殊构造的payloads来利用漏洞,如OWASP Top 10中收录的问题。这里收录了一些不错的payloads,也可以作为fuzzdb的一部分。
渗透攻击,内网漫游和提权
少数的渗透行为,能导致内网漫游或者提权。首先,如果存在允许命令执行的漏洞-如SQL注入或命令注入。在这种情况下,评估人员很可能会瞄准DMZ(隔离区)或内部企业网络中的其他系统。事实上,在能够执行命令的时候,安全评估就不再局限于Web应用程序评估,而是更多地倾向于内部网络评估。
另外还有一些潜在的漏洞,如XML外部实体注入、路径遍历、任意文件下载等漏洞可能会导致证书被盗用。然后通过证书重用对其他系统进行扫描。—–好像有问题。
最后,如果攻击者能够使存储型XSS发生,那这个payload很有可能可以在完全不同的应用程序上执行。举个例子,如果一个用户在www.example.org注册页面中注册一个账户,在地址等参数中填入XSS脚本,该内容可能会存储在admin.example.org中,可能通过窃取session tokens或者站内请求伪造,来攻击该应用。
清理/清除痕迹
如果是恶意攻击,那还有很多事要做。你会想要删除日志记录和所有活动的痕迹。而作为一个渗透测试人员也一样,在渗透使用到的路径中可能会残留一些文件和用户账户,这些也都要清理干净。例如由于不安全的文件处理而可能上传web shell,在渗透测试结束之后要将此文件删除,尽可能地和测试开始之前一样。
然后就开始写评估报告了。
作者:Holly-Grace
翻译:i春秋翻译小组-北风乱
责任编辑:jishuzhain
翻译来源:https://www.gracefulsecurity.com/hacking-from-inside/有问题大家可以留言哦,也欢迎大家到春秋论坛中来耍一耍 >>>点击跳转
-
【渗透测试】常用工具总结
2022-03-01 18:24:28(Linux菜刀)php webshell的安全测试工具 ltrace:跟踪进程调用库函数的情况工具 fcrackzip:zip加密文件破解工具 POP3:电子邮件协议 Hydra:暴力破解工具 简介 Hydra是一款非常强大的暴力破解工具,它是由著名的...目录
- POP3:电子邮件协议
- Hydra:暴力破解工具
- burpsuite-Decoder:编码解码工具
- SearchSploit:漏洞查找工具
- strings&binwalk&exiftool:查看jpg文件底层内容工具
- Dirb:Kali Linux下web网站目录爆破工具
- cewl:密码攻击工具
- wget:Linux下载文件的工具
- Netdiscover:二层发现工具
- arp-scan :ARP扫描工具
- GOBUSTER:目录/文件和DNS爆破工具
- socat:nc加强版
- LinEnum:Linux枚举及权限提升检查工具
- Wireshark:流量分析工具
- SSH:远程连接工具
- nessus:系统漏洞扫描与分析工具
- curl:文件传输工具
- Nikto :web漏洞扫描神器
- john开膛手:密码破解工具
- hping:TCP/IP数据包组装/分析工具
- LES:寻找关键漏洞的工具
- hashcat:密码破解工具
- Netcat:网络测试工具
- weevely:(Linux菜刀)php webshell的安全测试工具
- ltrace:跟踪进程调用库函数的情况工具
- fcrackzip:zip加密文件破解工具
POP3:电子邮件协议
Hydra:暴力破解工具
-
简介
Hydra是一款非常强大的暴力破解工具,它是由著名的黑客组织THC开发的一款开源暴力破解工具。Hydra是一个验证性质的工具,主要目的是:展示安全研究人员从远程获取一个系统认证权限。 -
目前该工具支持以下协议的爆破:
AFP,Cisco AAA,Cisco身份验证,Cisco启用,CVS,Firebird,FTP,HTTP-FORM-GET,HTTP-FORM-POST,HTTP-GET,HTTP-HEAD,HTTP-PROXY,HTTPS-FORM- GET,HTTPS-FORM-POST,HTTPS-GET,HTTPS-HEAD,HTTP-Proxy,ICQ,IMAP,IRC,LDAP,MS-SQL,MYSQL,NCP,NNTP,Oracle Listener,Oracle SID,Oracle,PC-Anywhere, PCNFS,POP3,POSTGRES,RDP,Rexec,Rlogin,Rsh,SAP / R3,SIP,SMB,SMTP,SMTP枚举,SNMP,SOCKS5,SSH(v1和v2),Subversion,Teamspeak(TS2),Telnet,VMware-Auth ,VNC和XMPP。
对于 HTTP,POP3,IMAP和SMTP,支持几种登录机制,如普通和MD5摘要等。 -
常见参数
-R
:继续从上一次进度接着破解-S
:大写,采用SSL链接-s <PORT>
:小写,可通过这个参数指定非默认端口-l <LOGIN>
:指定破解的用户,对特定用户破解-L <FILE>
:指定用户名字典-p <PASS>
:小写,指定密码破解,少用,一般是采用密码字典-P <FILE>
:大写,指定密码字典-e <ns>
:可选选项,n:空密码试探,s:使用指定用户和密码试探-C <FILE>
:使用冒号分割格式,例如“登录名:密码”来代替 -L/-P 参数-M <FILE>
:指定目标列表文件一行一条-o <FILE>
:指定结果输出文件-f
:在使用-M参数以后,找到第一对登录名或者密码的时候中止破解-t <TASKS>
:同时运行的线程数,默认为16-w <TIME>
:设置最大超时的时间,单位秒,默认是30s-v / -V
:显示详细过程server
:目标ipservice
:指定服务名,支持的服务和协议:telnet ftp pop3[-ntlm] imap[-ntlm] smb smbnt http[s]-{head|get} http-{get|post}-form http-proxy cisco cisco-enable vnc ldap2 ldap3 mssql mysql oracle-listener postgres nntp socks5 rexec rlogin pcnfs snmp rsh cvs svn icq sapr3 ssh2 smtp-auth[-ntlm] pcanywhere teamspeak sip vmauthd firebird ncp afp等等OPT
:可选项
-
破解SSH
hydra -L user.txt -P passwd.txt -o ssh.txt -vV -t 5 10.96.10.252 ssh #-L指定用户字典 -P 指定密码字典 -o把成功的输出到ssh.txt文件 -vV显示详细信息
-
破解FTP
hydra -L user.txt -P passwd.txt -o ftp.txt -t 5 -vV 10.96.10.208 ftp #-L指定用户名列表 -P指定密码字典 -o把爆破的输出到文件 -t指定线程 -vV 显示详细信息
-
破解HTTP
破解HTTP,需要分析数据包的提交格式
1.GET方式:hydra -L user.txt -P passwd.txt -o http_get.txt -vV 10.96.10.208 http-get-form "/vulnerabilities/brute/:username=^USER^&password=^PASS^&Login=Login:F=Username and/or password incorrect:H=Cookie: PHPSESSID=nvvrgk2f84qhnh43cm28pt42n6; security=low" -t 3 #前面那些参数就不说了,主要说一下引号里面的数据 /vulnerabilities/brute/ 代表请求目录,用:分隔参数,^USER^和^PASS^代表是攻击载荷,F=后面是代表密码错误时的关键字符串 ,H后面是cookie信息
2.POST方式:
hydra -L user.txt -P passwd.txt -t 3 -o http_post.txt -vV 10.96.10.183 http-post-form "/login.php:username=^USER^&password=^PASS^&Login=Login&user_token=dd6bbcc4f4672afe99f15b1d2c249ea5:S=index.php" #前面那些参数就不说了,主要说一下引号里面的数据 /login.php 代表请求目录,用:分隔参数,^USER^和^PASS^代表是攻击载荷,S等于的是密码正确时返回应用的关键字符串
3.token方式:
采用token的验证方式时,每次登录的token都是不一样的,所以不能用hydra来破解。
目前,大多数网站登录都采用了token验证,所以,都不能使用Hydra来破解。
我们可以自己写一个python脚本来破解。
# -*- coding: utf-8 -*- """ Created on Sat Nov 24 20:42:01 2018 @author: 小谢 """ import urllib import requests from bs4 import BeautifulSoup ##第一步,先访问 http://127.0.0.1/login.php页面,获得服务器返回的cookie和token def get_cookie_token(): headers={'Host':'127.0.0.1', 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0', 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Lanuage':'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3', 'Connection':'keep-alive', 'Upgrade-Insecure-Requests':'1'} res=requests.get("http://127.0.0.1/login.php",headers=headers) cookies=res.cookies a=[(';'.join(['='.join(item)for item in cookies.items()]))] ## a为列表,存储cookie和token html=res.text soup=BeautifulSoup(html,"html.parser") token=soup.form.contents[3]['value'] a.append(token) return a ##第二步模拟登陆 def Login(a,username,password): #a是包含了cookie和token的列表 headers={'Host':'127.0.0.1', 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0', 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Lanuage':'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3', 'Connection':'keep-alive', 'Content-Length':'88', 'Content-Type':'application/x-www-form-urlencoded', 'Upgrade-Insecure-Requests':'1', 'Cookie':a[0], 'Referer':'http://127.0.0.1/login.php'} values={'username':username, 'password':password, 'Login':'Login', 'user_token':a[1] } data=urllib.parse.urlencode(values) resp=requests.post("http://127.0.0.1/login.php",data=data,headers=headers) return #重定向到index.php def main(): with open("user.txt",'r') as f: users=f.readlines() for user in users: user=user.strip("\n") #用户名 with open("passwd.txt",'r') as file: passwds=file.readlines() for passwd in passwds: passwd=passwd.strip("\n") #密码 a=get_cookie_token() ##a列表中存储了服务器返回的cookie和toke Login(a,user,passwd) headers={'Host':'127.0.0.1', 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0', 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Lanuage':'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3', 'Connection':'keep-alive', 'Upgrade-Insecure-Requests':'1', 'Cookie':a[0], 'Referer':'http://127.0.0.1/login.php'} response=requests.get("http://127.0.0.1/index.php",headers=headers) if response.headers['Content-Length']=='7524': #如果登录成功 print("用户名为:%s ,密码为:%s"%(user,passwd)) #打印出用户名和密码 break if __name__=='__main__': main()
-
破解3389远程登录
3389端口是Windows 2000(2003) Server远程桌面的服务端口,可以通过这个端口,用"远程桌面"等连接工具来连接到远程的服务器,如果连接上了,输入系统管理员的用户名和密码后,将变得可以像操作本机一样操作远程的电脑,因此远程服务器一般都将这个端口修改数值或者关闭。hydra 202.207.236.4 rdp -L user.txt -P passwd.txt -V
burpsuite-Decoder:编码解码工具
Burp Decoder是Burp Suite中一款编码解码工具,将原始数据转换成各种编码和哈希表的简单工具,它能够智能地识别多种编码格式采用启发式技术。
通过有请求的任意模块的右键菜单send to Decoder或输入数据选择相应的数据格式即可进行解码编码操作,或直接点击Smart decoding进行智能解码。
对于同一个数据,我们可以在Decoder的界面,进行多次编码解码的转换。
SearchSploit:漏洞查找工具
-
“searchsploit”是一个用于Exploit-DB的命令行搜索工具,它还允许你随身带一份Exploit-DB的副本。
-
SearchSploit为您提供了在本地保存的存储库中执行详细的离线搜索的能力。这种能力特别适用于在没有互联网接入的情况下对网络进行安全评估。许多漏洞都包含了二进制文件的链接,这些文件不包含在标准存储库中,但可以在我们的Exploit-DB二进制文件中找到。
strings&binwalk&exiftool:查看jpg文件底层内容工具
-
binwalk(路由逆向分析工具)
-
exiftool(图虫)
-
strings(识别动态库版本指令):在对象文件或二进制文件中查找可打印的字符串
-
语法:
strings [ -a ] [ - ] [ -o ] [ -t Format ] [ -n Number ] [ -Number ] [file ... ]
-
-a --all:扫描整个文件而不是只扫描目标文件初始化和装载段 -f –print-file-name:在显示字符串前先显示文件名 -n –bytes=[number]:找到并且输出所有NUL终止符序列 - :设置显示的最少的字符数,默认是4个字符 -t --radix={o,d,x} :输出字符的位置,基于八进制,十进制或者十六进制 -o :类似--radix=o -T --target= :指定二进制文件格式 -e --encoding={s,S,b,l,B,L} :选择字符大小和排列顺序:s = 7-bit, S = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit @ :读取中选项
-
Dirb:Kali Linux下web网站目录爆破工具
(kali自带的字典)
big.txt #大的字典 small.txt #小的字典 catala.txt #项目配置字典 common.txt #公共字典 euskera.txt #数据目录字典 extensions_common.txt #常用文件扩展名字典 indexes.txt #首页字典 mutations_common.txt #备份扩展名 spanish.txt #方法名或库目录 others #扩展目录,默认用户名等 stress #压力测试 vulns #漏洞测试
cewl:密码攻击工具
通过爬行网站获取关键信息创建一个密码字典。
官网:http://digi.ninja/projects/cewl.php命令如下:
cewl 1.1.1.1 -m 3 -d 3 -e -c -v -w a.txt (1.1.1.1可以是目标网站的ip地址,也可以是网址)
-m:最小单词长度
-d:爬网深度
-e:收集包含emali地址信息
-c:每个单词出现的次数
支持基本,摘要,身份验证
支持代理;CEWL可以和Hydra结合使用,一个获取字典,另一个暴力破解
wget:Linux下载文件的工具
- 可下载软件或从远程服务器恢复备份到本地服务器。
- 支持HTTP,HTTPS和FTP协议,可以使用HTTP代理。
- 可自动下载:可以在用户退出系统的之后在后台执行。这意味这你可以登录系统,启动一个wget下载任务,然后退出系统,wget将在后台执行直到任务完成
- 可以跟踪HTML页面上的链接依次下载来创建远程服务器的本地版本,完全重建原始站点的目录结构。这又常被称作”递归下载”。
用法: wget [选项]... [URL]... 启动: -V, --version 显示 Wget 的版本信息并退出。 -h, --help 打印此帮助。 -b, --background 启动后转入后台。 -e, --execute=COMMAND 运行一个“.wgetrc”风格的命令。 日志和输入文件: -o, --output-file=FILE 将日志信息写入 FILE。 -a, --append-output=FILE 将信息添加至 FILE。 -d, --debug 打印大量调试信息。 -q, --quiet 安静模式 (无信息输出)。 -v, --verbose 详尽的输出 (此为默认值)。 -nv, --no-verbose 关闭详尽输出,但不进入安静模式。 --report-speed=TYPE Output bandwidth as TYPE. TYPE can be bits. -i, --input-file=FILE 下载本地或外部 FILE 中的 URLs。 -F, --force-html 把输入文件当成 HTML 文件。 -B, --base=URL 解析与 URL 相关的 HTML 输入文件 (由 -i -F 选项指定)。 --config=FILE Specify config file to use. 下载: -t, --tries=NUMBER 设置重试次数为 NUMBER (0 代表无限制)。 --retry-connrefused 即使拒绝连接也是重试。 -O, --output-document=FILE 将文档写入 FILE。 -nc, --no-clobber skip downloads that would download to existing files (overwriting them). -c, --continue 断点续传下载文件。 --progress=TYPE 选择进度条类型。 -N, --timestamping 只获取比本地文件新的文件。 --no-use-server-timestamps 不用服务器上的时间戳来设置本地文件。 -S, --server-response 打印服务器响应。 --spider 不下载任何文件。 -T, --timeout=SECONDS 将所有超时设为 SECONDS 秒。 --dns-timeout=SECS 设置 DNS 查寻超时为 SECS 秒。 --connect-timeout=SECS 设置连接超时为 SECS 秒。 --read-timeout=SECS 设置读取超时为 SECS 秒。 -w, --wait=SECONDS 等待间隔为 SECONDS 秒。 --waitretry=SECONDS 在获取文件的重试期间等待 1..SECONDS 秒。 --random-wait 获取多个文件时,每次随机等待间隔 0.5*WAIT...1.5*WAIT 秒。 --no-proxy 禁止使用代理。 -Q, --quota=NUMBER 设置获取配额为 NUMBER 字节。 --bind-address=ADDRESS 绑定至本地主机上的 ADDRESS (主机名或是 IP)。 --limit-rate=RATE 限制下载速率为 RATE。 --no-dns-cache 关闭 DNS 查寻缓存。 --restrict-file-names=OS 限定文件名中的字符为 OS 允许的字符。 --ignore-case 匹配文件/目录时忽略大小写。 -4, --inet4-only 仅连接至 IPv4 地址。 -6, --inet6-only 仅连接至 IPv6 地址。 --prefer-family=FAMILY 首先连接至指定协议的地址 FAMILY 为 IPv6,IPv4 或是 none。 --user=USER 将 ftp 和 http 的用户名均设置为 USER。 --password=PASS 将 ftp 和 http 的密码均设置为 PASS。 --ask-password 提示输入密码。 --no-iri 关闭 IRI 支持。 --local-encoding=ENC IRI (国际化资源标识符) 使用 ENC 作为本地编码。 --remote-encoding=ENC 使用 ENC 作为默认远程编码。 --unlink remove file before clobber. 目录: -nd, --no-directories 不创建目录。 -x, --force-directories 强制创建目录。 -nH, --no-host-directories 不要创建主目录。 --protocol-directories 在目录中使用协议名称。 -P, --directory-prefix=PREFIX 以 PREFIX/... 保存文件 --cut-dirs=NUMBER 忽略远程目录中 NUMBER 个目录层。 HTTP 选项: --http-user=USER 设置 http 用户名为 USER。 --http-password=PASS 设置 http 密码为 PASS。 --no-cache 不在服务器上缓存数据。 --default-page=NAME 改变默认页 (默认页通常是“index.html”)。 -E, --adjust-extension 以合适的扩展名保存 HTML/CSS 文档。 --ignore-length 忽略头部的‘Content-Length’区域。 --header=STRING 在头部插入 STRING。 --max-redirect 每页所允许的最大重定向。 --proxy-user=USER 使用 USER 作为代理用户名。 --proxy-password=PASS 使用 PASS 作为代理密码。 --referer=URL 在 HTTP 请求头包含‘Referer: URL’。 --save-headers 将 HTTP 头保存至文件。 -U, --user-agent=AGENT 标识为 AGENT 而不是 Wget/VERSION。 --no-http-keep-alive 禁用 HTTP keep-alive (永久连接)。 --no-cookies 不使用 cookies。 --load-cookies=FILE 会话开始前从 FILE 中载入 cookies。 --save-cookies=FILE 会话结束后保存 cookies 至 FILE。 --keep-session-cookies 载入并保存会话 (非永久) cookies。 --post-data=STRING 使用 POST 方式;把 STRING 作为数据发送。 --post-file=FILE 使用 POST 方式;发送 FILE 内容。 --content-disposition 当选中本地文件名时 允许 Content-Disposition 头部 (尚在实验)。 --content-on-error output the received content on server errors. --auth-no-challenge 发送不含服务器询问的首次等待 的基本 HTTP 验证信息。 HTTPS (SSL/TLS) 选项: --secure-protocol=PR choose secure protocol, one of auto, SSLv2, SSLv3, TLSv1, TLSv1_1 and TLSv1_2. --no-check-certificate 不要验证服务器的证书。 --certificate=FILE 客户端证书文件。 --certificate-type=TYPE 客户端证书类型,PEM 或 DER。 --private-key=FILE 私钥文件。 --private-key-type=TYPE 私钥文件类型,PEM 或 DER。 --ca-certificate=FILE 带有一组 CA 认证的文件。 --ca-directory=DIR 保存 CA 认证的哈希列表的目录。 --random-file=FILE 带有生成 SSL PRNG 的随机数据的文件。 --egd-file=FILE 用于命名带有随机数据的 EGD 套接字的文件。 FTP 选项: --ftp-user=USER 设置 ftp 用户名为 USER。 --ftp-password=PASS 设置 ftp 密码为 PASS。 --no-remove-listing 不要删除‘.listing’文件。 --no-glob 不在 FTP 文件名中使用通配符展开。 --no-passive-ftp 禁用“passive”传输模式。 --preserve-permissions 保留远程文件的权限。 --retr-symlinks 递归目录时,获取链接的文件 (而非目录)。 WARC options: --warc-file=FILENAME save request/response data to a .warc.gz file. --warc-header=STRING insert STRING into the warcinfo record. --warc-max-size=NUMBER set maximum size of WARC files to NUMBER. --warc-cdx write CDX index files. --warc-dedup=FILENAME do not store records listed in this CDX file. --no-warc-compression do not compress WARC files with GZIP. --no-warc-digests do not calculate SHA1 digests. --no-warc-keep-log do not store the log file in a WARC record. --warc-tempdir=DIRECTORY location for temporary files created by the WARC writer. 递归下载: -r, --recursive 指定递归下载。 -l, --level=NUMBER 最大递归深度 (inf 或 0 代表无限制,即全部下载)。 --delete-after 下载完成后删除本地文件。 -k, --convert-links 让下载得到的 HTML 或 CSS 中的链接指向本地文件。 --backups=N before writing file X, rotate up to N backup files. -K, --backup-converted 在转换文件 X 前先将它备份为 X.orig。 -m, --mirror -N -r -l inf --no-remove-listing 的缩写形式。 -p, --page-requisites 下载所有用于显示 HTML 页面的图片之类的元素。 --strict-comments 用严格方式 (SGML) 处理 HTML 注释。 递归接受/拒绝: -A, --accept=LIST 逗号分隔的可接受的扩展名列表。 -R, --reject=LIST 逗号分隔的要拒绝的扩展名列表。 --accept-regex=REGEX regex matching accepted URLs. --reject-regex=REGEX regex matching rejected URLs. --regex-type=TYPE regex type (posix|pcre). -D, --domains=LIST 逗号分隔的可接受的域列表。 --exclude-domains=LIST 逗号分隔的要拒绝的域列表。 --follow-ftp 跟踪 HTML 文档中的 FTP 链接。 --follow-tags=LIST 逗号分隔的跟踪的 HTML 标识列表。 --ignore-tags=LIST 逗号分隔的忽略的 HTML 标识列表。 -H, --span-hosts 递归时转向外部主机。 -L, --relative 只跟踪有关系的链接。 -I, --include-directories=LIST 允许目录的列表。 --trust-server-names use the name specified by the redirection url last component. -X, --exclude-directories=LIST 排除目录的列表。 -np, --no-parent 不追溯至父目录。
Netdiscover:二层发现工具
ARP是将IP地址转化物理地址的网络协议。
通过该协议,可以判断某个IP地址是否被使用,从而发现网络中存活的主机。参数 意义 -i 网卡 选择你监控的网卡。比如eth0 -r range 指定IP段。比如192.168.0.0/24 -l filename 从文件读取range列表 -p 被动模式。默默的侦听指定的网卡以发现别的二层主机 -t ARP包发送间隔。单位毫秒。这个可以用来规避检测系统的告警。 -c 发包数量 netdiscover -i eth0 -r 192.168.43.0/24 主动发现:-i指定所要侦听的网卡,-r指定ip段。
netdiscover -p 被动发现
arp-scan :ARP扫描工具
arp-scan是Kali Linux自带的一款ARP扫描工具。该工具可以进行单一目标扫描,也可以进行批量扫描。批量扫描的时候,用户可以通过CIDR地址范围或者列表文件的方式指定。该工具允许用户定制ARP包,构建非标准数据包。同时,该工具会自动解析Mac地址,给出MAC对应的硬件厂商,帮助用户确认目标。
CIDR:无类别域间路由,是一个用于给用户分配IP地址以及在互联网上有效地路由IP数据包的对IP地址进行归类的方法。
ARP:地址解析协议(Address Resolution Protocol),其基本功能为透过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。它是IPv4中网络层必不可少的协议,是根据IP地址获得物理地址MAC的一个TCP/IP协议。通过ARP,在局域网可以很容易构成一个ARP欺骗,从而得到有用数据信息。
指令介绍
参数名 参数含义 使用示例 -f 从指定文件中读取主机名或地址 arp-scan -f ip.txt -l 从网络接口配置生成地址 arp-scan -l -i 各扫描之间的时间差 arp-scan -l -i 1000 -r 每个主机扫描次数 arp-scan -l -r 5 -V 显示程序版本并退出 arp-scan -l -V -t 设置主机超时时间 arp-scan -t 1000 192.168.75.0/24 -L 使用网络接口 arp-scan -L eth0 -g 不显示重复的数据 arp-scan -l -g -D 显示数据包往返时间 arp-scan -l -D
轻量级扫描工具,用来扫描局域网的主机还是挺好用的,由于扫描的少,所以扫描速度比较快,可以很快的查看到局域网有哪些主机和对应的MAC地址,配合nmap一起使用有奇效
GOBUSTER:目录/文件和DNS爆破工具
常用命令行选项
-fw - 使用通配符结果强制处理域。 -np - 隐藏进度输出。 -m <mode>- 使用哪种模式,dir或者dns(默认:) dir。 -q - 禁用横幅/下划线输出。 -t <threads>- 要运行的线程数(默认值:) 10。 -u <url/domain> - 完整URL(包括方案)或基本域名。 -v - 详细输出(显示所有结果)。 -w <wordlist>- 用于暴力强制的wordlist的路径(-用于stdin)。
dns模式的命令行选项
-cn - 显示CNAME记录(不能与'-i'选项一起使用)。 -i - 显示结果的所有IP地址。
dir模式的命令行选项
-a <user agent string> - 指定要在请求标头中发送的用户代理字符串。 -c <http cookies> - 使用它来指定您可能需要的任何cookie(模拟身份验证)。 -e - 指定呈现完整URL的扩展模式。 -f- 附加/目录暴力。 -k - 跳过SSL证书的验证。 -l - 显示响应的长度。 -n - “无状态”模式,禁用结果状态代码的输出。 -o <file> - 指定要将输出写入的文件名。 -p <proxy url> - 指定用于所有请求的代理(方案与URL方案非常匹配)。 -r - 按照重定向。 -s <status codes>- 逗号分隔的状态代码列表集合被视为“正面”(默认值:) 200,204,301,302,307。 -x <extensions> - 要检查的扩展名列表(如果有)。 -P <password> - HTTP授权密码(仅限基本身份验证,如果缺少则提示)。 -U <username> - HTTP授权用户名(仅限基本身份验证)。 -to <timeout> - HTTP超时。示例:10s,100ms,1m(默认值:10s)。
建造
由于此工具是用Go编写的,因此您需要安装Go语言/编译器/等。有关安装和设置的完整详细信息,请访问Go语言网站。安装后,您有两个选择。
编译
gobuster 现在有外部依赖,所以他们需要先被拉入:
gobuster $ go get && go build
这将为您创建gobuster二进制文件。如果要将其安装在$GOPATH/bin可以运行的文件夹中:
gobuster $ go install
如果您已经拥有所有依赖项,则可以使用构建脚本:
make- 为当前Go配置构建(即运行go build)。 make windows- 为Windows构建32位和64位二进制文件,并将它们写入build子文件夹。 make linux- 为linux构建32位和64位二进制文件,并将它们写入build子文件夹。 make darwin- 为darwin构建32位和64位二进制文件,并将它们写入build子文件夹。 make all- 为所有平台和体系结构构建,并将生成的二进制文件写入build子文件夹。 make clean- 清除build子文件夹。 make test - 运行测试。
作为脚本运行
gobuster $ go run main.go <parameters>
通过STDIN进行单词列表
生词能够管道输送到gobuster通过stdin通过提供-到-w选项:
hashcat -a 3 --stdout ?l | gobuster -u https://mysite.com -w -
注意:如果-w选项与STDIN的管道同时指定,则会显示错误,程序将终止。
socat:nc加强版
https://zhuanlan.zhihu.com/p/347722248
netcat加强版,可以传递完整的带有tty的TCP连接,但只能在linux下面运行
基本命令:
socat [参数] <地址1> <地址2>
常用方法:
- 端口转发
# 端口转发 #socat -d -d -lf /var/log/socat.log TCP4-LISTEN:6666,bind=127.0.0.1,reuseaddr,fork TCP:127.0.0.1:3306 #mysql -uroot -h127.0.0.1 -P6666 -p
- 文件写入
#不使用group则默认当前用户 socat -T 2 -u - CREATE:./james,group=test,perm=0640 socat -t 2 -u - CREATE:./james,perm=0640
- 读取文件
socat - /tmp/jamestest socat - GOPEN:./james socat - OPEN:./james
- 调用命令
socat - EXEC:ls
LinEnum:Linux枚举及权限提升检查工具
-k 输入在收集信息的过程中需要匹配的关键字 -e 生成的文件放在哪个目录下 -t 记录测试的过程 -s 输入密码用来检测sudo权限的信息 -r 输入报告的名称 -h 显示帮助信息
Wireshark:流量分析工具
SSH:远程连接工具
SSH(远程连接工具)连接原理:ssh服务是一个守护进程(demon),系统后台监听客户端的连接,ssh服务端的进程名为sshd,负责实时监听客户端的请求(IP 22端口),包括公共秘钥等交换等信息。
服务器启动的时候自己产生一个密钥(768bit公钥),本地的ssh客户端发送连接请求到ssh服务器,服务器检查连接点客户端发送的数据和IP地址,确认合法后发送密钥(768bits)给客户端,此时客户端将本地私钥(256bit)和服务器的公钥(768bit)结合成密钥对key(1024bit),发回给服务器端,建立连接通过key-pair数据传输。
1.登录 :ssh -p22 omd@192.168.25.137
2.直接执行命令 -->最好全路径
ssh root@192.168.25.137 ls -ltr /backup/data
==>ssh root@192.168.25.137 /bin/ls -ltr /backup/data
3.查看已知主机
cat /root/.ssh/known_hosts
4.ssh远程执行sudo命令
ssh -t omd@192.168.25.137 sudo rsync hosts /etc/5.scp
1.功能 -->远程文件的安全(加密)拷贝
scp -P22 -r -p /home/omd/h.txt omd@192.168.25.137:/home/omd/
2.scp知识小结
scp是加密远程拷贝,cp为本地拷贝
可以推送过去,也可以拉过来
每次都是全量拷贝(效率不高,适合第一次),增量拷贝用rsync
6.ssh自带的sftp功能
1.Window和Linux的传输工具
wincp filezip
sftp -->基于ssh的安全加密传输
samba
2.sftp客户端连接
sftp -oPort=22 root@192.168.25.137
put /etc/hosts /tmp
get /etc/hosts /home/omd
3.sftp小结:
1.linux下使用命令: sftp -oPort=22 root@x.x.x.x
2.put加客户端本地路径上传
3.get下载服务器端内容到本地
4.远程连接默认连接用户的家目录查询openssl软件
rpm -qa openssh openssl
查询sshd进程
ps -ef | grep ssh --> /usr/sbin/sshd
查看ssh端口
netstat -lntup | grep ssh
ss | grep ssh
效果同上,同下,好用)
netstat -a | grep ssh
(记住这个)
netstat -lnt | grep 22 ==> 查看22端口有没有开
/ssh服务有没有开启
技巧:netstat` `-lnt |
grepssh|wc` `-l -->只要大于2个就是
ssh``服务就是好的查看ssh的秘钥目录
ll /root/ .ssh /known_hosts
# 当前用户家目录的.ssh目录下ssh的配置文件
cat /etc/ssh/sshd_config
ssh服务的关闭
service sshd stop
ssh服务的开启:
service sshd start
ssh服务的重启
service sshd reload
[停止进程后重启] ==> 推荐service sshd restart [干掉进程后重启] ==> 不推荐ssh远程登录
ssh 192.168.1.100
# 默认利用当前宿主用户的用户名登录
ssh omd@192.168.1.100
# 利用远程机的用户登录
ssh omd@192.168.1.100 -o stricthostkeychecking=no
# 首次登陆免输yes登录
ssh omd@192.168.1.100 "ls /home/omd"
# 当前服务器A远程登录服务器B后执行某个命令ssh omd@192.168.1.100 -t "sh /home/omd/ftl.sh"
# 当前服务器A远程登录服务器B后执行某个脚本https://blog.csdn.net/pipisorry/article/details/52269785
https://www.cnblogs.com/machangwei-8/p/10352725.html
nessus:系统漏洞扫描与分析工具
安装地址:https://www.tenable.com/downloads/nessus?loginAttempted=true
安装方法:https://blog.csdn.net/weixin_59679023/article/details/120820123
curl:文件传输工具
http://aiezu.com/article/linux_curl_command.html
-
curl常用参数解读:
- -d 参数用于发送 POST 请求的数据体,使用-d参数以后,HTTP 请求会自动加上标头Content-Type : application/x-www-form-urlencoded。并且会自动将请求转为 POST 方法,因此可以省略-X POST;
- –data-urlencode参数等同于-d,发送 POST 请求的数据体,区别在于会自动将发送的数据进行 URL 编码。
- -A 参数指定客户端的用户代理标头,即User-Agent。curl 的默认用户代理字符串是curl/[version]
- -i 参数打印出服务器回应的 HTTP 标头
- -s 参数将不输出错误和进度信息
Nikto :web漏洞扫描神器
-
nikto常用命令
-upodate 升级,更新插件
-host 扫描目标URl
-id username:password http认证接口
-list-plugins 列出所有可用的插件
-evasion IDS/IPS逃避技术(实例演示里有详细信息)
-port 指定端口(默认80)
-ssl 使用SSL
-useproxy 使用http代理
-vhost 域名 当一个IP拥有多个网站时 使用
-
nikto交互参数(扫描过程中使用)
空格 报告当前扫描状态
v 显示详细信息
d 显示调试信息
e 显示http错误信息
p 显示扫描进度
r 显示重定向信息
c 显示cookie
a 显示身份认证过程
q 退出程序
N 扫描下一个目标
P 暂停扫描
1.扫描单个地址时
nikto -host http://xxx.xxx.xx.xx
2.扫描多个地址时
nikto -host url.txt
3.扫描https网站
nikto -host url -ssl -port 443
4.使用代理进行扫描
nikto -h URL -useproxy http://127.0.0.1:1080(没有无法演示,若以后有条件补上)。
5.使用LibWhisker绕过IDS的检测(10个参数 1-8、A、B)
1 随机URI编码(非utf-8)
2 自选择路径(/. /)
3 过早结束的URL
4 使用长随机字符串
5 使用假参数
6 使用tab作为命令的分隔符
7 更改URL的大小写
8 使用windows的命令分隔符""
A 使用回车0x0d作为请请求分隔符
B 使用二进制0x0b作为请请求分隔符
niketo -host www.xxxx.com -ssl -port 443 -evasion 1358Nikto配合Nmap扫描
6.配合 Nmap 进行扫描
nmap -p80 x.x.x.x -oG - |nikto -host -
nmap扫描开放80端口的IP并通过oG选项对扫描结果输出并整理),然后通过管道符“|”将上述扫描结果导入至nikto进行扫描
john开膛手:密码破解工具
kali自带
全称叫“John the Ripper password cracker(约翰开膛手密码破解)”。
John the Ripper是一个快速的密码破解程序,目前可用于Unix,Windows,DOS和OpenVMS的许多口味。其主要目的是检测弱Unix密码。除了在各种Unix系统上最常见的几种crypt(3)密码哈希类型之外,现在支持的还有Windows LM哈希,以及社区增强版本中的大量其他哈希和密码。
用法:
john [OPTIONS] [PASSWORD-FILES]
john [选项] [密码文件]
选项:
--single[=SECTION] ]“单裂”模式
--wordlist[=FILE] --stdin 单词表模式,从FILE或stdin读取单词
--pipe 像--stdin一样,但批量读取,并允许规则
--loopback[=FILE] 像 --wordlistg一样, 但是从.pot文件中获取单词
--dupe-suppression 压制wordlist中的所有模糊(并强制预加载)
--prince[=FILE] PRINCE模式,从FILE中读取单词
--encoding=NAME 输入编码(例如,UTF-8,ISO-8859-1)。 也可以看看doc / ENCODING和--list = hidden-options。
--rules[=SECTION] 为单词表模式启用单词修改规则
--incremental[=MODE] “增量”模式[使用部分模式]
--mask=MASK 掩码模式使用MASK
--markov[=OPTIONS] “马尔可夫”模式(参见doc / MARKOV)
--external=MODE 外部模式或字过滤器
--stdout[=LENGTH] 只是输出候选人密码[在LENGTH切]
--restore[=NAME] 恢复被中断的会话[名为NAME]
--session=NAME 给一个新的会话NAME
--status[=NAME] 打印会话的状态[名称]
--make-charset=FILE 制作一个字符集文件。 它将被覆盖
--show[=LEFT] 显示破解的密码[如果=左,然后uncracked]
--test[=TIME] 运行测试和每个TIME秒的基准
--users=[-]LOGIN|UID[,..] [不]只加载这个(这些)用户
--groups=[-]GID[,..] 只加载这个(这些)组的用户
--shells=[-]SHELL[,..] 用[out]这个(这些)shell来加载用户
--salts=[-]COUNT[:MAX] 用[out] COUNT [到MAX]散列加载盐
--save-memory=LEVEL 启用内存保存,级别1..3
--node=MIN[-MAX]/TOTAL 此节点的数量范围不在总计数中
--fork=N 叉N过程
--pot=NAME 锅文件使用
--list=WHAT 列表功能,请参阅--list = help或doc / OPTIONS
--format=NAME 强制使用NAME类型的散列。 支持的格式可以用--list=formats和--list=subformats来看
hping:TCP/IP数据包组装/分析工具
常用参数:
用法: hping3 host [options] -h --help 显示帮助 -v --version 显示版本 -c --count 发送数据包的数目 -i --interval 发送数据包间隔的时间 (uX即X微秒, 例如: -i u1000) --fast 等同 -i u10000 (每秒10个包) --faster 等同 -i u1000 (每秒100个包) --flood 尽最快发送数据包,不显示回复。 模式选择 default mode 默认模式是 TCP -0 --rawip RAWIP模式,原始IP模式。在此模式下HPING会发送带数据的IP头。即裸IP方式。使用RAWSOCKET方式。 -1 --icmp ICMP模式,此模式下HPING会发送IGMP应答报,你可以用--ICMPTYPE --ICMPCODE选项发送其他类型/模式的ICMP报文。 -2 --udp UDP 模式,缺省下,HPING会发送UDP报文到主机的0端口,你可以用--baseport --destport --keep选项指定其模式。 -8 --scan 扫描模式 指定扫描对应的端口。 Example: hping3 --scan 1-30,70-90 -S www.target.host // 扫描 -9 --listen listen mode // 监听模式 IP 模式 -a --spoof 源地址欺骗。伪造IP攻击,防火墙就不会记录你的真实IP了,当然回应的包你也接收不到了。 -t --ttl ttl (默认 64) //修改 ttl 值 ICMP 模式 -C --icmptype icmp类型(默认echo请求) // ICMP类型,缺省回显请求。 -K --icmpcode icmp代号(默认0) // ICMP代码。 UDP/TCP 模式 -F --fin set FIN flag -S --syn set SYN flag -R --rst set RST flag -P --push set PUSH flag -A --ack set ACK flag ------------------------------------- (设置 TCP 的 ACK 标志 位) Common //通用设置 -d --data data size (default is 0) // 发送数据包大小,缺省是0。
注意:hping的参数是分大小写的
eg:
hping3 -S [IP地址] -p 1 -c 1
-S(--syn)
:SYN是TCP/IP建立连接时使用的握手信号。在客户机和服务器之间建立正常的TCP网络连接时,客户机首先发出一个SYN消息,服务器使用SYN-ACK应答表示接收到了这个消息,最后客户机再以ACK消息响应。这样在客户机和服务器之间才能建立起可靠的TCP连接,数据才可以在客户机和服务器之间传递。-p --destport
: 目的端口(默认为0),可同时指定多个端口-c --count
:指定数据包的次数参考:https://blog.csdn.net/qq_30247635/article/details/86243448
LES:寻找关键漏洞的工具
参考:https://www.freebuf.com/articles/system/205920.html
hashcat:密码破解工具
参数
下面使常见的参数,想了解更多的参数可以hashcat --help查看
-a 指定要使用的破解模式,其值参考后面对参数。“-a 0”字典攻击,“-a 1” 组合攻击;“-a 3”掩码攻击。 -m 指定要破解的hash类型,如果不指定类型,则默认是MD5 -o 指定破解成功后的hash及所对应的明文密码的存放位置,可以用它把破解成功的hash写到指定的文件中 --force 忽略破解过程中的警告信息,跑单条hash可能需要加上此选项 --show 显示已经破解的hash及该hash所对应的明文 --increment 启用增量破解模式,你可以利用此模式让hashcat在指定的密码长度范围内执行破解过程 --increment-min 密码最小长度,后面直接等于一个整数即可,配置increment模式一起使用 --increment-max 密码最大长度,同上 --outfile-format 指定破解结果的输出格式id,默认是3 --username 忽略hash文件中的指定的用户名,在破解linux系统用户密码hash可能会用到 --remove 删除已被破解成功的hash -r 使用自定义破解规则
攻击模式:
# | Mode ===+====== 0 | Straight(字段破解) 1 | Combination(组合破解) 3 | Brute-force(掩码暴力破解) 6 | Hybrid Wordlist + Mask(字典+掩码破解) 7 | Hybrid Mask + Wordlist(掩码+字典破解)
输出格式
1 = hash[:salt] 2 = plain 3 = hash[:salt]:plain 4 = hex_plain 5 = hash[:salt]:hex_plain 6 = plain:hex_plain 7 = hash[:salt]:plain:hex_plain 8 = crackpos 9 = hash[:salt]:crackpos 10 = plain:crackpos 11 = hash[:salt]:plain:crackpos 12 = hex_plain:crackpos 13 = hash[:salt]:hex_plain:crackpos 14 = plain:hex_plain:crackpos 15 = hash[:salt]:plain:hex_plain:crackpos
更多看这里:https://blog.csdn.net/SHIGUANGTUJING/article/details/90074614
Netcat:网络测试工具
Netcat 是一款简单的Unix工具,使用UDP和TCP协议。 它是一个可靠的容易被其他程序所启用的后台操作工具,同时它也被用作网络的测试工具或黑客工具。 使用它你可以轻易的建立任何连接。
nc命令的作用
- 实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口
- 端口的扫描,nc可以作为client发起TCP或UDP连接
- 机器之间传输文件
- 机器之间网络测速
常用参数
-l 用于指定nc将处于侦听模式。指定该参数,则意味着nc被当作server,侦听并接受连接,而非向其它地址发起连接。 -p 暂未用到(老版本的nc可能需要在端口号前加-p参数,下面测试环境是centos6.6,nc版本是nc-1.84,未用到-p参数) -s 指定发送数据的源IP地址,适用于多网卡机 -u 指定nc使用UDP协议,默认为TCP -v 输出交互或出错信息,新手调试时尤为有用 -w 超时秒数,后面跟数字
常见操作
nc -l 9999 # 开启一个本地9999的TCP协议端口,由客户端主动发起连接,一旦连接必须由服务端发起关闭 nc -vw 2 192.168.21.248 11111 #通过nc去访问192.168.21.248主机的11111端口,确认是否存活;可不加参数 nc -ul 9999 # 开启一个本地9999的UDP协议端口,客户端不需要由服务端主动发起关闭 nc 192.168.21.248 9999 < test # 通过192.168.21.248的9999TCP端口发送数据文件 nc -l 9999 > zabbix.file # 开启一个本地9999的TCP端口,用来接收文件内容 测试网速 A机器操作如下: yum install -y dstat # A机器安装dstat命令 nc -l 9999 > /dev/null B机器开启数据传输:nc 10.0.1.161 9999 </dev/zero A机器进行网络监控:dstat 文件传输 步骤1,先在B机器上启动一个接收文件的监听,格式如下 意思是把在10086端口接收到的数据都写到file文件里(这里文件名随意取) nc -l port >file 栗子:nc -l 10086 >zabbix.rpm 步骤2,在A机器上往B机器的10086端口发送数据,把下面rpm包发送过去 nc 192.168.0.2 10086 < zabbix.rpm B机器接收完毕,它会自动退出监听,文件大小和A机器一样,md5值也一样
weevely:(Linux菜刀)php webshell的安全测试工具
分五个板块:weevely生成shell文件、weevely连接后台、weevely信息探测、weevely文件操作、weevely审计
- 生成shell文件命令:
weevely generate 密码 路径 文件名
- 上传至靶机
- 连接shell文件命令:
weevely shell文件地址 密码
参考文章:https://www.cnblogs.com/forforever/p/12674656.html
ltrace:跟踪进程调用库函数的情况工具
kalli不自带,使用命令:
apt install ltrace
进行安装ltrace命令 是用来跟踪进程调用库函数的情况。
语法
ltrace [option ...] [command [arg ...]]
选项
-a 对齐具体某个列的返回值。 -c 计算时间和调用,并在程序退出时打印摘要。 -C 解码低级别名称(内核级)为用户级名称。 -d 打印调试信息。 -e 改变跟踪的事件。 -f 跟踪子进程。 -h 打印帮助信息。 -i 打印指令指针,当库调用时。 -l 只打印某个库中的调用。 -L 不打印库调用。 -n, --indent=NR 对每个调用级别嵌套以NR个空格进行缩进输出。 -o, --output=file 把输出定向到文件。 -p PID 附着在值为PID的进程号上进行ltrace。 -r 打印相对时间戳。 -s STRLEN 设置打印的字符串最大长度。 -S 显示系统调用。 -t, -tt, -ttt 打印绝对时间戳。 -T 输出每个调用过程的时间开销。 -u USERNAME 使用某个用户id或组ID来运行命令。 -V, --version 打印版本信息,然后退出。 -x NAME treat the global NAME like a library subroutine.(求翻译)
常见用法:
- 不带参数
还有两个没用到过的用法
- 输出调用时间开销:
[guest@localhost tmp]$ ltrace -T ./a.out __libc_start_main(0x80484aa, 1, 0xbf81d394, 0x8048550, 0x8048540 <unfinished ...> printf("no1:%d \t no2:%d \t diff:%d\n", 10, 6, 4no1:10 no2:6 diff:4 ) = 24 <0.000972> printf("no1:%d \t no2:%d \t diff:%d\n", 9, 7, 2no1:9 no2:7 diff:2 ) = 23 <0.000155> printf("no1:%d \t no2:%d \t diff:%d\n", 8, 8, 0no1:8 no2:8 diff:0 ) = 23 <0.000153> --- SIGFPE (Floating point exception) --- +++ killed by SIGFPE +++
- 显示系统调用:
[guest@localhost tmp]$ ltrace -S ./a.out SYS_brk(NULL) = 0x9e20000 SYS_access(0xa4710f, 4, 0xa4afc0, 0, 0xa4b644) = 0 SYS_open("/etc/ld.so.preload", 0, 02) = 3 SYS_fstat64(3, 0xbfbd7a94, 0xa4afc0, -1, 3) = 0 SYS_mmap2(0, 17, 3, 2, 3) = 0xb7f2a000 SYS_close(3) = 0 SYS_open("/lib/libcwait.so", 0, 00) = 3 SYS_read(3, "\177ELF\001\001\001", 512) = 512 SYS_fstat64(3, 0xbfbd76fc, 0xa4afc0, 4, 0xa4b658) = 0 SYS_mmap2(0, 4096, 3, 34, -1) = 0xb7f29000 SYS_mmap2(0, 5544, 5, 2050, 3) = 0x423000 SYS_mmap2(0x424000, 4096, 3, 2066, 3) = 0x424000 .............省去若干行
fcrackzip:zip加密文件破解工具
Fcrackzip是一款专门破解zip类型压缩文件密码的工具,工具小巧方便、破解速度快,能使用字典和指定字符集破解,适用于linux、mac osx 系统。
-c 指定字符集,字符集 格式只能为 -c 'aA1!:' a 表示小写字母[a-z] A 表示大写字母[A-Z] 1 表示阿拉伯数字[0-9] ! 感叹号表示特殊字符[!:$%&/()=?{[]}+*~#] : 表示包含冒号之后的字符(不能为二进制的空字符),例如 a1:$% 表示 字符集包含小写字母、数字、$字符和%百分号
eg:
fcrackzip -D -p base64_answer.txt -u lmao.zip
注释: -D 表示要使用字典破解;-p 表示要使用哪个字典破解;-u表示要破解的zip文件
unzip命令
unzip命令用于解压缩由zip命令压缩的“.zip”压缩包。
-c 将解压缩的结果显示到屏幕上,并对字符做适当的转换;
-f 更新现有的文件;
-l 显示压缩文件内所包含的文件;
-p 与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换;
-t 检查压缩文件是否正确;
-u 与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中;
-v 执行时显示详细的信息;
-z 仅显示压缩文件的备注文字;
-a 对文本文件进行必要的字符转换;
-b 不要对文本文件进行字符转换;
-C 压缩文件中的文件名称区分大小写;
-j 不处理压缩文件中原有的目录路径;
-L 将压缩文件中的全部文件名改为小写;
-M 将输出结果送到more程序处理;
-n 解压缩时不要覆盖原有的文件;
-o 不必先询问用户,unzip执行后覆盖原有的文件;
-P<密码> 使用zip的密码选项;
-q 执行时不显示任何信息;
-s 将文件名中的空白字符转换为底线字符;
-V 保留VMS的文件版本信息;
-X 解压缩时同时回存文件原来的UID/GID;
-d<目录> 指定文件解压缩后所要存储的目录;
-x<文件> 指定不要处理.zip压缩文件中的哪些文件;
-Z unzip-Z等于执行zipinfo指令。 -
web安全渗透测试介绍与实际操作典例分析
2021-06-23 21:16:28渗透测试的意义 渗透测试是站在第三者的角度来思考企业系统的安全性的,通过渗透测试可以发觉企业潜在却未纰漏的安全性问题。企业可以根据测试的结果对内部系统中的不足以及安全脆弱点进行加固以及改善,从而使企业...渗透测试的意义
渗透测试是站在第三者的角度来思考企业系统的安全性的,通过渗透测试可以发觉企业潜在却未纰漏的安全性问题。企业可以根据测试的结果对内部系统中的不足以及安全脆弱点进行加固以及改善,从而使企业系统变得更加安全,减低企业的风险。
渗透测试的分类
渗透测试按照渗透的方法与视角可以分为以下三类:
黑盒测试
黑盒测试(Black-box Testing)也称为外部测试(External Testing)。采用这种方式时,渗透测试团队将从一个远程网络位置来评估目标网络基础设施,并没有任何目标网络内部拓扑等相关信息,他们完全模拟真实网络环境中的外部攻击者,采用流行的攻击技术与工具,有组织有步骤地对目标组织进行逐步的渗透和入侵,揭示目标网络中一些已知或未知的安全漏洞,并评估这些漏洞能否被利用获取控制权或者操作业务资产损失等。
黑盒测试的缺点是测试较为费时费力,同时需要渗透测试者具备较高的技术能力。优点在于这种类型的测试更有利于挖掘出系统潜在的漏洞以及脆弱环节、薄弱点等
白盒测试
白盒测试(White-box Testing)也称为内部测试(Internal Testing)。进行白盒测试的团队将可以了解到关于目标环境的所有内部和底层知识,因此这可以让渗透测试人员以最小的代价发现和验证系统中最严重的漏洞。白盒测试的实施流程与黑盒测试类似,不同之处在于无须进行目标定位和情报收集,渗透测试人员可以通过正常渠道向被测试单位取得各种资料,包括网络拓扑、员工资料甚至网站程序的代码片段,也可以和单位其他员工进行面对面沟通。
白盒测试的缺点是无法有效的测试客户组织的应急响应程序,也无法判断出他们的安全防护计划对检测特定攻击的效率。优点是在测试中发现和解决安全漏洞所花费的时间和代价要比黑盒测试少很多。
灰盒测试
灰盒测试(Grey-box Testing)是白盒测试和黑盒测试基本类型的组合,它可以提供对目标系统更加深入和全面的安全审查。组合之后的好处就是能够同时发挥两种渗透测试方法的各自优势。在采用灰盒测试方法的外部渗透攻击场景中,渗透测试者也类似地需要从外部逐步渗透进目标网络,但他所拥有的目标网络底层拓扑与架构将有助于更好地决策攻击途径与方法,从而达到更好的渗透测试效果。渗透测试的流程
这个标准可以在任意环境中进行富有成果的渗透测试,它由渗透测试的7个阶段组成:
前期交互
在进行渗透测试之前,渗透测试团队需要与客户就渗透测试目标、渗透测试范围、渗透测试方式(白盒、黑盒、灰盒以及是否涉及社会工程学、DDOS等)、服务合同等细节进行商议,达成一致协议。
该阶段是之后进行渗透测试的基础与关键所在。
信息收集
在确定了渗透测试目标以及范围之后,接下来就需要进入信息收集阶段。在这个阶段,渗透测试人员需要使用各种公开的资源尽可能的获取与测试目标相关的信息。可以借助互联网进行信息收集,比如说:官方网站、论坛、博客等渠道。同时也可以借助各大搜索引擎来获取相关信息,比如说:Google、Baidu等。同时也可以借助Kali Linux中的一些工具来对DNS信息、注册人信息、服务信息、WAF信息等进行收集。在这个阶段收集到的信息越充分对之后的渗透测试越有利,渗透测试的成功率也大大提高。
威胁建模
在完成了对目标系统的信息收集工作之后,接下来就是威胁建模阶段了。在这个阶段渗透测试团队需要聚集在一起就获取到的信息进行分析并且做出攻击的规划。这是渗透测试过程中非常重要但是又很容易被忽略的一个关键点。在这个过程中必须要理清思路,确定出最有效、最可行的攻击方案。
漏洞分析
在确定了最可行的攻击方案之后,接下来就需要考虑如何获取目标系统的访问控制权限。这个阶段也被称为漏洞分析阶段。
在这一个阶段,渗透测试人员需要综合分析之前信息收集阶段所获取到的信息,特别是系统类型、系统开启的服务、漏洞扫描的结果等信息,通过可以获取的渗透代码资源找出可以实施渗透攻击的攻击点,并在测试过程中进行验证。在这一阶段渗透测试人员不仅需要验证系统是否存在已知的漏洞,同时也需要去挖掘系统一些潜在的漏洞,并且开发出相应的漏洞利用代码。
渗透攻击
在仔细检查和发现目标系统中的漏洞之后,就可以使用已有的漏洞利用程序对目标系统进行渗透了。但是在一般情况下渗透测试人员都需要考虑到目标系统的环境对漏洞利用程序(exploit)进行修改和额外的研究,否则它就无法正常工作。同时在该阶段也要考虑到对目标系统的安全机制的逃逸,从而避免让目标系统发觉。
后渗透攻击
深度利用阶段是整个渗透测试过程中最能够体现渗透测试团队技术能力的环节。前面的环节可以说都是在按部就班的完成非常普遍的目标,而在这个环节中,需要渗透测试团队根据目标组织的业务经营模式、资产保护模式和安全防御规划的不同特点,资助设计出攻击目标,识别关键基础设施,并寻找客户组织组织最具价值和尝试安全保护的信息和资产,最终达到能够对客户组织造成最重要业务影响的攻击途径。
书面报告
整个渗透测试的过程最终需要以书面文档的形式向客户提交,这份报告也就是我们常说的渗透测试报告。这份报告涵盖了之前所有阶段中渗透测试团队所获取的到各种有价值信息以及探测和挖掘出来的相关安全漏洞、成功攻击的过程,以及对业务造成的影响后果分析。同时在这个阶段也要对系统中存在的脆弱环节、存在的安全问题给出修复建议。渗透测试工具的使用
说完了基本的渗透测试知识点,接下来就简单的介绍几款在渗透测试中常用到的工具。
sqlmap
Sqlmap是一种开源的渗透测试工具,可以自动检测和利用SQL注入漏洞以及接入该数据库的服务器。它拥有非常强大的检测引擎、具有多种特性的渗透测试器、通过数据库指纹提取访问底层文件系统并通过外带连接执行命令。
支持的数据库:MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase and SAP MaxDB
SQL注入技术:boolean-based blind, time-based blind, error-based, UNION query, stacked queries and out-of-band
枚举数据:users, password hashes, privileges, roles, databases, tables and columns使用实例:通过一道实验吧CTF题目来演示sqlmap的使用
探测存在注入点的系统所使用的数据库类型
命令格式:Sqlmap –u 目标URL爆出目标系统中的所有数据库
命令格式:sqlmap –u 目标URL –dbs
选择要爆破的数据库进行简单的爆表操作
命令格式:sqlmap –u 目标URL -D 数据库名 –tables
确定表名,之后就需要对字段进行爆破猜解
命令格式:sqlmap –u 目标URL –D 数据库名 –T 表名 –columns
爆字段值
命令格式:sqlmap –u 目标URL -D 数据库名–T 表名 –C 字段名 –dump
实例结果分析
在这一道CTF题目中,服务器端对用户输入的数据未经过严格的过滤,而直接带入了后台数据库中进行查询,导致了SQL注入。攻击者可以使用该SQL注入来获取相应的表、字段、字段内容信息,危害巨大。
安全加固意见
使用安全过滤函数对输入的数据进行严格过滤
对从用户端输入的特殊字符进行转义操作
采用预编译语句,绑定变量
采用存储过程
检查数据类型
Metasploit
Metasploit就是一个漏洞框架。它的全称叫做The Metasploit Framework,简称叫做MSF。Metasploit作为全球最受欢迎的工具,不仅仅是因为它的方便性和强大性,更重要的是它的框架。它允许使用者开发自己的漏洞脚本,从而进行测试。
Metasploit中的专业术语:
Exploit(渗透攻击):渗透攻击是指由攻击者或渗透测试者利用一个系统、应用或服务中的安全漏洞,所进行的攻击行为。流行的渗透攻击技术包括缓冲区溢出、WEB应用程序漏洞攻击(例如:SQL注入、XSS等),以及利用配置错误等。
Payload(攻击载荷):攻击载荷是我们期望目标系统在被渗透攻击之后去执行的代码,在Metasploit框架中可以自由地选择、传送和植入。
ShellCode:ShellCode是渗透攻击时作为攻击载荷运行的一组机器指令。ShellCode通常用汇编语言编写。
Module(模块):在Metasploit中一个模块是指Metasploit框架中所使用的一段软件代码组件。
Listener(监听器):监听器是Metasploit中用来等待接入网络连接主机的组件。
使用实例:通过对Metasploitable 2中的SSH进行爆破演示MSF的使用
首先,我们需要探测目标的SSH端口是否开启
(2)开启Metasploit framework框架,并且指定使用的攻击模块
(3)显示需要配置的选项
(4)设置攻击目标主机的IP地址、字典(需要预先生成)、线程数量
(5)攻击开始
实例结果分析
通过以上实例可以发现SSH在给予管理者方便的同时也为攻击者留下了可利用的渠道,以上的爆破主要利用了用户名密码过于简易可猜解的缘故以及对同一IP的访问会话次数为做任何限制。
安全加固意见:
采用公钥认证,取消密码登录
通过控制用户访问限制SSH访问
配置防火墙以接收仅来自自己和已知网段的SSH链接
设置用户策略,实施强大的密码来防御强力攻击,社会工程企图。
Burp suite
Burp suite是一个集成化的渗透测试工具,它集合了多种渗透测试组件,使我们能够自动化或手工的完成对web应用的渗透测试攻击,在渗透测试中,我们使用Burp suite将会使得测试工作变得更加容易和方便,即使在需要要娴熟的技巧的情况下,只要我们熟悉Burp suite的使用,也会使得渗透测试工作变得更加轻松和高效。
Burp suite 各大模块:
Target(目标)——显示目标目录结构的的一个功能
Proxy(代理)——拦截HTTP/S的代理服务器,作为一个在浏览器和目标应用程序之间的中间人,允许你拦截,查看,修改在两个方向上的原始数据流。
Spider(蜘蛛)——应用智能感应的网络爬虫,它能完整的枚举应用程序的内容和功能。
Scanner(扫描器)——高级工具,执行后,它能自动地发现web 应用程序的安全漏洞。
Intruder(入侵)——一个定制的高度可配置的工具,对web应用程序进行自动化攻击,如:枚举标识符,收集有用的数据,以及使用fuzzing 技术探测常规漏洞。
Repeater(中继器)——一个靠手动操作来触发单独的HTTP 请求,并分析应用程序响应的工具。
Sequencer(会话)——用来分析那些不可预知的应用程序会话令牌和重要数据项的随机性的工具。
Decoder(解码器)——进行手动执行或对应用程序数据者智能解码编码的工具。
Comparer(对比)——通常是通过一些相关的请求和响应得到两项数据的一个可视化的“差异”。
Extender(扩展)——可以让你加载Burp Suite的扩展,使用你自己的或第三方代码来扩展Burp Suit的功能。
Options(设置)——对Burp Suite的一些设置
使用实例:通过PHP安全问题造成的文件上传漏洞来演示burp suite的使用。
(1)访问存在文件上传漏洞的链接地址:
设置代理:
(3)准备一句话木马文件
(4)直接上传PHP文件会出现报“文件上传类型错误”
(5)之后使用burpsuite进行抓包改包
(6)/00截断:
(7)之后释放包,文件成功上传成功:
(8)之后使用菜刀链接:
实例分析
上面这一个实例主要利用了PHP版本存在的0x00截断漏洞,可想而知有时候一个服务器端的组件的问题也是会产生非常巨大的问题的!
加固建议
及时更新服务器端的配置,修复相应的配置缺陷以及组件的安全问题。同时对用户上传的文件的格式、内容等进行严格的过滤以上的实例主要是用来演示一些渗透测试过程中工具的使用方法,这里并不是让大家去做恶意攻击,我们的初愿是渗透测试人员通过使用渗透测试工具或使用自我开发的工具来对一些脆弱性系统进行测试,从而挖掘潜在的漏洞,协助企业来加强安全系统的防御措施,维护安全!由于篇幅原因这里就不再对其他工具进行介绍了,如果有兴趣可以之后自我了解一下!
渗透测试实战(注意渗透思路、安全加固问题)
目标机:Metasploitable 2 IP:192.168.11.138
攻击机:Kali 2018 IP:192.168.11.144
渗透测试过程
(1)前期交互
假定我们经过前期交互最后取得的结果是:渗透测试目标为 192.168.11.138,范围为整个Metasploitable2系统安全与服务安全,渗透测试方式为黑盒测试,渗透测试中不涉及社会工程学相关的攻击,不涉及DDOS等。初步商议暂时如此!
(2)信息收集
主机存活+服务枚举+端口扫描+主机指纹识别
(3)威胁建模
从上面的扫描结果我们不难看出来有vsftpd、OpenSSH、Telnet、Apache、Samba、rmiregistry、nfs、mysql、postgresql、vnc等服务,而这些服务大多数都曾出现过漏洞,而且对应的后面都给出了Version,于是就可以从这些服务来下手,同时可以关注一些所使用的系统是否存在任何漏洞,于此同时作为一个渗透测试人员,不仅要从已经发现的漏洞入手去分析,也要去挖掘未知的潜在的漏洞。我们这里仅仅演示其中的一个PHP CGI参数注入执行 漏洞,至于其他漏洞,读者可以自我搭建环境,自我实现一下!
(4)漏洞分析
PHP CGI漏洞是用户将HTTP请求提交到Apache服务器,通过mod_cgi模块提交给后端的php-cgi处理,但是在执行过程中部分字符没有得到处理,比如空格、等号、减号等。利用这些字符,攻击者可以向后端的PHP CGI解析程序提交恶意数据,PHP CGI会将这段“数据”当做PHP的参数直接执行。
(5)漏洞利用
指定使用的攻击模块
设置选项
开始攻击
到此一个简易的漏洞的利用已经实现了!
(6)深度利用
在一个常规的漏洞深度利用阶段,渗透测试人员往往需要实现以下操作:权限提升、会话维持、识别目标系统中的关键设施、查询客户最具有价值和试图保护的信息和资产等内容,并试图验证通过对当前漏洞的利用可以实现对客户组织造成最重要的业务影响和信息或资产损失。
这里看了一下篇幅实在是有点长了,所以就不对这一部分展开介绍了。
(7)书面报告
这一部分需要对之前所做的渗透测试的细节进行详细的概括,并对存在的安全问题给出修复性建议!
现在对PHP CGI漏洞给出安全加固方案:
由于是PHP本身出问题,所以还需要釜底抽薪,建议直接升级到最新官方版本,或者安装PHP补丁。总结
渗透测试是一个考验思维与变通能力的过程,作为渗透测试人员应当具备较强的信息收集能力,可以快速的、详尽的收集到与目标系统相关的信息,同时也要具备较强的洞察能力,可以根据信息来分析与挖掘已知或未知漏洞,建立适当的渗透攻击模型,当然也需要较为活跃的思绪,可以从多方面分析、利用漏洞,实现漏洞利用的最大化,同时也需要将漏洞可能给目标系统带来的风险进行详尽的分析与说明,协助客户了解自己系统的脆弱点并对完成对企业系统的安全加固。
-
Web Service 渗透测试.docx
2020-06-19 19:19:04对机构、组织开放的Web应用、外部IP...在渗透测试中,我们看到Web Service的应用范围越来越多广,但人们在使用Web Service时,并没有特别关注安全问题。出于这个原因,人们部署的Web Service中经常会出现重大安全漏洞。 -
smtp-test:自动化SMTP服务器测试以进行渗透测试
2021-05-28 16:43:29自动化SMTP服务器测试以进行渗透测试: 针对目标电子邮件服务器运行nmap脚本扫描 针对目标电子邮件服务器运行Mxtoolbox.com smtp服务器检查 测试将电子邮件欺骗到目标组织的能力 外部smtp服务器(垃圾邮件过滤器应... -
渗透测试专业人员使用的11种工具
2020-05-08 16:32:58既然如今已经有了更为便捷、快速的渗透测试工具,这对现代渗透测试工作者无疑是有很大的帮助的。以下列出了他们使用的一些工具。 一、Kali Linux Kali是基本的渗透测试操作系统,为大多数人采用,除非是掌握尖端知识... -
渗透测试工具有哪些?
2017-03-28 15:42:29今天在网上看到一篇关于渗透测试工具的列举,点开一看,实在汗颜,好多我都没听过 ,列出来以便我以后学习时候查看自己还有哪些不足 -
计算机病毒与防护:网络渗透测试.ppt
2022-06-10 14:44:05渗透人员 思维方式 经验 解决了“安全玻璃天花板”问题 防御由被动变为主动 能在漏洞暴露之前被修复 渗透测试基础 渗透测试分类 黑盒测试 白盒测试 灰盒测试 对系统一无所知 模仿外部黑客渗透 了解拓扑、员工、代码... -
渗透测试概述
2021-08-31 09:35:47渗透测试概述 一:渗透测试标准与流程 1. 渗透测试概念 渗透测试是一种模拟攻击的技术与方法,挫败目标系统的安全控制措施并获取得到访问控制权的安全测试方法。 网络测试主要依据CVE***已经发现的安全漏洞***,... -
2022 年渗透测试趋势
2022-02-28 13:28:27随着 2022 年的开始,现在是评估当前塑造渗透测试未来的技术趋势以及它将如何继续向前发展的最佳时机 由于大流行向远程工作过渡,2022 年也被认为是新挑战和转型的一年。对基于软件的属性(如 Web 和移动应用程序... -
渗透测试-XXE XML外部实体注入 漏洞
2022-03-14 11:29:54XXE XML外部实体注入一 一 XXE -“xml external entity injection” 既"xml外部实体注入漏洞"。 概括一下就是"攻击者通过向服务器注入指定的xml实体内容,从而让服务器按照指定的配置进行执行,导致问题" 也就是说... -
Web渗透测试流程
2021-12-01 19:59:52文章目录什么是渗透测试WEB渗透测试流程1.明确目标2.分析风险,获得授权3.信息收集4.漏洞探测(手动&自动)5.漏洞验证6.信息分析7.利用漏洞,获取数据8.信息整理9.形成报告补充信息收集漏洞探测漏洞利用内网转发... -
渗透测试PTES标准流程(超详细)
2021-04-12 09:16:43渗透测试的基本流程一、什么是渗透测试?二、渗透测试的阶段过程 一、什么是渗透测试? 渗透测试就是利用学习掌握的技能通过一种模拟攻击的技术与方法,挫败目标系统的安全控制策略并获得控制访问权的安全测试方法,... -
Kali Linux渗透测试:第一章 渗透测试概述
2021-10-15 22:55:18文章目录前言1.1 什么是渗透测试 前言 1.1 什么是渗透测试 渗透测试是通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全的一种安全测试与评估方法。 黑盒测试: -
ligolo:渗透测试者可以通过反向测试使渗透测试者更加容易https
2021-03-18 20:48:28Ligolo:渗透测试人员可以轻松进行反向隧穿 目录 介绍 Ligolo是一个简单轻巧的工具,可通过反向连接以完全安全的方式建立SOCKS5或TCP隧道(带椭圆曲线的TLS证书)。 这相当于把Meterpreter就会自动布线与SOCKS4A +,... -
Web渗透测试实战——(1)Web渗透测试简介
2022-02-10 00:08:07渗透测试实战_Web渗透测试简介 ·什么是渗透测试·渗透测试类型·渗透测试阶段1. 信息收集与侦查2. 枚举3. 漏洞评估与分析4. 漏洞利用5. 报告功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接... -
【安全】Web渗透测试(全流程)
2019-10-12 09:59:10域名信息查询:信息可用于后续渗透 IP信息查询:确认域名对应IP,确认IP是否真实,确认通信是否正常 端口信息查询:NMap扫描,确认开放端口 如果不会用Nmap,看这里:NMAP 基础教程(功能介绍,安装,使用) ... -
web、渗透测试
2021-08-05 18:04:16Web渗透测试基本流程 对于web应用的渗透测试,大致可分为三个阶段:信息收集、漏洞发现以及漏洞利用。在实践过程中需要进一步明细测试的流程,以下通过9个阶段来描述渗透测试的整个流程: 1.明确目标 1)确定范围:... -
一次完整的渗透测试流程
2018-12-01 19:13:56渗透测试 信息收集 漏洞探测 漏洞利用 内网转发 内网渗透 痕迹清除 撰写渗透测试保告 渗透测试 渗透测试就是利用我们所掌握的渗透知识,对网站进行一步一步的渗透,发现其中存在的漏洞和隐藏的风险,然后... -
渗透测试的种类(黑白盒)、脆弱性评估、OWASP Top 10、PTES-渗透测试执行标准
2020-12-05 16:04:43文章目录渗透测试的种类脆弱性评估与渗透测试安全测试方法论 渗透测试(penetration testing:pentest)是实施安全评估(即审计)的具体手段。 方法论 是在指定、实施信息安全审计方案时,需要遵循的规则、惯例和... -
Web渗透测试如何制定渗透测试方案
2021-11-16 22:50:47总所周知,我们无论做任何事,都需要有所计划,就像比如你学着做一道菜,你需要先准备齐原料以及调料,接下来在按着一定的步骤进行制作,这样才能完成一道美味的菜品,所以,渗透测试就好比做菜一样,首先,我们得... -
安全渗透测试流程-渗透测试准备
2020-07-05 23:07:09与外部渗透测试流程不同,这里获取产品信息的流程得以简化,渗透测试会比较深入,渗透测试结果不是只要发现一个问题就结束,而是要全面保证产品不会出现功能以外的安全问题。但是,众所周知,安全是相对的,完全保证... -
渗透测试流程及方法论讲解(web安全入门04)
2022-01-11 14:13:25一、渗透测试方法论 1.1 渗透测试(penetration testing,pentest) 是实施安全评估(即审计)的具体手段。 方法论是在制定、实施信息安全审计方案时,需要遵循的规则、惯例和过程。 人们在评估网络、应用、系统或者... -
Web应用程序渗透测试你都知道这些吗?如何选择软件检测机构
2022-03-30 11:55:02Web 应用程序渗透测试是通过在内部或外部模拟未经授权的攻击以访问敏感数据来完成的。 网络渗透有助于最终用户发现黑客从互联网访问数据的可能性,了解他们的电子邮件服务器的安全性,并了解网络托管站点和服务器的... -
2022渗透测试面试大全(过来人的全部家底)
2022-05-02 11:43:38面试过很多次渗透测试岗位,整理的面试题改了又改,这是我的最终版本,绝对的干货,记得收藏保存。 渗透测试流程 首先拿到书面权限。 (1)信息收集 1.获取域名的 whois 信息,获取注册者邮箱姓名电话等。 2.查询... -
一、网络安全渗透测试的相关理论和工具
2022-02-12 00:51:47Kali Linux 网络渗透测试 -
软件渗透测试:定义、需求、过程
2021-12-02 14:17:24在不同类型测试的广泛领域中,信息和数据安全测试是一个...渗透测试,也称为渗透测试,可以对软件的安全性进行适当的分析,包括影响它的不同漏洞和威胁。 现在,我们将了解贵公司需要对相应软件执行渗透测试的原因。