【Linux】Kali Linux 渗透安全学习笔记(3) - Nikto 简单应用

Nikto 是一款不可多得的漏洞扫描工具。它用 Perl 编写,使用 rfp 的 LibWhisker 来执行快速安全扫描或信息检查。它使用起来非常方便,帮助文档和社区资源都比较全面,对于像我这种初学者来说简直就是福音。本章我将延续上一章 OneForAll 的用例继续进行渗透测试。

声明:

  1. 本文测试的站点为自家站点仅做学习使用,不存在侵犯网络信息安全问题;
  2. 本文只介绍工具的使用并不鼓吹任何非法活动,请各位看官三思而后行一切后果自负;
  3. 本文测试中结果虽然是真实的,但涉及的敏感信息都将采用“化名”进行脱敏;

在上一章节中我们得知,在 yzhcs.io 域名下存在两个功能模块的子域名 app.yzhcs.io 和 def.yzhcs.io ,下面就使用 Nikto 对两个子域名进行扫描。

PS:由于 kali linux(以下简称“kali”)已经自带 Nikto 因此就不再叙述其安装过程了。

在正式扫描之前我先创建一个文档,将两个域名放到 domain.txt 文档里面,如下图:

┌──(root💀b8ef6c2abc47)-[/home/nikto]
└─# vim domain.txt┌──(root💀b8ef6c2abc47)-[/home/nikto]
└─# cat domain.txt 
app.yzhcs.io
def.yzhcs.io

接下来就可以通过命令行进行 nikto 扫描,如下图:

┌──(root💀b8ef6c2abc47)-[/]
└─# nikto --config /var/lib/nikto/nikto.conf.default -h /home/nikto/domain.txt -ssl -o /home/nikto/202308030747_nikto.csv -evasion 13458
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          132.19.52.123
+ Target Hostname:    app.yzhcs.io
+ Target Port:        443
---------------------------------------------------------------------------
+ SSL Info:        Subject:  /CN=app.yzhcs.ioCiphers:  ECDHE-RSA-AES128-GCM-SHA256Issuer:   /C=CN/O=TrustAsia Technologies, Inc./CN=TrustAsia RSA DV TLS CA G2
+ Using Encoding:     Random URI encoding (non-UTF8)
+ Using Encoding:     Premature URL ending
+ Using Encoding:     Prepend long random string
+ Using Encoding:     Fake parameter
+ Using Encoding:     Use Windows directory separator (\)
+ Start Time:         2023-08-03 00:10:40 (GMT0)
---------------------------------------------------------------------------
... 此处省略 1w 字
+ 8121 requests: 85 error(s) and 205 item(s) reported on remote host
+ End Time:           2023-08-03 00:51:34 (GMT0) (2454 seconds)---------------------------------------------------------------------------
+ Target IP:          132.19.52.123
+ Target Hostname:    def.yzhcs.io
+ Target Port:        443
---------------------------------------------------------------------------
+ SSL Info:        Subject:  /CN=def.yzhcs.ioCiphers:  ECDHE-RSA-AES128-GCM-SHA256Issuer:   /C=CN/O=TrustAsia Technologies, Inc./CN=TrustAsia RSA DV TLS CA G2
+ Using Encoding:     Random URI encoding (non-UTF8)
+ Using Encoding:     Premature URL ending
+ Using Encoding:     Prepend long random string
+ Using Encoding:     Fake parameter
+ Using Encoding:     Use Windows directory separator (\)
+ Start Time:         2023-08-03 00:51:34 (GMT0)
---------------------------------------------------------------------------
... 此处省略 1w 字
+ 16401 requests: 128 error(s) and 200 item(s) reported on remote host
+ End Time:           2023-08-03 01:42:32 (GMT0) (3058 seconds)
---------------------------------------------------------------------------
+ 2 host(s) tested

本人使用的命令行非常简单,其中:

  • –config:自定义渗透配置文件,通过 config 参数应用到扫描当中
  • -h:域名地址(可以是域名本身,也可以是文档路径)
  • -ssl:指定只扫描 443 端口(建议加上默认情况下 nikto 会将 80 和 443 端口都扫描)
  • -o:输出地址
  • -evasion:是否启用 IDS/IPS 逃避技术

值得一提的是,我对于渗透配置文件做了一下修改,如下图:

# Number of failures before giving up
# Set to 0 to disable entirely
FAILURES=10000

默认情况下 FAILURES 参数只有 20,在大规模扫描时这 20 次失败一下子就用完了。因此这里将 FAILURES 参数改为了 10000,并且在命令行中使用 config 参数指向修改后的配置文件(由于本人使用 Docker 镜像的 kali 系统,因此只能通过 config 参数指定配置文件,不知道实机(或虚拟机)的情况下重启是否就不需要这个 config 参数了)。

