标签 sqlmap 下的文章


0x 01 前言

在日常渗透测试中,总感觉ASP站打起来比较吃力,通常一些比较旧的站都使用ASP.NET WebForms这种类似桌面开发的框架来写Web程序。这类站点在登录界面甚至整个站点都很难见到一些JS文件,也就少了很多测试接口的机会。在没有口令登录的情况下,大大增加了渗透测试的难度。故记录一下一次打穿某ASP站点过程。

0x 02 渗透过程

起手是某学校教务系统的后台,观察路径为/Login,一般路径是大写字母打头的路径都是ASP站点居多,或者可使用Wappalyzer识别一下。

image.png



image.png



简单尝试了弱口令登录,但由于存在验证码限制,只能手工测试了几个常见口令,最终也未能成功登录。没有弱口令,没有JS文件,只能开扫目录,还好没有WAF拦截。

这一扫,还真扫出东西了,/dev目录没删,一看就是开发老哥调试的接口。

image.png



访问/dev,一看我去这不数据库账号密码吗,赶紧扫一下端口,看看数据库有没有开端口到外网。

image.png



简单使用 Goby 进行扫描,发现目标存在 MSSQL 数据库服务,思路逐渐清晰,随即尝试直接连接。

image.png



Navicat启动,发现存在大量师生信息,可惜没有身份证,只有学号、手机号。

image.png



虽然有系统后台账号和密码哈希,但是密码哈希是加盐的,也不好直接爆破。

image.png



回头看看开发老哥还给我留了一手大惊喜,居然有admin账号直接能重置密码,而且重置完密码是多少告诉我了

image.png



重置完,admin/admin成功进入后台管理员。

image.png



随便点点查看一下功能点,发现学生管理地方可以上传头像

image.png



image.png



直接上传asp文件,显示上传文件不合规,先上传正常文件,再抓包修改后缀名,都是一些常见的思路。

image.png



抓包上传后,显示未找到路径,也是十分奇怪,传png文件也是无法找到路径,但是访问路径/Files/Student/1/2025122812201752676661.aspx确实是传上去了。

image.png



直接antSword启动连接,上马成功,点到为止,也没有进行查看服务器其他东西。

image.png



资产测绘上搜索了一下,发现是一个通用的CMS,而且这个开发接口也有很多系统没有删除,想到这种ASP.NET WebForms站点比较旧,后台有SQL注入的概率估计比较高。依旧是代理开起来抓包,后台除了删除和添加数据的功能点都点一点,保证参数都能抓到,再一个个包简单测试一下。

也是十分幸运,/Grade/Report接口下的参数ctl00%24cphMain%24txtWhere单引号报错了,根据参数名猜测应该是拼接到SQL关键字where后面

image.png



刚开始使用SQLMAP还跑不出来,开了level5都没用,思路一下子断了,感觉不太可能注不出来才对,MSSQL相关注入还是学得太少了,有空还是得补补。

简单把报错语句贴给AI,才明白少加了括号闭合,其实后面看报错语句其实很明显,当时估计太激动了。。

image.png



sqlmap -r sql.txt --dbms="mssql" --prefix="')" --level 5 --batch

SQLMAP指定一下前缀--prefix="')"就秒出,看来还是不能太心机,容易头昏脑胀。

image.png



如果一个参数存在注入的话,大概率其他接口这个参数也能注入,开发编写ORM配置基本都是如此,除非是特意修复过,不然出货概率很大,在一堆的Yakit HTTP请求包中直接搜参数ctl00%24cphMain%24txtWhere,果不其然,又找到一个接口/Grade/Report1,除了接口不一样,参数啥基本一致,就不贴了。

0x 03 反思

相比Java站点,ASP.NET WebForms这类站点,在没有口令情况下属实难以动手,但一旦能进入到后台,文件上传很大都没有限制后缀,不像现在一些Java框架,直接在配置文件里面写了限制后缀jsp等,SQL注入出现的概率也会相对高一些。其实看到ASP.NET WebForms框架第一时间想的是打ViewState反序列化,但是貌似开了ViewState MAC(主要还是研究得少,下回系统研究一下),没那么好打。

image.png



0x 04 后续

