渗透测试基础

什么是渗透测试

 

 
 

渗透测试(Penetration Testing),也被称为白盒测试、黑盒测试或道德黑客测试,是一种安全测试方法,旨在评估计算机系统、网络或应用程序的安全性。渗透测试模拟了真实的攻击场景,通过模拟攻击者的行为,试图发现系统中的漏洞和弱点,以便及时修复和加强安全防护。

渗透测试的目标是发现系统中的安全漏洞、弱密码、配置错误、逻辑错误等,以及评估系统的安全性和防御能力。渗透测试通常包括以下步骤:

  1. 信息收集:收集目标系统的相关信息,包括IP地址、域名、网络拓扑等。
  2. 漏洞扫描:使用自动化工具扫描目标系统,发现可能存在的漏洞。
  3. 漏洞利用:利用已知的漏洞和弱点,尝试入侵目标系统,获取未授权的访问权限。
  4. 权限提升:在成功入侵系统后,尝试提升权限,获取更高级别的访问权限。
  5. 数据收集:收集系统中的敏感信息、配置文件、用户凭证等。
  6. 漏洞报告:将发现的漏洞和攻击路径记录在报告中,并提供修复建议和加强安全防护的建议。

渗透测试需要由经验丰富的安全专家或团队进行,他们具备深入了解攻击技术和安全防护措施的知识。渗透测试可以帮助组织发现并修复系统中的安全漏洞,提高系统的安全性和防御能力,以保护组织的敏感信息和资产免受潜在的攻击。

 

RSAS是绿盟远程安全评估系统(Remote Security Assessment System)的缩写。它是由绿盟科技(NSFOCUS)开发的一款网络安全评估和渗透测试工具。RSAS提供了一套完整的渗透测试解决方案,包括信息收集、漏洞扫描、漏洞利用、权限提升、数据收集等功能。

RSAS的主要使用流程如下:

  1. 信息收集:通过扫描目标系统,收集相关的网络信息,包括IP地址、域名、网络拓扑等。
  2. 漏洞扫描:使用内置的漏洞扫描引擎,对目标系统进行扫描,发现可能存在的漏洞和弱点。
  3. 漏洞利用:根据扫描结果,选择合适的漏洞利用模块,尝试入侵目标系统,获取未授权的访问权限。
  4. 权限提升:在成功入侵系统后,尝试提升权限,获取更高级别的访问权限。
  5. 数据收集:收集系统中的敏感信息、配置文件、用户凭证等。
  6. 报告生成:根据渗透测试的结果,生成详细的报告,包括发现的漏洞、攻击路径、修复建议等。

RSAS提供了用户友好的图形界面,使得安全专家可以方便地进行渗透测试和安全评估工作。用户可以根据实际需求,选择不同的模块和功能,进行定制化的安全测试。同时,RSAS还提供了丰富的漏洞库和漏洞利用模块,以支持对各种常见漏洞的检测和利用。

更详细的使用方法和操作指南,请参考《绿盟远程安全评估系统用户手册》。

实战1

Tomcat PUT ⽅法任意写⽂件漏洞(CVE-2017-12615) 准备环境 

先构建在启动容器

docker-compose build
docker-compose up -d

 

之后的话 准备 脚本会报401 解决的话加/返回201

访问测试http://192.168.253.128:8080/2.jsp?pwd=magedu&i=cat /etc/passwd

 

 

 之后访问测试

 

 

 

连接蚁剑
yijian_shell.jsp
啥是蚁剑

 

 

蚁剑(AntSword)是一款开源的跨平台的网站管理工具,也被称为 WebShell 客户端。它提供了一个图形化界面,用于管理和操作远程服务器上的 WebShell。蚁剑可以帮助安全研究人员、渗透测试人员以及系统管理员等进行远程服务器的管理和维护。

通过蚁剑,用户可以连接到远程服务器上已经植入的 WebShell,执行命令、上传和下载文件、编辑文件、查看数据库等操作。蚁剑支持多种 WebShell 类型,包括常见的 PHP、ASP、JSP 等。

"yijian_shell.jsp" 是一个特定类型的 WebShell 文件,可能是用于连接蚁剑的 JSP WebShell 文件。要连接蚁剑,你需要将蚁剑客户端部署到本地,并将 WebShell 文件上传到目标服务器上。然后,通过蚁剑客户端,你可以输入服务器的地址和 WebShell 文件的路径,连接到远程服务器并进行管理操作。

