当前位置: 首页 » 怎么找黑客 » 内网渗透测试七个步骤,内网穿透工具渗透测试

内网渗透测试七个步骤,内网穿透工具渗透测试

作者:hacker 时间:2022-07-21 阅读数:116人阅读

本文目录一览:

Ngrok有时很不稳定,有什么更好的内网穿透方法?

以下内容来自公众号逆锋起笔,关注每日干货及时送达

原文内网穿透工具渗透测试:v0w.top/2020/08/11/IntranetProxy

前言

本文以渗透的视角,总结几种个人常用的内网穿透,内网代理工具,介绍其简单原理和使用方法。

1、nps-npc1.1 简介

nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还支持内网http代理、内网socks5代理、p2p等,并带有功能强大的web管理端。

一台有公网IP的服务器(VPS)运行服务端(NPS)

一个或多个运行在内网的服务器或者PC运行客户端(NPC)

1.2 特点

Go语言编写

支持跨平台

支持多种协议的代理

web管理端

1.3 使用方法

NPS

安装配置

找到自己服务器相应版本的server:

cd ~

wget

tar xzvf linux_amd64_server.tar.gz

cd ~/nps

在nps目录下面会有一个nps可执行文件、conf配置目录和web网页目录,内网穿透工具渗透测试我们只需要修改conf/nps.conf即可:

vim conf/nps.conf

需要改一下#web下面的几个参数,

web_host= 服务器IP或者域名

web_username= admin(登录用户名)

web_password= 你的密码

web_port=8080(web管理端口)

修改#bridge可以更改 NPC的连接端口。比如我们拿到一台权限受限的服务器,有防火墙,可能只有部分端口(80,443)可以出网,就需要修改成出网端口。

##bridge

bridge_type=tcp

bridge_port=443 # 修改连接端口

bridge_ip=0.0.0.0

启动

#Mac/Linux

./nps test|start|stop|restart|status 测试配置文件|启动|停止|重启|状态

#Windows

nps.exe test|start|stop|restart|status 测试配置文件|启动|停止|重启|状态

NPC

./npc -server=你的IP:8024 -vkey=唯一验证密码 -type=tcp

新建好客户端后,也可以在+中看到,详细的客户端连接命令:

在客户端界面可以通过新增的方式添加客户端连接,每一个连接的vkey都是唯一区分的。

每一个客户端,在建立连接后,都可以建立多个不同协议的隧道,这一个个隧道就是不同的代理内网穿透工具渗透测试了。

通过不同的协议和端口就可以连接代理的内网机器。

2、frp

2.1 简介

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

2.2 特点

客户端服务端通信支持 TCP、KCP 以及 Websocket 等多种协议。

端口复用,多个服务通过同一个服务端端口暴露。

跨平台,但是支持的比nps少一点

多种插件,提供很多功能

2.3 使用方法

下载:

以下内容摘自:. 通过 rdp 访问家里的机器

1.修改 frps.ini 文件,为内网穿透工具渗透测试了安全起见,这里最好配置一下身份验证,服务端和客户端的 common 配置中的token参数一致则身份验证通过:

# frps.ini

[common]

bind_port = 7000

# 用于身份验证,请自行修改,要保证服务端与客户端一致

token = abcdefgh

2.启动 frps:

./frps -c ./frps.ini

3.修改 frpc.ini 文件,假设 frps 所在服务器的公网 IP 为 x.x.x.x:

# frpc.ini

[common]

server_addr = x.x.x.x

server_port = 7000

# 用于身份验证,请自行修改,要保证服务端与客户端一致

token = abcdefgh

[rdp]

type = tcp

local_ip = 127.0.0.1

local_port = 3389

remote_port = 6000

4.启动 frpc:

./frpc -c ./frpc.ini

5.通过 rdp 访问远程的机器,地址为:

x.x.x.x:6000

开机自启

针对 Windows 系统,为了便于使用,可以配置一下开机的时候静默启动。

1.在 frpc.exe 的同级目录创建一个 start_frpc.vbs:

'start_frpc.vbs

'请根据实际情况修改路径

CreateObject("WScript.Shell").Run """D:\Program Files\frp_windows_amd64\frpc.exe""" "-c" """D:\Program Files\frp_windows_amd64\frpc.ini""",0

2.复制 start_frpc.vbs 文件,打开以下目录,注意将

改为你的用户名:

C:\Users\\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

3.鼠标右击,粘贴为快捷方式即可。

2. 通过 SSH 访问公司内网机器

