这是一篇关于Cobalt Strike的的文章。由于作者能力有限,文中定会出现一些错误,请谅解。本文创建时间为2020年5月10日,最近一次更新时间为2020年9月15日。本文会不定期更新。鉴于凡世之忙碌,下一次更新也许是明天,也许是下辈子。
关于Cobalt Strike是什么?详见 cobaltstrike官网。
基础操作
运行:
监听器
生成payload
Attacks ->Packages ->Payload Generator ->……
beacon
beacon是CS自带的命令,下面列举了这些常见的使用方法。
生成一个免杀的payload在后渗透测试过程中尤为重要。由于免杀框架层出不穷现在的免杀也相比过去容易了很多。
如何上线?上线的分类有哪些?执行一条命令?运行一个可安装程序?
dll劫持
https://kevien.github.io/2020/04/05/cobaltstrike-dns-beacon/
获取到一个Session之后,可能会由于网络不稳定,机器重启等操作丢失Session。我们获取一个Session之后,首先要思考的就是如何使Session永久维持。除了思考永久停留的问题之外,还需要及时的将Session备份到其他的CS服务器上面。本文列举了一些Session永久维持的方法,抛砖引玉。
永久停留
本部分介绍了一些如何进行永久停留的方法,参考:https://xz.aliyun.com/t/5881
备份Session
获取shell之后可以将shell转发到其他的CS上,或者是转发到MSF上面,方便后续的测试。
内网渗透中,使用一些神洞进行。这些渗透往往是内网之中的大杀器。其中包括下面的这些神洞。除了这些神洞之外,在内网中总是会存在大量的弱口令,内网中弱口令扫描也尤为重要。同样,在内网中可能会存在大量服务器使用相同复杂密码的情况,因此密码嗅探也是比较有效的操作。
除此之外,在内网中横向渗透时,优先考虑使用msf。
获取到一些服务器之后,为了测试的必要性可能需要把流量转发出来。当然,这可能是不必要的。进入内网横向渗透测试时
Cobalt Strike作为一款优秀的后渗透测试框架,可扩展性也极强。用户可以通过编写Cobalt Strike Script的方式新增功能。再此列举了一些比较优秀的Script。
某些需求下,需要逆向代码进行重构。可以对CS进行反编译,修改里面的功能之后进行重新打包成功jar文件。
https://github.com/TideSec/BypassAntiVirus
https://github.com/alphaSeclab/cobalt-strike
http://blog.leanote.com/post/snowming/de88219734d1
https://kevien.github.io/2020/04/05/cobaltstrike-dns-beacon/
这是一篇关于任意文件写入漏洞的文章。由于作者能力有限,文中定会出现一些错误,请谅解。本文会不定期更新,最近一次更新时间为2020年9月15日。鉴于凡世之忙碌,下一次更新也许是明天,也许是下辈子。
任意文件写入不同与文件上传漏洞,有些人也称之为是命令执行漏洞。漏洞出现的原因经常是在后台的一些配置文件修改编辑等处,程序开发过程中将这些配置信息未做好过滤保存到了文件中,用户可以在文件中写入任意的内容,导致漏洞产生。
任意文件写入可以直接Getshell,危害很大。但在渗透测试中,往往出现在Cms中。不进行代码审计的情况下,较难直接获取权限,因为无法判断写入到了那个文件中,但也有例外的情况。关于任意文件写入漏洞,有三个前提条件:
任意文件写入漏洞代码审计思路:寻找文件写入或文件保存等相关函数,查看函数中变量用户是否可控,是否进行了过滤处理,是否保存到了可执行文件中。一般采用代码审计工具可以很好的找出此类漏洞,对于误报情况较大的情况,只需要人工去逐个分析排查即可。
一、PHP文件写入
相关函数
fopen() 创建文件,打开文件或URL。
$file = fopen("admin.php", "w")
fwrite() 写入文件
fwrite($file, $str)
file_put_contents() 把字符串写入文件
file_put_contents("admin.php","<?PHP phpinfo();?>");
fputcsv() 将行数据格式化为CSV格式并写入文件
fputs() 将字符串写入文件
socket_write() 写一个 Socket
session_write_close() 向Session中写入数据并终止Session
ftp_nb_get() 从FTP服务器上获取文件并写入本地文件
imagefttext() 使用FreeType2字体将文本写入图像
imagettftext() 用TrueType字体向图像写入文本
二、Java文件写入
相关函数
三、基础绕过方法
没有任何过滤直接将字符串写入文件的情况还是比较少的。有一部分漏洞是已经对参数做了过滤,但是没有完美过滤,导致使用某些技巧可言绕过。
利用换行符来绕过正则匹配。
<?php
$api = addslashes($_GET['api']);
$file = file_get_contents('./option.php');
$file = preg_replace("/\\\$API = '.*';/", "\$API = '{$api}';", $file);
file_put_contents('./option.php', $file);
利用 preg_replace函数的问题。
利用 preg_replace() 第二个参数,自动转义反斜线。
利用正则\n | $n,将第n个子组替换到文本中 |
$a = 'aa1234aa';
$b = preg_replace('/aa(\d+)aa/', 'bb\1bb', $a);
echo $b;
在渗透测试中,可以在配置文件修改等地方插入类似的payload,查看当前页面的返回情况,或者是通过以往的经验来判断文件写入的位置。很多情况下,配置文件也并非是写入到了可执行文件中,而是写入到了数据库中。在渗透测试中,任意文件写入有俩种常见的情况:
配置文件处任意字符串写入
程序安装时install任意字符串写入
常见payload
<?php phpinfo();?>
phpinfo();
";phpinfo();//
";@phpinfo();//
';phpinfo();//
‘;phpinfo();//
';@phpinfo();//
\',@phpinfo(),//',
\';phpinfo();//
aaa';phpinfo();%0a//
';%0aphpinfo();//
;phpinfo();
\%27;%0aphpinfo();%23
\%27;%0aphpinfo();//
\%27);%0aphpinfo();%23
\%27);phpinfo();%23
';phpinfo();//
");phpinfo();//
出现过任意文件写入漏洞的程序。
本文是自己学习PHP时的一些基础笔记。
PHP对大小写不敏感,变量的大小写敏感。
函数在执行完成之后,会删除所有变量。
static静态变量执行完成之后不会删除。会存储最后一次被调用所包含的信息。
PHP中,使用echo和print进行打印与输出。
var_dump()返回变量的数据类型和值。var_dump(10.365)
PHP常量
或 $x | $y 如果 $x 和 $y 至少有一个为 true,则返回 true。 |
PHP表单
PHP解析
PHP参考
这是一篇统计2020年高危漏洞列表的文章。由于作者能力有限,文中定会出现一些错误,请谅解。本文创建时间为2020年1月1日,最近一次更新时间为2020年12月31日。本文会不定期更新。打钩的漏洞说明已经拥有完整的利用程序,或尽可能的对其进行了漏洞分析。相关分析文章可能不会在第一时间公开。鉴于凡世之忙碌,下一次更新也许是明天,也许是下辈子。
格式:出现时间#CVE编号-漏洞名称