目 录CONTENT

文章目录

从零到牛逼第六节:一层Appointment靶机

CZ
CZ
2023-05-16 / 1 评论 / 6 点赞 / 496 阅读 / 7087 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2024-04-24,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

前言汇总

在上一节的实验中我们学习了redis的大概用法,本节主要给大家讲解在sql注入中Gobuster工具的具体用法。Gobuster这款工具基于Go编程语言开发,广大研究人员可使用该工具来对目录、文件、DNS和VHost等对象进行暴力破解攻击。目前,该工具刚刚发布了最新的Gobuster v3.0.1版本

Gobuster可爆破的对象包括:

  1. 目标站点中的URI(目录或文件);
  2. DNS子域名(支持通配符);
  3. 目标Web服务器的虚拟主机名(VHost);

工具优势

  1. 没有使用臃肿的Java GUI,工具基于FTW控制台实现
  2. 可直接在命令行工具中执行;
  3. 不会执行递归爆破;
  4. 允许测试人员同时对目标文件夹以及多种扩展进行爆破;
  5. 跨平台支持;
  6. 运行速度比解释型脚本的运行速度快;
  7. 不需要运行时环境;
  8. 并发性支持;

准备环节

打开控制台

su - root
Ctrl+Shift+T  #同时开启多个终端
cd /home/cz/下载    #你自己的vpn文件路径
openvpn starting_czhtb.ovpn  #通过openvpn连接htb平台
cd /home/cz/桌面  #在新建的终端打开
mkdir 0101   #创建0101实验目录
cd 0101
touch 笔记本.txt
ls

回到htb平台开启实例获取到分配给我们的ip地址

image-1684202160726

ping 10.129.175.86

image-1684204259826

题目详情

答案见文末

TASK 1
What does the acronym SQL stand for?
#译文:
任务1
SQL 的缩写代表什么?
TASK 2
What is one of the most common type of SQL vulnerabilities?
#译文:
任务 2
最常见的 SQL 漏洞类型之一是什么?
TASK 3
What does PII stand for?
#译文:
任务 3
PII 代表什么?
TASK 4
What is the 2021 OWASP Top 10 classification for this vulnerability?
#译文:
任务 4
此漏洞的 2021 OWASP Top 10 分类是什么?
TASK 5
What does Nmap report as the service and version that are running on port 80 of the target?
#译文:
任务 5
Nmap 将什么报告为在目标端口 80 上运行的服务和版本?
TASK 6
What is the standard port used for the HTTPS protocol?
#译文:
任务 6
HTTPS 协议使用的标准端口是什么?
TASK 7
What is a folder called in web-application terminology?
#译文:
任务 7
Web 应用程序术语中的文件夹是什么?
TASK 8
What is the HTTP response code is given for 'Not Found' errors?
#译文:
任务 8
“未找到”错误的 HTTP 响应代码是什么?
TASK 9
Gobuster is one tool used to brute force directories on a webserver. What switch do we use with Gobuster to specify we're looking to discover directories, and not subdomains?
#译文:
任务 9
Gobuster 是一种用于对网络服务器上的目录进行暴力破解的工具。我们在 Gobuster 中使用什么开关来指定我们正在寻找目录,而不是子域?
TASK 10
What single character can be used to comment out the rest of a line in MySQL?
#译文:
任务 10
什么单个字符可以用来在 MySQL 中注释掉一行的其余部分?
TASK 11
If user input is not handled carefully, it could be interpreted as a comment. Use a comment to login as admin without knowing the password. What is the first word on the webpage returned?
#译文:
如果不小心处理用户输入,它可能会被解释为评论。在不知道密码的情况下使用评论以管理员身份登录。返回的网页上的第一个词是什么?
SUBMIT FLAG
Submit root flag
#译文:
提交标志
提交根标志

实验环节

老规矩,先用nmap扫描

nmap -sC -sV 10.129.175.86 -o 0101nmap

我们检测到的唯一开放端口是端口80TCP,它正在运行Apache httpd服务器版本2.4.38 。

image-1684204722971

浏览器访问80端口

image-1684204897229