frps 的部署步骤同上。

1.启动 frpc,配置如下:

# frpc.ini

[common]

server_addr = x.x.x.x

server_port = 7000

# 用于身份验证,请自行修改,要保证服务端与客户端一致

token = abcdefgh

[ssh]

type = tcp

local_ip = 127.0.0.1

local_port = 22

remote_port = 6000

2.通过 SSH 访问内网机器,假设用户名为 test:

ssh -oPort=6000 test@x.x.x.x

3. 通过自定义域名访问部署于内网的 Web 服务

1.修改 frps.ini 文件,设置 http 访问端口为 8080:

# frps.ini

[common]

bind_port = 7000

vhost_http_port = 8080

# 用于身份验证,请自行修改,要保证服务端与客户端一致

token = abcdefgh

2.启动 frps:

./frps -c ./frps.ini

3.修改 frpc.ini 文件,假设 frps 所在的服务器的 IP 为 x.x.x.x,local_port 为本地机器上 Web 服务对应的端口, 绑定自定义域名:

# frpc.ini

[common]

server_addr = x.x.x.x

server_port = 7000

# 用于身份验证,请自行修改,要保证服务端与客户端一致

token = abcdefgh

[web]

type = http

local_port = 80

custom_domains =

4.启动 frpc:

./frpc -c ./frpc.ini

5 .将的域名 A 记录解析到 IPx.x.x.x,如果服务器已经有对应的域名,也可以将 CNAME 记录解析到服务器原先的域名。

6.通过浏览器访问即可访问到处于内网机器上的 Web 服务。

4. 对外提供简单的文件访问服务

通过static_file插件可以对外提供一个简单的基于 HTTP 的文件访问服务。

frps 的部署步骤同上。

1.启动 frpc,启用static_file插件,配置如下:

# frpc.ini

[common]

server_addr = x.x.x.x

server_port = 7000

# 用于身份验证,请自行修改,要保证服务端与客户端一致

token = abcdefgh

[test_static_file]

type = tcp

remote_port = 6000

plugin = static_file

# 要对外暴露的文件目录

plugin_local_path = /tmp/file

# 访问 url 中会被去除的前缀,保留的内容即为要访问的文件路径

plugin_strip_prefix = static

plugin_http_user = abc

plugin_http_passwd = abc

2.通过浏览器访问来查看位于/tmp/file目录下的文件,会要求输入已设置好的用户名和密码。

常用功能

统计面板(Dashboard)

通过浏览器查看 frp 的状态以及代理统计信息展示。

注:Dashboard 尚未针对大量的 proxy 数据展示做优化,如果出现 Dashboard 访问较慢的情况,请不要启用此功能。

需要在 frps.ini 中指定 dashboard 服务使用的端口,即可开启此功能:

[common]

dashboard_port = 7500

# dashboard 用户名密码,默认都为 admin

dashboard_user = admin

dashboard_pwd = admin

打开浏览器通过http://[server_addr]:7500访问 dashboard 界面,用户名密码默认为admin。

加密与压缩

这两个功能默认是不开启的,需要在 frpc.ini 中通过配置来为指定的代理启用加密与压缩的功能,压缩算法使用 snappy:

# frpc.ini

[ssh]

type = tcp

local_port = 22

remote_port = 6000

use_encryption = true

use_compression = true

如果公司内网防火墙对外网访问进行了流量识别与屏蔽,例如禁止了 SSH 协议等,通过设置use_encryption = true,将 frpc 与 frps 之间的通信内容加密传输,将会有效防止流量被拦截。

如果传输的报文长度较长,通过设置use_compression = true对传输内容进行压缩,可以有效减小 frpc 与 frps 之间的网络流量,加快流量转发速度,但是会额外消耗一些 CPU 资源。

