玖叶教程网

前端编程开发入门

三十九,hackthebox渗透之DirBuster扫描路径及Sqlmap

一.DirBuster扫描目录

hack the box是一个在线Web渗透实验平台,能帮助你提升渗透测试技能和黑盒测试技能,平台上有很多靶机,从易到难,各个级别的靶机都有。因为这些靶机放在平台上供大家测试,每个靶机都有自己的静态IP地址和端口号,而且模拟真实环境,推荐大家去练习。

[20 Points] Fuzzy [by Arrexel]

We have gained access to some infrastructure which we believe is connected to the internal network of our target. We need you to help obtain the administrator password for the website they are currently developing.

我们已经获得了一些已连接到目标内部网络的基础架构的访问权限,需要您帮助获取他们当前正在开发网站的管理员密码。


host: docker.hackthebox.eu port:30275
这是一道入门题目20分,打开网址如下图所示。由于该页面是纯静态的,没有什么调用功能,再加上提示是Fuzzy(模糊测试),那就工具上手吧!这里先使用之前介绍过的目录扫描工具——DirBuster。


DirBuster是Owasp(Open Web Application Security Project )开发的一款专门用于探测网站目录和文件(包括隐藏文件)的工具。由于使用Java编写,电脑中要装有JDK才能运行,它是一个多线程Java应用程序,旨在强制Web /应用程序服务器上的目录和文件名。

前文分享:[网络安全自学篇] 八.目录及端口扫描之Nmap、ThreatScan和DirBuster工具

第一步,打开软件如下图所示。


第二步,发现该网站没有可利用的点,直接输入URL并点击Browse加载字典文件,设置线程数100,“Start”开始扫描。


扫描结果如下图所示,时间稍微漫长些。


正确的目录不会报错且响应200(OK),例如能正确显示的文件夹“api”;错误的目录或文件显示红色,表示不存在或访问无响应。


第三步,通过Fuzzy找到api目录,并且action.php文件。它是可疑目录,我们尝试浏览器访问。


第四步,访问 “…/api/action.php”后发现缺少Parameter参数,接着使用DirBuster扫描参数Parameter。


扫描方法相同,但需要勾选“Auto Switch”,然后设置自定义路径“/api/action.php?{dir}=fe”。注意,这里的匹配参数是{dir},非常棒的一种扫描方法。


由于只是扫描参数,很快我们的结果“reset”就成功扫描出来。


如果是Linux环境下,运行结果如下图所示:


接着访问,发现参数所对应的值ID错误,接着扫描ID值。


第五步,接着暴力爆破参数ID值,此时设置为“/api/action.php?reset={dir}”。


扫描结果如下图所示:


接着通过浏览器访问,成功获取HTB{I love CSDN!}。


同样,如果您是Linux环境,扫描结果如下图所示:


简单总结:

这篇文章主要讲解了模糊测试Fuzzy基本知识,涉及DirBuster工具的基本用法,包括扫描目录、获取参数变量、获取参数对应的值,是一个Web扫描的好案例。但缺点是比较耗时,同时过度扫描会引起目标怀疑或服务器奔溃,这些都是问题。如果hack the box服务器拒绝了我们的连接请求,重新启动连接,换个端口试试。


自此,我们Web渗透的题目成功完成了4道,非常基础的四种方法。


二.Sqlmap高级用法及管理员口令获取

[30 Points] FreeLancer [by IhsanSencan]

Can you test how secure my website is? Prove me wrong and capture the flag!

我的网站安全吗?证明我是错误的并找出flag吧!


通过URL和端口打开网页,显示如下图所示:


点击上面的选项或下拉条,会局部跳转或滑动到后续页面。


随机输入用户名和面,会提示错误。


1.人工检测

一个长期存在的事实是,当读者在看一个页面的布局时,他们会被可读的内容分散注意力。那线索会不会在源码中?

第一步,我们查看源码,发现了线索“contact_me.php”。


访问contact_me.php页面,反应如下,这是一个假的线索,我们渗透中也会经常遇到。


第二步,继续查看源代码,发现一个调用id参数的页面,并且被注释掉了,它才是真实的线索。


从完整源码中也是可以发现的。


或者调用BurpSuite,通过服务器返回的页面信息,也能发现这个调用id参数的线索。

难点: 如何才能找到这种细微漏洞呢?通过审查元素观察吗?或是爆破目录呢?个人认为,这里的扫描、查看源代码以及渗透经验都是关键,跟着作者慢慢积累吧!


第三步,我们访问该页面:http://docker.hackthebox.eu:30471/portfolio.php?id=1。

Log Cabin 1 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Mollitia neque assumenda ipsam nihil, molestias magnam, recusandae quos quis inventore quisquam velit asperiores, vitae? Reprehenderit soluta, eos quod consequuntur itaque. Nam.


通过手动检测,发现它是一个基于布尔的sql注入(布尔注入反馈True或False)。检测方法是测试URL加单引号id=1’,返回不正确页面。TRUE页面存在“you are in…”,FALSE页面不存在“you are in …”,初步确定单引号存在注入。


