黑客渗透 金融劫持 BC域名跳转
17.7K subscribers
1.79K photos
19 videos
2 files
162 links
金融股民渗透国内app,海外网站app,入侵后台,脱裤数据库, dns劫持 服务器进入等等
破解网站app软件技术等等 黑客技术咨询
@hacker_HouZiM
Download Telegram
在这些假设下,RESULT = yield from EXPR可以简化成下面这样,在读这段代码之前,我们先说明一下这些下划线开头的变量的作用:
_i:子生成器,同时也是一个迭代器
_y:子生成器生产的值
_r:yield from 表达式最终的值
_s:调用方通过send()发送的值
_e:异常对象
这段代码的大部分含义已经在注释中说明了,可以结合注释来理解这段代码的含义。
如果你已经理解了,那么我们继续。现实情况下,yield from要做的事情会复杂一些,毕竟我们做出了一系列的假设。将假设去掉没有什么难度,但是有几个问题非常难受:
子生成器可能只是一个迭代器,并不是一个作为协程的生成器,所以它不支持.throw().close()方法;
如果子生成器支持.throw().close()方法,但是在子生成器内部,这两个方法都会抛出异常;
调用方让子生成器自己抛出异常,没有原因,就是任性;
当调用方使用next()或者.send(None)时,都要在子生成器上调用next()函数,当调用方使用.send()发送非 None 值时,才调用子生成器的.send()方法;
这些问题都是yield from结构需要考虑的事情,下面我们来看一下完成的简化之前的代码,相关的注解也写到了注释中:
子生成器生产的值,都是直接传给调用方的;调用方通过.send()发送的值都是直接传递给子生成器的;如果发送的是 None,会调用子生成器的__next__()方法,如果不是 None,会调用子生成器的.send()方法;
子生成器退出的时候,最后的return EXPR,会触发一个StopIteration(EXPR)异常;
yield from表达式的值,是子生成器终止时,传递给StopIteration异常的第一个参数;
如果调用的时候出现StopIteration异常,委托生成器会恢复运行,同时其他的异常会向上 "冒泡";
传入委托生成器的异常里,除了GeneratorExit之外,其他的所有异常全部传递给子生成器的.throw()方法;如果调用.throw()的时候出现了StopIteration异常,那么就恢复委托生成器的运行,其他的异常全部向上 "冒泡";
如果在委托生成器上调用.close()或传入GeneratorExit异常,会调用子生成器的.close()方法,没有的话就不调用。如果在调用.close()的时候抛出了异常,那么就向上 "冒泡",否则的话委托生成器会抛出GeneratorExit异常。

渗透爬虫软件 资源采集 劫持域名 提取抓料子 六合·色站·彩票·博彩·金融 接渗透拿站,各大网站数据-拖库-提权联系 域名劫持 DNS 入侵网站 联系:@hacker_HouZiM
我们从一个简单的爬虫开始,这个爬虫很简单,访问指定的 URL,并且获取内容并计算长度,这里我们给定 5 个 URL。第一版的代码十分简单,顺序获取每个 URL 的内容,当第一个请求完成、计算完长度后,再开始第二个请求。
我们多运行几次看看结果。
大约需要花费 14-16 秒不等,这段代码并没有什么好看的,我们把关注点放在后面的代码上。现在我们使用多线程来改写这端代码。
再来看一下结果,很明显,我们的耗时已经降低到 10s 左右了:
从这两段代码中,已经可以看出并发对于处理任务的好处了,但是使用原生的threading模块还是略显麻烦,Python 已经给我们内置了一个处理并发任务的库concurrent,我们借用这个库修改一下我们的代码,之所以修改成这个库的原因还有一个,那就是引出我们后面会谈到的Future
执行一下,会发现耗时与上一个版本一样,稳定在 10s 左右。
可以看到我们调用了concurrent库中的futures,那么到底什么是futures?简单的讲,这个对象代表一种异步的操作,可以表示为一个需要延时进行的操作,当然这个操作的状态可能已经完成,也有可能尚未完成,如果你写 JS 的话,可以理解为是类似Promise的对象。在 Python 中,标准库中其实有两个Future类,一个是concurrent.futures.Future,另外一个是asyncio.Future,这两个类很类似,不完全相同,这些实现差异以及 API 的差异我们先按下暂且不谈,有兴趣的同学可以参考下相关的文档。Future是我们后面讨论的asyncio异步编程的基础,因此这里多说两句。
Future代表的是一个未来的某一个时刻一定会执行的操作(可能已经执行完成了,但是无论如何他一定有一个确切的运行时间),一般情况下用户无需手动从零开始创建一个 Future,而是应当借助框架中的 API 生成。比如调用concurrent.futures.Executor.submit()时,框架会为 "异步操作" 进行一个排期,来决定何时运行这个操作,这时候就会生成一个Future对象。

