小言_互联网的博客

[网络安全自学篇] 三十八.hack the box渗透之BurpSuite和Hydra密码爆破及Python加密Post请求(二)

563人阅读  评论(0)

这是作者的系列网络安全自学教程,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您们喜欢,一起进步。前文详细讲解了hack the box在线渗透平台获取邀请码、注册过程。本文将分享Web渗透三道入门题目,它们包括Python编写md5加密发送Post、万能密码和URL路径猜测、BurpSuite和Hydra密码爆破等。基础性文章,希望对您有所帮助!同时,该网站题目细节不便于剧透,更希望大家去尝试,更多分享一些思想和工具用法。

作者作为网络安全的小白,分享一些自学基础教程给大家,主要是关于安全工具和实践操作的在线笔记,希望您们喜欢。同时,更希望您能与我一起操作和进步,后续将深入学习网络安全和系统安全知识并分享相关实验。总之,希望该系列文章对博友有所帮助,写文不易,大神们不喜勿喷,谢谢!如果文章对您有帮助,将是我创作的最大动力,点赞、评论、私聊均可,一起加油喔~

PS:本文参考了B站、安全网站和参考文献中的文章,并结合自己的经验和实践进行撰写,也推荐大家阅读参考文献。

下载地址:https://github.com/eastmountyxz/NetworkSecuritySelf-study

前文学习:
[网络安全自学篇] 一.入门笔记之看雪Web安全学习及异或解密示例
[网络安全自学篇] 二.Chrome浏览器保留密码功能渗透解析及登录加密入门笔记
[网络安全自学篇] 三.Burp Suite工具安装配置、Proxy基础用法及暴库示例
[网络安全自学篇] 四.实验吧CTF实战之WEB渗透和隐写术解密
[网络安全自学篇] 五.IDA Pro反汇编工具初识及逆向工程解密实战
[网络安全自学篇] 六.OllyDbg动态分析工具基础用法及Crakeme逆向
[网络安全自学篇] 七.快手视频下载之Chrome浏览器Network分析及Python爬虫探讨
[网络安全自学篇] 八.Web漏洞及端口扫描之Nmap、ThreatScan和DirBuster工具
[网络安全自学篇] 九.社会工程学之基础概念、IP获取、IP物理定位、文件属性
[网络安全自学篇] 十.论文之基于机器学习算法的主机恶意代码
[网络安全自学篇] 十一.虚拟机VMware+Kali安装入门及Sqlmap基本用法
[网络安全自学篇] 十二.Wireshark安装入门及抓取网站用户名密码(一)
[网络安全自学篇] 十三.Wireshark抓包原理(ARP劫持、MAC泛洪)及数据流追踪和图像抓取(二)
[网络安全自学篇] 十四.Python攻防之基础常识、正则表达式、Web编程和套接字通信(一)
[网络安全自学篇] 十五.Python攻防之多线程、C段扫描和数据库编程(二)
[网络安全自学篇] 十六.Python攻防之弱口令、自定义字典生成及网站暴库防护
[网络安全自学篇] 十七.Python攻防之构建Web目录扫描器及ip代理池(四)
[网络安全自学篇] 十八.XSS跨站脚本攻击原理及代码攻防演示(一)
[网络安全自学篇] 十九.Powershell基础入门及常见用法(一)
[网络安全自学篇] 二十.Powershell基础入门及常见用法(二)
[网络安全自学篇] 二十一.GeekPwn极客大赛之安全攻防技术总结及ShowTime
[网络安全自学篇] 二十二.Web渗透之网站信息、域名信息、端口信息、敏感信息及指纹信息收集
[网络安全自学篇] 二十三.基于机器学习的恶意请求识别及安全领域中的机器学习
[网络安全自学篇] 二十四.基于机器学习的恶意代码识别及人工智能中的恶意代码检测
[网络安全自学篇] 二十五.Web安全学习路线及木马、病毒和防御初探
[网络安全自学篇] 二十六.Shodan搜索引擎详解及Python命令行调用
[网络安全自学篇] 二十七.Sqlmap基础用法、CTF实战及请求参数设置(一)
[网络安全自学篇] 二十八.文件上传漏洞和Caidao入门及防御原理(一)
[网络安全自学篇] 二十九.文件上传漏洞和IIS6.0解析漏洞及防御原理(二)
[网络安全自学篇] 三十.文件上传漏洞、编辑器漏洞和IIS高版本漏洞及防御(三)
[网络安全自学篇] 三十一.文件上传漏洞之Upload-labs靶场及CTF题目01-10(四)
[网络安全自学篇] 三十二.文件上传漏洞之Upload-labs靶场及CTF题目11-20(五)
[网络安全自学篇] 三十三.文件上传漏洞之绕狗一句话原理和绕过安全狗(六)
[网络安全自学篇] 三十四.Windows系统漏洞之5次Shift漏洞启动计算机
[网络安全自学篇] 三十五.恶意代码攻击溯源及恶意样本分析
[网络安全自学篇] 三十六.WinRAR漏洞复现(CVE-2018-20250)及恶意软件自启动劫持
[网络安全自学篇] 三十七.Web渗透提高班之hack the box在线靶场注册及入门知识