在资产测绘搜索过程中,发现这个框架存在不少资产,其实也不多就几百个,根据接口批量进行扫描,在其他站点发现了一些其他接口存在SQL注入。首先是在后台有个高级搜索功能,点击之后会有能筛选字段,随便点击进行搜索。

image.png



image.png



使用Yakit抓包发现存在POST请求包,这个包中的很多字段跟前面那个包基本一致,所以也均存在SQL注入,大致FUZZ了一下

ctl00%24cphMain%24txtSearchTitle

ctl00%24cphMain%24txtSearchCreated

ctl00%24cphMain%24txtSearchStart

ctl00%24cphMain%24txtSearchEnd

这些参数均存不同拼接的SQL注入,大致的注入语句都差不多

使用payload:' AND 1/DB_NAME() ='就可以成功注入,这里使用1/xxx,xxx为字符串,这样可以让数据库类型转换失败而导致报错,至于后面拼接=是为了表达式值为bool类型,否则SQL语法会执行不了(根据单引号报错出来的SQL语句以及报错信息),忘了截图。。。

image.png



根据这个高级搜索功能,猜测其他接口也很可能会调用这个接口,毕竟是筛选功能,果不期然,也是找到三四个接口可以直接打,最后报告交上去也是刷了38Rank,可惜教育资产使用这个系统并不多。

image.png



1、寻找漏洞

寻找漏洞的2种办法:

1)谷歌语法

注意:用谷歌语法找站的时候,要加点中文,不然搜出来的站 可能都是英文的。

寻找SQL注入

  1. 公司inurl:php?id=
  2. 公司inurl:asp?id=
  3. 公司inurl:aspx?id=

就像这样:
谷歌搜索sql注入点
参数不一定要是id,也可以是tid、keyword之类的其它参数:

  1. ?tid=
  2. ?keyword=
  3. 弱密码和越权,找后台
  4. 后台inurl:php
  5. 后台inurl:asp
  6. 后台inurl:aspx
  7. 后台site:edu.cn

后台site:edu.cn
asp和aspx的后台貌似还有越权漏洞。
禁用JS,然后直接访问后台URL,有大概率直接进去。

你问我怎么禁用JS?每个浏览器都不一样,看看自己用的是什么浏览器,然后自己百度一下吧。

更多的谷歌语法,可以自行寻找。

2)fofa

语句和谷歌语法一样,换了个写的方式

  1. "php?id=" && country="CN"
  2. "asp?id=" && country="CN"
  3. "aspx?id=" && country="CN"

符号 && 就和and一样,多一个寻找条件
country=”CN”(这条语句的意思是 中国的网站)
我们挖漏洞肯定要挖国内的,所以要加上。
fofa挖国内漏洞
还可以继续加条件,比如 server==”Apache”,那fofa就只会搜索中间件为Apache的网站,搜索功能比较强大。
fofa搜索apache网站漏洞
fofa还有很多语法,可以自行查看。

2、挖掘漏洞

先用以上方法找一个站点,我一般喜欢用谷歌。
找到一个站 id=106
sql注入
减法,页面空白,难道有防护?
sql注入1
看看id=107,也是空白
sql注入2
id=107-1,显示了106的内容,说明107和105是没东西的,差点被误导
sql注入3
and 1=1 和 and 1=2,此处存在SQL注入
谷歌语法新增一枚:list.php?id=
sql注入4
sql注入5
这时候可能会有人 直接上sqlmap,作为过来人:能手注就手注,不要用sqlmap。
因为sqlmap发包频率太快,容易被ban,而且这些站 都是小站,容易跑崩掉。
我之前挖过很多站,直接上了sqlmap,结果网站访问不了。
心里非常慌呀:网站是不是被我跑崩了?我会不会进去呀?
所以,除了盲注以外,其它都尽量手注。

判断字段数为17
挖掘sql注入点漏洞
挖掘sql注入点漏洞1
联合查询,回显点为3
记得要让前面的查询 查不出数据,把106变成小数106.1
挖掘sql注入点漏洞2
这里给大家一个python脚本,输入你要的字段数,可以自动生成,不用自己手敲。(在附件里面)
挖掘sql注入点漏洞3
查询库名,页面空白。
咋回事?
挖掘sql注入点漏洞4
试了其它数据库的语句也不行,只能上sqlmap了
加上一个 delay=1 放慢发包速度(延迟1秒,可以再加)
挖掘sql注入点漏洞5
嗯…淦
挖掘sql注入点漏洞6
所以能手注尽量手注(哭)

