黑客渗透 金融劫持 BC域名跳转
18.9K subscribers
1.89K photos
19 videos
2 files
167 links
金融股民渗透国内app,海外网站app,入侵后台,脱裤数据库, dns劫持 服务器进入等等
破解网站app软件技术等等 黑客技术咨询
@hacker_HouZiM
Download Telegram
该段代码使用jndi的方式去访问LDAP服务,这里我们可以控制Context.PROVIDER_URL的参数,从而控制jndi访问的LDAP服务器的地址。
getSchema(rdn)方法最终会调用com.sun.jndi.ldap.LdapBindingEnumeration.createItem(String, Attributes, Vector)方法(调用关系太多,自己去调试)
在该方法中最终会调用Obj.decodeObject(attrs)方法,从而实现对象的反序列化。这里稍微提下,com.sun.jndi.ldap.Obj对象中定义了几种对象序列化与反序列化的方法,有直接反序列化的,也有直接通过远程加载的,这里的的反序列化稍微与其它地方的反序列化不同的点在于我们不能远程加载对象,因为com.sun.jndi.ldap.VersionHelper12.trustURLCodebase的默认值为false,所以直接决定了类加载器只能加载当前classpath下面的类,关于如何去构造对象使得LDAP在反序列化能执行任意代码,请看下文。
到这里我们知道了com.sun.jndi.ldap.LdapAttribute中相关的方法能触发反序列化的漏洞,那么现在我们要做的就是去找到一个类在反序列化的时候能调用我们相应触发漏洞的函数,也就是在反序列化时能调用getAttributeSyntaxDefinition方法或者getAttributeDefinition方法的类,通过老外的PPT以及公开的gadgets,我们稍微分析下就会发现在net.sf.json这个类库中存在可以调用类任意getXXX函数的地方,那么com.sun.jndi.ldap.LdapAttribute这个类中的getXXX方法是不是也可以通过这种方式来调用,首先我们先确定究竟是那个类中的那个方法能调用getXXX函数,通过gadgets中的json Payload我们发现最终能调用对象的getXXX函数
圈起来的两个地方就是能调用getXXX函数的地方,这里会先遍历javabean的所有属性,最后在挨个的调用。
弄明白了能函数调用的根源,下一步就是去找这个函数究竟会怎样触发。通过eclipse我们可以很容易发现如下调用方式。
我们可以看见defaultBeanProcessing方法最终会被ConcurrentSkipListSet类中的equals方法调用,到这里很多人可能会问了,那么多调用关系,你为什么就找这个类的equals方法,这里可能会有一些经验在里面,因为对于和equals方法相关的东西太多了,对于java中的某些数据结构,例如Set,每次添加元素的时候都会判断当前key是否存在,还有就是比较两个对象是否相等的时候会去调用hashcode和equals方法,这里如果了解过其它反序列化的同学对此可能会稍有感触,例如jdk的那个反序列化的触发过程。如果这种经验没有的话,那么你只能一个一个的去找了。
最终我们找到了一个类可以的某个方法可以调用我们的函数了,但是你可能会发现在eclipse中这样的函数调用关系大多是多态情况下的方法调用,所以我们还需要对equals方法中的方法调用进行分析,这里我们需要注意的是defaultBeanProcessing这个函数的直接调用对象是net.sf.json.JSONArray.fromObject(Object, JsonConfig)方法,我们来看下equals方法

渗透爬虫软件 资源采集 劫持域名 提取抓料子 六合·色站·彩票·博彩·金融 接渗透拿站,各大网站数据-拖库-提权联系 域名劫持 DNS 入侵网站 联系:@hacker_HouZiM
从get请求中获取了orderfield赋值给$orderfield并且只使用trim()函数进行了处理,这里明显是有问题的。
继续往下跟进发现传进了fetch_by_get函数的第3个参数:
继续跟进fetch_by_get函数,文件路径在:/Users/striker/www/discuz3/upload/source/plugin/jameson_read/table/table_jamesonread_books.php第120行:
发现将$orderfield直接传入了Discuz自带的DB::fetch_all函数中执行,我们继续跟进fetch_all函数:
这个函数将sql语句又传入到self::query函数:
这个函数又调用了self::format()进行格式化语句:
这个函数首先判断了%出现的次数,如果没有出现则扔出错误。
然后写两个一个while循环来拼接sql语句,查找百分号后面的字母,我们这里的$orderfield传入时是%i所以我们只关注这个分支:
如果百分号后面是i的话,就直接拼接带入进去,没有进行其他的处理。
最终format函数返回了拼接后的sql语句。

