当前位置:   article > 正文

Web安全——渗透测试基础知识下_web安全入门篇-渗透测试

web安全入门篇-渗透测试

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
  • 1

3.2 设置中文

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

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

3.3 安装python3的pip

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

mkdir -p ~/.pip
vim ~/.pip/pip.conf
  • 1
  • 2

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

[global]
index-url = http://pypi.douban.com/simple
[install]
trusted-host=pypi.douban.com
  • 1
  • 2
  • 3
  • 4

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

国内其他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
  • 1
  • 2

#阿里云

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
  • 1
  • 2

#清华大学

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
  • 1
  • 2

#浙大

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
  • 1
  • 2

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、页面编码

在网页设置网页编码 在<head></head>中加入设置特定html标签
<meta charset="utf-8" /> 这样页面的编码就会变成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)。
  • 1
  • 2
  • 3

字符实体类似这样:

&entity_name;
或者
&#entity_number;
  • 1
  • 2
  • 3

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

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

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

显示结果描述实体名称实体编号
空格&nbsp;&#160;
<小于号&lt;&#60;
>大于号&gt;&#62;
&和号&amp;&#38;
"引号&quot;&#34;
撇号&apos; (IE不支持)&#39;
分(cent)&cent;&#162;
£镑(pound)&pound;&#163;
¥元(yen)&yen;&#165;
欧元(euro)&euro;&#8364;
§小节&sect;&#167;
©版权(copyright)&copy;&#169;
®注册商标&reg;&#174;
商标&trade;&#8482;
×乘号&times;&#215;
÷除号&divide;&#247;

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

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

<img src=&#x68;&#x74;&#x74;&#x70;&#x73;&#x3a;&#x2f;&#x2f;&#x77;&#x77;&#x77;&#x2e;&#x62;&#x61;&#x69;&#x64;&#x75;&#x2e;&#x63;&#x6f;&#x6d;&#x2f;&#x69;&#x6d;&#x67;&#x2f;&#x62;&#x64;&#x5f;&#x6c;&#x6f;&#x67;&#x6f;&#x31;&#x2e;&#x70;&#x6e;&#x67;>
  • 1

十进制

<img src=&#104;&#116;&#116;&#112;&#115;&#58;&#47;&#47;&#119;&#119;&#119;&#46;&#98;&#97;&#105;&#100;&#117;&#46;&#99;&#111;&#109;&#47;&#105;&#109;&#103;&#47;&#98;&#100;&#95;&#108;&#111;&#103;&#111;&#49;&#46;&#112;&#110;&#103;>
  • 1

xss
<img src="x" onerror="&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;" />

4、URL编码

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

5、js编码

<script>alert("Hello world!");</script>
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>
  • 1
  • 2
  • 3

\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协议下快速传输数据。
<iframe src='data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg=='>

