渗透测试基础
- 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
上同时运行Ubuntu
与Win7
,用户可用于各种开发、测试或运行不同平台的软件。
VMware Workstation Pro 17
中文专业版功能相对免费的 VMWare Player
要丰富强大得多!新版本支持 Windows 10
,支持 USB 3.1
、蓝牙、4K
,支持容器、兼容 Hyper-V
,支持 DirectX 11
和 OpenGL 4.1
加速,3D
游戏性能大幅提高!另外还可共享或远程控制虚拟机等……
2、网络模式
我们知道VMware
也分几种版本,普通用户最常用的就是Workstation
,但是不管使用哪种版本,我们都能发现在安装过程中让我们选择网络模式。在默认情况下会选中桥接模式,但有用户会问其他模式是干什么用的?
VMware 3
种网络模式的功能和通信规则。
我们首先说一下VMware
的几个虚拟设备
VMnet0
:用于虚拟桥接网络下的虚拟交换机
VMnet1
:用于虚拟Host-Only
网络下的虚拟交换机
VMnet8
:用于虚拟NAT
网络下的虚拟交换机
VMware Network Adepter VMnet1
:Host
用于与Host-Only
虚拟网络进行通信的虚拟网卡
VMware Network Adepter VMnet8
:Host
用于与NAT
虚拟网络进行通信的虚拟网卡
安装了VMware
虚拟机后,会在网络连接对话框中多出两个虚拟网卡。
2.1 桥接网络(Bridged Networking)
桥接网络是指本地物理网卡和虚拟网卡通过VMnet0
虚拟交换机进行桥接,物理网卡和虚拟网卡在拓扑图上处于同等地位(虚拟网卡既不是Adepter VMnet1
也不是Adepter VMnet8
)。
那么物理网卡和虚拟网卡就相当于处于同一个网段,虚拟交换机就相当于一台现实网络中的交换机。所以两个网卡的IP地址也要设置为同一网段。
虚拟网卡IP地址
我们看到,物理网卡和虚拟网卡的IP地址处于同一个网段,子网掩码、网关、DNS
等参数都相同。两个网卡在拓扑结构中是相对独立的。
我们在192.168.15.111
上ping192.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
,而不能使用XP
或2000
的ICS
,因为ICS
会把内网的IP地址改为192.168.0.1
,但虚拟机是不会给VMnet1
虚拟网卡分配这个地址的,那么主机和虚拟机之间就不能通信了。
综述
在VMware
的3
中网络模式中,NAT
模式是最简单的,基本不需要手动配置IP
地址等相关参数。至于桥接模式则需要额外的IP
地址,如果是在内网环境中还很容易,如果是ADSL
宽带就比较麻烦了,ISP
一般是不会大方的多提供一个公网IP的。
3、通俗理解
模式 | 解释 |
---|---|
桥接模式 | 同一网段内访问能访问互联网 |
NAT 模式 | 不在一个网段内 能上网 也能访问内网其他机器,但是其他机子访问不了。 |
Host 模式 | 物理机能访问。不能不上网 不能访问局域网其他机子。 |
二、Kali的2021安装与配置
1、简单介绍
Kali Linux
是基于Debian
的Linux
发行版, 设计用于数字取证操作系统。每一季度更新一次。由Offensive Security Ltd
维护和资助。最先由Offensive Security
的Mati Aharoni
和Devon Kearns
通过重写BackTrack
来完成,BackTrack
是他们之前写的用于取证的Linux
发行版 。
Kali Linux
预装了许多渗透测试软件,包括nmap 、Wireshark 、John the Ripper
,以及Aircrack-ng.[2]
用户可通过硬盘、live CD
或live USB
运行Kali Linux
。Kali 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
超时下载
python3
的pip3
默认源太慢,所以我们为了提升使用效果,通常选择国内源。
其实方法很简单,脚本如下:
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、页面编码
在网页设置网页编码 在<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-127
共128
个字符
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
<img src="x" onerror="alert(1)" />
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>
\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
例如 a
的hex
码是61
如果在数据库使用要加上0x61
7、base64编码
BASE64
编码是一种常用的字符编码,在很多地方都会用到。但base64
不是安全领域下的加密解密算法。能起到安全作用的效果很差,而且很容易破解,他核心作用应该是传输数据的正确性,有些网关或系统只能使用ASCII
字符。Base64
就是用来将非ASCII
字符的数据转换成ASCII
字符的一种方法,而且base64
特别适合在http
,mime
协议下快速传输数据。
<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);
?>
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));
?>
10、utf7编码
UTF-7
(7
-位元Unicode
转换格式(Unicode Transformation Format
,简写成 UTF
))是一种可变长度字符编码方式, 用以将 Unicode
字符以 ASCII
编码的字符串来呈现,可以应用在电子邮件传输之类的应用。
https://web2hack.org/xssee/
五、搭建博客系统
1、注册域名
注册域名可以到国外注册或者在国内阿里云 腾讯云 或者是其他IDC注册域名。
域名的作用是:让域名能够访问到那个ip 服务器中间件根据这个域名查找对应的目录,返回网站给浏览器。
2、域名的访问
域名访问国内的服务器域名需要备案。不备案都不允许访问国内的服务器。
域名能够指向香港、台湾以及国外的服务器。所以一般购买国外的服务器。
3、服务器
根据需要挑选适合的服务器,一般博客系统并不需要性能很好的服务器。
服务器分为独立服务器和vps
,独立服务器可以虚拟化很多的vps
。VPS
在各大IDC
都有的卖淘宝也有。
4、环境安装
选择好适合的博客系统,再安装博客系统支持的环境,这里我就以phpstudy
这样套件演示,一键傻瓜式安装即可。
Wordpress
https://cn.wordpress.org/latest-zh_CN.zip
5、域名的指向
a
记录指向
六、端口协议
1、端口的作用
一台拥有IP
地址的主机可以提供许多服务,比如Web
服务、FTP
服务、SMTP
服务等,这些服务完全可以通过1
个IP
地址来实现。 那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP
地址,因为IP
地址与网络服务的关系是一对多的关系。实际上是通过“IP
地址+端口号”来区分不同的服务的。
web
80
ftp
21
http//:ip80
ftp
本地 通信端口 访问 服务器 80
通信是这样的
2、端口的类型
TCP
端口和UDP
端口。由于TCP
和UDP
两个协议是独立的,因此各自的端口号也相互独立,比如TCP
有235
端口,UDP
也可以有235
端口,两者并不冲突。
- (1)
TCP
端口
TCP
端口,即传输控制协议端口,需要在客户端和服务器之间建立连接,这样可以提供可靠的数据传输。常见的包括FTP
服务的21
端口,Telnet
服务的23
端口,SMTP
服务的25
端口,以及HTTP
服务的80
端口等等。 - (2)
UDP
端口
UDP
端口,即用户数据包协议端口,无需在客户端和服务器之间建立连接,安全性得不到保障。常见的有DNS
服务的53
端口,SNMP
(简单网络管理协议)服务的161
端口,QQ
使用的8000
和400
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_WAIT
。TCP
协议规定TIME_WAIT
状态会一直持续2MSL
(即两倍的分段最大生存期),以此来确保旧的连接状态不会对新连接产生影响。处于TIME_WAIT
状态的连接占用的资源不会被内核释放,所以作为服务器,在可能的情况下,尽量不要主动断开连接,以减少TIME_WAIT
状态造成的资源浪费。
8、常见的端口
在渗透中端口扫描的收集主机那些服务很重要,这里收集到一些常见的的服务端口
1,web
类(web
漏洞/敏感目录)
第三方通用组件漏洞struts thinkphp jboss ganglia zabbix
端口号 | 名称 |
---|---|
80 | web |
80-89 | web |
8000-9090 | web |
2,数据库类(扫描弱口令)
端口号 | 名称 |
---|---|
1433 | MSSQL |
1521 | Oracle |
3306 | MySQL |
5432 | PostgreSQL |
3,特殊服务类(未授权/命令执行类/漏洞)
端口号 | 名称 |
---|---|
443 | SSL心脏滴血 |
873 | Rsync未授权 |
5984 | CouchDB http://xxx:5984/_utils/ |
6379 | redis未授权 |
7001,7002 | WebLogic默认弱口令,反序列 |
9200,9300 | elasticsearch 参考WooYun: 多玩某服务器ElasticSearch命令执行漏洞 |
11211 | memcache未授权访问 |
27017,27018 | Mongodb未授权访问 |
50000 | SAP命令执行 |
50070,50030 | hadoop默认端口未授权访问 |
4,常用端口类(扫描弱口令/端口爆破)
端口号 | 名称 |
---|---|
21 | ftp |
22 | SSH |
23 | Telnet |
2601,2604 | zebra路由,默认密码zebra |
3389 | 远程桌面 |
端口合计详情
端口号 | 名称 |
---|---|
21 | ftp |
22 | SSH |
23 | Telnet |
80 | web |
80-89 | web |
161 | SNMP |
389 | LDAP |
443 | SSL心脏滴血以及一些web漏洞测试 |
445 | SMB |
512,513,514 | Rexec |
873 | Rsync未授权 |
1025,111 | NFS |
1433 | MSSQL |
1521 | Oracle:(iSqlPlus Port:5560,7778) |
2082/2083 | cpanel主机管理系统登陆 (国外用较多) |
2222 | DA虚拟主机管理系统登陆 (国外用较多) |
2601,2604 | zebra路由,默认密码zebra |
3128 | squid代理默认端口,如果没设置口令很可能就直接漫游内网了 |
3306 | MySQL |
3312/3311 | kangle主机管理系统登陆 |
3389 | 远程桌面 |
4440 | rundeck 参考WooYun: 借用新浪某服务成功漫游新浪内网 |
5432 | PostgreSQL |
5900 | vnc |
5984 | CouchDB http://xxx:5984/_utils/ |
6082 | varnish 参考WooYun: Varnish HTTP accelerator CLI未授权访问易导致网站被直接篡改或者作为代理进入内网 |
6379 | redis未授权 |
7001,7002 | WebLogic默认弱口令,反序列 |
7778 | Kloxo主机控制面板登录 |
8000-9090 | 都是一些常见的web端口,有些运维喜欢把管理后台开在这些非80的端口上 |
8080 | tomcat/WDCP主机管理系统,默认弱口令 |
8080,8089,9090 | JBOSS |
8083 | Vestacp主机管理系统 (国外用较多) |
8649 | ganglia |
8888 | amh/LuManager 主机管理系统默认端口 |
9200,9300 | elasticsearch 参考WooYun: 多玩某服务器ElasticSearch命令执行漏洞 |
10000 | Virtualmin/Webmin 服务器虚拟主机管理系统 |
11211 | memcache未授权访问 |
27017,27018 | Mongodb未授权访问 |
28017 | mongodb统计页面 |
50000 | SAP命令执行 |
50070,50030 | hadoop默认端口未授权访问 |
七、渗透测试中常见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 | 将显示出全部信息 |
nslookup | IP地址侦测器 |
tasklist | 查看当前进程 |
taskkill /pid PID数 | 终止指定PID进程 |
whoami | 查看当前用户及权限 |
systeminfo | 查看计算机信息(版本,位数,补丁情况) |
ver | 查看计算机操作系统版本 |
tasklist /svc | 查看当前计算机进程情况 |
netstat -ano | 查看当前计算机进程情况 |
wmic product > ins.txt | 查看安装软件以及版本路径等信息,重定向到ins.txt |