一个简陋的php源码审计辅助脚本
程序员文章站
2022-03-06 15:38:51
80vul的5up3rh3i 大牛在 《WEB代码审计与渗透测试》上面提到一个perl写的基于grep的php源代码审计的fuzz脚本。有时候需要一个快速小巧的脚本来减少重复性的劳动,对于面向...
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
大牛也没公开那个脚本的源码,我就胡乱猜测着也弄了一个,相信大牛绝对不是这么写的。写的太挫了,发出来求指正啊求指正。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