渗透爬虫软件 资源采集 劫持域名 提取抓料子 六合·色站·彩票·博彩·金融 接渗透拿站,各大网站数据-拖库-提权联系 域名劫持 DNS 入侵网站 联系:@hacker_HouZiM
用户名可以由 128 个 ASCII 字符中的任意一个组成,但不能是 \<CR>或 `\ <LF>`。你猜 JRE 的实现者们忘记了什么?没错,就是检查 `\ <CR>` 或 `\`是否存在<LF>。这意味着,如果我们%0D%0A在 URL 的用户名部分(或者密码部分)的任何地方输入 `\`,我们就可以终止 `USER`(或 `PASS`)命令,并将一个新的命令注入到 FTP 会话中。
使用 SMTP 而不是 FTP。请注意,由于历史原因,这两种协议在结构上非常相似。例如,连接时,它们都会发送一个包含 220 代码和文本的回复:
因此,如果我们USER向邮件服务器而不是 FTP 服务器发送命令,它会返回一个错误代码(因为USER这不是有效的 SMTP 命令),但允许我们继续会话。结合上面提到的漏洞,这使我们能够发送任意 SMTP 命令,从而发送电子邮件。例如,让我们将 URL 设置为以下内容:
使用此 URL 连接时sun.net.ftp.impl.FtpClient,以下命令将发送到 shiftordie.de 的邮件服务器:
从 Java 的角度来看,“FTP”连接失败sun.net.ftp.FtpLoginException: Invalid username/password,但邮件已经发送出去了。

渗透爬虫软件 资源采集 劫持域名 提取抓料子 六合·色站·彩票·博彩·金融 接渗透拿站,各大网站数据-拖库-提权联系 域名劫持 DNS 入侵网站 联系:@hacker_HouZiM
我们知道该释放掉的内存块是位于堆空间上的,接下去就来看下它的分配。先在Gflags的设置中勾选“Create User Mode Stack Trace Database”这一项,我们要能够在同一堆区上分配相同大小的内存空间,这样才能满足堆喷的利用条件,因此需要确定释放的内存是分配在哪块堆上的。
通过下述HTML代码我们可以将特定的数据分配到IE的默认堆上:
然后借助WinDbg来看下堆分配的情况:
可以看到ActiveX控件和JavaScript代码使用了相同的堆区,因此利用起来就方便多了。

渗透爬虫软件 资源采集 劫持域名 提取抓料子 六合·色站·彩票·博彩·金融 接渗透拿站,各大网站数据-拖库-提权联系 域名劫持 DNS 入侵网站 联系:@hacker_HouZiM
通过查看下述代码,我们发现其中存在一条能导致代码执行的路径。首先,EDI+1Ch指向的内存值被存入到EAX寄存器,而后EAX指向的内存值又被赋值给了ESI寄存器,再往下程序会执行一些其它操作和函数调用并最终来到ESI+4指向的地址。
我们需要确保13e70cb5处的函数调用不会改变ESI寄存器的值,这样上面找到的执行路径才是可控的。下述的WinDbg调试过程给出了如何分配新的内存空间来替换释放掉的内存块,并通过单步跟踪来确认此路径能导致代码的执行。
这表明如果能在释放掉的内存块中写入我们精心构造的数据,那么就能将此漏洞转换成可利用的代码执行。

渗透爬虫软件 资源采集 劫持域名 提取抓料子 六合·色站·彩票·博彩·金融 接渗透拿站,各大网站数据-拖库-提权联系 域名劫持 DNS 入侵网站 联系:@hacker_HouZiM
由分析可知该控件并没有通过实现IObjectSafetySiteLock接口来将其锁定到特定域名。
然而,测试表明该控件仅适用于特定的Google域名。既然它没有使用IObjectSafetySiteLock,我接着又检查其是否被注册成IE中的Browser Helper对象,这样可以获取navigation事件,通过逆向调试发现确是如此。因此,由导出的IObjectWithSite接口控件可创建与IE的连接,借此就能得到当前访问的URL信息了。
通过下述C++代码,我们创建该控件的一个实例,并在调用IObjectWithSite-> SetSite()前插入一个断点:
这样我们就可以在调试器中定位到此函数的入口信息,然后在IE中的相同位置下断,并借助HTML代码来加载和调用该控件。
分析可知,控件通过对象传递来实现SetSite供IE调用,如下代码为其中的一部分实现,这里的URL信息由ECX寄存器传递:
通过对此函数的更进一步分析我们可以找到将当前域名和白名单中的域名进行比较的代码段:
我们可以在调试器中下断来打印出所有的白名单域名:

渗透爬虫软件 资源采集 劫持域名 提取抓料子 六合·色站·彩票·博彩·金融 接渗透拿站,各大网站数据-拖库-提权联系 域名劫持 DNS 入侵网站 联系:@hacker_HouZiM