8、json编码0

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成。它基于ECMA262语言规范(1999-12第三版)中JavaScript编程语言的一个子集。JSON采用与编程语言无关的文本格式,但是也使用了类C语言(包括C, C++, C#, Java, JavaScript, Perl, Python等)的习惯,这些特性使JSON成为理想的数据交换格式。

[
    {
        "Name": "a1",
        "Number": "123",
        "Contno": "000",
        "QQNo": ""
    },
    {
        "Name": "a1",
        "Number": "123",
        "Contno": "000",
        "QQNo": ""
    },
    {
        "Name": "a1",
        "Number": "123",
        "Contno": "000",
        "QQNo": ""
    }
]
<?php
$data='[{"Name":"a1","Number":"123","Contno":"000","QQNo":""},{"Name":"a1","Number":"123","Contno":"000","QQNo":""},{"Name":"a1","Number":"123","Contno":"000","QQNo":""}]'; 
$json=json_decode($data); 
print_r($json);
?>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

9、序列化

序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。
百度百科详细
https://baike.baidu.com/item/%E5%BA%8F%E5%88%97%E5%8C%96/2890184?fr=aladdin

a:3:{i:0;s:3:"Moe";i:1;s:5:"Larry";i:2;s:5:"Curly";}
<?php 
$stooges = array('Moe','Larry','Curly');
$new = serialize($stooges);
print_r($new);
echo "<br />";
print_r(unserialize($new));
?>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

10、utf7编码

UTF-7 (7-位元Unicode 转换格式(Unicode Transformation Format,简写成 UTF))是一种可变长度字符编码方式用以将 Unicode 字符以 ASCII 编码的字符串来呈现,可以应用在电子邮件传输之类的应用。
https://web2hack.org/xssee/

五、搭建博客系统

1、注册域名

注册域名可以到国外注册或者在国内阿里云 腾讯云 或者是其他IDC注册域名。
域名的作用是:让域名能够访问到那个ip 服务器中间件根据这个域名查找对应的目录,返回网站给浏览器。

2、域名的访问

域名访问国内的服务器域名需要备案。不备案都不允许访问国内的服务器。
域名能够指向香港、台湾以及国外的服务器。所以一般购买国外的服务器。

3、服务器

根据需要挑选适合的服务器,一般博客系统并不需要性能很好的服务器。
服务器分为独立服务器vps,独立服务器可以虚拟化很多的vpsVPS在各大IDC都有的卖淘宝也有。

4、环境安装

选择好适合的博客系统,再安装博客系统支持的环境,这里我就以phpstudy这样套件演示,一键傻瓜式安装即可。
Wordpress
https://cn.wordpress.org/latest-zh_CN.zip

5、域名的指向

a记录指向

六、端口协议

1、端口的作用

一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等,这些服务完全可以通过1IP地址来实现。 那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP 地址与网络服务的关系是一对多的关系。实际上是通过“IP地址+端口号”来区分不同的服务的。
web 80
ftp 21
http//:ip80
ftp
本地 通信端口 访问 服务器 80 通信是这样的

2、端口的类型

TCP端口和UDP端口。由于TCPUDP两个协议是独立的,因此各自的端口号也相互独立,比如TCP235端口,UDP也可以有235端口,两者并不冲突。

  • (1)TCP端口
    TCP端口,即传输控制协议端口,需要在客户端和服务器之间建立连接,这样可以提供可靠的数据传输。常见的包括FTP服务的21端口,Telnet服务的23端口,SMTP服务的25端口,以及HTTP服务的80端口等等。
  • (2)UDP端口
    UDP端口,即用户数据包协议端口,无需在客户端和服务器之间建立连接,安全性得不到保障。常见的有DNS服务的53端口,SNMP(简单网络管理协议)服务的161端口,QQ使用的8000400

3、常见的端口

范围0-65535

  • a.服务端使用的端口号
    • 预留端口号
      取值范围0-1023,这些端口我们编程的时候不能使用,是那些vip应用程序使用的,只有超级用户特权的应用才允许被分配一个预留端口号
    • 登记端口号
      取值范围1024-49151,就是我们平时编写服务器使用的端口号范围
  • b.客户端使用的端口号
    取值范围49152-65535这部分是客户端进程运行时动态选择的范围,又叫临时端口号

4、TCP协议三次握手

在这里插入图片描述
三次握手(Three-way Handshake),是指建立一个 TCP 连接时,需要客户端和服务器总共发送3个包。

  • 第一次握手([SYN], Seq = x)
    客户端发送一个SYN标记的包,Seq初始序列号x,发送完成后客户端进入SYN_SEND状态。

  • 第二次握手([SYN,ACK], Seq = y, ACK = x + 1)
    服务器返回确认包(ACK)应答,同时还要发送一个SYN包回去。ACK = x + 1,表示确认收到(客户端发来的Seq值 + 1),Seq = y, 表示让客户端确认是否能收到。发送完成后服务端进入SYN_RCVD状态。

  • 第三次握手([ACK], ACK = y + 1)
    客户端再次发送确认包(ACK),ACK = y + 1, 表示确认收到服务器的包(服务端发来的Seq值 + 1)。客户端发送完毕后,进入ESTABLISHED状态,服务端接收到这个包,也进入ESTABLISHED状态, TCP握手结束。

5、查看端口

netstat –ano

6、如何查看端口被占用?

netstat -ano|findstr "80"
显示协议统计和当前 TCP/IP 网络连接。
NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-p proto] [-r] [-s] [-t] [interval]