3、提交报告

例如 www.baidu.com发现了SQL注入

第一步:“标题”和“厂商信息”和“所属域名”

站长工具https://icp.chinaz.com/baidu.com

查询域名备案信息,看到这个公司名了吗
查询域名备案信息
这样写
漏洞类别啥的,如果不是0day的话,像图中一样就行了
提交漏洞
所属域名 要写该公司的“网站首页”或者“官网”
看到这个了吗
查询域名信息
先访问一遍,没问题再复制上去
漏洞提交
漏洞提交1

第二步:其它内容

漏洞类型:一般都是Web漏洞,然后漏洞是什么写什么,这里是一个SQL注入。
漏洞等级:SQL注入一般都是高危,但如果厂商比较小的话,会降级,降成中危。
漏洞简述:描述一下SQL注入是什么、有什么危害之类的。
漏洞url:出现漏洞的URL。
影响参数:哪个参数可以注入 就写哪个
漏洞POC请求包:Burp抓个包 复制粘贴。
漏洞poc
修复方案,也可以随便写写。
漏洞修复方案
所属地区和行业↓↓↓
网站所属类别
记得刚刚的站长工具吗,不要关,往下拉就有了。
网站信息查询
不过有一些比较小的站点,往下拉没有东西,咋办呢?
域名信息
用爱企查,查询公司名,啥都有(也可以用天眼查,不过个人感觉爱企查比较好用)
如果站长工具里面 查出来的官网打不开,就爱企查,这里也有一个官网。
如果这个官网还打不开,就把漏洞页面的域名写上去。
查询企业信息
爱企查查询企业信息

第三步:复现步骤

除了复现步骤,其它的内容都填完了,复现步骤也是重点。

0、IP域名归属证明
当初刚挖SRC,不会交报告,一股脑交了一大堆,全被打回来了,漏洞白挖 报告白写。报告改了3次才好。
ip域名归属证明

记得前面那个站长工具吗,没错还是他,像这样子写:
漏洞poc复现步骤
1、漏洞页
要让审核员看的清晰,能够完美复现出漏洞,第一步:来到漏洞页

2、该干啥
告诉审核员,来到漏洞页面之后,该干啥
漏洞复现步骤1
3、注入的结果
把注入的结果写在这里就可以了
sql注入结果
至此,一份报告就写好了,可以提交了

如果你闲每次打字麻烦,可以新建一个记事本,把框架写好,提交的时候 替换一些内容就可以了。
把标题、漏洞简述、复现步骤、修复方案
替换的时候替换公司名、域名、截图之类的
可以省不少时间

4、上榜吉时

时间:

一般提交漏洞之后,1-3天会审核漏洞,1-8天之后确认漏洞,确认漏洞之后才能拿积分。
周末审核不上班,顺延。
也就是说,一个漏洞,要8-12天才能获得积分。漏洞是几月确认的,积分就算几月份的。要算好一个月什么时候上分最好。

我一般把 “本月24日-次月20日” 当做上分时间。
比如你想冲8月的排行榜,你要7月24日开始提交漏洞,到8月20日停止。

由于时间不确定,有时候一个漏洞时间短,有时候时间长,所以:
7月23日-月底,中幅度提交漏洞。
8月1日-8月18日,大幅度提交漏洞。
8月19日-8月24日,小幅度提交漏洞。

7月底提交的漏洞,等到确认漏洞,积分会算到8月份,所以中幅度。
8月初和8月中旬,随便交,不怕。
8月底,担心漏洞时间太长,积分会算到9月份,所以小幅度。

5、快速上分

会不会觉得,谷歌语法或者fofa 一个个找站太慢了?
想快速上分,冲榜,拿奖励?
那就要找CMS通杀漏洞,快速、精准。
漏洞别人已经帮你测好了,你只需要验证,如果存在漏洞,直接写报告提交,不用费时间去慢慢测漏洞。如果没有漏洞,走人,换一个站。

