一個完整的項目流程圖,一個完整的項目流程圖包括?

0x00 前言

之前做的一個實戰(zhàn)項目,共耗時三個月,我參與了從開始的信息收集到最后數(shù)據(jù)分析的全流程。期間遇到并克服了許多困難與波折,其過程在此記錄并分享給大家。

項目特點:

1、目標(biāo)以正常的生產(chǎn)狀態(tài)參與項目,沒有事先準(zhǔn)備。

2、攻擊過程不限制路徑和手段。

3、以拿到目標(biāo)的數(shù)據(jù)和人員身份為目的。

4、幾乎無時間限制,比速度和權(quán)限更重要的要求是穩(wěn)。

0x01 外部打點+撕開口子

一開始拿到的是目標(biāo)的公司名和官網(wǎng)的url,除此之外沒有其他信息。自然首先要進(jìn)行的步驟是踩點——信息收集

經(jīng)過幾天的信息收集,我大概了解的目標(biāo)的基本情況:公網(wǎng)上能訪問到目標(biāo)的生產(chǎn)環(huán)境和測試環(huán)境,目標(biāo)有幾個app都是套殼的,本質(zhì)是調(diào)用了web端的api接口。

(1)生產(chǎn)環(huán)境:均部署在阿里云,收集到幾個后臺,一個官網(wǎng),一些app的api接口域名(直接訪問是403,404),每個資產(chǎn)有單獨的外網(wǎng)ip地址。

(2)測試環(huán)境:和生產(chǎn)環(huán)境基本一樣的資產(chǎn),只不過都部署在同一個ip上,通過不同域名來反向代理,不是云服務(wù)器,后面發(fā)現(xiàn)是目標(biāo)自建的機房。

(3)人員信息:從目標(biāo)官網(wǎng)的新聞動態(tài)和招聘網(wǎng)站上,收集到公司大體的人員架構(gòu)——姓名,職位,部門。

外部信息收集的差不多的時候,就順其自然的可以打入目標(biāo)內(nèi)網(wǎng)了。之前發(fā)現(xiàn)目標(biāo)測試環(huán)境都在同一個ip,掃該ip的全端口,在9999端口上發(fā)現(xiàn)一個xxl-job分布式任務(wù)調(diào)度平臺,xxl-job的作用大概是能遠(yuǎn)程控制很多機器定期自動執(zhí)行某些任務(wù),這些被控制的機器稱為執(zhí)行器。

用默認(rèn)口令 admin/123456 進(jìn)入xxl-job后臺,后臺可以添加GLUE(SHELL)計劃任務(wù),但這個感覺是廢棄或測試的資產(chǎn),里面只有一個執(zhí)行器還是它自己。

通過后臺添加計劃任務(wù)反彈shell,拿下目標(biāo)內(nèi)網(wǎng)一臺linux服務(wù)器,普通用戶權(quán)限。首先沒有嘗試提權(quán),提權(quán)exp有可能導(dǎo)致系統(tǒng)崩潰,只有一個入口的情況下要好好珍惜。

并且現(xiàn)在就算不提權(quán)也能做很多事情,在該機器上打nps隧道代理進(jìn)入目標(biāo)內(nèi)網(wǎng),雖然之前收集到目標(biāo)應(yīng)該是沒有安全團(tuán)隊的,但還是因為剛進(jìn)來不了解目標(biāo)內(nèi)網(wǎng)情況,沒有進(jìn)行大規(guī)模掃描(慫)。

PS:我怎么通過前期信息收集判斷目標(biāo)是否有安全團(tuán)隊:

1、招聘網(wǎng)站和目標(biāo)官網(wǎng)中沒發(fā)現(xiàn)安全部門的存在。

2、信息收集過程中除阿里云自帶的waf外,沒見到其他安全措施。

3、xxl-job默認(rèn)口令都敢放到公網(wǎng)上。

當(dāng)然判斷不可能說100%準(zhǔn)確,我為了求穩(wěn),打算用手工探測內(nèi)網(wǎng)80端口——就是在瀏覽器手動輸入同網(wǎng)段的ip地址,從1-255……

0x02 誤入歧途+靈光一閃

