複製鏈接
請複製以下鏈接發送給好友

REXEC

鎖定
REXEC是服務的遠程計算機上運行命令。rexec 命令在執行指定命令前,驗證遠程計算機上的用户名,只有安裝了 TCP/IP 協議後才可以使用該命令。
中文名
REXEC
外文名
REXEC
使用前提
安裝 TCP/IP 協議
性    質
ANSI字符串形式的端口號

REXEC弱口令的檢測

rexec的網絡通信細節 [1] 
rexec服務偵聽512/TCP口,而512/UDP口對應biff服務。
rexec -a -l <username> -p <password> <host> <command>
rexec建立到rexecd的TCP連接(512/TCP),發送如下請求數據:
[port]\0<username>\0<password>\0<command>\0
port
ANSI字符串形式的端口號,不是短整型形式的端口號。用途同rsh,stderr會重
定向到回連的TCP連接上。但對port沒有範圍限制,可任意指定。
此外,主連接(512/TCP)的源端口沒有範圍限制,這與rsh、rlogin通信不同。
username
試圖遠程使用的服務端用户名,最長16個字符。
password
與username對應的明文口令,最長16個字符。
command
試圖遠程使用的服務端命令,也有長度限制,不過比較大。
rexecd向rexec發送如下響應數據:
<ret><data>
ret等於0x00表示成功,data對應執行結果,一般是\n分隔、結尾的文本。
ret等於0x01表示失敗,data對應錯誤信息,一般也是\n分隔、結尾的文本。
rexec通信過程與rsh通信過程極其相似,甚至連那個變態的port字段都一個用途。顯
然應儘量不提供port字段。rexec通信過程中口令以明文形式傳遞,很不安全。這個
服務好像並沒有考慮暴力窮舉猜測口令的事,實在是個不該開放的服務。

REXEC三種操作系統

1) Linux
rexec -a -l <username> -p <password> <host> <command>
-a的作用就是不提供port字段,缺省沒有指定-a。
in.rexecd會對客户端IP進行反向域名解析,解析不成功的話向客户端返回錯誤信息
並終止服務進程。沒有命令行開關改變這種行為,解決方案是在/etc/hosts中為客户
端IP增加相應條目。
2) Solaris
在我手頭的Solaris 8上沒找到rexec命令。
in.rexecd不會對客户端IP進行反向域名解析。沒有命令行開關改變這種行為。
3) Aix
rexec -a -n <host> <command>
-a的作用同上。指定-n,rexec將交互式獲取username/password。
rexecd會對客户端IP進行反向域名解析,解析不成功的話向客户端返回錯誤信息並終
止服務進程。解決方案有兩種,一是在/etc/hosts中為客户端IP增加相應條目,二是
修改/etc/inetd.conf中rexecd的命令行,增加命令行開關"-c",取消反向域名解析。
參考資料