Calm Hill My Random Thoughts

Nmap Updatedb

အလုပ်ထဲမှာ Scan လုပ်စရာ တစ်ခုရှိတဲ့အတွက် Nmap ကို Binary Package Download လုပ်ပြီးတော့ Install လုပ်ပါတယ်။ Nmap မှာက နောက်ပိုင်းမှာ Lua Scriping Engine ပါလာတယ် အရင်ကဆိုရင် ထွက်လာတဲ့ Output ကို Parse ပြီးမှလုပ်ကြရတယ် တစ်ချို့ Automated အလုပ်တွေဆိုရင် လွယ်လွယ်ကူကူ လုပ်လို့ရသွားတယ်။ ရုံးမှာ Corona နဲ့ အလုပ်တွေရှိတဲ့အတွက် Lua ဆိုတာက မစိမ်းပါဘူး အဲဒါနဲ့ ရေးကြည့်တယ်။ ရေးပြီးရင်သုံးလို့ရဖို့က Nmap ကို Update database လုပ်ပေးမှ Nmap ကအသစ်ထည့်ထားတဲ့ Script ကိုသိတယ် Update လုပ်တော့ ကိုယ်ရေးတာကဘာမှမဖြစ် ဒါပေမယ့် Built-In Script တစ်ခုမှာ Error တက်တယ်။

$ nmap --script-updatedb
Starting Nmap 6.25 ( http://nmap.org ) at 2013-03-29 00:40 SGT
NSE: Updating rule database.
NSE: Failed to load /usr/local/bin/../share/nmap/scripts//sql-injection.nse:
/usr/local/bin/../share/nmap/scripts//sql-injection.nse:44: variable 'shortport' is not declared
stack traceback:
    [C]: in function 'error'
    /usr/local/bin/../share/nmap/nselib/strict.lua:80: in function '__index'
    /usr/local/bin/../share/nmap/scripts//sql-injection.nse:44: in function 
NSE: failed to initialize the script engine:
/usr/local/bin/../share/nmap/nse_main.lua:523: could not load script
stack traceback:
    [C]: in function 'error'
    /usr/local/bin/../share/nmap/nse_main.lua:523: in function 'new'
    /usr/local/bin/../share/nmap/nse_main.lua:1223: in main chunk
    [C]: in ?
QUITTING!

အဲဒါနဲ့ sql-injection.nse ကိုဖွင့်ကြည့်တော့လည်း shortport variable ကအသေအချာ require(‘shortport’) လို့ပြောထားတယ် Lua မှာက require ထဲမှာ ပြောထားတဲ့ Module name ကို Implicitly Variable Name အနေနဲ့ သုံးလို့ရတာပဲ။ အဲဒါနဲ့ shortport.lua ကိုဖွင့်ကြည့်တော့လည်း ထူးထူးခြားခြား မှားနေတာလည်း ရှာလို့မတွေ့ဘူး။ အဲဒါနဲ့ require တွေအားလုံးကို Explicitly ကြေငြာပေးလိုက်တယ် အောက်ဘက်က ကုဒ်တွေကိုမပြင်ရအောင် Variable Name ကို Module Name နဲ့တူအောင်ပေးထားလိုက်တယ် ပြန်ပြီး Update လုပ်ကြည့်တော့ Error မတွေ့တော့ဘူး။ တကယ်က Syntax ဟာမှားတယ်တော့မဟုတ်ဘူး အဲဒီတော့တစ်ခုဖြစ်နိုင်တာက Nmap မှာသုံးထားတဲ့ Lua Engine ကြောင့်ပဲဖြစ်နိုင်တယ်လို့ပဲ စဉ်းစားလို့ရတယ်။

local url = require('url')
local shortport = require('shortport')
local stdnse = require('stdnse')
local strbuf = require('strbuf')
local comm = require('comm')
local http = require('http')
local nsedebug = require('nsedebug')
local httpspider = require('httpspider')
.
.