[TLS

从 v0.25.0 版本开始 frpc 和 frps 之间支持通过 TLS 协议加密传输。通过在frpc.ini的common中配置tls_enable = true来启用此功能,安全性更高。

为了端口复用,frp 建立 TLS 连接的第一个字节为 0x17。

注意:启用此功能后除 xtcp 外,不需要再设置 use_encryption。

代理限速

目前支持在客户端的代理配置中设置代理级别的限速,限制单个 proxy 可以占用的带宽。

# frpc.ini

[ssh]

type = tcp

local_port = 22

remote_port = 6000

bandwidth_limit = 1MB

在代理配置中增加bandwidth_limit字段启用此功能,目前仅支持MB和KB单位。

范围端口映射

在 frpc 的配置文件中可以指定映射多个端口,目前只支持 tcp 和 udp 的类型。

这一功能通过range:段落标记来实现,客户端会解析这个标记中的配置,将其拆分成多个 proxy,每一个 proxy 以数字为后缀命名。

例如要映射本地 6000-6005, 6007 这 6 个端口,主要配置如下:

# frpc.ini

[range:test_tcp]

type = tcp

local_ip = 127.0.0.1

local_port = 6000-6006,6007

remote_port = 6000-6006,6007

实际连接成功后会创建 8 个 proxy,命名为test_tcp_0, test_tcp_1 ... test_tcp_7。

3、ew3.1 简介

EW 是一套便携式的网络穿透工具,具有 SOCKS v5服务架设和端口转发两大核心功能,可在复杂网络环境下完成网络穿透。但是,现在工具已经不更新了。。。

3.2 特点

轻量级,C语言编写

可以设置多级代理

跨平台

但是只支持Socks5代理

3.3 使用方法以下使用方法均摘自:

以下所有样例,如无特殊说明代理端口均为1080,服务均为SOCKSv5代理服务.

该工具共有 6 种命令格式(ssocksd、rcsocks、rssocks、lcx_slave、lcx_listen、lcx_tran)。

1. 正向 SOCKS v5 服务器

$ ./ew -s ssocksd -l 1080

2. 反弹 SOCKS v5 服务器

这个操作具体分两步:

a) 先在一台具有公网 ip 的主机A上运行以下命令:

$ ./ew -s rcsocks -l 1080 -e 8888

b) 在目标主机B上启动 SOCKS v5 服务 并反弹到公网主机的 8888端口

$ ./ew -s rssocks -d 1.1.1.1 -e 8888

成功。

3. 多级级联

工具中自带的三条端口转发指令, 它们的参数格式分别为:

$ ./ew -s lcx_listen -l 1080 -e 8888

$ ./ew -s lcx_tran -l 1080 -f 2.2.2.3 -g 9999

$ ./ew -s lcx_slave -d 1.1.1.1 -e 8888 -f 2.2.2.3 -g 9999

通过这些端口转发指令可以将处于网络深层的基于TCP的服务转发至根前,比如 SOCKS v5。首先提供两个“二级级联”本地SOCKS测试样例:

a)lcx_tran的用法

$ ./ew -s ssocksd -l 9999

$ ./ew -s lcx_tran -l 1080 -f 127.0.0.1 -g 9999

b)lcx_listen、lcx_slave的用法

$ ./ew -s lcx_listen -l 1080 -e 8888

$ ./ew -s ssocksd -l 9999

$ ./ew -s lcx_slave -d 127.0.0.1 -e 8888 -f 127.0.0.1 -g 9999

再提供一个“三级级联”的本地SOCKS测试用例以供参考

$ ./ew -s rcsocks -l 1080 -e 8888

$ ./ew -s lcx_slave -d 127.0.0.1 -e 8888 -f 127.0.0.1 -g 9999

$ ./ew -s lcx_listen -l 9999 -e 7777

$ ./ew -s rssocks -d 127.0.0.1 -e 7777

数据流向:SOCKS v5 - 1080 - 8888 - 9999 - 7777 - rssocks

4、ngrok4.1 简介

4.2 特点

官方维护,一般较为稳定

跨平台,闭源

有流量记录和重发功能

4.3 使用方法

进入ngrok官网(),注册ngrok账号并下载ngrok;

根据官网给定的授权码,运行如下授权命令;

./ngrok authtoken 1hAotxhmORtzCYvUc3BsxDBPh1H_******************

./ngrok http 80即可将机器的80端口http服务暴露到公网,并且会提供一个公网域名。

可以通过官网的UI界面查看数据包和流量等等(但是要付费==、)

还可以通过一些命令将内网的文件和其他TCP服务 暴露到公网中。

有授权的设置文件共享

ngrok http -auth="user:password"

无授权的设置文件共享

ngrok http ":\\Users\\alan\\Public Folder"

将主机的3389的TCP端口暴露到公网

ngrok tcp 3389

更多使用方法参考:

内网渗透之内网穿透

开源内网穿透工具 frp 简单使用教程

渗透测试的渗透测试

