web安全测试概述

article/2025/10/2 6:16:56

一、关于安全

1、安全问题的根源:

1)、分层思想,这个分层包括网络分层和软件分层等,分层可以将大的问题划分为不同的层次,层次与层次之间通过一定的接口标准进行信息交换,从而将一个大问题拆分开来由不同层次的模块去实现扩展。

· 从功能实现的角度看,分层是很方便高效的。

· 从系统安全的角度看,不同层次由不同的人去负责,每个人的眼光具有局限性,无法意识到其他层次的安全问题。

· 系统安全要保证完全的安全,任何一点的漏洞都有可能导致系统崩溃,所以要全面地考虑系统安全。

2)、只追求功能的实现,很多技术人员只追求功能的实现而不从安全的角度设计架构软件。

3)、最大的安全威胁是人,只要有人,就会或多或少出现纰漏,让不法分子有机可乘。

2、安全目标:安全人员在保护系统安全时要实现的目标。

1)、先于×××者发现和防止漏洞出现:

· ×××型安全:用×××的手段(×××测试)探测系统的漏洞,再去修补他。

· 防护型安全:将不必要的端口关闭,将系统的×××面降到最低。但这样周期长,投入多,效果不好,因为总有没有防护到的地方。

2)、在保护系统安全时要充分从×××型安全和防护型安全的角度去考虑。

二、×××测试

1、用×××的手段*系统,尝试绕过或打败安全防御机制,发现系统的弱点。

2、×××测试者应不断证明安全问题的存在,不能去破坏系统。

3、×××测试者就是白帽子,白帽子和黑帽子拥有相同的技能,只是用的地方不一样,一个用于守护,一个用于破坏。

· ×××测试和×××的区别在于是否取得目标公司的授权。

4、×××测试标准:简称PETS(详见:http://www.pentest-standard.org),他将×××测试的流程做了一个划分。

1)、前期交互阶段:和客户进行前期沟通。

· 确定×××测试的范围:将大系统划分为一个个子系统(包括系统内所有的设备系统软件)分别去×××测试。

· 确定测试方式:现场测试,远程测试,是否使用社会工程学的手段配合,是否进行直接的DDoS×××型的测试。

· 确定×××投入:花费多少时间,人力。

2)、情报搜集阶段:对目标系统进行信息搜集。

· 被动信息搜集(不与目标系统进行直接交互):邮箱地址,联系人,公司地址,DNS信息,服务器的IP,网站的域名,近期公司动态等。

· 主动信息搜集(对目标系统进行主动探测):主机发现,端口发现,服务发现等。

· 通过搜索引擎和扫描进行情报收集。

3)、威胁建模阶段:通过前期的情报搜集已经对系统有了大概的认识,然后分析情报选取效率最高(用时最短,威胁最大)的手段进行×××测试。

4)、漏洞分析阶段:根据情报分析漏洞。

· 目标服务器版本是否过低,是否有已经公开的漏洞。

· 对一些组件进行逆向分析,发现0day,编写具有针对性的×××脚本。

5)、××××××阶段:漏洞分析完毕后,对漏洞进行××××××,这时候会遇到各种安全防护机制,要想办法绕过防护机制,进入系统拿到权限。

6)、后×××测试阶段:拿到一台服务器的权限后,要继续利用这台服务器向内网×××,想办法控制更多的服务器造成更大的威胁。

7)、×××测试报告:×××人员将漏洞的发现利用到控制整个服务器的过程记录成报告,并附上漏洞的修补方法,提交给目标公司的领导层。

5、×××测试误区:扫描器就是一切。

· 扫描器只能找到技术型的漏洞,对于业务逻辑漏洞无能为力,业务逻辑漏洞需要×××测试人员根据公司的业务逻辑寻找。

Kali linux概述

一、关于kali linux

1、Kali的缘由:

image.png

2、kali linux介绍:

1)、基于Debian的Linux发行版本。

2)、前身是BackTrack(最后更新版本是5.23,之后停止更新),2013年3月发布。

3)、用于×××测试和安全审计。

4)、包含600+安全工具(将之分类,包含×××测试,逆向工程,电子取证等工具)。

