危险漫步博客
新鲜的“黑客思维”就是从全新的角度看待黑客技术,从更高的层面去思考;专注于黑客精神及技术交流分享的独立博客。
文章2307 浏览21469187

手工注入检测山东大学某分站

最近正在学习MYSQL的手工注入,于是就想找个网站来练练手,在搜索引擎中搜索“inurl:showNews.php?id=23”,很快就找到了一个链接,是山东大学一个分站的链接,在网址后面添加“-0”提交后页面不变,而添加“-1”提交后页面内容发生了变化,这说明确实存在注入漏洞哟。

下面我们来看一下MYSQL的版本,提交后页面没有发生变化,说明数据库版本大于3,也就是版本为4.0以上,支持union查询,继续提交,页面也没有发生变化,说明MYSQL的版本为5.x,可以使用information_schema数据库暴库爆表爆字段,可以不用再猜了。为了使用强大的union查询,我们先来猜测字段的长度,使用“order by”语句来猜,提交17时出错返回了网站首页,说明字段数为16,提交16,显示在2,3,10,处可以用来显示信息。

我们来看一下当前使用的数据库以及连接数据库的用户,再提交当前数据库为jtbc_database,连接数据库的用户为root,看到root我有点兴奋了,说不定还能拿下服务器权限呢,呵呵。

既然MYSQL数据库的版本为5.x,那么就来直接爆表吧,提交爆出了数据库jtbc_database的所有表,其中0x6A7462635F6461746162617365就是数据库名jtbc_database的十六进制表示形式,我们可以使用别人编写的URL编码转换工具可以转换。

爆出的第一个表就是jtb_admin,感觉有点像存放管理员信息的表,我们提交爆出了表jtb_admin中的所有列名,其中0x6A7462635F6461746162617365还是数据库名jtbc_database的十六进制表示形式,0x6A74625F61646D696E是表名jtb_admin的十六进制表示形式。

猜测jtb_admin和jtb_apword就分别对应管理员的用户名和密码,表和列名都有了,下面就来猜管理员的用户名和密码,再次提交爆出了管理员的用户名为admin,密码为573bb79a2f0f7f6135c17a6c17a6cb9fa24a4。

密码是经过MD5加密的,我们拿到cmd5网站上去破解,却提示是一条付费记录,幸亏朋友有这个网站的会员,得到了密码为cjsxxxxx(为防止不必要的麻烦,密码的后5位我使用5个x代替了)。在网站地址后面直接添加admin就来到了后台登录页面,使用得到的用户名和密码顺利的进入了后台,通过后台首页显示的服务器环境信息,知道了操作系统为Windows,Web服务器软件为Apache,默认情况下Apache是以System权限运行的,也就是说只要我们得到一个phpshell就很可能获得System权限了。

尝试在后台拿webshell,但是却没有成功,看来得另想办法拿shell了,这时我想到了连接数据库的用户为root,权限很大,应该很大outfile。要想通过outfile获得shell就必须满足两个条件,一是“magic_quotes_gpc=Off”,二是要知道网站的绝对路径。我们先假设magic quotes gpc的值为Off,剩下的就是要知道网站的绝对路径了,在后台没有找到关于网站绝对路径的信息,尝试找到关于网站绝对路径的信息,尝试通过使页面出错来爆出网站绝对路径也没有成功,因为页面一出错就会返回网站首页。我又想了一下,想到了MYSQL的内置函数@@basedir,它可以显示MYSQL的安装路径,提交得到了MYSQL的安装路径为“d:\Program Files\phpStudy\MySQL”。

这个安装路径引起了我的注意,我记得phpStudy好像是一个集成Apache+P HP+MySQL+phpMyAdmin+ZendOptimizer的程序包,用来快速搭建PHP环境,很可能服务器上安装的就是phpStudy,我从网上下载了一个phpStudy进行安装,一切默认安装完成后,发现MYSQL在我电脑上的安装路径为“C:\Program Files\phpStudy\MySQL\”,网站的根目录为“D:\www”,我在“C:\Program Files\phpStudy\”目录下又发现了一个名为phpStudy.ini的文件,看扩展名好像是配置文件,使用记事本打开,在“[Apache]”对应的配置信息的“DocumentRoot =D:\www”(DocumentRoot字面理解为文件根目录)后面的“D:\www”正好是我电脑上面网站根目录的绝对路径,由此我断定在phpStudy.ini中DocumentRoot后面跟的就是网站的绝对路径,我们可以通过load_file()读取phpStudy.ini来获得服务器上的绝对路径。

由于网站服务器上MYSQL的安装路径为“d:\Program Files\phpStudy\MySQL\”,于是我猜测服务器上phpStudy.ini的路径为“d:\Program Files\phpStudy\phpStudy.ini”,把“d:\Program Files\phpStudy\phpStudy.ini”转换为十六进制0x643A5C50726F6772616D2046696C65735C70687053747564795C70687053747564792E696E69,然后提交,成功的读取出了网站服务器上phpStudy.ini的内容,得到网站根目录的绝对路径为“D:\php\”。

由于注入点的地址我们猜测有“D:\php\wwwback\”这个目录,于是决定outfile一个php一句话木马到“D:\php\wwwback\”目录下,名字为test20100.php,我们提交(注意路径中\和/的区别),返回到了网站首页,访问发现test20100这个文件已经生成了。运气不错,可以outfile,说明“magic_quotes_gpc = Off”。0x3C3F706870206576616C28245F504F53545B785D293B3F3E是一句话木马<?php eval($_POST[x]);?>的十六进制,使用lanker一句话PHP后门客户端来连接,填写上密码x,成功获得了webshell,使用这个一句话木马就可以执行cmd命令,而且还是System权限哟。

终于获得shell了,而且还是System权限的shell,哈哈,剩下的事情就好办了。通过执行“netgtat -an”命令发现服务器的3389端口正在监听,使用远程桌面连接却连接不上,通过执行命令“net start”发现Windows自带的防火墙的服务“Windows Firewal/Internet Connection Sharing(ICS)”正在运行,于是执行命令“net stop sharedaccess”到这里整个检测过程就结束了,没时间也不想再继续渗透内网了,删除刚才建立的用户,删除上传的shell,重新开启系统的防火墙,给管理员留了个提示信息,清理一下痕迹就要吧走人了。除了上传的shell外没有修改服务器上的任何文件,希望大家们在练手拿下服务器后也不要做任何破坏,这对大家都好。

由于我是刚开始学习手工注入,所以全文也没什么技术含量,大家就当作是新手的一次练手笔记吧,呵呵,如果有不对的地方还请大家指正。