255個沒有全部輸完,大概二十幾個之后,發(fā)現(xiàn)了內(nèi)網(wǎng)的gitlab代碼倉庫,其開啟了注冊功能,注冊一個賬號登入,里面只有兩個項目,下載回來看了一遍沒什么價值。

轉(zhuǎn)變思路,收集開發(fā)人員的郵箱,去sgk查密碼,拿到了其中一人的手機號和通用密碼,然后社工撞庫,一系列流程過后,收集到了他大量的信息,并登入他的微博,看博文的小尾巴得知其手機品牌,最后登入他的對應(yīng)品牌的手機云盤。

這種云盤登錄后是不能直接查看信息的,還需要手機驗證碼二次確認(rèn),但我手里有這個人的大量信息,直接套路客服更改綁定手機號獲取到訪問權(quán)限,不過里面沒發(fā)現(xiàn)有用的東西。

一般這種情況我們稱之為:打偏了。

重新把重心轉(zhuǎn)回內(nèi)網(wǎng),感覺還是要從gitlab下手,之前里面沒什么東西可能是因為注冊的賬號權(quán)限不夠。

準(zhǔn)備字典爆破gitlab其他用戶名,用戶名字典除了用收集的人名生成,還把前期收集到的域名也放了進(jìn)入,最后發(fā)現(xiàn)其中一個域名作為用戶名存在,再爆破它的密碼就是簡單的域名+123。

爆破時使用針對目標(biāo)信息生成的字典是很有必要的,之前我寫過一篇人名字典生成的腳本:《分享 | 人名字典生成腳本》

言歸正傳,用該賬號登入gitlab,果然發(fā)現(xiàn)了大量源碼,拖回來看了三天,收集到了內(nèi)網(wǎng)的一個業(yè)務(wù)數(shù)據(jù)庫權(quán)限和大量redis權(quán)限,但是業(yè)務(wù)數(shù)據(jù)庫里的數(shù)據(jù)比較老,差了兩年多。

0x03 權(quán)限通殺+意外之喜

先放下數(shù)據(jù)庫不管,隨便挑了一臺redis,寫計劃任務(wù)getshell,發(fā)現(xiàn)是root權(quán)限。關(guān)于redis的getshell方法我之前也寫過一篇文章:

《實驗|CentOs下Redis漏洞利用方式復(fù)現(xiàn)》

在root用戶的.bash_history中發(fā)現(xiàn)明文口令,然后碰撞發(fā)現(xiàn)基本通殺了目標(biāo)內(nèi)網(wǎng)的所有l(wèi)inux服務(wù)器,不過不能登入生產(chǎn)環(huán)境的阿里云服務(wù)器。

用這個密碼在目標(biāo)內(nèi)網(wǎng)開始探測,基本流程應(yīng)該是:登入linux服務(wù)器,看上面運行了什么東西,從數(shù)據(jù)庫中或配置文件中收集目標(biāo)信息和用戶口令,然后帶著收集的信息再繼續(xù)碰撞下一臺……

當(dāng)時做項目的時候沒什么經(jīng)驗,在目標(biāo)內(nèi)網(wǎng)數(shù)百臺服務(wù)器中迷失了方向,每登入一臺服務(wù)器都要看好久,把有用沒用的信息和文件都拖回來分析。如果換成現(xiàn)在,我會關(guān)注自己最終的目標(biāo)是數(shù)據(jù),收集的信息應(yīng)該是明確的和數(shù)據(jù)庫相關(guān)的——應(yīng)用配置,數(shù)據(jù)庫端口等,這樣效率會高一些。

當(dāng)時我大概登了五六臺機器后沒什么大的收獲,這時突然想起來應(yīng)該做一些權(quán)限維持了,目前權(quán)限維持就只是打了幾條隧道而已,如果被管理員發(fā)現(xiàn)直接ban了nps服務(wù)器的ip那權(quán)限一瞬間就全不見了。

通過咨詢身邊的大佬,我選擇了pam后門進(jìn)行權(quán)限維持,pam后門:重新編譯并替換服務(wù)器上ssh連接鑒權(quán)所用的一個文件,之后便可以在不影響ssh正常使用的情況下用自己的后門密碼登錄服務(wù)器。