5)、采用FHS标准的目录结构(所有linux系统都采用的目录结构,这也是kali取代BT的重要原因)。

6)、定制内核(定制的无线驱动的内核,方便进行无线×××)。

7)、支持ARM和手机平台(有ARM和手机平台的版本,可以在上面安装kali linux)。

8)、开源免费(由一个×××型安全组织Offensive Security Ltd进行开源维护)。

3、kali linux策略:

1)、root用户策略:其他linux平台一般遵循权限最低原则,平常使用普通用户工作,必要时才登陆root用户。但是kali中的安全工具大部分都需要root权限才能使用,而且kali linux使用者要有能力放心的使用root用户,所以一般使用root用户工作。

2)、网络服务策略:kali中的所有网络服务默认关闭,也无自动启动脚本,重启后需要手动开启。

· 如果想要自启动某服务,可以使用命令设置。

3)、更新升级策略:kali是基于debian的再开发,debian的所有更新都会同步到kali上。同时安全工具的更新也会同步到kali上。

4、关于本课程:

image.png

Kali linux安装

一、硬盘安装

1、下载iso安装镜像文件。

· https://www.kali.org/downloads/

· mini版本是最小化版本的kali安装镜像,里面不包含任何安全工具,需要自己安装。

2、验证hash值:排除下载过程中造成的文件损失导致的故障。

· 计算方法:下载一个计算文件sha256sum的工具,再计算iso文件的sha256sum值,将之与官网上给出的sha256sum值比对,相同则下载无损。

image.png

3、制作启动光盘或启动U盘:

1)、制作启动光盘:需要光盘刻录机和光盘介质。

2)、制作启动U盘:使用unetbootin软件将iso文件抽取拷贝到U盘中(U盘应大于4G)。

4、设置BIOS启动顺序:重启电脑设置BIOS启动顺序,让电脑通过U盘启动。

5、启动安装:设置好BIOS启动顺序后,电脑会进入kali linux的安装界面。

image.png

1)、Live(amd64):电脑启动U盘中的系统,不安装。这种属于体验模式(U盘只读),不能安装软件包,也不能升级更新操作系统。

2)、Live(amd64 failsafe):

3)、Live(forensic mode):启动取证模式,可以进行计算机犯罪或电子取证的操作。

4)、Live USB Persistence:启动持久USB中的Live光盘,对U盘内的操作系统可读可写。

5)、Live USB Encrypted Persistence:启动持久加密USB中的Live光盘,对U盘内的操作系统可读可写且操作加密。

· 4、5相当于拥有了一个移动的kali linux操作系统,不需要安装,即插即用。

6)、Install:命令行安装kali。

7)、Graphical install:图形化安装kali。

二、Docker安装

1、在官网上下载一个docker的image文件,再在上面开启容器运行。

image.png

· 可以远程连上Docker,进入里面的容器。

三、基于virtualbox的虚拟机安装

1、下载virtualbox及其扩展功能包,并在全局设定中导入扩展包。

2、创建虚拟机:

1)、新建虚拟电脑。

image.png

2)、设置内存大小,根据自己内存的情况设置,在此设置4096MB内存。

3)、现在创建虚拟硬盘。

4)、设置虚拟硬盘文件类型为VDI。(如果以后要将虚拟硬盘文件用vm虚拟机启动,虚拟硬盘文件类型选择vmdk)

5)、动态分配空间。

6)、设置虚拟硬盘文件的位置和大小,100GB。

7)、虚拟机创建成功。

3、设置虚拟机:

1)、设置核数。

2)、虚拟机不用启用声音。

3)、启用网卡的网络连接,连接方式为NAT模式。

4)、为虚拟机插入iso镜像文件。

image.png

4、启动虚拟机。

5、图形化界面安装kali linux:

1)、设置语言(汉语 or 英语)。

2)、设置主机名(MyKali)。

3)、设置域名(跳过)。

4)、设置root密码(000000)。

5)、磁盘分区:使用整个磁盘——>将/home、/var、/tmp都分别放在单独的分区——>将改动写入磁盘。

6)、安装系统。

7)、更新软件包。

8)、将GRUB启动引导安装到硬盘的MBR上。

6、安装tools(安装虚拟机增强功能):