渗透测试 (penetration test)并没有一个标准内网穿透工具渗透测试的定义内网穿透工具渗透测试,国外一些安全组织达成共识的通用说法是:渗透测试是通过模拟恶意黑客的攻击方法内网穿透工具渗透测试,来评估计算机网络系统安全的一种评估方法。这个过程包括对系统的任何弱点、技术缺陷或漏洞的主动分析内网穿透工具渗透测试,这个分析是从一个攻击者可能存在的位置来进行的,并且从这个位置有条件主动利用安全漏洞。

换句话来说,渗透测试是指渗透人员在不同的位置(比如从内网、从外网等位置)利用各种手段对某个特定网络进行测试,以期发现和挖掘系统中存在的漏洞,然后输出渗透测试报告,并提交给网络所有者。网络所有者根据渗透人员提供的渗透测试报告,可以清晰知晓系统中存在的安全隐患和问题。

内网穿透工具渗透测试我们认为渗透测试还具有的两个显著特点是:渗透测试是一个渐进的并且逐步深入的过程。渗透测试是选择不影响业务系统正常运行的攻击方法进行的测试。

作为网络安全防范的一种新技术,对于网络安全组织具有实际应用价值。但要找到一家合适的公司实施渗透测试并不容易。

如何突破防火墙进行内网的渗透测试

身处不同的渗透测试环境下就会有不同的渗透思路以及渗透的技术手段,今天我们将从攻与守两个不同的视角来了解渗透测试在不同处境下所使用的技术手段。

从攻方视角看渗透

攻方既包括了潜在的黑客、入侵者,也包括了经过企业授权的安全专家。在很多黑客的视角中,只要你投入了足够多的时间和耐心,那么这个世界上就没有不可能渗透的目标。目前我们只从授权渗透的角度来讨论渗透测试的攻击路径及其可能采用的技术手段。

测试目标的不同,自然也导致了技术手段的不同,接下来我们将简单说明在不同的位置可能采用的技术手段。

内网测试

内网测试指的是由渗透测试人员在内部网络发起的测试,这类的测试能够模拟企业内部违规操作者的行为。它的最主要的“优势”就是绕过了防火墙的保护。内部可能采用的主要渗透方式有:远程缓冲区溢出,口令猜测,以及B/S或C/S应用程序测试(如果在渗透测试中有涉及到C/S程序测试的,那么就需要提前准备相关客户端软件供测试使用)。

外网测试

外网测试则恰恰与内网测试相反,在此类测试当中渗透测试人员完全处于外部网络(例如拨号、ADSL或外部光纤),来模拟对内部状态一无所知的外部攻击者的行为。外部可能采用的渗透方式包括:对网络设备的远程攻击,口令管理安全性测试,防火墙规则试探、规避、Web及其它开放应用服务的安全性测试。

不同网段/Vlan之间的渗透

这种渗透方式是从某内/外部网段,尝试对另一网段/Vlan来进行渗透。这类测试通常可能用到的技术包括:对网络设备的远程攻击、对防火墙的远程攻击或规则探测、规避尝试。

信息的收集和分析伴随着渗透测试的每一个步骤,而每一个步骤又有三个部分组成:操作、响应和结果分析。

端口扫描

通过对目标地址的TCP/UDP端口扫描,确定其所开放的服务的数量以及类型,这是所有渗透测试的基础。端口扫描是计算机解密高手喜欢的一种方式。通过端口扫描,可以大致确定一个系统的基本信息并搜集到很多关于目标主机的各种有用的信息,然后再结合安全工程师的相关经验就可以确定其可能存在的以及可能被利用的安全弱点,从而为进行深层次的渗透提供可靠性依据。

远程溢出

这是当前出现的频率最高、威胁最严重,同时又是最容易实现的一种渗透方法,一个仅仅具有一般的基础性网络知识的入侵者就可以在相当短的时间内利用现成的工具实现远程溢出攻击。

对于防火墙内的系统同样存在这样的风险,只要对跨接防火墙内外的一台主机攻击成功,那么通过这台主机对防火墙内的主机进行攻击就易如反掌。

口令猜测

口令猜测也是一种出现概率很高的风险,几乎不需要任何攻击工具,利用一个简单的暴力攻击程序和一个比较完善的字典,就可以进行猜测口令。

对一个系统账号的猜测通常包括两个方面:首先是对用户名的猜测,其次是对密码的猜测。只要攻击者能猜测或者确定用户口令,就能获得机器或者网络的访问权,并且能够访问到用户能够访问的审核信息资源。

本地溢出

所谓本地溢出是指在拥有了一个普通用户的账号之后,通过一段特殊的指令代码来获取管理员权限的方法。使用本地溢出的前提是首先你要获得一个普通用户密码。也就是说由于导致本地溢出的一个关键条件是设置不当的密码策略。

