pikachu
pikachu靶场导航
靶场介绍
靶场源码链接:
GitHub:https://github.com/zhuifengshaonianhanlu/pikachu
pikachu作为一个入门级别的知识清单靶场,可以帮我们快速掌握和熟练有关渗透的知识点。
参考教程
声明:该笔记为渗透学习笔记,本教程仅作学习用途,若有用于非法行为的,概不负责。
1. 暴力破解
这里主要是使用burpsuite进行暴力破解,这里给大家分享一个字典。不再赘述(主要是我没截图 😃
https://pan.quark.cn/s/25cc05a6ac1b
2. Cross-Site Scripting
Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:
- 反射性XSS;
- 存储型XSS;
- DOM型XSS;
在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理:
- 输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入;
- 输出转义:根据输出点的位置对输出到前端的内容进行适当转义;
2.1 xss-get
我们输入kobe可以看到:
这里我们输入<>检查有没有被过滤
那我们可以尝试输入script,发现有长度限制,在web开发者工具中查找输入框:
输入:
再试试看,发现出现了xss弹窗。
因为是反射性,一次性的,刷新页面之后弹窗消失。这个xss实际上是以get的方式提交的。
- GET和POST典型区别:
GET是以url方式提交数据;
POST是以表单方式在请求体里面提交;
GET方式的XSS漏洞更加容易被利用, 一般利用的方式是将带有跨站脚本的URL伪装后发送给目标,而POST方式由于是以表单方式提交,无法直接使用URL方式进行攻击,
2.2 xss-post
登录之后进入表单,提交script,因为post是提交表单类型的。
2.3 存储型xss
存储型XSS漏洞跟反射型形成的原因一样,不同的是存储型XSS下攻击者可以将脚本注入到后台存储起来,因此存储型XSS也称“永久型”XSS。
我们可以先看看是否过滤特殊字符:
可以看到并没有过滤,直接注入:
2.4 DOM-xss
通过JavaScript,可以重构整个HTML文档。可以添加、移除、改变或重排页面上的项目。
要改变页面的某个东西,JavaScript 就需要获得对HTML文档中所有元素进行访问的入口。这个入口,连同对HTML元索进行添加、移动、改变或移除的方法和属性,都是通过文档对象模型来获得的(DOM)。
所以,你可以把DOM理解为一个一个访问HTML的标准编程接口。
这道题点击按钮后,会返回what do you see,我们检查源代码会发现:
我们来尝试一下提示:
'>
’ οnclick=“alert(‘xss’)”>
2.5 DOM-xss-x
和上题一样检查了源代码之后能找到提示,输入之后有显示,但是有两层,点击第二次才出现弹窗。
我们来尝试一下提示:
'>
’ οnclick=“alert(‘xss’)”>
它的输入实际上是从url上获取的,这就类似反射性。
我们还是对其进行闭合,与之前一样是a标签闭合。
2.6 XSS盲打
xss盲注是指只有后台会看到前端输入的内容,从前端无法判断是否存在XSS,因此采用盲注。
去后台看看,登录之后有显示
对攻击者来说只是尝试的输入,并不知道后台是否被输出,只是尝试的输入跨站脚本。管理员被x到,攻击者成功。这种危害比较大,如果在前端输入一段盗取cookie的脚本,管理员一登陆,管理员的cookie就会被获取。攻击者就可以伪装管理员登陆后台,后台的权限就大了。
2.7 xss的过滤和绕过
- 转换思想
前端限制绕过,直接抓包重放,或者修改html前端代码
- 大小写,比如: pt>
- 使用注释进行干扰: <scri pt> alert(111)</sc <–test–> ript>
- 编码思想
后台过滤了特殊字符,比如
- url
- html编码
script被过滤掉了,因此可以大小写混合绕过试试:
2.7 xss-html
htmlspecialchars()函数把预定义的字符转换为HTML实体。
预定义的字符是:
&(和号)成为&
"(双引号)成为"
'(单引号)成为'
<(小于)成为<
‘>’(大于)成为>
可用的引号类型:
ENT_ COMPAT -默认。仅编码双引号。
ENT QUOTES -编码双引号和单引号。
ENT NOQUOTES -不编码任何引号。
进入界面,输入特殊字符查看是否过滤:
被过滤了单引号
我们可以输入a’ οnclick='alert(666)'第一个单引号是对前面进行闭合。
2.8 xss-href
从上图可知,是返回的这个url里的连接,那我们就直接上javascript进行跳转。
Javascript:alert(999)
2.9 xss-js
打开界面发现
查看网页源码
输入tmac发现有
那我们可以根据闭合来插入语句:
'
3. CSRF(跨站请求伪造漏洞)
Cross-site request forgery简称为"CSRF" 。
在CSRF的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接),然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击也就完成了。
所以CSRF攻击也被称为为"one click"攻击。
- csrf和xss的区别
CSRF是借用户的权限完成攻击,攻击者并没有拿到用户的权限,而XSS是直接盗取到了用户的权限,然后实施破坏。 - 如何确认一个web系统存在csrf漏洞
1,对目标网站增删改的地方进行标记,并观察其逻辑,判断请求是否可以被伪造
比如修改管理员账号时 ,并不需要验证旧密码 ,导致请求容易被伪造;
比如对于敏感信息的修改并没有使用安全的token验证,导致请求容易被伪造;
2,确认凭证的有效期(这个问题会提高CSRF被利用的概率)
虽然退出或者关闭了浏览器,但cookie仍然有效,或者session并没有及时过期,导致CSRF攻击变的简单。
3.1 csrf-get
所以这里我们先登录普通用户的账号
成功登录后我们点击修改信息并提交,修改成功。我们打开burp查看抓到的数据包
请求包中没有看到csrf的token,说明没有防csrf的措施。
所以我们直接仿制一个get请求,让vince点开就可以进行更改。
http://localhost:8081/pikachu/vul/csrf/csrfget/csrf_get_edit.phpsex=5&phonenum=54151&add=China&email=www&submit=submit
3.2 csrf-post
post型因为是请求体,不能在url中,和xss-post类似,需要自己弄一个站点,做一个表单让普通用户点我们恶意站点表单的url,向页面提交post请求。
参考大佬@仙女象小姐的代码,要写一个post请求来伪造表单。
<html>
<script>
window.onload = function() {
document.getElementById("submit").click();
}
</script>
<body>
<form action="http://192.168.116.136/06/vul/csrf/csrfpost/csrf_post_edit.php" method