前文欣赏:
[渗透&攻防] 一.从数据库原理学习网络攻防及防止SQL注入
[渗透&攻防] 二.SQL MAP工具从零解读数据库及基础用法
[渗透&攻防] 三.数据库之差异备份及Caidao利器
[渗透&攻防] 四.详解MySQL数据库攻防及Fiddler神器分析数据包

声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。


一.Python发送Post请求

[20 Points] Emdee five for life [by L4mpje]

这是一道入门题目,其提示是“Can you encrypt fast enough?”。

host: docker.hackthebox.eu port:31060
打开网址显示如下图所示,MD5 encrypt this string(MD5加密这个字符串),并给出了“BK3ZuECdQYRyERJTXkpP”。

我们用在线md5加密,随便提交一串数字,其反馈结果为“Too slow”。

初始页面,不管怎么样点击Submit都会显示"Too slow!"

查看源代码如下图所示,也没有特别的隐藏或提示。

回头再看题目提示“Can you encrypt fast enough?”,这是一道常见的CTF题目。考察的是代码发送请求,而不是人为点击。我们试试Python代码,通过md5加密这个句子,然后发送post请求,它肯定比我们人为地访问网页再去加密速度快得多。

代码如下:

import requests
import hashlib
import re

# 访问目标网站
url = "http://docker.hackthebox.eu:31060/"
r = requests.session()
out = r.get(url)

# 定位节点位置
con = re.compile(r"<h3 align='center'>(\S+)</h3>", re.I)
# 获取MD5需要加密的字符串
str1 = con.findall(out.text)

# MD5加密字符串
str2 = hashlib.md5(str1[0].encode('utf-8')).hexdigest()

# 发送POST请求
data={'hash': str2}
out = r.post(url = url, data = data)

# 输出结果
print(out.text)

输出结果如下所示:HTB{I Love CSDN!},成功完整。


二.万能密码SQL注入

[30 Points] Cartographer [by Arrexel]
Some underground hackers are developing a new command and control server. Can you break in and see what they are up to?

访问网址如下图所示:

知识点:
万能密码通常是指开发人员在开发过程中使用超级管理员进行开发,开发完成后没有过滤掉这些常用的超级管理员;另一种是存在SQL漏洞管理员账号。下面分别进行讨论:

  • 万能密码:用户名 admin、密码admin,用户名admin、密码123456

  • 万能密码:用户名 ‘or’=‘or’、密码 ‘or’=‘or’
    原理解释:假设用户登录对应的语句为:
    select name, pwd from login where name=’’ and pwd=’’;
    如果用户名输入正确则直接登录,否则提示用户名或密码错误,使用万能密码后的SQL语句如下:
    select name, pwd from login where name=’‘or’=‘or’’ and pwd=’‘or’=‘or’’;
    核心代码,两个单引号匹配,即name=’’,然后or连接,单引号等于单引号(’=’)这是恒成立的,紧接着or连接两个单引号(’’),同理密码pwd。这样or连接的(’=’)是恒成立的,故返回结果为真,导致直接登录。

  • 万能密码:用户名 ‘or’’=’、密码’or’’=’
    原理解释:此时对应的SQL语句如下:
    select name, pwd from login where name=’‘or’’=’’ and pwd=’‘or’’=’’;

  • 万能密码:用户名’or’=’–、密码’or’=’–
    原理解释:此时对应的SQL语句如下:
    select name, pwd from login where name=’‘or’=’–’ and pwd=’‘or’=’–’;


这是一道SQL注入题目,我们将用户名和密码设置为万能密码admin、‘or’='or’均失败,那试试 ‘=’ 呢?

尝试分析源码或BurpSuite分析,如下图所示。

成功之后会进入下面的界面,还需要进一步提取Flag。

接着尝试将参数设置为flag呢?这考察目录扫描,最终后去的flag如下所示。

按照格式输入Flag提交即可,如:HTB{I love CSDN}。

同样,类似的题目我们可以尝试SQLMAP,看看能不能获取登录密码。


三.BurpSuite和Hydra密码爆破

