1. Shell腳本根據Hash值判斷web伺服器頁面是否被更改
當頁面被惡意木馬攻擊更改後,監控狀態腳本並不能檢測出異常,但是Web的頁面已經存在相當大的安全隱患.所以能不能尋找到一種方法判斷自己所負責的Web伺服器頁面內容是否遭到惡意木馬的攻擊和修改顯得十分重要.通過Hash值的方法可以非常高效的檢測到WEB伺服器頁面的數據內容是否完整,如果頁面內容被惡意木馬更改,新頁面的Hash值是不同於原始的Hash值的,我們就可以以此作為判斷的依據!
獲取Hash值的方法:
md5sum /var/www/html/index.html
url="Web伺服器頁面地址"
如 http://127.0.0.1/index.html
date=$(date +"%Y-%m-%d %H:%M:%S")
source_hash="獲取到的原始Hash值"
url_hash=$(curl -s $url | md5sum | cut -d ' ' -f1)
if [ "$url_hash" != "$source_hash" ];then
mail -s Hash is changed root@localhost <<- EOF
檢測時間為:$date
數據完整性檢驗失敗,Hash值不同,$url,頁面數據被更改
請盡快排查異常
EOF
else
cat >> /var/log/http_check.log <<-EOF
$date "$url,數據完整性校驗正常"
EOF
fi
chmod +x /check_http_hash.sh
/check_http_hash.sh
cat /var/log/http_check.log
2019-11-23 15:38:55 "http://127.0.0.1/index.html,數據完整性校驗正常"
修改/var/www/html/index.html文件的內容,模擬網站頁面被更改的情況!
/check_http_hash.sh
檢測時間為:2019-11-23 16:00:08
數據完整性檢驗失敗,Hash值不同,http://127.0.0.1/index.html,頁面數據被更改
請盡快排查異常
這一個腳本跟上一篇文章的 http服務狀態監測腳本 兩者相輔相成,也可以考慮把它們兩個合並成同一個腳本!並且一同添加到周期性計劃任務中!
2. xshell關閉web服務
1、在我們的電腦上打開xshell,進行遠程連接linux系統,連接到之後,輸入「cdtomcat安裝路徑bin目錄」,按回車鍵進去tomcat的bin目錄。
2、進去tomcat的bin目錄之後,輸入「。/shutdown。sh」命令,關閉tomcat。
3、按回車鍵,可以看到linux系統上的tomcat關閉了。
4、輸入「。/startup。sh」命令,啟動tomcat。
5、可以看到已經啟動了tomcat。
3. web shell 提權問題。
得到最簡單的許可權後,在shell裡面尋找能夠用來提權的漏洞,比如:
1.安裝了serv U ,很多web shell裡面自帶的就有serv U的提權,執行就得到管理員許可權,建立一個管理員用戶,然後遠程連上去,這台伺服器就是你的了。格式化都行
2.尋找可讀可寫的文件夾,一般都是IIS所有目錄,臨時目錄,或者all users下面的某些目錄
然後將cmd.exe上傳到這個目錄裡面,在web shell裡面就可以執行dos命令,或者上傳最新最牛叉的0day提權工具 pr.exe 瞬間提權
3.尋找網站,看是否安裝了sql server ,如果網站剛好安裝了sqlserver ,並且你可以從網站源文件中得到sa的用戶名密碼,這台電腦你就擁有了管理員
......還有很多很多。。太累人了。
最重要的一點,提到管理員許可權後,記得留shift後門以及把戰場打掃干凈。
4. 如何shell命令編寫自己的Web日誌分析腳本
一、讀取文件
按照上面的思路,先解決讀取問題。這里我用了判斷語句,起初我是想寫出類似於 access=more
/usr/access*.*,將這個路徑全部加到變數里,方便判斷,因為在shell里,只能將固定文件、文件夾作為變數,變數中不能加*號(我是沒找到別的方法,有知道大牛請提點下小弟),所以就想了個笨辦法,用匹配關鍵詞的方式來判斷特定目錄下,是apache日誌,還是weblogic日誌,還是IIS日誌,具體判斷方法如下:
if ls -l /usr/ | egrep "access";then
more /usr/access*.* | egrep "多個關鍵詞"
else
more /usr/ex*.log | egrep 「多個關鍵詞」
fi
這樣的方式來進行判斷,但是這樣判斷有個缺點,就是中間件日誌在/usr/目錄下,只能存在一種,比如同時存在apache和IIS的日誌,就會優先判斷apache的,進而不會執行IIS日誌分析的語句。而且,為了不跟之前的歷史數據混亂,在腳本執行開始,清空了下數據。
file=/usr/nmgxy/
if [ -e "$file" ];then
echo "日誌目錄存在,跳過創建過程,該操作會清空/usr/nmgxy/目錄下所有數據"
echo "按回車鍵開始清空數據,結束請點擊Ctrl+c"
read key
rm -r /usr/nmgxy/*
mkdir -p /usr/nmgxy/LFI/ /usr/nmgxy/exp/ /usr/nmgxy/sql/ /usr/nmgxy/scan/ /usr/nmgxy/xss/ /usr/nmgxy/getshell/ /usr/nmgxy/dir/
else
mkdir -p /usr/nmgxy/ /usr/nmgxy/LFI/ /usr/nmgxy/exp/ /usr/nmgxy/sql/
/usr/nmgxy/scan/ /usr/nmgxy/xss/ /usr/nmgxy/getshell/ /usr/nmgxy/dir/
fi
echo "分析結果日誌保存在/usr/nmgxy/目錄下"
echo ---------------------日誌目標文件---------------------------
if ls -l /usr/ | egrep "access";then
echo --------------------統計出現次數最多的前20個IP地址-----------------
cat /usr/access*.* |awk '{print $1}' |sort |uniq -c |sort -rn |head -20 >/usr/nmgxy/top20.log
echo "統計完成"
二、定義攻擊特徵
日誌讀取的問題解決了,接下來就是定義攻擊特徵的事兒了,攻擊特徵比較好定義。例如,SQL注入攻擊的判斷:
echo ------------------------SQL注入攻擊sql.log----------------
echo "開始分析存在SQL注入的攻擊行為,並將結果保存在/usr/nmgxy/sql/目錄下"
more /usr/access*.* |egrep
"%20select%20|%20and%201=1|%20and%201=2|%20exec|%27exec|
information_schema.tables|%20information_schema.tables|%20where%20|%20union%20|%20SELECT%20|%2ctable_name%20|cmdshell|%20table_schema"
>/usr/nmgxy/sql/sql.log
echo "分析結束"
awk '{print "共檢測到SQL注入攻擊" NR"次"}' /usr/nmgxy/sql/sql.log|tail -n1
echo "開始統計SQL注入攻擊事件中,出現頻率最多的前20個IP地址"
cat /usr/nmgxy/sql/sql.log |awk -F "[" '{print $1}' |sort |uniq -c |sort -rn |head -20 >/usr/nmgxy/sql/top20.log
echo ----------------------------------------------------------
more /usr/nmgxy/sql/top20.log
echo "統計結束"
我把一些常見的SQL注入攻擊的特徵寫到了裡面,去掉了MSSQL資料庫存儲過程以及MSSQL資料庫才會出現的一些注入語句。
三、輸出匹配到的含有攻擊特徵的記錄
將匹配到的攻擊特徵內容,重新輸出到了另外一個log裡面,相當於做了一次篩選/usr/nmgxy/sql/sql.log
more /usr/access*.* |egrep
"%20select%20|%20and%201=1|%20and%201=2|%20exec|%27exec|
information_schema.tables|%20information_schema.tables|%20where%20|%20union%20|%20SELECT%20|%2ctable_name%20|cmdshell|%20table_schema"
>/usr/nmgxy/sql/sql.log
然後二次分析這個篩選過的文件,統計SQL注入攻擊出現的次數
awk '{print "共檢測到SQL注入攻擊" NR"次"}' /usr/nmgxy/sql/sql.log|tail -n1
輸出完畢後,將攻擊出現最多的前20個IP地址進行統計並顯示到屏幕上
echo "開始統計SQL注入攻擊事件中,出現頻率最多的前20個IP地址"
cat /usr/nmgxy/sql/sql.log |awk -F "[" '{print $1}' |sort |uniq -c |sort -rn |head -20 >/usr/nmgxy/sql/top20.log
echo ----------------------------------------------------------
more /usr/nmgxy/sql/top20.log
echo "統計結束"
四、輸出結果
這個在代碼開頭,創建了一些文件夾,用來存放篩選過的記錄
mkdir -p /usr/nmgxy/LFI/ /usr/nmgxy/exp/ /usr/nmgxy/sql/ /usr/nmgxy/scan/ /usr/nmgxy/xss/ /usr/nmgxy/getshell/ /usr/nmgxy/dir/
中間刪刪改改折騰了好幾次。後來針對特定的攻擊,我們比較關注(重點是比較好寫的= =)的內容做了HTTP響應請求200/500的判斷,並輸出結果。
echo -------------------------getshell-getshell.log----------------
echo "開始分析存在getshell的攻擊行為,並將結果保存在/usr/nmgxy/getshell/目錄下"
more /usr/access*.* |egrep "
eval|%eval|%execute|%3binsert|%20makewebtaski%20|/div.asp|/1.asp|/1.jsp|/1.php|/1.aspx|xiaoma.jsp|tom.jsp|py.jsp|k8cmd.jsp|/k8cmd|ver007.jsp|ver008.jsp|ver007|ver008|%if|\.aar"
>>/usr/nmgxy/getshell/getshell.log
echo "分析結束"
echo "二次分析結果中HTTP響應碼為200和500,結果另存為/usr/nmgxy/getshell/ok.log"
more /usr/nmgxy/getshell/getshell.log | awk '{if($9=200) {print $1" "$2"
"$3" "$4" "$6" "$7" "$8" "$9}}' >/usr/nmgxy/getshell/ok.log
more /usr/nmgxy/getshell/getshell.log | awk '{if($9=500) {print $1" "$2"
"$3" "$4" "$6" "$7" "$8" "$9}}' >>/usr/nmgxy/getshell/ok.log
echo "二次分析結束"
awk '{print "共檢測到getshell行為" NR "次"}' /usr/nmgxy/getshell/getshell.log|tail -n1
echo "開始統計漏洞利用攻擊事件中,出現頻率最多的前20個IP地址"
cat /usr/nmgxy/getshell/getshell.log |awk -F "[" '{print $1}' |sort
|uniq -c |sort -rn |head -20 >/usr/nmgxy/getshell/top20.log
echo ---------------------------------------------------------------
more /usr/nmgxy/getshell/top20.log
echo "統計結束"
統計HTTP響應狀態,IIS和apache有點區別。apache我以默認空格為分隔符,判斷第9個分隔符是否為200或500,如果等於,則輸出全部內容
more /usr/nmgxy/getshell/getshell.log | awk '{if($9=500) {print $1" "$2" "$3" "$4" "$6" "$7" "$8" "$9}}'
而IIS的,我則是用獲取關鍵詞的方式,來進行判斷。
more /usr/nmgxy/getshell/getshell.log | egrep " 200" >/usr/nmgxy/getshell/ok.log
用egrep的方式,關鍵詞為" 200",200前面有個空格,如果不加空格的話,很容易跟其他的參數混起來,那個時候誤報就不是一點點了。例如asp?id=200,所以加入了空格做區分。
IIS和nginx的思路類似,唯一的區別就是特徵碼,稍微有點改動而已,這個就不一一例舉了。思路就是這個思路,其實後期想把報告整體輸出成HTML的方式,估計工作量挺大,這個還是得閑下來的時候,慢慢修改吧。
PS:這個腳本雖然寫的比較粗糙,但是精確度還是有的,測試了幾十次,精確度能達到至少80%以上。
分析1個多G的日誌文件,需要大致約30多秒左右,我是在虛擬機里做的測試。虛擬機ubuntu系統,1G的內存。
不見得能幫上大忙,至少可以給大家在分析日誌時節省點時間。。。。
先貼出apache、weblogic、IIS的腳本代碼,weblogic的從網盤直接下載就好。apache、weblogic、IIS的腳本代碼:
5. 如何用xshell搭建web環境(linux)
准備好連接linux伺服器的工具,推薦用xshell和xftp。
xshell 是一個強大的安全終端模擬軟體,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 協議。
下載地址:http://www.jb51.net/softs/56322.html
Xftp 是一個基於 MS windows 平台的功能強大的SFTP、FTP 文件傳輸軟體。
下載地址:http://www.jb51.net/softs/81853.html
安裝完畢後打開xshell
linux一鍵安裝web環境全攻略
設置雲伺服器登錄信息
設置伺服器帳號密碼
設置字元集編碼
設置好了就點擊ok保存
一切准備就緒,讓我們連接看看雲linux伺服器的廬山真面目吧!
黑不隆冬的,啥都沒有,這就是linux的shell啦。shell(殼)到底是什麼東東呢?
* Shell是系統的用戶界面,提供了用戶與內核進行交互操作的一種介面。它接收用戶輸入的命令並把它送入內核去執行。
linux作為伺服器專用操作系統,主要就是默默的待在機房提供各項網路服務的,為了節省系統資源,像windows那樣華麗麗的用戶桌面就默認不載入了。當然現在越來越多的用戶使用linux作為日常家庭辦公用操作系統,所以就有了像gnome、kde這樣超華麗的桌面。不過作為伺服器使用還是推薦用命令行界面吧,畢竟省一點資源,網站打開可能會更快一點嘛!
打下面的命令去主目錄(/home)看下
cd /home
現在用鍵盤敲入下面這行命令
cd /home && mkdir tmp && cd tmp
用xftp上傳環境安裝文件
回到shell界面,用ll命令看下情況
ll
是不是多了一個sh目錄
接下來按照說明,分步驟敲入安裝命令
chmod –R 777 sh
cd sh
./install.sh
出現了一個選擇提示,進入web伺服器版本的選擇界面
這里您可以根據需要選擇apache或者nginx伺服器,這里是2個伺服器的介紹
apache:http://ke..com/view/28283.htm
nginx:http://ke..com/view/926025.htm
引用
在高並發連接的情況下,Nginx是Apache伺服器不錯的替代品。Nginx同時也可以作為7層負載均衡伺服器來使用。根據我的測試結果,Nginx 0.8.46 + PHP 5.2.14 (FastCGI) 可以承受3萬以上的並發連接數,相當於同等環境下Apache的10倍。
這里我們選擇nginx,輸入n,回車
到這里,我們就正式進入環境安裝環節了。你可以泡杯茶休息下。一般這個過程會持續半個小時的樣子。
為了防止斷掉和伺服器的連接,可以新開一個shell窗口,將滑鼠挪到窗口標簽欄,右擊,如下圖所示:
可以看到,新開了一個窗口
輸入top命令
可以看到一直在跳動的系統資源統計
好了。做完了這一些就讓我們靜靜的等待吧!程序正在自動編譯安裝服務!
到這個界面說明安裝已經結束了。
大家有疑問了。那我怎麼登錄ftp和mysql呢?
在命令行里輸入:
cat account.log
看到了沒?
ftp的用戶名是:www
mysql的用戶名是:root
密碼就在屏幕上了!
好了。所有配置都已經完成了。是不是很簡單!
----------------------------------------------------------------------
網站目錄:/alidata/www
伺服器軟體目錄:/alidata/server
Mysql 目錄 /alidata/server/mysql
Php目錄/alidata/server/php
選擇了nginx 那麼會有一個nginx 目錄在
/alidata/server/nginx/
Nginx 配置文件在/alidata/server/nginx/conf
Nginx虛擬主機添加 你可以修改/alidata/server/nginx/conf/vhosts/phpwind.conf
選擇了apache那麼會有一個httpd 目錄在
/alidata/server/httpd
apache 配置文件在/alidata/server/httpd/conf
apache虛擬主機添加 你可以修改/alidata/server/httpd/conf/vhosts/phpwind.conf
6. 如何使用Windows PowerShell Web Access
如何使用Windows PowerShell Web Access?
微軟在Windows Server 2012中引入了Windows PowerShell Web Access功能,該功能允許管理員通過網路控制台遠程運行PowerShell命令和腳本。
AD:WOT2015 互聯網運維與開發者大會 熱銷搶票
微軟在Windows Server 2012中引入了Windows PowerShell Web Access功能,該功能允許管理員通過網路控制台遠程運行PowerShell命令和腳本。
在Windows Server 2012 R2或Windows Server 2012上設置PowerShell訪問需要用到Web伺服器(IIS)、.NET Framework 4.5和Windows PowerShell 3.0或Windows PowerShell 4.0。你可以通過在伺服器管理器中的Add Roles and Features向導啟用PowerShell Web Access組件。
但是,Web訪問會帶來一些安全風險,所以你應該提前啟用一些安全機制。確保PowerShell Web Access包含基於cmdlet的授權規則,並使用Web伺服器(IIS)的安全特性。
例如,如果你知道遠程PowerShell連接的確切的IP地址或范圍,你可以實施地址限制,指定允許連接的IP地址或地址范圍。
PowerShell Web Access的默認URL是https:// < server_name > / pswa。用戶登錄時必須知道要訪問或管理的遠程計算機的名稱或IP地址。這些用戶必須是遠程計算機的授權用戶,計算機必須配置為允許遠程管理。如果用戶未退出,連接將在20分鍾後自動斷開。
正如你在截圖中所看到的,PowerShell Web Access在底部有幾個按鈕:提交、取消、箭頭和退出,還能顯示你當前連接的遠程計算機的名稱或IP。
PowerShell Web Access截圖
PowerShell Web Access同常規遠程Windows PowerShell會話共享同樣的限制,因此有一些PowerShell特性和功能不受支持。
PowerShell Web Access也有一些特定的基於web的訪問限制。例如,功能鍵(鍵盤快捷鍵)不能工作。輸入/輸出的顏色不能改變,盡管輸出的顏色和風格可通過運行腳本實現改變。
另外,每次只能連接一台遠程計算機,在多個選項卡中無法打開PowerShell Web Access。
最後,PowerShell Web Access不要求使用PowerShell和任何遠程訪問軟體,你使用的網路控制台計算機或設備上也無需安裝瀏覽器插件。微軟目前只列出了一些受官方支持的桌面瀏覽器(IE、Firefox、Chrome和Safari),但在移動瀏覽器(Windows Phone、Android和iOS)上也已經做了成功的測試。具備支持JavaScript、cookies並且能通過HTTPS/SSL連接到安全站點的瀏覽器的任何計算機或設備都支持PowerShell Web Access功能。
7. web shell是什麼
簡單的說就是網站許可權。
例如 網頁木馬上傳到網站的時候。這個網頁木馬就可以叫做webshell
8. shell腳本怎麼調用webservice介面
如果是做服務端比較麻煩,如果是客戶端,那就考慮用curl命令。
curl可以發起http請求,可以發送post,webservice無非就是post一堆數據,手邊沒有現成的webservice,沒法抓包給你寫例子,你自己試下。
大致的語法像這樣:
curl -d "要post的數據" http://webservice地址
你可以用現有的webservice抓個包,然後填到上面的命令里。