代号A1金融交易平台漏洞挖掘

前言


       分析某金属交易平台后台管理软件,利用SQL注入达到提权目的(演示敏感内容将会打码处理)。

工具


       1..net framework

       2. ExeinfoPe

       3..Net Reflector 

漏洞分析


      首先我们登录软件查看软件有哪些功能(这里我有一个权限不足的帐号)。

登录成功后我们会看到如下菜单内容,随便点开几个界面看看,查看有数据并且操作正常。

接着我们打开安装好的软件目录,查看一下目录下有什么内容,发现目录比较简单,而且使用了DevExpress控件库(你问我为什么知道,我把这个名字百度上一搜索就出来了),https://baike.baidu.com/item/DevExpress/8754446?fr=aladdin

我们使用Exeinfo工具查看Launcher是什么语言开发的,是否带壳

看到这个信息我们发现是.net开发的程序,我们可以使用Net Reflector 来查看程序源码。

Program是.net程序的入口点,我们可以从Program下手查看Main里面调用哪些内容

 

发现这里有一个主界面函数MainForm,通过分析代码找到合适的断点,可以多下几个断点。比如:“MessageBox.Show”、"TextBox.Text"、"DataGridview.DataSouce"、“Enable”。多尝试一些然后根据堆栈回溯,找到你需要程序逻辑的位置。

我们随便挑选一个功能查看,看看里面代码。发现里面有SQL语句,通过这个语句我们发现这个程序有SQL注入漏洞。通过修改如何SQL可以查询更多数据,比如将时间条件移除这样可以查询出更多数据。

 

通过SQL语句中使用IFNULL函数这里猜测使用mysql数据库。那么我们就采用mysql脚本攻击。

1.查询库中所有表

select * from sysobjects where xtype='U';
--xtype='U':表示所有用户表,
--xtype='S':表示所有系统表。

2.查询表中所有列

select name from syscolumns where id=Object_Id('表名');

3.查询表中所有列名和字段类型

select sc.name,st.name from syscolumns sc,systypes st where sc.xtype=st.xtype and sc.id in(select id from sysobjects where xtype='U' and name='table_name');

  这三条语句用于查看远程数据库中有哪些表结构关系,可以用于将远程数据库下载到本地使用(俗称“拖裤”),可以自己写一个软件也可以使用我提供的工具,工具将会在下一篇文章中发布出来。

攻击步骤:

      1.找到select和insert、update、delete地方个一处,方便后面提权操作

      2.执行sql查询语句查询库中有哪些表结构

      3.找到类似管理员或者,用户数据表结构

      4.查看用户或者管理员表数据,找到自己ID对应的数据行

      5.通过执行sql语句进行修改对应的数据达到篡改数据的结果 

漏洞总结


     通过静态程序,找到程序中使用Sql语句的地方,静态修改后动态运行,从而执行我们想要修改的数据,这个修改过程需要多次尝试。通过服务器返回的对应的错误信息进行反复修改尝试,最终达到攻击目的。

原文地址:https://www.cnblogs.com/ajqfju/p/7990148.html