因為之前收集到目標(biāo)外網(wǎng)的測試環(huán)境的ip是開了一個22端口的,所以選擇了這個方式,以便在內(nèi)網(wǎng)權(quán)限丟失的時候能重新打入。直接用通殺的密碼連接這個端口,進(jìn)到內(nèi)網(wǎng)的又一臺機器上,在上面留下了pam后門。

這時順手又對這臺機器進(jìn)行信息收集,意外的發(fā)現(xiàn)了一個運維腳本,里面記錄了內(nèi)網(wǎng)另一個網(wǎng)段的一臺業(yè)務(wù)數(shù)據(jù)庫的ip和密碼,連接后發(fā)現(xiàn)雖然數(shù)據(jù)仍然不是實時在用的,但是很新,于是根據(jù)這個數(shù)據(jù)庫的連接情況反查到內(nèi)網(wǎng)的核心后臺,在數(shù)據(jù)和源碼都在手的情況下開始向客戶交付。

0x04 未完待續(xù)

花費了三天時間對目標(biāo)進(jìn)行信息收集并打入內(nèi)網(wǎng),拿到了通殺內(nèi)網(wǎng)服務(wù)器的口令,又發(fā)現(xiàn)了可以交付的數(shù)據(jù),看似這個項目已經(jīng)快結(jié)束了,但其實這時才只過了一個月而已。在之后長達(dá)兩個月項目過程中,手里獲得的數(shù)據(jù)庫權(quán)限經(jīng)歷了三次波折——得而復(fù)失,失而復(fù)得。

中間甚至遇到了一次幾年不遇的突發(fā)情況導(dǎo)致內(nèi)網(wǎng)權(quán)限盡失,并且驚動了目標(biāo)運維人員。后面會記錄我如何和管理員斗智斗勇恢復(fù)并維持權(quán)限。

還有其他的問題:

1、怎么打入生產(chǎn)環(huán)境拿到最新的數(shù)據(jù)。

2、目標(biāo)內(nèi)網(wǎng)非域架構(gòu),如果非要不可,怎么拿到關(guān)鍵員工的個人機權(quán)限(財務(wù),運維等)。

0x05 權(quán)限初掉+打怪升級

因為目標(biāo)的系統(tǒng)和數(shù)據(jù)架構(gòu)都很復(fù)雜,數(shù)據(jù)量也比較大,為了避免驚動目標(biāo),此時并沒有一次性把全部數(shù)據(jù)都拖回來(也是沒想到后面數(shù)據(jù)庫權(quán)限會掉)。

當(dāng)時根據(jù)客戶要求先弄回了部分比較重要的表。然后自己就結(jié)合后臺功能對數(shù)據(jù)進(jìn)行初步的屬性和用途判斷,是個很繁瑣的工作。

大概拿到數(shù)據(jù)庫的幾天后,在我對后臺做一些操作時,突然發(fā)現(xiàn)數(shù)據(jù)庫連不上了,再過幾分鐘發(fā)現(xiàn)后臺也沒了!ping 了一下數(shù)據(jù)庫和后臺應(yīng)用兩臺服務(wù)器發(fā)現(xiàn)是關(guān)機了。當(dāng)時嚇得我還以為是我把服務(wù)弄壞了,后面才得知目標(biāo)這兩臺服務(wù)器就是會定期關(guān)閉的,極少部分時間才會開機做測試。

這是項目的第一次波折,沒了數(shù)據(jù)庫權(quán)限的我繼續(xù)在內(nèi)網(wǎng)中漫無目的的飄蕩:登錄服務(wù)器收集信息,用瀏覽器查看占用端口的應(yīng)用,了解源碼功能,批量掃端口……這個過程又持續(xù)了很久很久,過程中我對目標(biāo)的系統(tǒng)和內(nèi)網(wǎng)的了解逐步加深。

就像游戲里的打怪練級一樣,每一天的探測都會讓我增加很多經(jīng)驗值,終于經(jīng)驗值足夠的時候,就可以升級了——經(jīng)過N天的探測后,我摸清了內(nèi)網(wǎng)的測試應(yīng)用服務(wù)器的位置,同時發(fā)現(xiàn)他們中的大部分使用的是阿里云的rds數(shù)據(jù)庫。

即使從配置文件中獲得了賬號和密碼,rds數(shù)據(jù)庫也是遠(yuǎn)程連接不上的,后面我自己去阿里云開了一臺數(shù)據(jù)庫,了解了一下基本配置后發(fā)現(xiàn)數(shù)據(jù)庫需要設(shè)置ip白名單后才可以對外網(wǎng)映射端口,但我當(dāng)時也是掛著目標(biāo)內(nèi)網(wǎng)的代理去訪問的,怎么會受到白名單限制呢,這個問題卡了我?guī)滋鞄滓埂?/span>

突然在一個快下班的周五,也許是經(jīng)驗值夠了,我突然靈光一現(xiàn)的想到:即使是目標(biāo)的內(nèi)網(wǎng),可能不同的網(wǎng)段,或者不同的服務(wù)器出口ip也是不一樣的。后面打進(jìn)了目標(biāo)的路由器才知道,能連通他們數(shù)據(jù)庫的出口ip只分配給了大概五臺服務(wù)器,驗證了我的想法。

不過當(dāng)時沒有路由器的權(quán)限,并且已經(jīng)探測許久,士氣有些許低落,但我還是打起精神去嘗試了——登錄他們某臺應(yīng)用服務(wù)器,新打了一條nps隧道,然后連接這條隧道再一次嘗試遠(yuǎn)程連接阿里云數(shù)據(jù)庫。突然就成功了!數(shù)據(jù)雖然仍不是實時的,但是比之前那個還新。于是那個周五我搞到了晚上十一點才回家……

0x06 權(quán)限二掉+權(quán)限盡失

有了第一次的教訓(xùn),這次拿到數(shù)據(jù)庫后我?guī)缀跏邱R不停蹄的dump數(shù)據(jù),果不其然,一個周末之后數(shù)據(jù)庫就又沒了。登錄內(nèi)網(wǎng)的應(yīng)用服務(wù)器看應(yīng)用日志,發(fā)現(xiàn)它們自己也連不上了。

后面得知因為目標(biāo)的生產(chǎn)環(huán)境不在內(nèi)網(wǎng),所以內(nèi)網(wǎng)這些應(yīng)用只有在產(chǎn)品更新之前才會短暫的連通數(shù)據(jù)庫進(jìn)行測試,產(chǎn)品上線成功后內(nèi)網(wǎng)這些應(yīng)用就處于停滯狀態(tài),開發(fā)人員平時用的是內(nèi)網(wǎng)的另外一批應(yīng)用,它們用的是內(nèi)網(wǎng)中數(shù)據(jù)特別老的那幾臺數(shù)據(jù)庫,對我們沒什么價值。

不過這次對我的打擊并沒有第一次那么大,首先我差不多已經(jīng)dump下了70%的數(shù)據(jù),其次做過GA項目的師傅應(yīng)該清楚,此時已經(jīng)不再需要我去獲取權(quán)限了。大概一個流程的時間(兩周),我被客戶要求不要再驚動目標(biāo)。

于是這段時間,我就安安靜靜的繼續(xù)探索目標(biāo)的內(nèi)網(wǎng)(只登錄服務(wù)器,不登錄應(yīng)用)。不同于之前找數(shù)據(jù)的目的,這次的探索的重心是摸清目標(biāo)組織架構(gòu)、人員信息、源碼信息等等?,F(xiàn)在回想起來,其實還是一個簡單的打怪升級的過程。歲月靜好的這段時間讓我沒想到后面還會有一場和管理員纏斗的血雨腥風(fēng)。

記得那是一個快下班的周一,突然我發(fā)現(xiàn)我在目標(biāo)內(nèi)網(wǎng)打的所有隧道全掉了!最開始用于打入內(nèi)網(wǎng)的xxl-job也不見了,留了pam后門的外網(wǎng)22端口也不通了。當(dāng)時還抱有一絲僥幸,因為我還在幾臺服務(wù)器上留了計劃任務(wù)后門——在每天上午的固定時間向我的vps反彈shell。于是我就按時下班了。

第二天上班,早早的登陸vps開啟監(jiān)聽,結(jié)果過了當(dāng)初設(shè)定的時間還沒收到shell,這是我才遲鈍的感覺到事情有點不太對。又經(jīng)過一小時的確認(rèn),我終于站起來和老大說了一句:“XXX(目標(biāo)名)的權(quán)限全沒了……”

雖然客戶那邊可以搞定數(shù)據(jù)的問題,但目標(biāo)系統(tǒng)架構(gòu)復(fù)雜,數(shù)據(jù)混亂,之后還是需要內(nèi)網(wǎng)的一些權(quán)限的,不然很難搞定這個項目。

將近兩個月的探索,我對目標(biāo)內(nèi)網(wǎng)的熟悉程度都可以去面試他們的運維了,結(jié)果現(xiàn)在“啪”的一下就沒了,沮喪情緒是肯定有的,但滲透工作就是會這樣一波三折。能承受靈光一閃獲得權(quán)限的意外之喜,就要承受突然之間權(quán)限盡失的意外之痛。經(jīng)過一分鐘的冷靜之后,我重新開始了外部打點

0x07 百折不撓+如影隨形

一天的打點一無所獲,下班后去食堂吃了頓飯,回到工位看著電腦,鬼使神差的進(jìn)行今天的最后一次嘗試:再掃一次目標(biāo)外網(wǎng)ip的全端口,結(jié)果發(fā)現(xiàn)那臺熟悉的xxl-job又出現(xiàn)了!同樣的默認(rèn)密碼登入,十分小心又熟練的再次getshell,進(jìn)到內(nèi)網(wǎng)發(fā)現(xiàn)通殺密碼沒有改,趕快一條一條恢復(fù)了所有的隧道

做完權(quán)限恢復(fù)的工作,開始翻看服務(wù)器各種日志了解權(quán)限丟失的原因,才知道自己遇到了幾年不遇的突發(fā)情況——目標(biāo)內(nèi)網(wǎng)所有的服務(wù)器都關(guān)機了一遍,直到一天之后的現(xiàn)在才重啟回來。眾所周知,服務(wù)器一般是不會關(guān)機的,之前探測內(nèi)網(wǎng)的過程中我也看到目標(biāo)的服務(wù)器已經(jīng)連續(xù)運行幾年了,所以打nps隧道時沒有考慮到這一點,是直接運行的,關(guān)機后就斷了。

得知原因的我又去多打了幾條隧道,不同以往的是這次的nps隧道是注冊成服務(wù)的方式運行,可以實現(xiàn)開機自啟的效果。同時去復(fù)查了一下之前留的計劃任務(wù),發(fā)現(xiàn)還在,看來管理員并沒有發(fā)現(xiàn)我的存在。因為已經(jīng)搞到差不多晚上11點了,做完這些工作后我就下班回家了。

沒慶幸多久,第二天上班我發(fā)現(xiàn)隧道掉了一條,xxl-job又不見了。通過還在的隧道進(jìn)入內(nèi)網(wǎng)翻看服務(wù)器上管理員的history,發(fā)現(xiàn)管理員在某臺機器上發(fā)現(xiàn)了我留的計劃任務(wù)后門,采取了應(yīng)急措施(關(guān)機)導(dǎo)致我的隧道斷了一條。

不過這個管理員并不是安全人員(上周文章判斷目標(biāo)沒有安全人員),只是一個運維,對安全應(yīng)急響應(yīng)似乎了解的不多。

他只是一臺一臺的登陸檢查計劃任務(wù),查到的就清除計劃任務(wù)并重啟,同時關(guān)閉了內(nèi)網(wǎng)對外網(wǎng)的一切端口映射,其實并沒有發(fā)現(xiàn)我留的隧道。而且因為我每次登陸后日志清除的很徹底,他也不知道我到底干了什么,掌握了什么信息。我甚至可以和他登陸同一臺服務(wù)器而不被發(fā)現(xiàn)。

那一天,我就跟著管理員的步伐,維持了我全部的隧道不被斷掉,同時悄悄登陸他們的路由器,重新對外網(wǎng)映射出一個留了pam后門的22端口。計劃任務(wù)后門我沒再留了,因為這已經(jīng)是目標(biāo)運維的排查范圍,重復(fù)留的話意義不大。

如果這個管理員不是運維,而是安全人員的話,我現(xiàn)在應(yīng)該已經(jīng)涼了。但很可惜,這個管理員并沒對我造成太多麻煩,反而在這一次風(fēng)波后幫助了我打入生產(chǎn)環(huán)境。

0x08 求求你招個安全吧

經(jīng)過一天的梳理,我列舉一下計劃任務(wù)后門被管理員發(fā)現(xiàn)后,管理員采取的措施:

1、關(guān)閉對外網(wǎng)的所有映射端口,但是沒再去檢查路由器,同時沒有關(guān)閉路由器自己的映射端口。

2、一臺一臺的排查計劃任務(wù)后門,但沒有排查到nps隧道的存在。

3、更改了部分服務(wù)器的ssh端口,但沒有改密碼,是的,一臺都沒改,還是通殺。(改端口能攔住黑客?)

4、使用ansiable工具輔助排查,這個工具具體是什么原理我不太了解,只知道運維把服務(wù)器的ssh賬號密碼寫在了一個文件里,讓工具去讀取,然后實現(xiàn)批量登陸執(zhí)行命令的目的。

5、文件記錄了生產(chǎn)環(huán)境的阿里云服務(wù)器的賬號密碼,通關(guān)!

就這樣,讓一個運維去做安全人員的工作的結(jié)果是:不但制止不了攻擊者,反而給攻擊者提供了更多的便利。只有安全人員才會真正的重視安全。

0x09 收尾工作

權(quán)限穩(wěn)穩(wěn)的留住了,之后沒再出什么差錯??蛻裟沁叺牧鞒桃沧咄炅耍缶瓦M(jìn)入了復(fù)雜枯燥的數(shù)據(jù)分析過程。最后再分享兩個tips和一件趣事吧:

Q1:運維人員只記錄了生產(chǎn)環(huán)境部分服務(wù)器的密碼(生產(chǎn)環(huán)境密碼非通殺),有一些沒有記錄密碼的服務(wù)器卻又需要登入,怎么辦?

A1:目標(biāo)生產(chǎn)環(huán)境有一臺跳板機,運維人員通過這臺跳板機去ssh連接其他服務(wù)器,在這臺跳板機上留alias別名后門即可抓到ssh連接使用的密碼。

Q2:目標(biāo)內(nèi)網(wǎng)非域架構(gòu),但后期項目需要拿到目標(biāo)財務(wù)人員辦公機上的文件,怎么通過服務(wù)器打入特定人員的個人機:

A2:登入目標(biāo)生產(chǎn)環(huán)境的后臺,找一個只有財務(wù)人員可見的板塊,但是沒找到,只有一個板塊部分符合要求——所有財務(wù)人員和一個運維有權(quán)限可見,于是去生產(chǎn)環(huán)境數(shù)據(jù)庫把運維的權(quán)限改沒,就變成了只有財務(wù)人員可見。之后在這個版塊留xss水坑攻擊,引導(dǎo)訪問此板塊的人員下載木馬,成功釣上來一個財務(wù),拿到了其個人機的文件。

3、趣事:我在探測內(nèi)網(wǎng)時拿到了目標(biāo)公司的攝像頭總控權(quán)限,可以直播觀看目標(biāo)公司日常辦公、開會和員工摸魚的全過程。

0x0a 后記

歡迎關(guān)注小黑,以后會繼續(xù)給大家分享我在工作中的實戰(zhàn)經(jīng)歷~

如果我的分享對你有幫助,可以在下面贊賞鼓勵!

END.


喵,點個贊再走吧~

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 sumchina520@foxmail.com 舉報,一經(jīng)查實,本站將立刻刪除。

相關(guān)新聞

聯(lián)系我們

聯(lián)系我們

400-9010-860

在線咨詢:點擊這里給我發(fā)消息

微信:85018612

商夢建站客服

工作時間:周一至周六

9:00-18:30,節(jié)假日休息

關(guān)注微信
關(guān)注微信
分享本頁
返回頂部