参数功能
-a显示所有连接和侦听端口。
-b显示在创建每个连接或侦听端口时涉及的可执行程序。在某些情况下,已知可执行程序承载多个独立的组件,这些情况下,显示创建连接或侦听端口时涉及的组件序列。此情况下,可执行程序的名称位于底部[]中,它调用的组件位于顶部,直至达到 TCP/IP。注意,此选项可能很耗时,并且在您没有足够权限时可能失败。
-e显示以太网统计。此选项可以与 -s 选项结合使用。
-f显示外部地址的完全限定域名(FQDN)。
-n以数字形式显示地址和端口号。
-o显示拥有的与每个连接关联的进程 ID。
-p proto显示 proto 指定的协议的连接;proto 可以是下列任何一个: TCP、UDP、TCPv6 或 UDPv6。如果与 -s 选项一起用来显示每个协议的统计,proto 可以是下列任何一个: IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP或 UDPv6。
-r显示路由表。
-s显示每个协议的统计。默认情况下,显示IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的统计;-p 选项可用于指定默认的子网。
-t显示当前连接卸载状态。
interval重新显示选定的统计,各个显示间暂停的间隔秒数。按 CTRL+C 停止重新显示统计。如果省略,则 netstat将打印当前的配置信息一次。

7、TCP状态转移要点

TCP协议规定,对于已经建立的连接,网络双方要进行四次握手才能成功断开连接,如果缺少了其中某个步骤,将会使连接处于假死状态,连接本身占用的资源不会被释放。网络服务器程序要同时管理大量连接,所以很有必要保证无用连接完全断开,否则大量僵死的连接会浪费许多服务器资源。在众多TCP状态中,最值得注意的状态有两个:CLOSE_WAIT和TIME_WAIT

  • 1、LISTENING状态
      FTP服务启动后首先处于侦听(LISTENING)状态。
  • 2、ESTABLISHED状态
      ESTABLISHED的意思是建立连接。表示两台机器正在通信。
  • 3、CLOSE_WAIT
    对方主动关闭连接或者网络异常导致连接中断,这时我方的状态会变成CLOSE_WAIT 此时我方要调用close()来使得连接正确关闭
  • 4、TIME_WAIT
    我方主动调用close()断开连接,收到对方确认后状态变为TIME_WAITTCP协议规定TIME_WAIT状态会一直持续2MSL(即两倍的分段最大生存期),以此来确保旧的连接状态不会对新连接产生影响。处于TIME_WAIT状态的连接占用的资源不会被内核释放,所以作为服务器,在可能的情况下,尽量不要主动断开连接,以减少TIME_WAIT状态造成的资源浪费。

8、常见的端口

在渗透中端口扫描的收集主机那些服务很重要,这里收集到一些常见的的服务端口
1,web类(web漏洞/敏感目录)
第三方通用组件漏洞struts thinkphp jboss ganglia zabbix

端口号名称
80web
80-89web
8000-9090web

2,数据库类(扫描弱口令)

端口号名称
1433MSSQL
1521Oracle
3306MySQL
5432PostgreSQL

3,特殊服务类(未授权/命令执行类/漏洞)

端口号名称
443SSL心脏滴血
873Rsync未授权
5984CouchDB http://xxx:5984/_utils/
6379redis未授权
7001,7002WebLogic默认弱口令,反序列
9200,9300elasticsearch 参考WooYun: 多玩某服务器ElasticSearch命令执行漏洞
11211memcache未授权访问
27017,27018Mongodb未授权访问
50000SAP命令执行
50070,50030hadoop默认端口未授权访问

4,常用端口类(扫描弱口令/端口爆破)

端口号名称
21ftp
22SSH
23Telnet
2601,2604zebra路由,默认密码zebra
3389远程桌面

端口合计详情