哪里找CMS通杀漏洞呢?
百度或者漏洞库,百度效率比较低,一般使用漏洞库,目前接触到的漏洞库有peiqi文库、白阁文库等。甚至可以上cnvd上找。

在文库里面找 有fofa语句的漏洞,比如狮子鱼CMS的SQL注入,现在挺多人挖的。
有一个fofa语句,拿到fofa搜索。
狮子鱼CMS SQL注入漏洞
搜出来的站,就都是狮子鱼CMS了。
fofa狮子鱼CMS的SQL注入
下面还有现成的POC,拿来用就可以了
狮子鱼CMS的SQL注入漏洞测试
fofa批量找站 => POC直接贴 => 如果成功注入了 => 提交报告
如果注入失败,换一个站,反正fofa搜出来很多,不缺这一个。

当然,那么多人挖,估计文库里的漏洞都要成为历史了,所以要找找新的。

我这里试试 拿cnvd来找漏洞,cnvd上的漏洞不公开,没有步骤,fofa语句也没有,怎么利用呢?
先搜索CMS,然后随便选一个。
https://www.cnvd.org.cn/
cnvd漏洞共享平台
就这个吧,然后去百度。
极致cms存在命令执行漏洞
不是我们想要的,不过搜到了其它漏洞,也可以看看。
极致cms存在命令执行漏洞1
他说网站首页有SQL注入,我们想fofa批量找站,就要自己构造fofa语句。
fofa批量找站
看了一下,貌似是/Home/c/HomeController.php 这个文件出问题。
那么我们fofa就搜索:
/Home/c/HomeController.php
随便找个站,POC贴上去。
当然,我只是给个思路,不一定能成功。
网站出错
也可以下载该CMS的源码,看看网站有什么比较特殊的地方,比如title body啥的,都可以用来构造fofa语句。

6、小技巧:冲榜拿分制胜点

漏洞积分是怎么算的?

漏洞盒子有这样一张图:
公益SRC漏洞
公益src漏洞
可以看到,C类厂商是最低的,而我们挖的都是野生漏洞,所以高不到哪去。
百度和腾讯居然是最低?!
漏洞提交src等级
那我们挖的洞,肯定也是按最低的算:
低危漏洞2分
中危漏洞3分
高危漏洞4分

由于厂商太小,影响用户也小,有时候高危的漏洞 会评为中危。
这里建议大家尽量别挖反射型XSS,因为反射型XSS是低危,降一级直接就没了,是浪费时间。

我一般挖SQL注入,大多数都在中危,少部分高危,都是3分3分的拿。

你问小技巧在哪?别急,这就来。
看,差的报告,积分减半。只要审核员能复现出来,报告一般都是良好,正常拿分。
优秀的报告 积分翻倍
制胜点就在这里了,比如你交了一个中危的漏洞是3分,但是你报告写的好,是优秀,积分翻倍变6分,相当于交了两个中危漏洞。
一个顶两
高危网站漏洞
网站漏洞评分
别人交3个中危9分,你交3个中危18分。
这差距直接拉开了好吧。

我这里教大家怎么写优秀的报告

我看很多人,漏洞正文只有文字 没有图片,很简陋,我们最好加上图片,审核员看的舒服一点,心情好点,对我们有好处。

漏洞描述和修复建议 也是一笔带过,什么 “过滤”“问开发”之类的。

优秀的报告,有5个标准。
我在上面的“提交报告”中,教大家提交的报告,漏洞标题、基本信息、漏洞正文,这3个都算好,不用管。
剩下的就是 漏洞描述修复建议
漏洞修复建议

拿狮子鱼CMS的SQL注入来说:

漏洞描述
漏洞危害去百度,改一改就是自己的了,危害最好不少于3点。
漏洞信息描述
修复建议:
附件有个导图,里面有很多漏洞的修复建议,觉得不够好的话,可以自己上网再找找。
漏洞修复建议

故事起因

这天风和日丽,我正在摸鱼,忽然QQ群弹出一条消息,我打开一看,我感觉不简单。如下图:

扫码后发现跳转到了QQ邮箱登陆界面,确定为钓鱼网站,看到其域名为http://**kak2.cn。


这里随便输入,页面跳转到如下界面。


好家伙,小伙子你挺会玩啊,收集完QQ邮箱账号密码,再来收集一波个人信息,做人不能太贪心啊。开始干活!

溯源钓鱼者

我们现在拿到了他的域名,现在收集一下域名的相关信息。使用站长工具,如下图。

可以查到域名注册人的姓名和邮箱。邮箱显示不全,这里再通过微步来进行一下查询。如下图


这里有两点可以关注一下,这里拿到了完整的邮箱和知道了这里是阿里云的。

进行一下邮箱反查,发现该邮箱下在五六月份注册多个域名,姓名都是刘xx,大概率都是用来钓鱼的。


尝试添加QQ,发现查不到这个人,这就尴尬了。


关于钓鱼者的信息收集就告一段落,接下来开始干它网站。

进攻钓鱼网站

之前我们拿到了域名,现在对网站进行渗透,那思路是什么呢?我们可以进行一下子域名、目录等扫描,如果没什么信息,那就开始对钓鱼网站本身看看有没有能利用的地方。

首先进行一下子域名扫描,没什么发现,如下图:

然后开始对域名进行一下目录扫描,如下图


扫出来的目录,基本没有权限,都是403。没什么利用的点。

现在看来只能对网站本身进行一下渗透了,看看有没有能够利用的。现在打开收集个人信息的表单,按F12看看有没有我们值得关注的,如下:

之前目录扫描发现了uploads目录但是没有权限,这里找到了uploads/ads路径,尝试一下这里路径后端是否接收文件,构造上传数据包,发送数据,还是失败了。如下:

不要灰心,接着搞,我们还发现这里使用了form表单提交数据,然后自定义了一个函数chk(),现在我们跟进这个函数去看一眼。如下

在这里我们能够了解到,网站使用了ajax来进行数据传输,将数据提交到了本站的wap目录,然后身份证号码进行了一下简单的正则判断,规定输入为数字且位数为18位。既然是将数据提交到本站了,那么如果钓鱼者再后端接收数据时直接将参数拼接到SQL语句中,那么就可能存在SQL注入。现在我们构造数据,提交数据,然后抓取数据包来进行测试,抓取的数据包如下:

接下来开始测试是否存在SQL注入,name参数后添加单引号,发送数据,发现报错,存在SQL注入!


猜解一下数据库名,数据库版本,构造payload