多年的实践证明,在经过前期的口令猜测阶段获取的普通账号登录系统之后,对系统实施本地溢出攻击,就能获取不进行主动安全防御的系统的控制管理权限。

脚本及应用测试

Web脚本及应用测试专门针对Web及数据库服务器进行。根据最新的技术统计表明,脚本安全弱点是当前Web系统尤其是存在动态内容的Web系统比较严重的安全弱点之一。利用脚本相关弱点轻则可以获取系统其他目录的访问权限,重则将有可能取得系统的控制管理权限。因此对于含有动态页面的Web、数据库等系统,Web脚本及应用测试将是渗透测试中必不可少的一个环节。

在Web脚本及应用测试中,可能需要检查的部份包括:

(1)检查应用系统架构,防止用户绕过系统直接修改数据库;

(2)检查身份认证模块,用以防止非法用户绕过身份认证;

(3)检查数据库接口模块,用以防止用户获取系统权限;

(4)检查文件接口模块,防止用户获取系统文件;

(5)检查其他安全威胁。

无线测试

虽然中国的无线网络还处于建设时期,但是无线网络的部署及其简易,所以在一些大城市里的普及率已经很高了。在北京和上海的商务区内至少有80%的地方都可以找到接入点。

通过对无线网络的测试,可以判断企业局域网的安全性,这已经成为渗透测试中越来越重要的环节。

除了以上的测试手段以外,还有一些可能会在渗透测试过程中使用的技术,包括:社交工程学、拒绝服务攻击,以及中间人攻击。

从守方视角看渗透

当具备渗透测试攻击经验的人们站到系统管理员的角度,要保障一个大网的安全时,我们会发现,关注点是完全不同的。从攻方的视角看是“攻其一点,不及其余”,只要找到一个小漏洞,就有可能撕开整条战线;但如果你从守方的视角来看,就会发现往往是“千里之堤,毁于蚁穴”。因此,必须要有好的理论指引,从技术到管理都要注重安全,才能使网络固若金汤。

渗透测试的必要性

渗透测试利用网络安全扫描器、专用安全测试工具和富有经验的安全工程师的人工经验对网络中的核心服务及其重要的网络设备,包括服务器、网络设备、防火墙等进行非破坏性质的模拟黑客攻击,目的是侵入系统并获取机密信息并将入侵的过程和细节产生报告给用户,从而实现网络信息安全的防护。

渗透测试和工具扫描可以很好的互相补充。工具扫描具有很好的效率和速度,但存在一定的误报率和漏报率,并且不能发现高层次的、复杂的、并且相互关联的安全问题;而渗透测试则需要投入大量的人力资源、并且对测试者的专业技能要求很高(渗透测试报告的价值直接依赖于测试者的专业技能水平),但是非常准确,可以发现逻辑性更强、更深层次的弱点,效果更加的明显。

一般的渗透测试流程如下:

时间的选择

为减少渗透测试对网络和主机的负面影响,渗透测试的时间尽量安排在业务量不大的时段或者是晚上。

策略的选择

为了防止渗透测试造成网络和主机的业务中断的问题,在渗透测试的过程中尽量不使用含有拒绝服务的测试策略。

授权渗透测试的监测手段

在评估过程中,由于渗透测试的特殊性,用户可以要求对整体测试流程进行实时的监控(PS:可能会提高渗透测试的成本)。

测试方自控

由渗透测试方对本次测透测试过程中的三方面数据进行完整记录:操作、响应、分析,最终会形成完整有效的渗透测试报告并将其提交给用户。

用户监控

用户监控一共有四种形式:

全程监控:采用类似Ethereal的嗅探软件进行全程抓包嗅探;

择要监控:对其扫描过程不进行录制,仅在安全工程师分析数据后,准备发起渗透前才开启软件进行嗅探;

主机监控:仅监控受测主机的存活状态,用以避免意外情况发生;

指定攻击源:用户指定由特定攻击源地址进行攻击,该源地址的主机由用户进行进程、网络连接、数据传输等多方面的监督控制。

(友情提示:文章中会出现与之前文章些许重复的情况,望各位亲包容,不过重复即是记忆。大家要常驻米安网哦!)

渗透测试应该怎么做呢?

01、信息收集

1、域名、IP、端口

域名信息查询:信息可用于后续渗透

IP信息查询:确认域名对应IP,确认IP是否真实,确认通信是否正常