端口号名称
21ftp
22SSH
23Telnet
80web
80-89web
161SNMP
389LDAP
443SSL心脏滴血以及一些web漏洞测试
445SMB
512,513,514Rexec
873Rsync未授权
1025,111NFS
1433MSSQL
1521Oracle:(iSqlPlus Port:5560,7778)
2082/2083cpanel主机管理系统登陆 (国外用较多)
2222DA虚拟主机管理系统登陆 (国外用较多)
2601,2604zebra路由,默认密码zebra
3128squid代理默认端口,如果没设置口令很可能就直接漫游内网了
3306MySQL
3312/3311kangle主机管理系统登陆
3389远程桌面
4440rundeck 参考WooYun: 借用新浪某服务成功漫游新浪内网
5432PostgreSQL
5900vnc
5984CouchDB http://xxx:5984/_utils/
6082varnish 参考WooYun: Varnish HTTP accelerator CLI未授权访问易导致网站被直接篡改或者作为代理进入内网
6379redis未授权
7001,7002WebLogic默认弱口令,反序列
7778Kloxo主机控制面板登录
8000-9090都是一些常见的web端口,有些运维喜欢把管理后台开在这些非80的端口上
8080tomcat/WDCP主机管理系统,默认弱口令
8080,8089,9090JBOSS
8083Vestacp主机管理系统 (国外用较多)
8649ganglia
8888amh/LuManager 主机管理系统默认端口
9200,9300elasticsearch 参考WooYun: 多玩某服务器ElasticSearch命令执行漏洞
10000Virtualmin/Webmin 服务器虚拟主机管理系统
11211memcache未授权访问
27017,27018Mongodb未授权访问
28017mongodb统计页面
50000SAP命令执行
50070,50030hadoop默认端口未授权访问

七、渗透测试中常见windows命令

命令功能
ifconfig /all获取获取域名、IP地址、DHCP服务器、网关、MAC地址、主机名
net time /domain查看域名、时间
net view /domain查看域内所有共享
net view ip查看对方局域网内开启了哪些共享
net config workstation查看域名、机器名等
net user 用户名 密码 /add建立用户
net user 用户名 /del删除用户
net user guest /active:yes激活guest账户
net user查看账户
net user账户名 查看指定账户信息
net user /domain查看域内有哪些用户,Windows NT Workstation 计算机上可用,由此可以此判断用户是否是域成员。
net user 用户名 /domain查看账户信息
net group /domain查看域中的组
net group “domain admins” /domain查看当前域的管理用户
query user查看当前在线的用户
net localgroup查看所有的本地组
net localgroup administrators查看administrators组中有哪些用户
net localgroup administrators 用户名 /add把用户添加到管理员组中
net start查看开启服务
net start 服务名开启某服务
net stop 服务名停止某服务
net share查看本地开启的共享
net share ipc$开启ipc$共享
net share ipc$ /del删除ipc$共享
net share c$ /del删除C:共享
\192.168.0.108\c访问默认共享c盘
dsquery server查看所有域控制器
dsquery subnet查看域内内子网
dsquery group查看域内工作组
dsquery site查看域内站点
netstat -a查看开启了哪些端口,常用netstat -an
netstat -n查看端口的网络连接情况,常用netstat -an
netstat -v查看正在进行的工作
netstat -p 协议名例:netstat -p tcq/ip 查看某协议使用情况(查看tcp/ip协议使用情况)
netstat -s查看正在使用的所有协议使用情况
nbtstat -A ip对方136到139其中一个端口开了的话,就可查看对方最近登陆的用户名(03前的为用户名)-注意:参数-A要大写
reg save hklm\sam sam.hive导出用户组信息、权限配置
reg save hklm\system system.hive导出SYSKEY
net use \目标IP\ipc$ 密码 /u:用户名连接目标机器
at \目标IP 21:31 c:\server.exe在某个时间启动某个应用
wmic /node:“目标IP” /password:“123456” /user:“admin”连接目标机器
psexec.exe \目标IP -u username -p password -s cmd在目标机器上执行cmd
finger username @host查看最近有哪些用户登陆
route print显示出IP路由,将主要显示网络地址Network addres,子网掩码Netmask,网关地址Gateway addres,接口地址Interface
arp查看和处理ARP缓存,ARP是名字解析的意思,负责把一个IP解析成一个物理性的MAC地址。
arp -a将显示出全部信息
nslookupIP地址侦测器
tasklist查看当前进程
taskkill /pid PID数终止指定PID进程
whoami查看当前用户及权限
systeminfo查看计算机信息(版本,位数,补丁情况)
ver查看计算机操作系统版本
tasklist /svc查看当前计算机进程情况
netstat -ano查看当前计算机进程情况
wmic product > ins.txt查看安装软件以及版本路径等信息,重定向到ins.txt
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号