1)、需要先安装linux内核的头文件,apt-get install linux-headers-$(uname -r)

2)、将光盘中的VBoxLinuxAdditions.run移到桌面,在桌面打开terminal,赋予这个文件执行权限(chmod +x file),再执行该文件(./file)。

3)、安装成功,重启系统。

7、注意:

1)、如果觉得手动安装系统麻烦,可以下载官网配好的虚拟硬盘文件,用VMware虚拟机的硬盘文件在virtualbox中创建虚拟机:创建虚拟硬盘文件时选择使用已有的虚拟硬盘文件——>选择下载的虚拟硬盘文件中的第一个。这样即可直接进入配置好了的kali linux系统,默认root密码是toor。

2)、apt-get update:下载系统中所有软件包最新版本的索引文件,下载好后再用apt-get upgrade将软件包根据索引文件进行升级。

3)、dmesg:查看系统变化。

四、持久加密USB的方式使用kali

1、Live USB Encrypted Persistence这种模式下启动kali要输入保护密码,U盘相当于是一个移动kali linux系统,可读可写,并且写的内容是加密的。

· 将U盘的其余空间进行磁盘级别的加密,并将系统文件目录都转移到加密空间中,且之后对系统的更改都会写入到加密空间中。

· LUKS(linux unifield key setup):Linux磁盘分区加密规范,以前不同的软件开发者对磁盘加密有各自的算法,彼此不兼容,国际标准组织将磁盘加密技术做了一个规范,实现了Linux中磁盘磁盘加密技术的统一。(windows系统也可使用LUKS进行磁盘加密,但是想要查看加密磁盘需要下载DoxBox)

· LUKS进行Linux的磁盘加密是通过dm-crypt和cryptsetup实现的:dm-crypt是后端组件,用于加密解密磁盘数据。cryptsetup是前端组件,是一个命令行工具,用于发出对磁盘进行加密解密的指令。

· 加密技术有文件级别的加密和磁盘级别的加密:

文件级别的加密只是基于操作系统对文件进行加密,可以将文件从磁盘中读出来或取得系统的管理员权限从而打开文件。

磁盘级别的加密会对磁盘中的数据进行加密,要想查看得要有证书或秘钥,更安全。(windows的磁盘加密软件bitlocker)

2、linux系统下制作启动U盘:

1)、将插入的U盘映射到虚拟机中。

2)、将kali linux中的iso文件用unetbootin抽取拷贝到U盘中。

3)、或者使用块复制将iso文件抽取拷贝到U盘中:先卸载删除U盘中的分区(使用工具GParted),再将iso文件抽取拷贝到U盘(dd if=kali-linux-2018.2-amd64.iso of=/dev/sdb bs=1M)。

· if指定输入文件,of指定输出文件,bs指定一次复制的块的大小。

· dd复制iso文件看不到进度,使用命令:watch -n 5 killall -USR1 dd,每五秒输出一次dd复制的进度。

3、为U盘创建额外分区,使用LUKS加密分区,打开并格式化加密分区并设置卷标,挂载加密分区,添加配置文件persistence.conf。

· 创建额外分区使用工具parted:

· print devices:查看现在系统中插入的设备情况。

· select /dev/sdb:选中设备,对其分区。

· print:查看当前设备分区情况。

· mkpart primary 3063(起始位置) 7063(终止位置):给设备新建了一个约4G的主分区。

· 使用LUKS加密分区:

· cryptsetup –verbose –verify-passphrase luksFormat /dev/sdb3:对设备的第三分区进行磁盘加密。

· 输入磁盘加密的保护密码。

· 格式化加密分区并设置卷标:

· cryptsetup luksOpen /dev/sdb3 usb:打开加密分区,将他挂载到/dev/mapper/usb目录下,要输入保护密码。

· mkfs.ext4 /dev/mapper/usb:对加密分区进行格式化。

· e2label /dev/mapper/usb persistence:为加密分区设置卷标,卷标名为persistence。

· 挂载加密分区:

· mount /dev/mapper/usb /mnt/usb/:将设备挂载到/mnt/usb目录下,linux访问一个设备要将其挂载到一个目录中,访问这个目录就是在访问这个设备。

· 添加配置文件:

· echo “/ union” > /mnt/usb/persistence.conf:这个配置文件将在usb以持久加密模式启动系统时被读取,以确认这个分区就是要存放加密信息的分区。

4、卸载设备,关闭加密分区:umount /dev/mapper/usb & cryptsetup luksClose /dev/mapper/usb。

5、U盘配置成功,以后可以用这个U盘打开持久加密的kali linux系统了。

Kali linux环境

一、kali linux目录结构

1、系统界面设置工具:gnome-tweaks

2、监视网络流量的工具:nethogs

3、目录结构(使用FHS目录结构):文件根据自己的类型放在对应的目录下。

1)、/bin:存放所有用户都可以使用的程序目录。

2)、/boot:存放系统内核及引导程序的目录。

3)、/dev:存放设备文件的目录。

4)、/etc:存放配置文件的目录。

5)、/home:其他用户家目录所在的目录。

6)、/lib:存放库文件的目录。

7)、/lib64:存放64位库文件的目录。

8)、/live-build:build自己kali版本时使用的目录。

9)、/live+found:系统崩溃退出时存放丢失文件的目录。

10)、/media:默认挂载外接存储的目录。

11)、/mnt:以前的默认挂载外接存储的目录。

12)、/opt:存放一些应用程序的目录。

13)、/proc:是系统启动时临时生成的目录,是内存的映射,用于存放系统的运行配置参数。

14)、/root:root用户的家目录。

15)、/sbin:存放管理员才有权限使用的程序目录。

16)、/selinux:linux的安全机制目录。

17)、/tmp:存放临时文件的目录。

18)、/usr:存放用户自己安装的软件目录,里面自成框架。

19)、/var:存放经常变化的文件目录,例如邮件日志等。

二、kali linux常用命令

1、linux是基于命令行的,图形化桌面环境有gnome、KDE等。

· linux的命令行解释器是bash。

2、常用的bash命令:

1)、ls:显示当前目录的所有文件,蓝色表示目录,白色表示文件,绿色表示可执行文件,红色表示压缩包文件。

· 常用参数有-lhra,–sort=size/time。

2)、cd:切换目录。

3)、pwd:查看当前目录路径。

4)、cat:查看文件内容,会将文件内容全部打印。

5)、more:查看文件内容,一次只显示一部分内容,会在左下角显示已显示内容的百分比。

6)、less:查看文件内容,一次只显示一部分内容。

7)、tail:从尾部显示文件内容。

· 常用参数有-n,

· 常和watch配合使用:watch -n 2 tail -20 /var/log/messages(每两秒检查一次日志,有变化则更新)

8)、cp:复制文件。

· 复制目录加-r。

9)、rm:删除文件。

· 删除目录加-r。

10)、top:监视系统性能的命令。

· 可以kill pid来删除指定id的进程。

11)、ps:查看系统进程信息。

· ps -ef:查看系统进程信息,包含开启的命令、pid、ppid等。

· ps aux:查看系统进程信息,包含开启的命令、pid、cpu使用率、内存使用率。

12)、grep:过滤文本内容(按行过滤)。

13)、ifconfig:查看网卡信息。

· 临时修改网卡的mac地址:ifconfig eth0 down(关闭网卡)—>macchanger -m 00:11:11:11:11:11 eth0—>ifconfig eth0 up

14)、netstat:查看系统的网络情况。

· netstat -pantu:查看和系统建立tcp/udp连接的情况。

15)、uniq:将相同的行合并。

16)、mount:查看系统挂载情况。

· mount -o loop kali.iso /media/cdrom:将外部设备或网络文件夹挂载到/media/cdrom目录下。

17)、dmesg:查看系统最新日志,和tail /var/log/messages显示一样。

18)、find:查找文件或目录的位置。

· find / -name “nmap”:从根目录开始查找名为nmap的文件或目录。

· find / -iname “nmap”:从根目录开始查找名为nmap的文件或目录,不区分大小写。

· find / -name “nmap” -exec cp {} /tmp/ \;:从根目录开始查找名为nmap的文件或目录,并将之复制到/tmp/目录下。

19)、whereis:查找软件的位置,范围有限。

· whereis -b nmap:查找二进制格式的nmap的位置。