端口信息查询:NMap扫描,确认开放端口

发现:一共开放两个端口,80为web访问端口,3389为windows远程登陆端口,嘿嘿嘿,试一下

发现:是Windows Server 2003系统,OK,到此为止。

2、指纹识别

其实就是网站的信息。比如通过可以访问的资源,如网站首页,查看源代码:

看看是否存在文件遍历的漏洞(如图片路径,再通过…/遍历文件)

是否使用了存在漏洞的框架(如果没有现成的就自己挖)

02、漏洞扫描

1、主机扫描

Nessus

经典主机漏扫工具,看看有没有CVE漏洞:

2、Web扫描

AWVS(Acunetix | Website Security Scanner)扫描器

PS:扫描器可能会对网站构成伤害,小心谨慎使用。

03、渗透测试

1、弱口令漏洞

漏洞描述

目标网站管理入口(或数据库等组件的外部连接)使用了容易被猜测的简单字符口令、或者是默认系统账号口令。

渗透测试

① 如果不存在验证码,则直接使用相对应的弱口令字典使用burpsuite 进行爆破

② 如果存在验证码,则看验证码是否存在绕过、以及看验证码是否容易识别

风险评级:高风险

安全建议

① 默认口令以及修改口令都应保证复杂度,比如:大小写字母与数字或特殊字符的组合,口令长度不小于8位等

② 定期检查和更换网站管理口令

2、文件下载(目录浏览)漏洞

漏洞描述

一些网站由于业务需求,可能提供文件查看或下载的功能,如果对用户查看或下载的文件不做限制,则恶意用户就能够查看或下载任意的文件,可以是源代码文件、敏感文件等。

渗透测试

① 查找可能存在文件包含的漏洞点,比如js,css等页面代码路径

② 看看有没有文件上传访问的功能

③ 采用…/来测试能否夸目录访问文件

风险评级:高风险

安全建议

① 采用白名单机制限制服务器目录的访问,以及可以访问的文件类型(小心被绕过)

② 过滤【./】等特殊字符

③ 采用文件流的访问返回上传文件(如用户头像),不要通过真实的网站路径。

示例:tomcat,默认关闭路径浏览的功能:

param-namelistings/param-name

param-valuefalse/param-value

3、任意文件上传漏洞

漏洞描述

目标网站允许用户向网站直接上传文件,但未对所上传文件的类型和内容进行严格的过滤。

渗透测试

① 收集网站信息,判断使用的语言(PHP,ASP,JSP)

② 过滤规则绕过方法:文件上传绕过技巧

风险评级:高风险

安全建议

① 对上传文件做有效文件类型判断,采用白名单控制的方法,开放只允许上传的文件型式;

② 文件类型判断,应对上传文件的后缀、文件头、图片类的预览图等做检测来判断文件类型,同时注意重命名(Md5加密)上传文件的文件名避免攻击者利用WEB服务的缺陷构造畸形文件名实现攻击目的;

③ 禁止上传目录有执行权限;

④ 使用随机数改写文件名和文件路径,使得用户不能轻易访问自己上传的文件。

4、命令注入漏洞

漏洞描述

目标网站未对用户输入的字符进行特殊字符过滤或合法性校验,允许用户输入特殊语句,导致各种调用系统命令的web应用,会被攻击者通过命令拼接、绕过黑名单等方式,在服务端运行恶意的系统命令。

渗透测试

风险评级:高风险

安全建议

① 拒绝使用拼接语句的方式进行参数传递;

② 尽量使用白名单的方式(首选方式);

③ 过滤危险方法、特殊字符,如:【|】【】【;】【’】【"】等

5、SQL注入漏洞

漏洞描述

目标网站未对用户输入的字符进行特殊字符过滤或合法性校验,允许用户输入特殊语句查询后台数据库相关信息

渗透测试

① 手动测试:判断是否存在SQL注入,判断是字符型还是数字型,是否需要盲注

② 工具测试:使用sqlmap等工具进行辅助测试

风险评级:高风险

安全建议

① 防范SQL注入攻击的最佳方式就是将查询的逻辑与其数据分隔,如Java的预处理,PHP的PDO

② 拒绝使用拼接SQL的方式

6、跨站脚本漏洞

漏洞描述

当应用程序的网页中包含不受信任的、未经恰当验证或转义的数据时,或者使用可以创建 HTML或JavaScript 的浏览器 API 更新现有的网页时,就会出现 XSS 缺陷。XSS 让攻击者能够在受害者的浏览器中执行脚本,并劫持用户会话、破坏网站或将用户重定向到恶意站点。