[20 Points] Lernaean [by Arrexel] [22624 solvers]
Your target is not very good with computers. Try and guess their password to see if they may be hiding anything.
你的目标看上去并不是特别擅长电脑,试着猜一下他的密码看看他到底藏着什么…
这个挑战20分,难度还行,由Arrexel编辑上传。


访问之后如下图所示:
Administrator Login(管理员登录)
— CONFIDENTIAL — (保密)
Please do not try to guess my password! (不要试图猜中我的密码)

随便输入,提示“Invalid password!”(密码无效)。

查看源代码也没有什么提示信息,仅有一个输入框,form-post登录表单提交。随便试了几个弱密码,则页面左上角提示 “Invalid password”。

在HTB或CTF里有一个传统,就是通常题目名称就已经包含着相关提示,百度了一下题目Lernaean,发现这就是Hydra嘛,看这不是明摆着告诉我要暴力破吗?

密码爆破可以分为两种,一种是在线爆破,这种方hydra式一般要求待爆破的对象对我们来说是可以正常提供服务的,通俗来讲就是能够让我们通过一定的途径去尝试登录,或者是验证用户密码的正确性。另一种就是本地爆破,比如wifi抓包爆破wifi密码,只要提前抓到了wifi登录验证的数据包,就可以在本地电脑上进行爆破操作,而不需要路由器来参与验证密码的正确性。


1.BurpSuite登录爆破

参考作者前文:[网络安全自学篇] 三.Burp Suite工具安装配置、Proxy基础用法及暴库示例

在暴力爆破前,先要了解网站登录post表单中有何字段。最方便的方法就是使用谷歌浏览器自带的检视工具,发现只有一个password字段,接着尝试爆破。

第一步,设置BurpSuite代理端口。

第二步,设置浏览器代理IP地址“127.0.0.1”,端口“8080”,和BurpSuite一致即可。

启动浏览器代理,这里作者使用OWASP Mantra浏览器,读者使用自己的Chrome、Firefox均可。

OWASP Mantra 是由 Mantra 团队开发,面向渗透测试人员、Web 开发人员和安全专业人员的安全工具套件 (基于浏览器, 目前是 Chromium 和 Firefox ),包括扩展程序和脚本集合。

第三步,浏览器访问,然后BurpSuite截断,点击“Forward”。

如下图所示,浏览器中随机输入密码“123456”。

第四步,在界面中鼠标右键,在弹出菜单中选择“Send to Intruder”(Ctrl+I),此时会将请求数据分发给Intruder模块,并且Intruder变红。

鼠标选中请求数据页面中的Password参数值(需要进行暴力爆破的密码值),单击“Add§”按钮进行位置标记,TextBoxPwd=§123456§。


第五步,选择Payloads选项,单击“Load items form file”,在弹出的对话框中选择暴力爆破密码文件并单击“打开”按钮,将爆破密码列表导入。

注意,这里作者仅设置了最简单的密码,有两个爆破字典库供大家使用,一个22M,另一个是kali常用字典133M。

第六步,单击“Start attack”按钮开始爆破测试,分析输出结果。

输出结果如下图所示:

分析结果如下图所示,在弹出的窗口“Intruder attack”中可以根据返回长度Length的不同判断爆破是否成功,这里隐藏的密码是“xxxxxx”,它的长度最大并且为最终密码。注意,Length越大那么密码吻合就越大。

错误的密码Response反馈结果:

正确的密码Response反馈结果:

最终密码显示在BurpSuite返回的Response中,如下所示。

<h1 style='color: #fff;'>HTB{I Love Eastmount!}</h1>
<script type="text/javascript">
    window.location = "noooooooope.html"
</script>

提交即可:

PS:这里存在一个问题,我们的爆破密码使用它太慢,这里提供另一种方法。


2.Hydra登录爆破

