AWD_defense_record

AWD在dalao的幫忙下打了幾場,隊伍中兩個web手核偿,一個pwn手,當(dāng)然web是一攻一防顽染,pwn手就比較辛苦漾岳。我主要負(fù)責(zé)一些運(yùn)維的事務(wù),這里針對awd運(yùn)維做一點(diǎn)小總結(jié)粉寞。

備份尼荆,很關(guān)鍵

window平臺推薦winscp傻瓜操作。
Linux平臺推薦將web目錄打包唧垦,再下載

tar zcf backup.zip /var/www/html

隱藏用戶

遇到過兩次隱藏用戶的坑了捅儒。

查看home目錄下是否有其他用戶
/etc/passwd是否有/bin/bash的用戶

看到用戶先su一下,看看是否可以直接切換(主辦方有時候會預(yù)留)振亮。
如果不可以在用弱口令爆破密碼巧还,有一次HD學(xué)長就根據(jù)這個通殺全場,具體腳本可以參考這里

提權(quán)

個人并不是很推薦坊秸,很多時候會費(fèi)力不討好狞悲,很多時候主辦方給與的權(quán)限實在過小,不過小比賽提權(quán)還是相對容易妇斤。
這里推薦幾款工具

LinEnum
Linux_Exploit_Suggester
linuxprivchecker.py

同時摇锋,github上也有人總結(jié)了歷年影響較大的提權(quán)exp

linux-kernel-exploits

如果可以提權(quán)的話,刪除系統(tǒng)中不必要的用戶

刪除后門

這里主要參考這里

find . -name '*.php' | xargs grep -n 'eval('
find . -name '*.php' | xargs grep -n 'assert('
find . -name '*.php' | xargs grep -n 'system('
find . -name '*.php' | xargs grep -n 'shell_exec'
find . -name '*.php' | xargs grep -n 'exec'
find . -name '*.php' | xargs grep -n 'proc_open'
find . -name '*.php' | xargs grep -n -E 'preg_replace*e'1

同時這里配合D盾查殺站超,就刪除后門荸恕。
不過有時候主辦方的后門會十分隱蔽,這個時候就需要借助什么都報的seay源碼審計工具來配合查找后門死相,找到后門第一時間交給負(fù)責(zé)攻擊的人融求。

流量監(jiān)控

在條件比較寬松的情況下

這里采用wupco師傅的腳本,十分方便

git clone https://github.com/wupco/weblogger

一套集成算撮,然后直接用里面的一套就好

然后批量包含就好

find /var/www/html/ -path /var/www/html/124687a7bc37d57cc9ecd1cbd9d676f7 -prune -o  -type f -name '*.php'|xargs  sed -i '1i<?php require_once("/tmp/33253f64133730fabaa52a487ff98740/weblogpro.php");?>'

在條件比較苛刻的情況下

這里就采用virink師傅的腳本生宛,github之前的刪掉了县昂,參考這里

<?php

error_reporting(0); 
define('LOG_FILEDIR','./logs'); 
function waf() 
{ 
if (!function_exists('getallheaders')) { 
function getallheaders() { 
foreach ($_SERVER as $name => $value) { 
if (substr($name, 0, 5) == 'HTTP_') 
$headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value; 
} 
return $headers; 
} 
} 
$get = $_GET; 
$post = $_POST; 
$cookie = $_COOKIE; 
$header = getallheaders(); 
$files = $_FILES; 
$ip = $_SERVER["REMOTE_ADDR"]; 
$method = $_SERVER['REQUEST_METHOD']; 
$filepath = $_SERVER["SCRIPT_NAME"]; 
foreach ($_FILES as $key => $value) { 
$files[$key]['content'] = file_get_contents($_FILES[$key]['tmp_name']); 
file_put_contents($_FILES[$key]['tmp_name'], "virink"); 
}

unset($header['Accept']);
$input = array("Get"=>$get, "Post"=>$post, "Cookie"=>$cookie, "File"=>$files, "Header"=>$header);

logging($input);

}

function logging($var){ 
$filename = $_SERVER['REMOTE_ADDR'];
$LOG_FILENAME = LOG_FILEDIR."/".$filename;
$time = date("Y-m-d G:i:s");
file_put_contents($LOG_FILENAME, "\r\n".$time."\r\n".print_r($var, true), FILE_APPEND); 
file_put_contents($LOG_FILENAME,"\r\n".'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'], FILE_APPEND);
file_put_contents($LOG_FILENAME,"\r\n***************************************************************",FILE_APPEND);
}