需要注意的是,使用蚁剑或任何 WebShell 工具都需要遵守法律和道德规范,只能在合法授权的范围内使用,以确保网络安全和个人隐私的保护。

1.客户端下载地址:链接: https://github.com/AntSwordProject/AntSword-Loader

2.源码地址:https://github.com/AntSwordProject/antSword

 NMAP端口扫描工具学习

端口扫描技术是用于确定目标主机上开放的网络端口的方法。Nmap支持多种扫描技术,每种技术都有其特定的用途和优势。以下是一些常见的端口扫描技术:

  1. SYN扫描(默认):也称为半开放扫描,发送SYN包到目标主机的指定端口,如果收到SYN/ACK响应,则表示端口开放;如果收到RST响应,则表示端口关闭。

  2. TCP连接扫描:也称为全连接扫描,与SYN扫描类似,但在收到SYN/ACK响应后,会发送ACK包与目标主机建立完整的TCP连接,以验证端口是否真正开放。

  3. UDP扫描:用于扫描UDP协议的端口,发送UDP包到目标主机的指定端口,如果收到ICMP端口不可达响应,则表示端口关闭;如果没有响应,则表示端口可能开放。

  4. NULL扫描:发送不带任何标志位的TCP包到目标主机的指定端口,如果收到RST响应,则表示端口关闭;如果没有响应,则表示端口可能开放。

  5. FIN扫描:发送带有FIN标志位的TCP包到目标主机的指定端口,如果收到RST响应,则表示端口关闭;如果没有响应,则表示端口可能开放。

  6. Xmas扫描:发送带有FIN、URG和PSH标志位的TCP包到目标主机的指定端口,如果收到RST响应,则表示端口关闭;如果没有响应,则表示端口可能开放。

  7. ACK扫描:发送带有ACK标志位的TCP包到目标主机的指定端口,如果收到RST响应,则表示端口关闭;如果收到不同的响应,则表示端口可能开放。

  8. Window扫描:通过检查TCP响应中的窗口大小来确定端口是否开放。如果窗口大小为0,则表示端口关闭;如果窗口大小大于0,则表示端口可能开放。

  9. FTP Bounce扫描(已弃用):利用FTP服务器的反射功能,通过FTP服务器向目标主机的端口发送连接请求,以确定端口是否开放。

请注意,不同的扫描技术对于不同的目标主机和网络环境可能会产生不同的结果。在进行端口扫描时,需要根据具体情况选择适合的扫描技术,并理解扫描结果的可能误报和漏报。

IP协议扫描是一种用于确定目标主机支持哪些IP协议(如TCP、ICMP、IGMP等)的扫描方法。它不是针对端口进行扫描,而是遍历IP协议号来进行扫描。尽管它不是传统的端口扫描,但它使用了与端口扫描类似的扫描引擎,并使用"-p"选项选择要扫描的协议号,并以正常的端口表格式报告结果。

协议扫描的工作方式类似于UDP扫描。它不是在UDP报文的端口域上循环,而是在IP协议域的8位上循环,发送IP报文头。报文头通常是空的,不包含数据,甚至不包含所声明的协议的正确报文头。TCP、UDP和ICMP是三个例外,它们会使用正常的协议头,因为否则某些系统会拒绝发送,而且Nmap有函数可以创建它们。

协议扫描不关注ICMP端口不可到达消息,而是关注ICMP协议不可到达消息。如果Nmap从目标主机收到任何协议的响应,Nmap就将该协议标记为"open"。ICMP协议不可到达错误(类型3,代码2)会导致该协议被标记为"closed"。其他ICMP不可到达协议(类型3,代码1、3、9、10或13)会导致该协议被标记为"filtered"(尽管它们同时证明ICMP是"open")。如果在重试之后仍然没有收到响应,该协议将被标记为"open|filtered"。

FTP弹跳扫描(-b选项)利用FTP协议的代理功能,允许用户连接到FTP服务器并要求将文件发送到第三方服务器。这个特性被滥用,其中一种滥用方式是导致FTP服务器对其他主机进行端口扫描。通过请求FTP服务器轮流将文件发送到目标主机上感兴趣的端口,错误消息将描述端口是开放还是关闭的。这是绕过防火墙的一种方法,因为FTP服务器通常被放置在可以访问比Web主机更多其他内部主机的位置。

