目錄
一、wazuh配置
?二、wazuh案例復(fù)現(xiàn)
一、wazuh配置
1.1進(jìn)入官網(wǎng)下載OVA啟動(dòng)軟件
Virtual Machine (OVA) - Installation alternatives (wazuh.com)
?1.2點(diǎn)擊啟動(dòng)部署,傻瓜式操作
1.3通過(guò)賬號(hào):wazuh-user,密碼:wazuh進(jìn)入wazuh
1.4將橋接模式更改為僅nat模式?1.5更改配置之后輸入重新啟動(dòng)命令?service network restart
查看自身ip
ip a
1.6配置已好,本地開啟小皮Apache直接訪問(wèn)
1.7有時(shí)會(huì)因?yàn)榫W(wǎng)絡(luò)問(wèn)題出現(xiàn)如下問(wèn)題,我們采用重啟wazuh即可
wazuh重啟:
systemctl restart wazuh-manager
?二、wazuh案例復(fù)現(xiàn)
2.1wazuh初體驗(yàn)
當(dāng)我們使用本地的cmd通過(guò)ssh一直連接wazuh的時(shí)候便會(huì)出現(xiàn)十級(jí)報(bào)錯(cuò),此次在后臺(tái)可以明顯的看到有爆破的提示掃描,通過(guò)分析其具體的數(shù)據(jù)包以及對(duì)應(yīng)的規(guī)則理解到wuzuh在外來(lái)訪問(wèn)的時(shí)候,會(huì)觸發(fā)到解碼器,其作用是用來(lái)抓取關(guān)鍵信息,其中核心便是正則表達(dá)式進(jìn)行正則匹配,當(dāng)數(shù)據(jù)來(lái)了之后,wazuh程序會(huì)分析我們的日志,把這些日志信息發(fā)到相對(duì)應(yīng)的解碼器去,通過(guò)解碼器去進(jìn)行解碼,解碼完后,再發(fā)送到相應(yīng)的規(guī)則,然后把解碼完的數(shù)據(jù)通過(guò)規(guī)則,再次進(jìn)行匹配,最終展示到儀表盤的Modules里的Security events里
復(fù)現(xiàn)例圖:
?
2.2我們通過(guò)一道文件上傳題舉例其背后攔截的原理
2.2.1題目:?
2.2.2第一步:來(lái)到nginx目錄下/var/www/html創(chuàng)建index.php并寫入案例
?案例:
<?php
function fun($var): bool{
$blacklist = ["\$_", "eval","copy" ,"assert","usort","include", "require", "$", "^", "~", "-", "%", "*","file","fopen","fwriter","fput","copy","curl","fread","fget","function_exists","dl","putenv","system","exec","shell_exec","passthru","proc_open","proc_close", "proc_get_status","checkdnsrr","getmxrr","getservbyname","getservbyport", "syslog","popen","show_source","highlight_file","`","chmod"];
foreach($blacklist as $blackword){
if(strstr($var, $blackword)) return True;
}
return False;
}
error_reporting(0);
//設(shè)置上傳目錄
define("UPLOAD_PATH", "./uploads");
$msg = "Upload Success!";
if (isset($_POST['submit'])) {
$temp_file = $_FILES['upload_file']['tmp_name'];
$file_name = $_FILES['upload_file']['name'];
$ext = pathinfo($file_name,PATHINFO_EXTENSION);
if(!preg_match("/php/i", strtolower($ext))){
die("只要好看的php");
}
$content = file_get_contents($temp_file);
if(fun($content)){
die("誒,被我發(fā)現(xiàn)了吧");
}
$new_file_name = md5($file_name).".".$ext;
$img_path = UPLOAD_PATH . '/' . $new_file_name;
if (move_uploaded_file($temp_file, $img_path)){
$is_upload = true;
} else {
$msg = 'Upload Failed!';
die();
}
echo '<div style="color:#F00">'.$msg." Look here~ ".$img_path."</div>";
}
2.2.3這是咱們的前端頁(yè)面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div class="light"><span class="glow">
<form enctype="multipart/form-data" method="post" action="./index.php">
嘿伙計(jì),傳個(gè)火,點(diǎn)支煙,快活人生?!
<input class="input_file" type="file" name="upload_file" />
<input class="button" type="submit" name="submit" value="upload" />
</form>
</span><span class="flare"></span>
</div>
</body>
</html>
?2.2.4執(zhí)行
?2.4.5分析
其中原因也就在這個(gè)循環(huán)判斷和檢測(cè)身上,而檢測(cè)到底是檢測(cè)什么,咱們繼續(xù)往下看?
2.4.6額外補(bǔ)充(限制原因在此)
2.4.6.1? eval函數(shù)中的參數(shù)是字符
2.4.6.2? assert函數(shù)中的參數(shù)為表達(dá)式(不能在其中執(zhí)行字符),非要用:好,上編碼選擇base64(原理:多加了一個(gè)eval函數(shù))
2.4.6.3? ?異或取反繞過(guò),百分號(hào),變相取等,字符串拼接
而我們可以利用以上所說(shuō)的為我們自身建造php后門進(jìn)階到shell反彈獲取權(quán)限
拋出例題:
異或:
①因?yàn)榇a中對(duì)字符"A"和字符"`"進(jìn)行了異或操作。在PHP中,兩個(gè)變量進(jìn)行異或時(shí),先會(huì)將字符串轉(zhuǎn)換成ASCII值,再將ASCII值轉(zhuǎn)換成二進(jìn)制再進(jìn)行異或,異或完,又將結(jié)果從二進(jìn)制轉(zhuǎn)換成了ASCII值,再將ASCII值轉(zhuǎn)換成字符串
<?php
echo "A"^"`";
?>
?②拋出真正的異或來(lái)分析
<?php
function B(){
echo "Hello Angel_Kitty";
}
$_++;
$__= "?" ^ "}";
$__();
?>
$_++意思為下劃線自增,
$__="?"是跟我們①所說(shuō)的一樣異或運(yùn)算,得到的結(jié)果進(jìn)行賦值,知道這兩個(gè)小東西相等那異或出B此進(jìn)程也就結(jié)束,輸出如上所示
其余的進(jìn)階都與這個(gè)小東西同理,換了大于小于號(hào),其實(shí)換湯不換藥,本質(zhì)上都是變相取等讓命令輸出
異或失效:
那么當(dāng)異或和取反也無(wú)法解決的代碼升級(jí)問(wèn)題呢:(下劃線和$符禁止,自增異或取反失效)
代碼如下:
<?php
include'flag.php';
if(isset($_GET['code'])){
$code=$_GET['code'];
if(strlen($code)>50){
die("Too Long.");
}
if(preg_match("/[A-Za-z0-9_]+/",$code)){
die("Not Allowed.");
}
@eval($code);
}else{
highlight_file(__FILE__);
}
本地輸出示例:?
在看代碼之前我們先了解一個(gè)東西:PHP7前是不允許($a)();這樣的方法來(lái)執(zhí)行動(dòng)態(tài)函數(shù)的,但PHP7中增加了對(duì)此的支持。所以,我們可以通過(guò)(‘phpinfo’)();來(lái)執(zhí)行函數(shù);第一個(gè)括號(hào)可以是任意PHP表達(dá)式
舉個(gè)栗子:
<?php
$str = 'phpinfo';
$res = urlencode(~$str);
echo $res;
?>
輸出結(jié)果:
利用php的特性
根據(jù)這個(gè)小案例總結(jié)上面咱們提出例題的問(wèn)題:
如何繞過(guò)?只要PHP上傳過(guò)程中,自然會(huì)生成一個(gè)臨時(shí)文件,這個(gè)臨時(shí)文件在/tmp/目錄一下,名字大概如(PHP(隨機(jī)字符)),那么我在訪問(wèn)文件的時(shí)候,我就可以使用文件上傳(咱們可以上傳,但是主機(jī)不接收,但是臨時(shí)文件還是會(huì)生成)
?而文件如何執(zhí)行成為了當(dāng)下的一個(gè)問(wèn)題:在linux下我們執(zhí)行文件可以用./但是要賦予文件相應(yīng)權(quán)限,而還有一種方法可以執(zhí)行,那便是(點(diǎn)? 空格? ?/):
新的問(wèn)題出現(xiàn)了,如何去匹配文件呢,那不得不說(shuō)linux下文件名支持用glob通配符代替
那么便就可以是/???/???????,卻會(huì)出現(xiàn)錯(cuò)誤,因?yàn)槲覀兪侨制ヅ?,這樣/bin/目錄下的文件好像也符合要求,那么就該有請(qǐng)我們的ASCII表了,我們可以利用前面額外補(bǔ)充提到的取反這個(gè)東西去進(jìn)行取反匹配,結(jié)果呢,總不盡人意會(huì)出現(xiàn)一大坨一大坨,那就證明有些東西還是無(wú)法排除的掉,而glob有一個(gè)有趣的寫法,那便是支持【0-9】來(lái)表示一個(gè)范圍,還有所有的文件名都是小寫,那么我們離答案也越來(lái)越近了,我們只需要找到一個(gè)大寫字母的“glob”通配符,就能精準(zhǔn)的找到我們所要執(zhí)行的文件(. /???/???????[@-[ ]),看圖二可知,這樣的匹配確實(shí)是可以匹配到東西的(不看其他啥,最后一個(gè)字母是大寫就已經(jīng)跟我們確認(rèn)過(guò)眼神了),那這樣一來(lái),我們的實(shí)現(xiàn)就有辦法了,那么理論形成,實(shí)踐開始,關(guān)注圖三:
一大坨:
?圖二:
?圖三:我們模擬一個(gè)臨時(shí)上傳就會(huì)發(fā)現(xiàn)文件是在/tmp/目錄下面的
?接下來(lái)我們通過(guò)抓包,細(xì)致研究:
?首先code接受的參數(shù)是臨時(shí)文件(code匹配的值還是要放回eval),一補(bǔ)兩操作,一個(gè)接收pose一個(gè)接收code?,最終執(zhí)行在eval,要注意的是匹配的時(shí)候空格是+(回憶sql注入)
?pass:小補(bǔ)充(使用unbentu的一定要看)調(diào)成false,就不會(huì)生成臨時(shí)文件影響咱們匹配了
vim /etc/systemd/system/multi-user.target.wants/apache2.service
?最后一個(gè)問(wèn)題:怎么樣去執(zhí)行才好
PHP: eval - Manual
?重點(diǎn):閉合標(biāo)簽,echo輸出(=),注意到這兩點(diǎn)加個(gè)訪問(wèn)標(biāo)簽即可(自此成功)
?寫入端口密碼,蟻劍直接連接,隨便寫文件(wazuh出來(lái)了,全盤監(jiān)控會(huì)掃描到,接下來(lái)我們繼續(xù)看向wazuh),然后反彈shell,接下來(lái)重要的是提權(quán)問(wèn)題(利用find)
find /bin -perm -u=s -type f 2>/dev/null
find /usr -perm -u=s -type f 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
三、防御案例
1.wazuh埋點(diǎn),使用ubentu代理(添加代理)
2.復(fù)制生成的代碼在ubentu底下?
?3.安裝剛才的服務(wù)
dpkg -i wazuh-agent.deb
4.端點(diǎn)重啟
sudo systemctl daemon-reload
sudo systemctl enable wazuh-agent
sudo systemctl start wazuh-agent
?5.配置完成的代表
6.埋點(diǎn)成功?
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-668882.html
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-668882.html
到了這里,關(guān)于網(wǎng)絡(luò)安全--wazuh環(huán)境配置及漏洞復(fù)現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!