waf(); 
?>

然后

require_once('waf.php');

就會在當(dāng)前目錄生成logs,里面就是數(shù)據(jù)包

上傳文件解析問題

.htaccess


<Directory "/var/www/html/uploads">
Options -ExecCGI -Indexes
AllowOverride None
RemoveHandler .php .phtml .php3 .pht .php4 .php5 .php7 .shtml
RemoveType .php .phtml .php3 .pht .php4 .php5 .php7 .shtml
php_flag engine off
<FilesMatch ".+\.ph(p[3457]?|t|tml)$">
deny from all
</FilesMatch>
</Directory>

文件監(jiān)控

文件監(jiān)控一種比較方便的方法就是提前準(zhǔn)備好pyinotify庫

sudo pythonXXX setup.py install

也可以直接將自己的目錄復(fù)制下來陷舅,到時候直接傳到服務(wù)器的目錄上就好

/usr/local/lib/python2.7/dist-packages

在配置文件可控的情況下

參考這里

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# ** Author: ssooking
import os
import argparse
from pyinotify import WatchManager, Notifier,ProcessEvent
from pyinotify import IN_DELETE, IN_CREATE,IN_MOVED_TO,IN_ATTRIB
class EventHandler(ProcessEvent):
        """事件處理"""
        #創(chuàng)建
        def process_IN_CREATE(self, event):
            print "[!] Create : " + event.pathname
            DeleteFileOrDir(event.pathname)
        #刪除
        def process_IN_DELETE(self, event):
            print "[!] Delete : " + event.pathname
        #文件屬性被修改倒彰,如chmod、chown命令
        def process_IN_ATTRIB(self, event):
            print "[!] Attribute been modified:" + event.pathname
        #文件被移來莱睁,如mv待讳、cp命令
        def process_IN_MOVED_TO(self, event):
            print "[!] File or dir been moved to here: " + event.pathname
            DeleteFileOrDir(event.pathname)
def DeleteFileOrDir(target):
    if os.path.isdir(target):
        fileslist = os.listdir(target)
        for files in fileslist:
            DeleteFileOrDir(target + "/" + files)
        try:
            os.rmdir(target)
            print "     >>> Delete directory successfully: " + target
        except:
            print "     [-] Delete directory failed: " + target
    if os.path.isfile(target):
        try:
            os.remove(target)
            print "     >>> Delete file successfully" + target
        except:
            print "     [-] Delete file filed:  " + target
def Monitor(path):
        wm = WatchManager()
        mask = IN_DELETE | IN_CREATE | IN_MOVED_TO | IN_ATTRIB
        notifier = Notifier(wm, EventHandler())
        wm.add_watch(path, mask,rec=True)
        print '[+] Now Starting Monitor:  %s'%(path)
        while True:
                try:
                        notifier.process_events()
                        if notifier.check_events():
                                notifier.read_events()
                except KeyboardInterrupt:
                        notifier.stop()
                        break
                        
if __name__ == "__main__":
    parser = argparse.ArgumentParser(
        usage="%(prog)s -w [path]",
        description=('''
            Introduce:Simple Directory Monitor!  by ssooking''')
    )
    parser.add_argument('-w','--watch',action="store",dest="path",default="/var/www/html/",help="directory to watch,default is /var/www/html")
    args=parser.parse_args()
    Monitor(args.path)

在python配置目錄不可控的情況下

參考這里尋找的腳本,放置到可以寫讀的目錄仰剿,自動刪除創(chuàng)建的php文件

#!/usr/bin/python
#coding=utf-8
#Usage :python demo.py
#Code by : AdminTony
#QQ : 78941695
#注意:要將此文件放在有讀寫權(quán)限的目錄以及所有修改過的php必須在此目錄或者該目錄的子目錄中创淡。
#作用:讀取被修改過的文件,然后將文件的地址加上內(nèi)容全部存放在txt