· 通过apt-get等包管理工具安装软件的路径都会放入本地的一个数据库中,whereis就是通过这个数据库查找软件的位置。

· 如果才安装了软件,需要更新数据库:updatedb,就可以用whereis查到了。

· 如果软件是通过源码安装,软件的路径不会写进数据库中,通过whereis查不到。

20)、echo:打印一行文本。

· -n表示打印文本不换行。

21)、vi:linux中的文本编辑器。

命令模式:dd表示删除一行,o表示在光标位置插入空行(后面的行下移),u表示撤回上一步编辑,y表示复制当前行,p表示将复制的行粘贴到光标所在行(后面的行下移),i表示进入编辑模式,/表示查找指定文本内容,:wq表示保存退出,:q表示不保存退出,:q!表示强制退出,:wq!表示强制保存退出。

三、关于shell脚本

1、一次执行多条命令的符号:

1)、|:将前面命令的输出作为后面命令的输入。

2)、&:依次执行前后的命令。

3)、&&:先执行前面的命令,执行成功了才执行后面的命令。

4)、||:前面的命令执行失败才执行后面的命令。

2、shell脚本编写:

1)、打印输入内容:

!/bin/bash #该脚本使用/bin/bash解释器执行

echo -n “IP: ” #打印文本不换行

read ip #用参数ip接收输入数据

echo “Your ip is: $ip” #打印文本

2)、打印99乘法表:

image.png

3)、检测某一网段能够ping的IP:

image.png

4)、检测文件中的ip地址下面的端口是否开启:
这里写图片描述


http://chatgpt.dhexx.cn/article/XTasQdKS.shtml

相关文章

【安全】Web渗透测试(全流程)

1 信息收集 1.1 域名、IP、端口 域名信息查询:信息可用于后续渗透 IP信息查询:确认域名对应IP,确认IP是否真实,确认通信是否正常 端口信息查询:NMap扫描,确认开放端口 如果不会用Nmap,看这里…

WEB渗透之数据库安全——MySQL

意识薄弱-弱口令爆破 安全机制-特定安全漏洞 0x00 MySQL默认配置root用户禁止外连 就算爆破出正确用户名密码也无法登录,如果爆破出非root用户账号密码,价值也不大 所以如果目标网站部署了phpMyAdmin,找到phpMyAdmin目录(如果使用phpStudy…

web安全渗透测试

通过浏览器访问http://靶机服务器IP/1,对该页面进行渗透测试, 找到flag格式:flag{Xxxx123},括号中的内容作为flag值并提交;(2分)通过浏览器访问http://靶机服务器IP/2,对…

菜鸟浅谈——web安全测试

本文仅为小白了解安全测试提供帮助 一:安全测试注意事项 1)要注意白帽子与黑客之间的区别 2)在挖漏洞挣外快时,注意不要使用安全扫描或暴力破解软件对上线网站进行扫描或攻击。 不要对上线网站造成破坏,不要去获取网…

WEB安全_基础入门_系统及数据库,明确安全测试思路(演示只需要熟悉流程)

目录 前言一、操作系统层面背景知识点1.识别操作系统的常见方法方式一:改变大小写看操作系统的类型方式二:TTL判断方式三:nmap端口判断 2.简要两者区别及识别意义3.操作系统层面漏洞类型对应意义SQL注入漏洞跨站脚本漏洞弱口令漏洞HTTP报头追…

web平台安全测试方案