渗透爬虫软件 资源采集 劫持域名 提取抓料子 六合·色站·彩票·博彩·金融 接渗透拿站,各大网站数据-拖库-提权联系 域名劫持 DNS 入侵网站 联系:@hacker_HouZiM
拿到 UploadFile.class.php,部分代码如下:
从头部加密信息来看,是用的 PHPJiaMi,看到代码里面有 eval,那这种方式解密成功率就很大了。
直接解该文件没成功,说明存在调用才会解密的情况,从 index.php 里发现了调用的代码。
 if($_FILES) {
include 'UploadFile.class.php';
$dist = 'upload';
$upload = new UploadFile($dist, 'upfile');
$data = $upload->upload();
}
?>

把原来的 index.php 拿过来,我们需要在上面2中的代码前构造表单里的变量,让它能成功执行,所以我们最终的 index.php 是这个样子
 <?php
$_FILES["upfile"] = array(
"name" => "1303.jpg",
"type" => "image/jpeg",
"tmp_name" => "/tmp/php/phpSDsuf7",
"error" => 0,
"size" => 1024
);
// 上面的代码是加的
if($_FILES) {
include 'UploadFile.class.php';
$dist = 'upload';
$upload = new UploadFile($dist, 'upfile');
$data = $upload->upload();
}
?><!DOCTYPE html>
<html>
....后面省略

然后把 index.php 和 UploadFile.class.php 打个 zip 包, 注意 index 所在的目录不要打包进去
$ zip -r mytest.zip index.php UploadFile.class.php

把 mytest.zip 上传后,如果出现解密失败,点后面的重试,就能看到结果了。

渗透爬虫软件 资源采集 劫持域名 提取抓料子 六合·色站·彩票·博彩·金融 接渗透拿站,各大网站数据-拖库-提权联系 域名劫持 DNS 入侵网站 联系:@hacker_HouZiM
程序通过判断文件名来对请求进行不同的处理。跟进 handlePhpCgi 后可以看到对请求参数、请求头进行解析后将执行权交给 php,解析过程如下:
对参数进行解析后,将其储存以键值对的形式(_TYPE_KEY=VALUE,TYPE 为 GET、POST、SERVER),并以 \n 分隔储存到一字符串中,调试如下:
然后进行认证检查,将检查的结果赋值给 AUTHORIZED_GROUP 并保存到字符串中作为全局变量传递给 php:
在整个解析流程中并没有对参数中的 \n 进行过滤,所以如果通过注入 \n 进而注入 AUTHORIZED_GROUP 就可以绕过认证检查,未经授权执行 php 脚本。
在认证通过后程序获取 $_POST["SERVICES"] 参数,将其拼接到字符串中进行包含。/htdocs/webinc/getcfg/ 目录(也可以通过 ../ 跳转目录)下为路由的配置文件,比如 DEVICE.ACCOUNT.xml.php 中保存着路由的管理密码:

渗透爬虫软件 资源采集 劫持域名 提取抓料子 六合·色站·彩票·博彩·金融 接渗透拿站,各大网站数据-拖库-提权联系 域名劫持 DNS 入侵网站 联系:@hacker_HouZiM
当应用程序尝试加载已注册的类scrobj.dll时,该类会被加载到内存中。COM 运行时会请求所需类的新对象,这会导致 WSC 运行时返回注册表查找实现脚本文件的 URL。然后,WSC 运行时加载该脚本文件,并在进程内执行其中包含的嵌入式脚本。关键在于,只要 scrobj.dll(以及任何关联的脚本语言库,例如JScript.dll )在 VBOX 看来是有效的已签名 DLL,那么脚本代码就会运行,因为它永远不会被加固代码检查。这将导致任意代码在加固进程内运行。首先,让我们检查一下 scrobj.dll 是否可能被 VBOX 允许加载。以下屏幕截图显示该 DLL 既由 Microsoft 签名,也属于TrustedInstaller所有。
那么,一个有效的 Scriptlet 文件是什么样的呢?它是一个简单的 XML 文件,我不会详细解释每个 XML 元素的含义,只会指出其中的脚本块,它会执行任意的 JScript 代码。在这个例子中,Scriptlet 加载后只会启动计算器进程。

渗透爬虫软件 资源采集 劫持域名 提取抓料子 六合·色站·彩票·博彩·金融 接渗透拿站,各大网站数据-拖库-提权联系 域名劫持 DNS 入侵网站 联系:@hacker_HouZiM
通过搜索 banner,我找到了这个网站的源代码:https://github.com/bearice/tunnel-manager/blob/master/src/API.hs。
通过阅读源码,我发现了一个比较有意思的未公开 API:
tunnelLogs :: String -> IO String
tunnelLogs name = do
   let path = flags_dataDir </> name <.> "log"
   sh $ "tail " ++ escape path

...

get "/tunnel/:name/logs" $ do
 name <- param "name"
 logs <- liftIO $ tunnelLogs name
 text $ L.pack logs

在调用这个 API 时,会读取 /data/:name.log。再看看创建 Docker 时候:
注意这一行:
,"-v "++flags_dataDir++":/data", portDef, flags_image

由于这个 API 运行在容器外,但是容器内的 /data 可以操控,于是通过创建软链接即可读取到容器外的文件。
在容器内:
root@fff2:/data# rm fff.log && ln -s /etc/shadow fff.log
ln -s /etc/shadow fff.log

接着访问 logs:
Bingo,至此通过 Docker 配合 API 的文件读取完成。

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