在Web目录中导航时,HTTP客户端(即您的浏览器)使用HTTP协议通过发送HTTP请求(GET或POST消息)与HTTP服务器(在本例中为Apache 2.4.38)通信,然后服务器将处理并返回HTTP响应。

  • HTTP1/1 200 OK:页面/资源存在,继续向您发送数据。
  • HTTP1/1 404 Not Found :页面/资源不存在。
  • HTTP1/1 302 Found :找到页面/资源,但通过重定向到另一个目录(已移动暂时地)。这是对用户代理(网络浏览器)的邀请,其次,对位置字段中指定的新URL的相同请求。你会将整个过程视为无缝重定向到指定的新URL资源。

对于以上情况是我们在尝试枚举隐藏目录或资源时将重点关注的。然而,我们将使用一个工具来自动搜索,而不是通过URL搜索栏手动导航来查找这些隐藏数据。这就是Gobuster,Dirbuster,Dirb等工具发挥作用的地方。这些被称为暴力破解工具。蛮力是一种提交数据的方法,该方法通过称为单词列表的特制变量列表提供,以尝试猜测正确的输入以对其进行验证并获得访问权限。用这样的工具对web目录和资源应用暴力破解的方法,会将wordlist中的变量一个一个注入,对HTTP服务器不合逻辑的请求,然后读取每个请求的HTTP响应码,看是否被接受为现有资源与否。在我们的例子中,我们将使用的单词列表将包含标准目录和文件名(例如images、scripts、login.php、admin.php),以及更多不常见的。

 #1、使用go install安装
go install github.com/OJ/gobuster/v3@latest  
 #2、从源代码构建和编译
git clone https://github.com/OJ/gobuster.git
go get && go build
go install
gobuster --help   #查看工具的相关用法

image-1684205733235

打开kali预安装的无数单词列表、词典和彩虹表。

cd /usr/share/wordlists/
ls
git clone https://github.com/danielmiessler/SecLists.git  #可以用开源的字典库拉取,但是kali自带,我们就不安装了

image-1684206084911

gobuster dir --url http://10.129.175.86/ --wordlist /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt  #dir:指定我们希望进行web目录枚举;--url 指定运行HTTP服务器的目标机器的网址;--wordlist:指定我们要使用的词表;

查看web目录并没有发现什么有用的信息,我们尝试一下一些常用的组合密码登录

image-1684207762738

常用组合密码:

  • admin:admin
  • guest:guest
  • user:user
  • root:root
  • administrator:password

我们发现仍然无法登录

思路转变一下,既然常用路径和弱密码登录无用,那么我们看看登录页面存不存在sql注入 请注意,我们可以通过网页上的登录表单指定用户名和密码.但是;它将直接嵌入执行SQL查询的$sql变量中,而无需输入验证.请注意,没有正则表达式或函数禁止我们插入特殊字符,例如单引号或主题标签。这是一种危险的做法,因为这些特殊字符可用于修改查询.这对单引号用于指定需要从SQL数据库中检索的确切数据,而主题标签符号用于进行注释。因此,我们可以通过输入以下内容来操作查询命令:

admin ' #
123456

我们将用单引号结束查询,允许脚本搜索管理员用户名,通过添加主题标签,我们将注释掉查询的其余部分,这将使搜索指定用户名的匹配密码变得过时。如果我们进一步查看上面的PHP代码,我们会发现只有在我们的用户名和密码组合恰好有一个结果时,代码才会批准登录。但是,由于我们已经跳过了查询的密码搜索部分,脚本现在只会搜索是否存在名为admin的用户名admin帐户的条目。在这种情况下,我们很幸运。确实有一个,这将验证我们的SQL注入并返回Scount变量的1值,该值将通过if 语句,允许我们在不知道密码的情况下登录。如果没有管理员帐户,我们可以尝试任何其他帐户,直到找到一个存在的帐户。(例如 administrator、john_doe等)任何有效的现有用户名都会使我们的SQL注入起作用。在这种情况下,因为查询的密码搜索部分已被跳过,我们可以在密码字段中输入任何我们想要的内容。

image-1684208383004

点击登录,返回出一条代码,最后得到我们的flag

image-1684208861357

6

评论区