三种XSS漏洞:

① 存储型:用户输入的信息被持久化,并能够在页面显示的功能,都可能存在存储型XSS,例如用户留言、个人信息修改等。

② 反射型:URL参数需要在页面显示的功能都可能存在反射型跨站脚本攻击,例如站内搜索、查询功能。

③ DOM型:涉及DOM对象的页面程序,包括:document.URL、document.location、document.referrer、window.location等

渗透测试

存储型,反射型,DOM型

风险评级:高风险

安全建议

① 不信任用户提交的任何内容,对用户输入的内容,在后台都需要进行长度检查,并且对【】【】【"】【’】【】等字符做过滤

② 任何内容返回到页面显示之前都必须加以html编码,即将【】【】【"】【’】【】进行转义。

7、跨站请求伪造漏洞

漏洞描述

CSRF,全称为Cross-Site Request Forgery,跨站请求伪造,是一种网络攻击方式,它可以在用户毫不知情的情况下,以用户的名义伪造请求发送给被攻击站点,从而在未授权的情况下进行权限保护内的操作,如修改密码,转账等。

渗透测试

风险评级:中风险(如果相关业务极其重要,则为高风险)

安全建议

① 使用一次性令牌:用户登录后产生随机token并赋值给页面中的某个Hidden标签,提交表单时候,同时提交这个Hidden标签并验证,验证后重新产生新的token,并赋值给hidden标签;

② 适当场景添加验证码输入:每次的用户提交都需要用户在表单中填写一个图片上的随机字符串;

③ 请求头Referer效验,url请求是否前部匹配Http(s)😕/ServerHost

④ 关键信息输入确认提交信息的用户身份是否合法,比如修改密码一定要提供原密码输入

⑤ 用户自身可以通过在浏览其它站点前登出站点或者在浏览器会话结束后清理浏览器的cookie;

8、内部后台地址暴露

漏洞描述

一些仅被内部访问的地址,对外部暴露了,如:管理员登陆页面;系统监控页面;API接口描述页面等,这些会导致信息泄露,后台登陆等地址还可能被爆破。

渗透测试

① 通过常用的地址进行探测,如login.html,manager.html,api.html等;

② 可以借用burpsuite和常规页面地址字典,进行扫描探测

风险评级:中风险

安全建议

① 禁止外网访问后台地址

② 使用非常规路径(如对md5加密)

9、信息泄露漏洞

漏洞描述

① 备份信息泄露:目标网站未及时删除编辑器或者人员在编辑文件时,产生的临时文件,或者相关备份信息未及时删除导致信息泄露。

② 测试页面信息泄露:测试界面未及时删除,导致测试界面暴露,被他人访问。

③ 源码信息泄露:目标网站文件访问控制设置不当,WEB服务器开启源码下载功能,允许用户访问网站源码。

④ 错误信息泄露:目标网站WEB程序和服务器未屏蔽错误信息回显,页面含有CGI处理错误的代码级别的详细信息,例如SQL语句执行错误原因,PHP的错误行数等。

⑤ 接口信息泄露:目标网站接口访问控制不严,导致网站内部敏感信息泄露。

渗透测试

① 备份信息泄露、测试页面信息泄露、源码信息泄露,测试方法:使用字典,爆破相关目录,看是否存在相关敏感文件

② 错误信息泄露,测试方法:发送畸形的数据报文、非正常的报文进行探测,看是否对错误参数处理妥当。

③ 接口信息泄露漏洞,测试方法:使用爬虫或者扫描器爬取获取接口相关信息,看目标网站对接口权限是否合理

风险评级:一般为中风险,如果源码大量泄漏或大量客户敏感信息泄露。

安全建议

① 备份信息泄露漏洞:删除相关备份信息,做好权限控制

② 测试页面信息泄露漏洞:删除相关测试界面,做好权限控制

③ 源码信息泄露漏洞:做好权限控制

④ 错误信息泄露漏洞:将错误信息对用户透明化,在CGI处理错误后可以返回友好的提示语以及返回码。但是不可以提示用户出错的代码级别的详细原因

⑤ 接口信息泄露漏洞:对接口访问权限严格控制

10、失效的身份认证

漏洞描述

通常,通过错误使用应用程序的身份认证和会话管理功能,攻击者能够破译密码、密钥或会话令牌, 或者利用其它开发缺陷来暂时性或永久性冒充其他用户的身份。