hydra是一个极其强大的在线获取密码的工具(爆破神器),Hydra 可以根据使用者指定的用户名字典文件、密码字典文件、目标IP列表来暴力获取目标系统登录用户名和密码,并且其支持多种协议以及并发连接!

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2020-01-11 21:47:31
Syntax: hydra [[[-l LOGIN|-L FILE] [-p PASS|-P FILE]] | [-C FILE]] [-e nsr] [-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-W TIME] [-f] [-s PORT] [-x MIN:MAX:CHARSET] [-c TIME] [-ISOuvVd46] [service://server[:PORT][/OPT]]

Options:
  -l LOGIN or -L FILE  login with LOGIN name, or load several logins from FILE
  -p PASS  or -P FILE  try password PASS, or load several passwords from FILE
  -C FILE   colon separated "login:pass" format, instead of -L/-P options
  -M FILE   list of servers to attack, one entry per line, ':' to specify port
  -t TASKS  run TASKS number of connects in parallel per target (default: 16)
  -U        service module usage details
  -h        more command line options (COMPLETE HELP)
  server    the target: DNS, IP or 192.168.0.0/24 (this OR the -M option)
  service   the service to crack (see below for supported protocols)
  OPT       some service modules support additional input (-U for module help)

这里参考“黑猫驿站”大神的结果。Hydra参数用户名为空,密码表为rockyou.txt,目标端口为35542,http-post-form表格参数要注意登录失败字符为"Invalid password!"。

hydra -l "" -P /usr/share/wordlists/rockyou.txt docker.hackthebox.eu http-post-form "/:password=^PASS^:Invalid password!" -s 35542

密码爆破结果如下图所示,这里密码打一下码。

最后用burpsuite对登录(使用上方的密码)抓一次包,密码在h1中。

注意:这里需要用Burpsuite截包,如果用浏览器直接登录的话,页面会被强制重定向到nooooooope.html。


如何安装hydra呢?个人感受,安装环境还挺难的。
github代码如下:https://github.com/vanhauser-thc/thc-hydra

Linux安装:
Kali是安全从业人员常用的Linux系统,自带有大量安全工具集,Hydra自然也集成在里面,工具位置在密码攻击—在线攻击一栏,直接输入命令即可。

hydra -l "" -P pass-kali.txt docker.hackthebox.eu -s 31103 http-post-form "/:password=^PASS^:Invalid password!"


Windows安装:
从github下载Windows版本,然后命令行模式下运行。
https://github.com/maaaaz/thc-hydra-windows

打开输入hydra.exe 就可以查看命令行帮助界面了。

作者使用了Hydra爆破,但服务器容易奔溃,如下图所示:

Hydra常用命令如下:

#ssh
hydra -L users.txt -P password.txt -vV -o ssh.log -e ns IP ssh
#https
hydra -m /index.php -l username -P pass.txt IP https
#teamspeak
hydra -l 用户名 -P 密码字典 -s 端口号 -vV ip teamspeak
#cisco
hydra -P pass.txt IP cisco
hydra -m cloud -P pass.txt 10.36.16.18 cisco-enable
#smb
hydra -l administrator -P pass.txt IP smb
#pop3
hydra -l muts -P pass.txt my.pop3.mail pop3
#rdp
hydra IP rdp -l administrator -P pass.txt -V
#http-proxy
hydra -l admin -P pass.txt http-proxy://10.36.16.18
#telnet
hydra IP telnet -l 用户 -P 密码字典 -t 32 -s 23 -e ns -f -V
#ftp:
hydra IP ftp -l 用户名 -P 密码字典 -t 线程(默认16) -vV
hydra IP ftp -l 用户名 -P 密码字典 -e ns -vV
#get方式提交
hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns IP http-get /admin/
hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns -f IP http-get /admin/index.php
#post方式提交
hydra -l admin -P pass.lst -o ok.lst -t 1 -f 127.0.0.1 http-post-form “index.php:name=^USER^&pwd=^PASS^:<title>invalido</title>

四.总结

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

转眼,自己已经写了400多篇文章了,非常值得纪念,今后也希望帮到更多的读者。最后,希望博友们多看看来时的路,生活不止有编程和论文,还有太多精彩需要我们去感受,祝好~

最后希望大家帮我CSDN博客之星投投票,每天可以投5票喔,谢谢大家!八年,在CSDN分享了410篇文章,15个专栏,400多万人次浏览,包括Python人工智能、数据挖掘、网络爬虫、图象处理、网络安全、JAVA网站、Android开发、LAMP/WAMP、C#网络编程、C++游戏、算法和数据结构、面试总结、人生感悟等。当然还有我和你的故事,感恩一路有你,感谢一路同行,希望通过编程分享帮助到更多人,也希望学成之后教更多学生。因为喜欢,所以分享,且看且珍惜,加油!我的学生们,等我学成归来~

投票地址:http://m234140.nofollow.ax.mvote.cn/opage/ed8141a0-ed19-774b-6b0d-39c3aaf89dde.html?from=singlemessage

(By:Eastmount 2020-01-13 中午13点写于武汉 http://blog.csdn.net/eastmount/ )


参考文献:
[1] 先知社区 hack the box - web题解
[2] Hack The Box Web Pentest 2019
[3] https://github.com/vanhauser-thc/thc-hydra
[4] Centos7安装Hydra(爆破神器) - 蛇皮皮蛋
[5] [HTB] Lernaean Write-up - 黑猫驿站
[6] Hydra安装及其用法 - littlecjx
[7] hydra(爆破神器)- 生活的理想
[8] https://github.com/vanhauser-thc/thc-hydra


转载:https://blog.csdn.net/Eastmount/article/details/103938700
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场