import sys,subprocess,os
#查找最近10分鐘被修改的文件
def scanfile():
    #command: find -name '*.php' -mmin -10
    command = "find -name \'*.php\' -mmin -10"
    su = subprocess.Popen(command,shell=True,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
    STDOUT,STDERR = su.communicate()
    list = STDOUT.split("\n")
    #print str(list)
    #將文件處理成list類型然后返回南吮。
    return list

#讀取文件:
def loadfile(addr):
    data = ""
    #如果文件不存在就跳出函數(shù)
    try :
        file = open(addr,'r')
        data = file.read()
    except : 
        return 0
    all_data = addr+"\n"+data+"\n\n"
    file1 = open("shell.txt",'a+')
    #避免重復(fù)寫入
    try:
        shell_content = file1.read()
    except:
        shell_content = "null"
    #如果文件內(nèi)容不為空再寫入琳彩,避免寫入空的。
    #print shell_content
    if data :
        if all_data not in shell_content:
            file1.write(all_data)
    file.close()
    file1.close()
    rm_cmd = "rm -rf "+addr
    su = subprocess.Popen(rm_cmd,shell=True,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
    su.communicate()
    print "loadfile over : "+addr

if __name__ == '__main__':
    while True:

        list = scanfile()
        if list :
            for i in range(len(list)):
                #如果list[i]為空就不讀取了
                if list[i]:
                    loadfile(str(list[i]))
        else : pass

這樣部凑,前期的工作已經(jīng)完成汁针。

假flag

這里參考一航師傅

curl

alias curl='python -c "__import__(\"sys\").stdout.write(\"flag{%s}\\n\" % (__import__(\"hashlib\").md5(\"\".join([__import__(\"random\").choice(__import__(\"string\").letters) for i in range(0x10)])).hexdigest()))"'
cat 

alias cat='python -c "__import__(\"sys\").stdout.write(\"flag{%s}\\n\" % (__import__(\"hashlib\").md5(\"\".join([__import__(\"random\").choice(__import__(\"string\").letters) for i in range(0x10)])).hexdigest()))"'

代碼審計

前期已經(jīng)將一些基礎(chǔ)的內(nèi)容都做了,這里就開始代碼審計
首先推薦用seay源碼審計工具掃描查看sql注入砚尽,文件上傳等情況

sql注入
addslashes()
mysql_real_escape_string()

其實awd中主要還是根據(jù)官方后門來打施无,源碼審計出新漏洞一般都是抄作業(yè),新手還是很難挖掘出漏洞的

殺不死馬

1.重啟服務(wù)(一般沒權(quán)限)
2.
<?php
while (1) {
    $pid=1234;
    @unlink('.demo.php');
    exec('kill -9 $pid');
}
?>

參考:

https://github.com/admintony/Prepare-for-AWD
https://blog.csdn.net/qq_42572322/article/details/81700635

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末必孤,一起剝皮案震驚了整個濱河市猾骡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌敷搪,老刑警劉巖兴想,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異赡勘,居然都是意外死亡嫂便,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進(jìn)店門闸与,熙熙樓的掌柜王于貴愁眉苦臉地迎上來毙替,“玉大人,你說我怎么就攤上這事践樱〕Щ” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵拷邢,是天一觀的道長袱院。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么忽洛? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任腻惠,我火速辦了婚禮,結(jié)果婚禮上欲虚,老公的妹妹穿的比我還像新娘集灌。我一直安慰自己,他們只是感情好苍在,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布绝页。 她就那樣靜靜地躺著荠商,像睡著了一般寂恬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上莱没,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天初肉,我揣著相機(jī)與錄音,去河邊找鬼饰躲。 笑死牙咏,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的嘹裂。 我是一名探鬼主播妄壶,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼寄狼!你這毒婦竟也來了丁寄?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤泊愧,失蹤者是張志新(化名)和其女友劉穎伊磺,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體删咱,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡屑埋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了痰滋。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片摘能。...
    茶點(diǎn)故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖敲街,靈堂內(nèi)的尸體忽然破棺而出徊哑,到底是詐尸還是另有隱情,我是刑警寧澤聪富,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布莺丑,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏梢莽。R本人自食惡果不足惜萧豆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望昏名。 院中可真熱鬧涮雷,春花似錦、人聲如沸轻局。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽仑扑。三九已至览爵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間镇饮,已是汗流浹背蜓竹。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留储藐,地道東北人俱济。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像钙勃,于是被迫代替她去往敵國和親蛛碌。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容