平台安全测试方案 1、 测试目的 能尽可能发现当前系统存在的安全隐患,在漏洞报告提供出有价值的建议通过报告修复漏洞后,能减少系统出现严重的安全事故 2、测试对象 Web应用程序服务器操作系统 3、测试工具及环境 AppScan(Windows10&am…

什么是web安全测试

1.1什么是web安全测试? Web安全测试就是要提供证据表明,在面对敌意和恶意输入的时候,web系统应用仍然能够充分地满足它的需求 1.2为什么进行Web安全测试 2005年06月,CardSystems,黑客恶意侵入了它的电脑系统&#x…

web安全测试内容

一. 首先你得了解Web Web分为好几层,一图胜千言: 事实是这样的: 如果你不了解这些研究对象是不可能搞好安全研究的。 这样看来,Web有八层(如果把浏览器也算进去,就九层啦,九阳神功……&#xff…

解决报错RuntimeError: set_sizes_and_strides is not allowed on a Tensor created from .data or .detach().

完整报错信息如下 RuntimeError: set_sizes_and_strides is not allowed on a Tensor created from .data or .detach(). If your intent is to change the metadata of a Tensor (such as sizes / strides / storage / storage_offset) without autograd tracking the change…

基于keras的卷积神经网络(CNN)

1 前言 本文以MNIST手写数字分类为例,讲解使用一维卷积和二维卷积实现 CNN 模型。关于 MNIST 数据集的说明,见使用TensorFlow实现MNIST数据集分类。实验中主要用到 Conv1D 层、Conv2D 层、MaxPooling1D 层和 MaxPooling2D 层,其参数说明如下…

Grad strides do not match bucket view strides.This may indicate grad was not created according to th

家人们来看看是不是报这个 warning: [W reducer.cpp:283] Warning: Grad strides do not match bucket view strides. This may indicate grad was not created according to the gradient layout contract, or that the params strides changed since DDP was constructed.…

Python多维数组跨度strides(学习笔记)

Python多维数组跨度 今天就来搞明白有关于多维数组的跨度 strides的知识 先构建一个四位数组: arrnp.arange(1,25.0).reshape(2,2,2,3) print(轴(维度):,arr.ndim) arr分析:arange(1,25.0)是1~24共24个数字,注意到25.0是float类型 再来看看…

RuntimeError: sparse tensors do not have strides

这是一个可以复现的问题。 归根结底在于 torch不支持Sparse与Sparse的矩阵乘法(mm)。 也不支持Dense 与 Sparse的矩阵乘法。 只支持Sparse与Dense的矩阵乘法。 torch.mm是消边的矩阵乘法,mm matrix multiply。 而torch.mul是同形矩阵的element-wise点乘。 所谓s…

Warning: Grad strides do not match bucket view strides pytorch利用DDP报错

遇到报错: [W reducer.cpp:362] Warning: Grad strides do not match bucket view strides. This may indicate grad was not created according to the gradient layout contract, or that the param’s strides changed since DDP was constructed. This is not a…

Python ndarray.strides用法

用法 ndarray.strides: 跨越数组各个维度所需要经过的字节数元组 a np.array([[10,2,4],[3, 4,11]],dtypenp.int32) print(a.strides) #(12,4) 12表示在内存中a[n, 0]到a[n1, 0]跨过多少byte; 4表示在内存中a[n, 0]到a[n, 1]跨过多少byte# 查看数组a所有元素占用内存大小&…

神经网络:CNN中的filter,kernel_size,strides,padding对输出形状的影响

输入数据在经过卷积层后,形状一般会发生改变,而形状的变化往往与以下四个超参数有关。 1,filter(out_channel) 该超参数控制着输入数据经过卷积层中需要与几个卷积核进行运算,而输入数据与每个卷积核进行…

tf.keras.layers.Conv2D用法总结

概述 tf.keras.layers.Conv2D()函数用于描述卷积层。 用法 tf.keras.layers.Conv2D(filters, kernel_size,strides(1, 1), paddingvalid, data_formatNone,dilation_rate(1, 1), activationNone )1.filter:卷积核的个数 2.kenel_size:卷积核尺寸&…

CNN中stride(步幅)和padding(填充)的详细理解

步幅:卷积核经过输入特征图的采样间隔 填充:在输入特征图的每一边添加一定数目的行列,使得输出的特征图的长、宽 输入的特征图的长、宽 两个参数的核心: 设置步幅的目的:希望减小输入参数的数目,减少计…

java输出(java输出语句快捷键)

java最简单的输入输出 java输出语句怎么写 去百度文库,查看完整内容> 内容来自用户:白岸海歌 System.out.print ——标准输出流 Java的流类,主要是:输入流类InputStream输出流类OutputStream Java系统预先定义好3个流对象,静态…

Java程序入口+输出语句+数据类型

一(Java程序入口):要想执行一个java程序,就必须有一个程序入口,且该入口为固定格式:public static void main(String[ ] args){}。注意:是main而不是mian,Str…