渗透测试

① 在登陆前后观察,前端提交信息中,随机变化的数据,总有与当前已登陆用户进行绑定的会话唯一标识,常见如cookie

② 一般现在网站没有那种简单可破解的标识,但是如果是跨站认证,单点登录场景中,可能为了开发方便而简化了身份认证

风险评级:高风险

安全建议

① 使用强身份识别,不使用简单弱加密方式进行身份识别;

② 服务器端使用安全的会话管理器,在登录后生成高度复杂的新随机会话ID。会话ID不能在URL中,可以安全地存储,在登出、闲置超时后使其失效。

11、失效的访问控制

漏洞描述

未对通过身份验证的用户实施恰当的访问控制。攻击者可以利用这些缺陷访问未经授权的功能或数据,例如:访问其他用户的帐户、查看敏感文件、修改其他用户的数据、更改访问权限等。

渗透测试

① 登入后,通过burpsuite 抓取相关url 链接,获取到url 链接之后,在另一个浏览器打开相关链接,看能够通过另一个未登入的浏览器直接访问该功能点。

② 使用A用户登陆,然后在另一个浏览器使用B用户登陆,使用B访问A独有的功能,看能否访问。

风险评级:高风险

安全建议

① 除公有资源外,默认情况下拒绝访问非本人所有的私有资源;

② 对API和控制器的访问进行速率限制,以最大限度地降低自动化攻击工具的危害;

③ 当用户注销后,服务器上的Cookie,JWT等令牌应失效;

④ 对每一个业务请求,都进行权限校验。

12、安全配置错误

漏洞描述

应用程序缺少适当的安全加固,或者云服务的权限配置错误。

① 应用程序启用或安装了不必要的功能(例如:不必要的端口、服务、网页、帐户或权限)。

② 默认帐户的密码仍然可用且没有更改。

③ 错误处理机制向用户披露堆栈跟踪或其他大量错误信息。

④ 对于更新的系统,禁用或不安全地配置最新的安全功能。

⑤ 应用程序服务器、应用程序框架(如:Struts、Spring、ASP.NET)、库文件、数据库等没有进行相关安全配置。

渗透测试

先对应用指纹等进行信息搜集,然后针对搜集的信息,看相关应用默认配置是否有更改,是否有加固过;端口开放情况,是否开放了多余的端口;

风险评级:中风险

安全建议

搭建最小化平台,该平台不包含任何不必要的功能、组件、文档和示例。移除或不安装不适用的功能和框架。在所有环境中按照标准的加固流程进行正确安全配置。

13、使用含有已知漏洞的组件

漏洞描述

使用了不再支持或者过时的组件。这包括:OS、Web服务器、应用程序服务器、数据库管理系统(DBMS)、应用程序、API和所有的组件、运行环境和库。

渗透测试

① 根据前期信息搜集的信息,查看相关组件的版本,看是否使用了不在支持或者过时的组件。一般来说,信息搜集,可通过http返回头、相关错误信息、应用指纹、端口探测(Nmap)等手段搜集。

② Nmap等工具也可以用于获取操作系统版本信息

③ 通过CVE,CNVD等平台可以获取当前组件版本是否存在漏洞

风险评级:按照存在漏洞的组件的安全风险值判定当前风险。

安全建议

① 移除不使用的依赖、不需要的功能、组件、文件和文档;

② 仅从官方渠道安全的获取组件(尽量保证是最新版本),并使用签名机制来降低组件被篡改或加入恶意漏洞的风险;

③ 监控那些不再维护或者不发布安全补丁的库和组件。如果不能打补丁,可以考虑部署虚拟补丁来监控、检测或保护。

详细学习可参考:

  • 评论列表
  •  
    发布于 2022-07-17 06:57:15  回复
  • 统权限; (4)检查文件接口模块,防止用户获取系统文件; (5)检查其他安全威胁。 无线测试 虽然中国的无线网络还处于建设时期,但是无线网络的部署及其简易,所以在一些大城市里的普及率已经很高了。在北京和上海
  •  
    发布于 2022-07-17 08:27:22  回复
  • r 2003系统,OK,到此为止。2、指纹识别其实就是网站的信息。比如通过可以访问的资源,如网站首页,查看源代码:看看是否存在文件遍历的漏洞(如图片路径,再通过…/遍历文件)是否使用了存在漏洞的框架(如果没有现成的就自己挖)02、漏洞扫描1、主机扫描Nessus经典主

发表评论: