我是这样打造自已的“菜刀”的,让一句话飞一会

admin 2021年4月2日19:32:52评论67 views字数 4057阅读13分31秒阅读模式

本文内容仅供研究,请勿用于非法用途!!!

很久很久以前,我在管理服务器的时候总喜欢放个一句话,然后菜刀连之,管理网站又方便又简单。

后来X客、X客、X客…… 也使用同样的方法“管理”网站服务器。网站木马的查杀遇到了不少困难,各种隐藏、编码。

再后来研究攻击的同学都改行做防御了,于是狗、神、盾…… 出现并且普及了。为了方便我也在服务器上装了X狗,虽然起到了一定的作用,但是菜刀也就没法用了。用OD修改了菜刀,但用了不长时间又不能用了(想必用此方法的坏同学不少),多次修改后发现关键代码都写到服务端了。这其间给自己带来了不少麻烦,于是决定研究一下菜刀和X狗(神、盾没研究过,原理应该相近);于是就有了这篇文章,方便遇到同样问题的网管朋友解决问题。

本文没什么技术,也没有什么水平,仅供消遣大牛勿喷。

下面开始我们的自写菜刀之旅吧……

工具:任意一面向对象的编程语言(我用的是VB)

原版菜刀(不好意思了,为了加快打造进程,拿来截一下数据,拿来主义……)

WinSock Expert(任意可截数据包的工具都行,不一定非要这个)

ASP+.NET+PHP运行环境(至于JSP、CFM等,自已发挥吧)

(BurpSuite-Repeater)/(WinSock Expert-NC)/(Firefox-Hackbar)(可以Post数据的都行,方便调试的)

SQL(这个是必须的,至少要懂ACCESS)

步骤:

Step1: (VB)新建窗体,在窗体上画好控件。要用到的控件有SSTab、ListView、TextBox、TreeView、PictureBox、CommonDialog、ComboBox、StatusBar、CommandButton、Inet、ImageList、Label、Adodc、RichTextBox、Timer。

1、主窗体布局

2、文件管理窗体布局

3、数据库管理窗体布局

4、文件编辑窗体布局

5、虚拟终端窗体布局

Step2:截取原版菜刀和服务端的往来数据包加以分析

原菜刀Post的数据(ASP)如下:

其中有N多WAF检查的关健字,我的目标是让Post的数据中不存在任何关健字。

原菜刀Post到服务端的数据经解码后如下(我使用的服务端是):

z=Execute("Execute(""On+Error+Resume+Next:Function+bd(byVal+s):For+i=1+To+Len(s)+Step+2:c=Mid(s,i,2):If+IsNumeric(Mid(s,i,1))+Then:Execute(""""bd=bd&chr(&H""""&c&"""")""""):Else:Execute(""""bd=bd&chr(&H""""&c&Mid(s,i+2,2)&"""")""""):i=i+2:End+If""&chr(10)&""Next:End+Function:Response.Write(""""->|""""):Execute(""""On+Error+Resume+Next:""""&bd(""""44696D20533A533D5365727665722E4D61707061746828222E2229266368722839293A53455420433D4372656174654F626A6563742822536372697074696E672E46696C6553797374656D4F626A65637422293A496620457272205468656E3A4572722E436C6561723A456C73653A466F722045616368204420696E20432E4472697665733A533D5326442E44726976654C657474657226636872283538293A4E6578743A456E642049663A526573706F6E73652E5772697465285329"""")):Response.Write(""""|

多次思量之后我决定将bd(Str)这个函数写进服务端,经过改进后服务端代码如下:


客户端的Post的代码如下:

Post("z=" & be(DeMorfiCoder(Data)))——————伪代码

be(str)为bd(str)的编码函数;

DeMorfiCoder(str)为MorfiCoder(str)的编码函数;

其实MorfiCoder(Code)和bd(ByVal s)用一个就可达到满意的效果了,我使用两个只是画蛇添足而已。另外也不仅仅只限这两个函数,只要可以编码字符串并可写出解码还原的函数都可以(注意传输过程中的转义等等)。

至此只剩下服务端一个关键字,而且在Post的数据中也不再有任何关键字了(原菜刀的z0、z1等也可以通过更改Post数据来替换)。

Step3:接收返回数据,进行字串处理

原版菜刀返回数据的格式(Readme.txt中也有):

->|c:inetpubwwwroot C:D:E:F:G:H:I:J:K:|

我并没有采用这种格式,我是将返回的数据前加一段字符串以区分获取目录、读写文件等不同的操作。

我使用的格式是:

Step1{||}c:inetpubwwwroot{||}C:D:E:F:G:H:I:J:K:{||}

StepX用于区分不同的操作,之后将字符串以{||}分割存入数组以进行下一步操作。

在获得返回数据并具存入数组后,就可以开始TreeView和ListView等事件的编写了。这些都依照原版菜刀,在这个过程中我也加入了菜刀不具有的功能,比如查询主机的地理位置、更改文件属性等。

最终效果:

1、客户端列表

2、文件列表

3、数据库管理

4、文件编辑

5、虚拟终端

不知道现在的WAF有没有拦截返回数据的,我使用的菜刀只对数据进行了单向编码;如果返回数据中也有敏感字符的话,是不是也会被拦呢…… 那时返回数据也得进行编码了,客户端接收到数据后再解码还原。至于服务端代码,除非完全杀了Eval、Execute、ExecuteGlobal、assert、include……否则是不能赶尽杀绝的(最根本的方案是厂商在Web容器中检测危险代码,容器环境中的检测均会出现N多绕过——我的愚见)。

如果您是程序猿的话,我所写的这些对您来说简直是垃圾中的垃圾,勿喷……*^_^*

[原文地址]

相关讨论:

1#

Csser | 2013-11-11 18:51

看起来很nice

2#

NetSeif | 2013-11-11 18:52

不明觉厉!

3#

园长 (你在身边就是缘,缘分写在数据库里面。) | 2013-11-11 18:55

改改界面就行了,略改下关键字毕竟脚本都已经写好了。

4#

MeirLin (心若在~梦就在~) | 2013-11-11 18:55

加闪电的节奏、

5#

国士无双 (你这个是跟我闹呐?) | 2013-11-11 20:05

非常好,关注之~

6#

insight-labs (Root Yourself in Success) | 2013-11-11 20:29

@园长

写个java的吧……

7#

汉时明月 (?......核审在正长超名签 我是这样打造自已的“菜刀”的,让一句话飞一会 | 2013-11-11 22:57

大牛啊,能否分享一下vb源码

8#

Matt | 2013-11-11 23:08

其实没必要重写UI,像剑心说的 写个中转程序 里面修改下就哦了

9#

冷冷的夜 (从前有个人,他不喜欢我;后来,他死了) | 2013-11-11 23:12

nice,球代码学习一下

10#

nauscript (@VIP @齐迹 @园长 @ACGT @z7y @小胖子@PX1624) | 2013-11-11 23:20

赞一个

11#感谢(1)

船长 (0day溢出大量放送,点击右边感谢,马上送出) | 2013-11-11 23:22

学习 求源码一份

12#

落叶纷飞 (im luoye,Once the 00day) | 2013-11-12 09:11

楼主是BK的?

13#

RedFree (才发现了,自己是自己的神器。) | 2013-11-12 09:39

@落叶纷飞 何为BK?不解其意。

14#

逝情 (弱爆了弱爆了) | 2013-11-12 09:57

不错,收集了。

15#

乌帽子 (儿啊,到大城市切莫乱搞女人啊,染上什么病回来传染给) | 2013-11-12 10:43

好山寨,代码不会写怎么办?

16#

RedFree (才发现了,自己是自己的神器。) | 2013-11-12 11:14

@乌帽子 Post的数据包全部山寨于原菜刀,只要做好字符串、各种编码的处理就行了。

17#

核攻击 (统治全球,奴役全人类!毁灭任何胆敢阻拦的有机生物!) | 2013-11-12 16:19

嗯,自己动手!丰衣足食!严重鼓励!

18#

RedFree (才发现了,自己是自己的神器。) | 2013-11-12 16:35

@核攻击 鼓励也要用“严重”这个词,我都有点害怕了……

留言评论(旧系统):

佚名 @ 2013-11-13 23:45:38

怎么搞起的没有下载地址?

本站回复:

暂时木有……

flowind @ 2013-11-14 10:27:30

作用就一个过WAF..
这样弄代码量以及工作量都很大..
上面就提到直接写个代理中转.这个就简单.
关键适用性很好..不仅仅只适用于这一款软件.
很多不能过WAF都可以使用这样的代理中转..

本站回复:

正解!代理中转省事又高效!

佚名 @ 2013-11-15 16:12:27

请问一下,asp的怎么代理中转阿,不如php的可以直接用curl把post来的数据进行base64加密然后服务端进行解密。asp的该怎么实现类似的功能,有相关的文章吗? 对asp不是很熟啊,谢谢了

本站回复:

使用任何一个http通讯组件即可实现http数据转发,很简单的,例如最基本的代码:

参考资料:http://lcx.cc/?i=2163

佚名 @ 2013-12-18 12:49:58

有偿求过狗刀,QQ:1340618936

本站回复:

。。。。。。

文章来源于lcx.cc:我是这样打造自已的“菜刀”的,让一句话飞一会

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年4月2日19:32:52
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   我是这样打造自已的“菜刀”的,让一句话飞一会http://cn-sec.com/archives/316042.html

发表评论

匿名网友 填写信息