问题1: 作者本来想通过手动拼接URL进行SQL注入,大家更容易理解SQL注入原理,但一直失败,最终使用SQLMAP实现吧!

2.Sqlmap实例

第一步,扫描所有数据库。

  • 参数:–dbs
  • 命令:python sqlmap.py -u “http://…/portfolio.php?id=1” --dbs


运行结果如下图所示,获取4个数据库,其中–dbs参数表示databases,目标数据库名称为“freelancer”。


可以使用获取当前数据库命令。

参数:–current-db

命令:python sqlmap.py -u “http://…/portfolio.php?id=1” --current-db

第二步,获取数据库所有表。

参数:-D freelancer --tables

命令:python sqlmap.py -u “http://…/portfolio.php?id=1” -D freelancer --tables


运行结果如下图所示,获取数据库freelancer的所有表,其中-D表示数据库,–tables表示所有表。其中管理员账号表为“safeadmin”。


第三步,获取数据库登录表所有字段。

参数:-D freelancer -T safeadmin --columns

命令:python sqlmap.py -u “http://…/portfolio.php?id=1” -D freelancer -T safeadmin --columns


运行结果如下图所示,获取数据库freelancer的登录表safeadmin所有字段,其中-D表示数据库,-T表示表,–columns表示usr表所有列。


第四步,获取数据库登录表用户名和密码。

参数:-D freelancer -T safeadmin -C “username,password” --dump

命令:python sqlmap.py -u “http://…/portfolio.php?id=1” -D freelancer -T safeadmin -C “username,password” --dump


获取数据库freelancer的登录表safeadmin所有字段,其中-D表示数据库,-T表示表,-C表示输出字段(usr_name、passwd),–dump输出所有值。


如果字段内容太多,可以设置输出个数,如10个用户名和密码。参数:-D ahykd_new -T usr -C “usr_name,passwd” --start 1 --stop 10 --dump。

此时,获取用户名和密码,如下所示。



+----------+--------------------------------------------------------------+
| username | password                                                     |
+----------+--------------------------------------------------------------+
| safeadm  | $2y$10$s2ZCi/tHICnA97uf4MfbZuhmOZQXdCnrM9VM9LBMHPp68vAXNRf4K |
+----------+--------------------------------------------------------------+

因为存在账号密码,那么它很有可能就存在相应的登录界面。那么,它的登录页面是多少呢?

第五步,这里可以尝试DirBuster或Dirsearch扫描登陆页面,它存在 /administrat/ 路径下,“/administrat/index.php”页面打开如下图所示。


问题2: 通常Sqlmap爆破管理员用户名和密码,进行MD5或Hash解密即可登录。但是这里仍然无法登陆,因为密码是经过复杂加密,而且爆破没有成功。


第六步,我们继续使用DirBuster爆破administrat目录。


扫描结果如下图所示,这里“panel.php”是可疑文件。


问题3: 但这里有存在一个难点,该php文件(/administrat/panel.php)是临时重定向文件(302),即每次打开它就会自动跳转到index.php主页,并且BurpSuite拦截也无法获取该文件源代码,怎么办呢?这可能也是您可能会遇到的问题。


第七步,这里使用了Sqlmap的一个高级用法。既然前面通过SQL注入已经成功获取了该网站的数据库,那么我们是否能把该php文件下载至本地呢?

  • 参数:–file-read=ar/wwwml/administrat/panel.php
  • 命令:
python sqlmap.py -u "http://...../portfolio.php?id=1" --file-read=var/www/html/administrat/panel.php

注意:目标服务器为linux,那么路径应该为/var/www/html/下。


成功获取文件内容如下图所示:


我们尝试打开本地文件:


panel.php源代码如下所示,看!它前面是一段重定向index.php文件,但后面内容中隐藏了flag,HTB{I love CSDN}。就这样完成了该题目。


简单总结:

该部分详细讲解了Sqlmap的基本用法,包括获取数据库、表、字段、用户名和密码,同时结合了DirBuster扫描文件及实战中Web渗透分析方法,最后分享了一个Sqlmap下载远程文件的高级用法,希望对您有所帮助!

关于SQL注入如何防护,这里也简单分享下:

在URL设置不允许非法字符,如单引号、等号、注释–、减号,提示非法参数;

在URL设置不允许SQL常见的关键词,如and、select、or、insert等;

传递的id=115参数必须为数字才能正常跳转,否则跳转错误;

服务器启用SQL注入拦截功能,提示当前网页的 URL / POST / COOKIES中包含了特定的 SQL字符而被防火墙拦截,因为可能通过POST、Cookies进行攻击,各方面都需要做到防御。

可以使用JS在客户端进行不安全字符屏蔽,也可以在jsp中调用该函数检查是否包函非法字符,或使用正则表达式过滤传入的参数,防止SQL从URL注入;

安全狗、防火墙、监控软件、黑白名单等措施。

三.总结

这篇基础性文章就此结束,希望文章对您有所帮助。非常感谢师弟他们的推荐,也觉得自己的技术好浅,要学的知识好多。如果您是安全初学者,一步一步学习,多实践多尝试,大牛都是慢慢练成的。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言