Day 20 资料库评估 - Database Assessment (sqlmap, SQLite database browser)

前言

今天又进入到了新的一个分类,这个分类里面只有两个工具: SQLite database browser以及sqlmap,但用途大不相同,前者是个图形化工具,主要是用来浏览、编辑SQLite资料库档案,而sqlmap则是一个威名远播的sql injection侦测工具,今天就来体验看看这两套工具。

工具介绍 - SQLite database browser

SQLite是一个简易型的资料库程序,特点是轻量,能将整个资料库,包括定义、表、索引以及资料本身,用一个单独的、可跨平台使用的档案储存在主机中,因此不像其他常听见、用於服务器端的资料库系统如mysql,SQLite反而较常使用在应用程序里,就像Day 19介绍的wapiti,它扫描过程中产出的.db档就是以SQLite的储存形式存在在我们的机器上。接下来我们试着用今天想体验的SQLite database browser来浏览看看wapiti产出的资料纪录吧。

首先先把想观察的.db档放到一个非隐藏的资料夹,这边我将档案先复制到/tmp

#由於 .wapiti是隐藏资料夹,用SQLite database browser开档可能会搜寻不到
cp /home/kali/.wapiti/scans/192.168.1.86_folder_949e587e.db /tmp/

接着到选单找分类04-Database Assessment里的SQLite database browser并执行,可以打开图形化介面,接着选择Open Database
https://ithelp.ithome.com.tw/upload/images/20211005/20140317fZRDaJ7Ac7.png

/tmp将刚复制的.db档开启
https://ithelp.ithome.com.tw/upload/images/20211005/20140317jHIsbodSJW.png

不只可以看到资料库的表结构、资料内容,甚至连一般SQL语法也能执行
https://ithelp.ithome.com.tw/upload/images/20211005/20140317hFdQpKMfGC.png

另外也可以自行建立新的资料库、编辑新表,而产出的档案当然也符合SQLite可跨平台操作的特性。

工具介绍 - sqlmap

sqlmap之所以威名赫赫的原因是因为这工具所针对的问题SQL injection也是相当经典,现代网页後端框架基本上都会有防护的方法,所以也不用太过於担心,这边我们就直接来体验一下工具吧。

首先得先准备一个我们已知有注入问题的网页,不然随便找一个网页,先不说违法问题,光是要找到线索就需要相当的经验累积,所以这边我们用Day2所准备的靶机其中的DVWA页面来展示注入问题。DVWA全称Damn Vulnerable Web Application该死的奥网页,因为是用来渗透练习用的,所以也准备了有SQL injection的页面

用浏览器打开DVWA页面,可以看到其登入画面还有帐密

http://192.168.1.86/dvwa

https://ithelp.ithome.com.tw/upload/images/20211005/20140317Xa1wFbEsSK.png

登入後可以看到左侧都是展示漏洞的页面,其中就包含了SQL injection,但这边先到DVWA Security这页将安全度调至最低,方便後续测试
https://ithelp.ithome.com.tw/upload/images/20211005/201403179gcVUlrXKa.png

接下来就直接点SQL injection前往示范页面,这边每个漏洞都依安全度分不同的实作方式,所以有兴趣可以点右下的view source可以看到当前的程序码,或是继续点击compare可以看到三个不同等级的实作方法的差异
https://ithelp.ithome.com.tw/upload/images/20211005/20140317Al9K7ePkQE.png

为了不浪费时间,所以这边我们先偷看它程序码实作,了解到其实就是把输入的值以变数$id方式串入sql语法

   $getid = "SELECT first_name, last_name FROM users WHERE user_id = '$id'";

先随便填个数字观察一下资料内容 ,填入id为1可以得到某user的资讯
https://ithelp.ithome.com.tw/upload/images/20211005/20140317HpRdLBeH6d.png

接下来我们要输入一些非数字的,看有没有什麽方式能绕开条件来取得资料,这边就不卖关子,我们直接输入1' or '1' = '1
https://ithelp.ithome.com.tw/upload/images/20211005/20140317uChmfTOqkP.png

明明输入了不合法的字串当作id,却还是捞出了资料,由於我们偷看过程序码,所以不难理解是因为利用了'单引号来结束第一个单引号形成第一个条件,而且透过or加上让第二个条件恒真,因此才能够使每一笔资料都合乎条件而被列出来。两个条件分别是user_id = '1'以及'1' = '1',这种明明是不合法的输入却能以非法的方式取得资料就让我们证明了这页面的确有漏洞

但是当如果我们不知道程序码的状况,要如何知道网页存在漏洞呢,这时候就是sqlmap出场的时候,让我们先前往SQL injection页面,并且在浏览器按下F12呼叫出开发工具列,然後再输入栏填上任何合法id,就能在开发工具列看到一个请求送往http://192.168.1.86/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#,对这个请求点右键->Copy->Copy Request Headers并储存成档案,档名随意
https://ithelp.ithome.com.tw/upload/images/20211005/20140317PK39UkLHJg.png

接着利用sqlmap来使用这个档案来进行扫描,这档案data有着urlCookie等工具需要的资讯

sqlmap -r data --dump

上面参数的涵义可以透过sqlmap -h或是sqlmap -hh来了解

-r REQUESTFILE      Load HTTP request from a file
--dump              Dump DBMS database table entries

这样一来sqlmap就会从指定档案进行扫描,类似前面我们手工的注入手段,再加上其他模糊猜测,最後将暴露出的资讯显示出来
https://ithelp.ithome.com.tw/upload/images/20211006/20140317E6B5TYT87P.png

结语

今天介绍的两个工具都很实用,SQLite database browser因为图形化的关系,使用上非常直觉,而sqlmap的使用方式其实还有相当多值得探索的部分,这部分就留待之後另开篇章来探索吧。


<<:  JS 20 - HTML 字串算什麽,教你用 CSS 选择器建立网页元素!

>>:  【第20天】训练模型-模型组合与辨识isnull(一)

Day 14 虚拟环境

Python虚拟环境的主要目的是为不同的Python项目创建一个彼此独立且隔离的环境。这样我们可以在...

Day16-205. Isomorphic Strings

今日题目:205. Isomorphic Strings(Easy) Given two strin...

[ Day 29 ] 实作一个 React.js 网站 5/5

今天是实作 React.js 网站的最後一篇介绍了,这篇会大量的使用到 React Hooks 的...

【Day 28】- 这个验证码有点难破解(应对反爬虫技术-验证码篇)

前情提要 昨天使用了 Dcard 的 API 来爬取 Dcard 上面的文章。 开始之前 各位开始在...

[资料库] 学习笔记 - case when then 和 预存程序 之2

这次的问题是上一篇文的延伸 上一篇是使用者输入参数後,再将指定栏位的值改为1 那这次是输入参数後检查...