从扫描结果我可以得到以下关键信息:

域名服务请求数错误数发现条目耗时(秒)
app.yzhcs.io8121852052454
def.yzhcs.io164011282003058

虽然错误数平均下来都有差不多 100 个,但是大部分都是重复的,这里归纳了一下主要是以下7个问题:

0x1 It may be possible to crash Nortel Contivity VxWorks by requesting ‘/cgi/cgiproc?$’ (not attempted!). Upgrade to version 2.60 or later.

问题解析:

Nortel Contivity VxWorks 存在一个可能导致崩溃的漏洞,攻击者可以通过请求 ‘/cgi/cgiproc?$’ 触发此漏洞。建议升级到版本 2.60 或更高版本修复此漏洞。

修复方式:

  1. 升级到最新版本;
  2. 禁用或限制访问 CGI 端点,如不需要使用 ‘/cgi/cgiproc?$’ 端点,可以考虑禁用或限制对该端点的访问;
  3. 实在没有办法就使用防火墙和访问控制列表(ACL)来限制对服务器和端点的访问,只允许受信任的 IP 地址或用户访问;

0x2 The anti-clickjacking X-Frame-Options header is not present.

问题解析:

网站缺少反点击劫持(clickjacking)的 X-Frame-Options 头部。攻击者会试图通过在一个页面上覆盖另一个透明的页面来欺骗用户点击,从而进行一些恶意操作。为了防止这种攻击,您可以在 HTTP 响应头中添加 X-Frame-Options 头部。

修复方式:

添加 X-Frame-Options 头部的目的是指示浏览器在渲染网页时是否允许将网页嵌套在 <frame><iframe> 中。这样可以防止其他网站将您的网页嵌套在它们的框架中,减少点击劫持的风险。在 nginx 服务器中添加(记得要先做好备份)的具体做法如下:

server {# ...其他配置项...# 添加 X-Frame-Options 头部# DENY:表示该页面不允许在任何 frame 中显示,包括在相同域名下。# SAMEORIGIN:表示该页面可以在相同域名下的 frame 中显示,但不允许在其他域名下显示。add_header X-Frame-Options SAMEORIGIN;
}

0x3 The site uses TLS and the Strict-Transport-Security HTTP header is not defined.

问题解析:

网站使用了 TLS(Transport Layer Security,传输层安全协议),但未定义 Strict-Transport-Security(STS)HTTP 头部。Strict-Transport-Security(STS)是一个安全策略,通过HTTP响应头部将网站要求浏览器仅通过HTTPS与服务器进行通信,从而强制使用安全的加密连接。这有助于防止中间人攻击和SSL剥离攻击,提高网站的安全性。

修复方式:

要设置 Strict-Transport-Security(STS)头部,您需要在服务器配置中添加相应的HTTP响应头。在 nginx 服务器中添加(记得要先做好备份)的具体做法如下:

server {# ...其他配置项...# 添加 Strict-Transport-Security 头部# max-age 参数指定了STS策略的持续时间,以秒为单位。# includeSubDomains 参数用于包括子域名在内,这意味着该STS策略也将应用于所有子域名。# preload 参数用于向浏览器提交您的网站以预加载HSTS列表。add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
}

0x4 The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type.

问题解析:

网站未设置 X-Content-Type-Options 头部。这可能导致用户代理(浏览器)根据 MIME 类型以不同的方式呈现网站内容。X-Content-Type-Options 头部是一种安全措施,用于防止浏览器将响应内容根据其识别的 MIME 类型进行解释。这有助于防止一些特定的攻击,例如 MIME 类型混淆攻击,从而提高网站的安全性。

修复方式:

在 nginx 服务器中添加(记得要先做好备份)的具体做法如下:

server {# ...其他配置项...# 添加 X-Content-Type-Options 头部# 将 X-Content-Type-Options 头部设置为 "nosniff",这表示浏览器将不会执行对响应内容进行 MIME 类型猜测(即不会"嗅探" MIME 类型)。add_header X-Content-Type-Options "nosniff";
}

0x5 This might be interesting.

问题解析:

在网站中,这些路径通常是公开访问的,并且可能包含一些敏感信息,比如版本号、文件名,或者其他可能对攻击者有用的信息。譬如目录索引开启了导致攻击者浏览目录结构,从而了解到整个网站的文件结构。除此之外,由于/js 目录可以被公开访问,因此会存在注入危险的可执行脚本的可能性…

