频道栏目
首页 > 安全 > 工具软件 > 正文

一个简陋的php源码审计辅助脚本

2012-05-23 11:59:43           
收藏   我要投稿
80vul的5up3rh3i 大牛在 《WEB代码审计与渗透测试》上面提到一个perl写的基于grep的php源代码审计的fuzz脚本。有时候需要一个快速小巧的脚本来减少重复性的劳动,对于面向对象的复杂的代码一些源码审计工具的作用也实在有限,往往需要改动一些才能发现点什么。学习php的安全也差不多一年了,膜拜大牛的同时也感谢那些共享知识的师傅们。




大牛也没公开那个脚本的源码,我就胡乱猜测着也弄了一个,相信大牛绝对不是这么写的。写的太挫了,发出来求指正啊求指正。linux下面还有一个开源的源码审计工具叫rats,可以自己添加特征函数用着也不错。



 1     #!/usr/bin/perl
2     #
3     # PHP Vulnerabilities Fuzzer By c4
4     # Mail c4rp3nt3r@0x50sec.org
5     #
6    
7     use POSIX;
8     use LWP::UserAgent;
9    
10    main();
11   
12    sub main
13    {
14        print '
15    -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
16    1.include/require
17    2.exec/system/popen/passthru/proc_open/pcntl_exec/shell_exec
18    3.eval/preg_replace/assert/call_user_func/create_function
19    4._GET/_POST/_COOKIE/_SERVER/_REQUEST/php://input/getenv

20    5.session/cookie
21    6.extract/parse_str/mb_parse_str/import_request_variables
22    7.readfile/fpassthru/fwrite/fopen/move_uploaded_file/file_put_contents/unlink
23    8.select/insert/update/delete/order by/group by/limit/in(
24    -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
25        ';
26        print "\n";
27        print "Choose :#";
28        $fuck= <STDIN>; chomp $fuck;
29   
30        if($fuck eq '1')
31        {
32            @vuls=('include(','include_once(','include ','include_once ','require(','require_once(','require ','require_once ');
33            foreach $vul(@vuls)
34            {
35                $cmd = "grep -n '\\\$' -r ./ | grep -v fuzz.pl | grep '$vul' --color";
36                system($cmd);
37            }
38        }elsif($fuck eq '2')
39        {
40            @vuls=('exec(','exec ','system(','system (','popen(','popen ','passthru(','passthru ','proc_open(','proc_open ');
41            foreach $vul(@vuls)
42            {
43                $cmd = "grep -n '\\\$' -r ./ | grep -v .js: | grep -v fuzz.pl | grep '$vul' --color";
44                system($cmd);
45            }
46   
47        }elsif($fuck eq '3')
48        {
49            @vuls=('eval(','eval ','preg_replace','assert','call_user_func','call_user_func_array','create_function');
50            foreach $vul(@vuls)
51            {
52                $cmd = "grep -n '\\\$' -r ./ | grep -v .js: | grep -v fuzz.pl | grep '$vul' --color";
53                system($cmd);
54            }
55   
56        }elsif($fuck eq '4')
57        {
58            @vuls=('_GET','_POST','_COOKIE','_SERVER','_REQUEST','php://input','getenv');

59            foreach $vul(@vuls)  www.2cto.com
60            {
61                $cmd = "grep -n '\\\$' -r ./ | grep -v .js: | grep -v fuzz.pl | grep '$vul' --color";
62                system($cmd);
63            }
64   
65        }elsif($fuck eq '5')
66        {
67            @vuls=('session','cookie',);
68            foreach $vul(@vuls)
69            {
70                $cmd = "grep -n '\\\$' -r ./ | grep -v fuzz.pl | grep '$vul' --color";
71                system($cmd);
72            }
73   
74        }elsif($fuck eq '6')
75        {
76            @vuls=('extract','parse_str','mb_parse_str','import_request_variables');
77            foreach $vul(@vuls)
78            {
79                $cmd = "grep -n '\\\$' -r ./ | grep -v fuzz.pl | grep '$vul' --color";
80                system($cmd);
81            }
82        }elsif($fuck eq '7')
83        {
84            @vuls=('readfile','fpassthru','fwrite','fread','move_uploaded_file','file_get_contents','file_put_contents','unlink','fopen');
85            foreach $vul(@vuls)
86            {
87                $cmd = "grep -n '\\\$' -r ./ | grep -v fuzz.pl | grep '$vul' --color";
88                system($cmd);
89            }
90        }
91        elsif($fuck eq '8')
92        {
93            @vuls1=('select','delete');
94            foreach $vul(@vuls1)
95            {
96                $cmd = "grep -in '\\\$' -r ./ | grep -i from | grep -v fuzz.pl | grep -i '$vul ' --color";
97                system($cmd);
98            }
99            @vuls2=('update','order by','group by','limit','in(');
100          foreach $vul(@vuls2)
101          {
102              $cmd = "grep -in '\\\$' -r ./ | grep where | grep -v fuzz.pl | grep -i '$vul' --color";
103          }
104          @vuls3=('insert');
105          foreach $vul(@vuls3)
106          {
107              $cmd = "grep -in '\\\$' -r ./ | grep into | grep -v fuzz.pl | grep -i '$vul' --color";
108              system($cmd);
109          }
110 
111      }
112 
113  }
114 
115  ########END#########
很久没有在网上吐槽下了,最近不顺心的事情真多。所谓“行有不达,反求诸己“,自己自然脱不了干系。
从事网络安全方面的工作也有一年了,整天除了检测网站、审计源码查找漏洞、有时候检测内网,有时候写个工具,有时候做做免杀,写写代码。到头来还是空虚的不得了,搞站其实就像自慰,就算有点快感,刹那间过去了剩下的就是空虚。
希望以后能多学习,写出自己的有价值的安全工具,否则就趁早别在这行混了,该干嘛干嘛去。
 

作者 0x50sec.org
相关TAG标签 脚本 源码
上一篇:使用plink进行端口转发
下一篇:Autologon:开机自动登录锁屏需要密码的解决办法
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站