使用"-b"选项,Nmap支持FTP弹跳扫描。参数格式为:<FTP服务器>:<端口号>。FTP服务器可以是某个脆弱的FTP服务器的名称或IP地址。如果服务器上开放了匿名用户,可以省略用户名和密码。端口号(以及前面的冒号)也可以省略,如果使用默认的FTP端口(21)。

需要注意的是,FTP弹跳扫描是一种滥用FTP服务器的方法,而且大多数服务器已经修复了这个漏洞。但仍然存在一些脆弱的服务器,所以如果其他方法都失败了,可以尝试使用FTP弹跳扫描。然而,如果您只是想尝试使用Nmap进行探索,不需要(实际上也不应该)滥用他人的服务器。

 

 

 

 

端口扫描是指通过发送网络数据包来探测目标主机上的开放端口。Nmap提供了多种扫描方法和选项来指定要扫描的端口以及扫描顺序。

默认情况下,Nmap会扫描端口1到1024以及nmap-services文件中列出的更高端口。这些端口是常见的服务端口,因此被默认选择进行扫描。

使用"-p"选项可以指定要扫描的端口,覆盖默认值。您可以指定单个端口或使用连字符表示的端口范围(如1-1023)。如果省略范围的开始和/或结束值,Nmap将使用1和65535作为默认值。例如,"-p-"将扫描从端口1到65535的所有端口。您还可以指定扫描TCP端口或UDP端口,通过在端口号前加上"T:"或"U:"来指定协议。例如,"-p U:53,111,137,T:21-25,80,139,8080"将同时扫描UDP端口53、111和137,并扫描列出的TCP端口。请注意,如果要同时扫描UDP和TCP端口,必须指定"-sU"选项以及至少一种TCP扫描类型(如"-sS"、"-sF"或"-sT")。

使用"-F"选项可以进行快速扫描,只扫描nmap-services文件中指定的端口。这比扫描所有65535个端口要快得多。默认的TCP扫描(约1600个端口)与nmap-services文件中的端口列表(1200多个TCP端口)之间的速度差异不大。如果您使用"--datadir"选项指定了自己的nmap-services文件,差异可能会更大。

使用"-r"选项可以指定按顺序扫描端口,而不是按随机顺序扫描。默认情况下,Nmap会按随机顺序扫描端口(除了常用端口会优先扫描,出于效率考虑)。

 

 

 

即使Nmap是对的,假设运⾏服务的确实是 SMTP,HTTP和DNS,那也不是特别多的信息。 当为您的公司或者客
户作安全评估(或者甚⾄简单的⽹络明细清单)时, 您确实想知道正在运⾏什么邮件和域名服务器以及它们的版本。
有⼀个精确的版本号对了解服务器有什么漏洞有巨⼤帮助。 版本探测可以帮您获得该信息。
在⽤某种其它类型的扫描⽅法发现TCP 和/或者UDP端⼝后, 版本探测会询问这些端⼝,确定到底什么服务正在运
⾏。 nmap-service-probes 数据库包含查询不同服务的探测报⽂ 和解析识别响应的匹配表达式。 Nmap试图确定
服务协议 (如 ftp,ssh,telnet,http),应⽤程序名(如ISC Bind,Apache httpd,Solaris telnetd),版本号, 主机
名,设备类型(如 打印机,路由器),操作系统家族 (如Windows,Linux)以及其它的细节,如 如是否可以连接X
server,SSH协议版本 ,或者KaZaA⽤户名)。当然,并⾮所有服务都提供所有这些信息。 如果Nmap被编译成⽀
持OpenSSL, 它将连接到SSL服务器,推测什么服务在加密层后⾯监听。 当发现RPC服务时, Nmap RPC grinder
(-sR)会⾃动被⽤于确定RPC程序和它的版本号。 如果在扫描某个UDP端⼝后仍然⽆法确定该端⼝是开放的还是被过
滤的,那么该端⼝状态就 被标记为open|filtered。 版本探测将试图从这些端⼝引发⼀个响应(就像它对开放端⼝做
的⼀样), 如果成功,就把状态改为开放。 open|filtered TCP端⼝⽤同样的⽅法对待。 注意Nmap -A选项在其它
情况下打开版本探测。 有⼀篇关于版本探测的原理,使⽤和定制的⽂章在
http://www.insecure.org/nmap/vscan/。
当Nmap从某个服务收到响应,但不能在数据库中找到匹配时, 它就打印⼀个特殊的fingerprint和⼀个URL给您提
交,如果您确实知道什么服务运⾏在端⼝。 请花两分钟提交您的发现,让每个⼈受益。由于这些提交, Nmap有
350种以上协议如smtp,ftp,http等的⼤约3,000条模式匹配。
⽤下列的选项打开和控制版本探测。

 

 