修复方式:

可以考虑使用安全的内容传递机制,例如 Content Security Policy (CSP),来减少潜在的安全风险。

0x6 Uncommon header 'access-control-allow-headers ’ found, with contents: accept,authorization,Content-Type.

问题解析:

这个问题的确是存在,这是为了解决跨域问题而设置了 access-control-allow-headers 参数,而 access-control-allow-headers 参数中又将权限放大处理了。

修复方式:

明确需要的请求头部,避免过度开放。

0x7 Microsoft SharePoint Portal and Team Services vulnerable to NT or NTLM authentication bypass on Win2000 SP4 using IE 6.x.

问题解析:

发现服务器上运行的 Microsoft SharePoint Portal 和 Team Services 存在 NT 或 NTLM 认证绕过漏洞。NTLM(NT LAN Manager)是一种在 Windows 网络环境中使用的认证协议。认证绕过漏洞可能允许攻击者在特定情况下绕过认证机制,从而获得未经授权的访问权限。该漏洞可能影响运行 Windows 2000 SP4 操作系统,并使用 Internet Explorer 6.x 进行访问的 Microsoft SharePoint Portal 和 Team Services。

修复方式:

  1. 确保服务器上的操作系统和软件都是最新版本,并应用已知的安全更新和补丁;
  2. 由于该漏洞可能涉及 Internet Explorer 6.x,要使用更现代的浏览器(如 Chrome、Firefox 或 Edge);
  3. 禁用不安全的认证方式,如 NTLMv1 或 LM(LAN Manager)认证;

以上是一些我这边比较有代表性的问题,虽然里面有解决方案,但是各位还需按实际情况进行调整。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/23881.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初识MySQL数据库之用户管理

目录 一、用户管理 二、用户 1. 用户信息 2. 创建用户 3. 用户登录测试 4. 删除用户 5. 设置用户远端登录 6. 修改密码 6.1 修改当前用户的密码 6.2 root用户修改指定用户的密码 三、权限 1. 数据库中的各个权限含义 2. 给用户授权 3. 查看用户拥有权限 4. 授权…

Flink之JDBC Sink

这里介绍一下Flink Sink中jdbc sink的使用方法,以mysql为例,这里代码分为两种,事务和非事务 非事务代码 import org.apache.flink.connector.jdbc.JdbcConnectionOptions; import org.apache.flink.connector.jdbc.JdbcExecutionOptions; import org.apache.flink.connector.…

设计模式概述与UML图

文章目录 一、设计模式概述1. 软件设计模式的产生背景2. 软件设计模式的概念3. 学习设计模式的必要性4. 设计模式分类&#xff08;1&#xff09;创建型模式&#xff08;2&#xff09;结构型模式&#xff08;3&#xff09;行为型模式 二、UML图1. 类图概述2. 类图作用3. 类图表示…

深入学习JVM —— GC垃圾回收机制

前言 前面荔枝已经梳理了有关JVM的体系结构和类加载机制&#xff0c;也详细地介绍了JVM在类加载时的双亲委派模型&#xff0c;而在这篇文章中荔枝将会比较详细地梳理有关JVM学习的另一大重点——GC垃圾回收机制的相关知识&#xff0c;重点了解的比如对象可达性的判断、四种回收…

215. 数组中的第K个最大元素(快排+大根堆+小根堆)

题目链接&#xff1a;力扣 解题思路&#xff1a; 方法一&#xff1a;基于快速排序 因为题目中只需要找到第k大的元素&#xff0c;而快速排序中&#xff0c;每一趟排序都可以确定一个最终元素的位置。 当使用快速排序对数组进行降序排序时&#xff0c;那么如果有一趟排序过程…

VSCode C/C++ 分目录编译配置

分目录编译配置记录 launch.json文件 注释处为修改内容 {// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息&#xff0c;请访问: https://go.microsoft.com/fwlink/?linkid830387"version": "0.2.0","configur…

PHP8的表达式-PHP8知识详解

表达式是 PHP 最重要的基石。在 PHP8中&#xff0c;几乎所写的任何东西都是一个表达式。简单但却最精确的定义一个表达式的方式就是"任何有值的东西"。 最基本的表达式形式是常量和变量。当键入"$a 5"&#xff0c;即将值"5"分配给变量 $a。&quo…

Android 13.0 在系统app安装第三方app弹出 解析安装包出现问题 的解决方案

1.概述 在13.0的系统定制化开发中,对于系统内置app中用代码调用系统安装接口安装app时抛出Permission Denial: that is not exported from UID 1000的异常,查询资料这个异常发现通常是由于Uri权限导致的问题,这就需要看PMS在安装的时候,需要什么权限,然后根据相关的日志分…

后端进阶之路——综述Spring Security认证,授权(一)

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 「推荐专栏」&#xff1a; ★java一站式服务 ★ ★前端炫酷代码分享 ★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff0c;vue成神之路★ ★ 解决算法&#xff0c;一个专栏就够了★ ★ 架…

【数据结构篇】手写双向链表、单向链表(超详细)

文章目录 链表1、基本介绍2、单向链表2.1 带头节点的单向链表测试类&#xff1a;链表实现类&#xff1a; 2.2 不带头节点的单向链表2.3 练习测试类&#xff1a;链表实现类&#xff1a; 3、双向链表测试类&#xff1a;双向链表实现类&#xff1a; 4、单向环形链表**测试类**&…

包装类型【待发布】

在之前的介绍中&#xff0c;我们知道了&#xff0c;数据的分类分为基本数据类型和引用类型。 而基本包装类型&#xff0c;严格来说不属于上面两个中的任意一个&#xff0c;但又和两种类型关系米希尔。 我们回忆一下&#xff0c;基本类型和引用类型最大的区别是什么&#xff1…

Gitlab CI/CD笔记-第二天-GitOps的流水线常用关键词(1)

一、常用关键词 在Gitlab项目的根目录需要创建一个 .gitlab-ci.yaml的文件。 这个文件就是定义的流水线。Call :"Pipeline as code" 二、这条流水线怎么写&#xff1f; 一、掌握常用的关键词即可。 1.关键词分类 1.全局关键词 Global Keywards 2.任务关键词…

Java课题笔记~ Spring 概述

Spring 框架 一、Spring 概述 1、Spring 框架是什么 Spring 是于 2003 年兴起的一个轻量级的 Java 开发框架&#xff0c;它是为了解决企业应用开发的复杂性而创建的。Spring 的核心是控制反转&#xff08;IoC&#xff09;和面向切面编程&#xff08;AOP&#xff09;。 Spring…

Mybatis分页查询同时返回总数和数据

功能要求&#xff1a; 我们在使用Mybatis分页查询数据列表时&#xff0c;在用户的一个请求中常常需要同时返回当前页的列表数据以及满足条件的数据总条数用于分页。 实现方案 1&#xff09;执行两次SQL&#xff0c;一次查列表&#xff0c;一次查总数 这种方法最简单&#xf…

vue 标题文字字数过长超出部分用...代替 动态显示

效果: 浏览器最大化: 浏览器缩小: 代码: html: <div class"title overflow">{{item.name}}</div> <div class"content overflow">{{item.content}}</div> css: .overflow {/* 一定要加宽度 */width: 90%;/* 文字的大小 */he…

聊聊 Docker 和 Dockerfile

目录 一、前言 二、了解Dockerfile 三、Dockerfile 指令 四、多阶段构建 五、Dockerfile 高级用法 六、小结 一、前言 对于开发人员来说&#xff0c;会Docker而不知道Dockerfile等于不会Docker&#xff0c;上一篇文章带大家学习了Docker的基本使用方法&#xff1a;《一文…

【NLP概念源和流】 01-稀疏文档表示(第 1/20 部分)

一、介绍 自然语言处理(NLP)是计算方法的应用,不仅可以从文本中提取信息,还可以在其上对不同的应用程序进行建模。所有基于语言的文本都有系统的结构或规则,通常被称为形态学,例如“跳跃”的过去时总是“跳跃”。对于人类来说,这种形态学的理解是显而易见的。 在这篇介…

Elasticsearch更新文档

POST更新 查询当前ffbf索引信息 GET /ffbf/_search返回信息 {"took" : 1,"timed_out" : false,"_shards" : {"total" : 2,"successful"

设计模式-迭代器模式在Java中使用示例

场景 为开发一套销售管理系统&#xff0c;在对该系统进行分析和设计时&#xff0c;发现经常需要对系统中的商品数据、客户数据等进行遍历&#xff0c; 为了复用这些遍历代码&#xff0c;开发人员设计了一个抽象的数据集合类AbstractObjectList&#xff0c;而将存储商品和客户…

MySQL正则表达式检索数据

目录 一、使用正则表达式进行基本字符匹配 1.使用regexp关键字 2.使用正则表达式 . 二、进行OR匹配 1.为搜索两个串之一&#xff0c;使用 | 2.匹配几个字符之一[] 3.匹配范围 4.匹配特殊字符 过滤数据允许使用匹配、比较、通配符操作来寻找数据&#xff0c;但是随…