' and updatexml(1,concat(0x7e,(select database()),0x7e),1)%23
and updatexml(1,concat(0x7e,(select @@version,0x7e),1)%23


数据库名是a7,猜解一下表名,构造payload如下

'and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='a7')),0)%23

发现无法获取表名,我有一种不详的预感。

果然换用一些其他的函数,发现也是无法获取表名,可能是没有权限。真让人伤心,这个老六。

现在用sqlmap跑一下吧,结果如下

只能跑出来a7这个数据库,information_schema这个库获取不到,怪不得手工注入也拿不到表名呢。唉,现在尝试一下os-shell吧,看看有没有运气。如下


看来运气并不好,失败了。不过,虽然失败了,但是我们也知道了现在的服务器系统为Linux,并且有了路径,我们就把它当成绝对路径吧,死马当活马医,看看能不能写入文件,构造payload:

into outfile '\\www\\wwwroot\\p******7.a******ka.cn\\config\\wap\\test.php' FIELDS TERMINATED BY '<?php phpinfo();?>'%23

结果如下,还是失败了。

又尝试了一些其他的方法,发现收获不大。

峰回路转

真的拿不下它服务器了吗?我不信,晚上的时候,事情迎来了转机,当时我正在划水,一条好友申请打破了平静,当我同意时,大哥人狠话不多,直接URL和账号密码发了过来,包括源码的压缩包也扫出来了。在这里给大师傅递根烟。

这里大师傅也给我拓宽了思路,扫目录的时候多尝试几个工具,可能会有不一样的惊喜。访问url使用账号密码登陆,界面如下。

登陆后,我们发现,这是一个帝国备份王的一个开源CMS。当我们知道是开源的时候,首先的思路是网上有没有一些公开的漏洞供我们使用。比如我们可以这样搜索 EmpireBak v2010 后台 RCE,结果如下

红箭头指的这篇文章就很合适,通过看文章,我们也了解了getshell的思路,就是替换文件内容。具体流程就是我们可以先备份数据,然后点击管理备份目录,点击替换文件内容。

思路是有了,但是现在还有问题,就是备份王链接不上mysql,导致备份功能无法使用,但是不着急,这里备份王提供了一个功能,就是参数设置。如下

如果我们知道了数据库的账号密码和数据库名,是不是就可以尝试连接数据库了。所以现在重点是获取数据库账号密码。这如何获取呢?不要忘记了,之前我们拿到了钓鱼网站的源码压缩包,现在来解压来分析一下源码。找一找配置文件,可能有我们需要的信息。源码目录如下

现在尝试找一下数据库的配置文件,如下,果然拿到的我们想要的信息

现在去网站尝试一下看看是否连接成功,果然不出所料,连接成功,如下


现在可以尝试拿shell了。喝口水压压惊,和大师傅同步一下信息,一个人孤军奋战,怎么能抵得上两个人一起日站的快乐呢。

进后台

之前咱们看源码,发现有一个a1文件夹,查看文件夹相关文件,知道这是后台的路径

我们访问一下,发现404


应该是把后台路径改掉了,不要紧,我们简单尝试一下,发现改为a7了,现在访问a7界面如下

还是尝试使用备份王的账号密码,发现登陆成功



后台也就拿下了。查看信息,发现大部分都是脏数据了。再去问大师傅看看他那里有没有什么信息。


登陆师傅提供的地址如下


这里还是有一些数据的,还是有上当受骗的,自己的个人信息被骗完了,最后还输入了自己的手机号,接到了验证码,还把验证码提交到了钓鱼网站。腾讯的防盗机制,二次认证也挡不住钓鱼网站套路多。在这里提醒大家一定要提高警惕,提示输入个人信息的地方一定要留个心眼。

Getshell

现在咱们按照之前的思路Getshell,先压缩,然后将压缩包下载下来。

然后遇到了新的问题,下载下来的文件都是空文件,


没有数据,所以也就无法替换,也就无法Getshell了。这是什么人间疾苦。现在问问大师傅,看看大师傅进行到哪一步了。

看来也卡住了,不要灰心,不要放弃任何一个细节,再去看看备份目录,尝试将最初备份文件下载下来,进行查看。

功夫不负有心人,成功。

到如下界面替换,上面填写原内容,替换内容填入冰蝎木马。

正要尝试替换config.php文件的内容。想着先访问一下,居然出现了大马界面,大师傅先我一步下手了?去问一下

果然是大师傅干的,没想到冰蝎和哥斯拉的马子已经上去了,爱了爱了。上冰蝎,查看文件管理如下

提权之路

上面我们拿到了webshell,完成了第一步,现在开始提权了,冰蝎为我们提供了反弹shell的功能,这里我们使用冰蝎将shell弹到MSF中。去瞅一眼大师傅进度。

这就是大腿的感觉吗?太幸福了。这里说一下提权的思路。msf里面有个可以自动提权的suggester,我们直接选择就可以了,如下


选择第一个后,开始提权!


在这里我们也是成功的拿到了服务器的root权限。如下图


拿到root权限就好办事了,查看账户,也是发现了ssh的端口和账号密码,登陆ssh如下:


因为钓鱼网站是用宝塔搭建的,所以这里看了看宝塔相关信息,包括面板登陆页,账号密码等等。大师傅也是贴心的把拿到的资产都整理好了。


第一个师傅发第一个json文件中有泄露的Access key 我们可以通过使用相关工具直接接管相关服务器。


网上有现成的工具,如下图,工具链接:https://github.com/mrknow001/aliyun-accesskey-Tools

最后,大师傅贴心的总结了文本,爱了。总结了宝塔,phpmyadmin,SSH等相关资产。


小结
关于钓鱼网站的相关内容就分享到这里啦,咱们从最开始的一个Web弱口令,到日穿钓鱼服务器,中间也是几经波折,最后还是幸不辱命。