在Nmap中,可以使用以下选项来打开和控制版本探测:

-sV:这个选项用于开启版本探测。它会在扫描过程中尝试识别目标主机上运行的服务和应用程序的版本信息。

--version-intensity <level>:这个选项用于控制版本探测的强度级别。级别可以是0(禁用版本探测)、1(默认级别,只进行基本的版本探测)、3(更深入的版本探测,包括更多的探测和匹配规则)或9(最深入的版本探测,包括所有可用的探测和匹配规则)。

--version-light:这个选项用于启用轻量级的版本探测。它会在扫描过程中尝试识别目标主机上运行的服务和应用程序的版本信息,但不会进行深入的探测。

--version-all:这个选项用于启用全面的版本探测。它会尝试识别目标主机上运行的所有服务和应用程序的版本信息,包括不常见的和自定义的服务。

--version-trace:这个选项用于启用版本探测的跟踪模式。它会显示版本探测的详细过程,包括发送的探测请求和接收到的响应。

--version-db <file>:这个选项用于指定自定义的版本探测数据库文件。您可以使用自己的数据库文件来扩展或替换默认的数据库文件。

通过使用这些选项,您可以在Nmap扫描中开启版本探测,并根据需要调整探测的强度和范围。这将帮助您获取有关目标主机上运行的服务和应用程序的详细信息,从而更好地了解潜在的漏洞和安全风险。

 

Xray简介

  Xray是一款开源的安全测试工具,用于检测和评估Web应用程序的安全性。它主要用于发现和利用Web应用程序中的漏洞,如SQL注入、跨站脚本攻击(XSS)、跨站请求伪造(CSRF)等。

Xray具有以下特点和功能:

  1. 智能扫描引擎:Xray使用智能扫描引擎来自动发现和验证Web应用程序中的漏洞。它可以自动检测常见的漏洞类型,并提供详细的报告和建议。

  2. 支持多种漏洞类型:Xray支持多种常见的漏洞类型,包括SQL注入、XSS、CSRF、命令注入、文件包含等。它还可以检测敏感信息泄露、弱密码、不安全的配置等问题。

  3. 高级漏洞利用:Xray提供了一些高级的漏洞利用功能,可以帮助安全测试人员深入挖掘和利用漏洞。例如,它可以自动化进行SQL注入攻击、XSS攻击等。

  4. 定制化和扩展性:Xray提供了丰富的配置选项和插件系统,可以根据具体需求进行定制和扩展。用户可以自定义扫描规则、添加自定义漏洞检测脚本等。

  5. 报告和漏洞管理:Xray生成详细的扫描报告,包括发现的漏洞、漏洞的严重程度、修复建议等信息。它还提供了漏洞管理功能,可以跟踪和管理漏洞的修复过程。

总之,Xray是一款功能强大的安全测试工具,可以帮助安全测试人员发现和利用Web应用程序中的漏洞,提高应用程序的安全性。

 

 

如何使用FOFA使⽤

 

 
 

FOFA(FOcus on Asset)是一款基于互联网资产搜索引擎的工具,用于查找和发现特定的互联网资产。以下是使用FOFA的一般步骤:

  1. 打开FOFA网站(https://fofa.so/)并注册一个账户。

  2. 登录到FOFA账户后,您可以在搜索栏中输入关键词或使用FOFA语法进行高级搜索。FOFA语法具有丰富的搜索选项,可以根据您的需求进行更精确的搜索。

  3. 输入关键词或使用FOFA语法后,点击搜索按钮进行搜索。

  4. FOFA将显示与您的搜索条件匹配的互联网资产的结果列表。您可以查看每个资产的详细信息,例如IP地址、端口、域名等。

  5. 可以根据需要进行进一步的筛选和排序,以缩小搜索结果的范围。

  6. FOFA还提供了导出搜索结果的选项,以便将搜索结果保存或进行进一步的分析。

请注意,FOFA的使用可能受到其许可证和使用条款的限制。确保在使用FOFA时遵守相关法律法规和使用规定。

以下是一些使用FOFA进行搜索的示例查询语句和说明:

  1. title="abc":从标题中搜索包含 "abc" 的网站。

  2. header="abc":从 HTTP 头中搜索包含 "abc" 的网站。

  3. body="abc":从 HTML 正文中搜索包含 "abc" 的网站。

  4. domain="qq.com":搜索根域名为 "qq.com" 的网站。

  5. host=".gov.cn":从 URL 中搜索包含 ".gov.cn" 的网站。

  6. port="443":查找开放了 443 端口的资产。

  7. ip="1.1.1.1":从 IP 中搜索包含 "1.1.1.1" 的网站。可以通过 IP 地址搜索整个 IP 段,例如 ip="220.181.111.1/24" 可以搜索 IP 段为 220.181.111.1 的资产。

  8. protocol="https":搜索指定协议类型为 HTTPS 的资产。

  9. city="Hangzhou":搜索位于杭州市的资产。

  10. region="Zhejiang":搜索位于浙江省的资产。

  11. country="CN":搜索位于中国(编码为 CN)的资产。

  12. cert="google":搜索证书中包含 "google" 的资产。

  13. banner=users && protocol=ftp:搜索 FTP 协议中包含 "users" 的资产。

  14. type=service:搜索所有协议资产,包括子域名和服务。

  15. os=windows:搜索使用 Windows 操作系统的资产。

  16. server=="Microsoft-IIS/7.5":搜索使用 IIS 7.5 服务器的资产。

  17. app="海康威视-视频监控":搜索海康威视设备的资产。

  18. after="2017" && before="2017-10-01":在指定时间范

    1. asn="19551":搜索指定 ASN 的资产。

    2. org="Amazon.com, Inc.":搜索指定组织(org)的资产。

    3. base_protocol="udp":搜索指定 UDP 协议的资产。

    4. is_ipv6=true:搜索 IPv6 的资产。

    5. is_domain=true:搜索域名的资产。

    6. ip_ports="80,443" 或 ports="80,443":搜索同时开放了 80 和 443 端口的 IP 资产。

      在FOFA中,可以使用括号 () 和逻辑运算符 &&(与)、||(或)、!=(非)来构建更复杂的查询表达式。此外,还有新增的 == 完全匹配符号,可以加快搜索速度。例如,要查找所有域名为qq.com的主机,可以使用 domain=="qq.com"

      以下是一些进一步的示例和注释:

      1. title="powered by" && title!=discuz:搜索标题中包含 "powered by" 但不包含 "discuz" 的网站。

      2. title!="powered by" && body=discuz:搜索标题不包含 "powered by" 但正文中包含 "discuz" 的网站。

      3. (body="content=\"WordPress" || (header="X-Pingback" && header="/xmlrpc.php" && body="/wp-includes/")) && host="gov.cn":搜索正文中包含 "content="WordPress",或者同时在HTTP头中包含 "X-Pingback" 和 "/xmlrpc.php",并且正文中包含 "/wp-includes/" 的位于 "gov.cn" 域名下的网站。

      4. ip_country="CN":搜索位于中国的IP资产(以IP为单位的资产数据)。

      5. ip_region="Zhejiang":搜索位于浙江省的IP资产(以IP为单位的资产数据)。

      6. ip_city="Hangzhou":搜索位于杭州市的IP资产(以IP为单位的资产数据)。

      7. ip_after="2019-01-01":搜索2019年1月1日之后的IP资产(以IP为单位的资产数据)。

      8. ip_before="2019-01-01":搜索2019年1月1日之前的IP资产(以IP为单位的资产数据)。

      9. icon_hash="":搜索没有图标的网站。

      10. domain="sf-express.com" && title="后台":搜索域名为sf-express.com且标题中包含 "后台" 的网站。

      请记住,在使用FOFA进行搜索时,要遵守相关法律法规和使用规定。

 

 

 

posted on 2023-11-20 12:55  jiapengchu  阅读(41)  评论(0编辑  收藏  举报

导航