1.1使用Netsparker扫描及×××某站点
目前市面上漏洞扫描软件有多款,前面介绍了一些扫描软件例如awvs对目标站点进行扫描,其实国外还有一款扫描软件Netsparker也挺厉害,扫描误报率低,扫描效果还不错。在本文中,对一个目标站点进行扫描,并未发现高危漏洞,但通过列目录漏洞以及敏感信息泄露文件,成功获取了某网站的webshell及其服务器权限。在真实×××环境中,漏洞的利用除了思路外,各种低级漏洞的组合和信息收集扩充,在一定条件下,将起到意想不到的效果。
1.1.1Netsparker简介及安装
Netsparker是一款著名的Web应用漏洞扫描工具,虽然名气不如AWVS,但其功能强大,可以爬行、×××并识别各种Web应用中存在的漏洞。能识别的Web应用漏洞包括SQL注入、XSS(跨网站指令码)、命令注入、本地文件包含和任意文件读取、远程文件包含、框架注入、内部路径信息披露等。跟其它扫描工具相比,Netsparker误报率低,因为Netsparker执行多次测试以确认任何被识别的漏洞。它还有一个JavaScript引擎,可以解析、执行并分析Web应用中使用的JavaScript和VBScript输出。因此Netsparker能成功爬行并充分了解网站。其官方网站https://www.netsparker.com,最新版本为5.X,Netsparker目前分为桌面版,云端版和企业版。
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 新建扫描目标
2.查看扫描结果
在Netsparker3.5中,扫描结束后,在最左下方可以看到“Scan Finished”显示进度条为100%,请求的数量为1553,如图2所示,最左上方是网站的目录结构,右下方显示扫描存在问题(Issues)所在,红色旗帜表示为高危,×××显示警示,叹号显示是获取的一些信息。最右上方显示原始的头及发包等数据,右中间显示的是请求响应情况,可以看原始(RAW)数据及头数据(Headers)。
图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清除历史扫描目标记录信息
2.查看及清除目标扫描日志记录
Netsparker默认会在“C:\Users\Administrator\Documents\Netsparker\Scans”目录保留一些扫描信息,如图4所示,可以对其进行查看,也可以执行彻底删除,不保留扫描记录,未经授权,扫描也是罪过!
图4查看及清除目标扫描记录
3.定制目录扫描
到“C:\Users\Administrator\Documents\Netsparker\Resources\Configuration”文件夹下,如图5所示,可以对配置文件进行更改,如图5所示,将一些敏感信息文件加入到Folders.txt文件,定制自己的目录及文件扫描。
图5定制目录扫描
4.查看Netsparker扫描日志
在“C:\Users\Administrator\Documents\Netsparker\Logs”会保持扫描日志,这个日志专门记录Netsparker扫描出错的一些信息,查看该文件便于进行出错处理。
1.1.4Netsparker扫描结果分析思路
1.各找各“妈”
根据漏洞扫描结果,对于高危漏洞,根据其漏洞提示信息,各找各“妈”:通过漏洞寻找对应漏洞利用工具及其方法。
(1)SQL注入漏洞处理
利用sqlmap对注入点进行测试,利用多种注入利用工具进行注入测试,也可以利用手工进行注入测试。
(2)源代码下载及备份文件下载。下载备份文件分析是否存在webshell,获取数据库连接信息,挖掘漏洞,测试代码中存在的漏洞。
(3)svn及git信息泄露,利用svn及git信息泄露工具获取源代码,然后进行源代码分析。
(4)文件编辑器,根据文件编辑器版本进行相应的漏洞测试及利用。
(5)本地文件包含及远程文件包含,通过文件包含读取数据配置文件,写入文件,文件包含获取webshell等。
(6)文件上传漏洞,对存在文件上传的地方进行各种上传漏洞测测试,尝试获取webshell。
(7)命令执行漏洞,通过命令执行反弹shell,在反弹shell上进行webshell获取及提权。
(8)框架命令执行漏洞,寻找诸如Struts2远程利用相关工具对目标进行命令执行漏洞利用,一般都可以获取webshell。
(9)XSS漏洞,通过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地址等信息。
图6netcraft网站获取IP地址信息
(2)国外ping测试获取
通过国外网站https://asm.ca.com/en/ping.php,对目标域名进行ping测试,如图7所示,通过60多个国外站点对其进行ping测试来获取IP地址,该方法跟前面netcraft获取地信息一致,但是该目标的真正IP地址还不是。原因是cloudflare对正式IP地址进行了保护,防止进行DDOS×××等。
图7ping测试获取真实IP地址
(3)通过百度编辑器的XSS测试获取
可以在百度编辑器中插入xss代码来获取网站的真实IP地址。
2.后台弱口令
获取后台登陆地址http://www.*****.info/index.php/admin/Login/index.html,后台管理用户admin密码123456。
3.敏感文件分析
(1)adminer数据库管理页面
在Netsparker扫描结果中发现存在一些敏感文件,如图8所示,sql.php为adminer.php更名版本,通过该文件可以对数据库进行全部的管理操作。
图8发现adminer数据库管理员页面
(2)发现列目录漏洞
通过分析扫描结果的目录结构,并对其进行访问,发现存在列目录漏洞。
4.使用adminer进行数据相关操作
(1)尝试空口令登录服务器
如图9所示,通过root及空口令成功登录该服务器,在该服务器上面可以看到存在5个数据库,其中真正数据库为vr。
图9空口令登录数据库服务器
(2)查看管理员及其密码
利用adminer对mysql数据库及其vr数据库进行查看,如图10所示,可以看到管理员密码及其它是3个用户帐号,admin为group值为1。
图10查看管理员及其成员账号
(3)MySQL空口令及密码
如图11所示,执行查询来获取主机、用户及密码:SELECT host,user,authentication_string FROM `user`,MySQL新版本中将password字典修改为authentication_string。
图11查看MySQL用户及密码
(4)获取MySQL用户sun的密码
如图12所示,将前面获取MySQL密码:1A2F4FFEABD87521B9AABB0A319533D1977406AA在cmd5.com进行查询,其密码为xxooxxoo。
图12获取MySQL用户sun的密码
5.真实路径地址获取
碰巧在该网站存在phpinfo.php页面,通过访问http://52.215.60.69/phpinfo.php,在该页面参数CONTEXT_DOCUMENT_ROOT及SCRIPT_FILENAME会显示网站的真实路径信息:C:\wamp64\www\,如图13所示。
图13获取网站真实路径
6.webshell获取之路
(1)通过MySQL Root账号导出一句话后门失败
使用传统的方法来导出一句话后门到网站真实路径,执行后,显示由于“--secure-file-priv”参数选项设置,无法直接导出文件到目录,如图14所示。
select ''INTO OUTFILE 'C:/wamp64/www/c.php'
图14导出一句话后门失败
(2)general_log_file获取webshell
查看genera文件配置情况:show global variables like "%genera%";
关闭general_log:set global general_log=off;
通过general_log选项来获取webshell操作:
set global general_log='on';
SET global general_log_file='D:/phpStudy/WWW/cmd.php';
SELECT '';
(3)查看genera文件配置情况
执行show global variables like "%genera%";命令来参考数据库general_log配置情况,如图15所示,知道其配置文件修改为“C:\wamp64\www\Core\log2.php”说明,有人曾经×××过该网站。
图15查看genera文件配置情况
(4)读取文件内容
使用“select load_file('C:/wamp64/www/Core/log2.php')”命令来读取log2.php文件内容,尝试获取其人留下的后门,如图16所示,在新版本MySQL中不支持该方法,猜测该文件应该为一句话后门,也可以通过burpsuite等工具对一句话后门进行暴力破解。
图16读取后门文件内容
(5)开启general_log_file配置选项
如图17所示,执行命令:set global general_log='on';显示配置信息修改成功。
图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 '';
图18设置general_log_file配置日志文件
(7)访问日志文件
如图19所示,在浏览器中访问general_log_file日志文件,可以看出该日志文件中有一些出错等信息,确认该配置文件设置成功。
图19访问日志文件
(8)获取webshell
一句话后门地址:http://52.***.**.**/Core/log3.php,密码cmd,如图20所示,成功获取webshell。
图20成功获取webshell
(9)查看log3.php文件内容
如图21所示,通过中国菜刀一句话后门对log3.php文件内容进行查看,可以看到该文件记录了MySQL查询所进行的操作。
图21查看log3.php文件内容
7.获取系统权限及密码
(1)查看当前用户权限
在中国菜刀后门管理工具中,选中刚才添加到webshell后门地址,在菜单中选择远程终端,如图22所示,使用whomai查看当前用户信息,显示该用户为系统账号,同时使用net user命令查看当前系统的所有用户信息。
图22查看当前用户权限及系统所有用户
(2)使用wce工具直接获取系统登录密码
如图23所示,上传64位的wce修改程序,直接一键获取当前系统的所有账号及明文密码。
图23获取当前登录用户及明文密码
8.登录服务器
如图24所示,使用获取的用户名称及其明文密码成功登录该目标服务器。
图24成功登录远程桌面
9.清除日志记录
(1)清除adminer登录日志
如图25所示,在c:\wamp64\tmp目录,可以看到有adminer.key等登录信息,可以将adminer.*文件进行删除。
图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还原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`,
(3)MySQL 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 '';
2.安全防范建议
(1)服务器上不留任何“多余”文件
(2)数据库及其后台要设置为强口令。在本例中,后台管理员口令为123456,root账号默认安装后为空,如果没有adminer.php类似MySQL数据库管理软件,也会相对较难×××。
(3)禁止网站列目录,可以避免敏感文件信息泄露。
如果您想了解更多安全相关文章,请访问作者专栏:Web网站安全评估分析及防御和网络安全入门到实战,让SQLmap子 弹飞一会儿