勒索软件
- 文件加密
- 解密
- 出钱
踏上路途吧
//利用系统变量构造nl命令
${PATH:~A}${PWD:~A}$IFS????.???
学到一个新技能,使用wappalyzer可以得到web的服务器和php版本
们先来看一下我们能用的数字有哪些:
0:可以用字符代替;
1:
1 | ${#SHLVL}=1,或者${##}、${#?}。 |
1 | SHLVL是记录多个 Bash 进程实例嵌套深度的累加器,进程第一次打开shell时${#SHLVL}=1,然后在此shell中再打开一个shell时${#SHLVL}=2。 |
1 | 2:`用wappalyzer插件可以看到php的版本是7.3.22,所以2可以用${PHP_VERSION:~A}代替。` |
传参
1 | code=${PWD::${#SHLVL}}???${PWD::${#SHLVL}}?${USER:~A}? ????.??? |
(1)第一种方法:
1 | `从左向右截取最后一个string后的字符串` |
“*”只是一个通配符可以不要
请看下面的例子:
1 | $ MYVAR=foodforthought.jpg |
(2)第二种方法:
${varible:n1:n2}:截取变量varible从n1开始的n2个字符,组成一个子字符串。可以根据特定字符偏移和长度,使用另一种形式的变量扩展,来选择特定子字符串。试着在 bash 中输入以下行:
1 | $ EXCLAIM=cowabunga |
PHP的00截断是5.2.x版本的一个漏洞,当用户输入的url参数包含%00经过浏览器自动转码后截断后面字符。
例如url输入的文件名1.txt%00.jpg经过url转码后会变为1.txt\000.jpg,测试文件1.php如下
1 | <?php |
测试文件1.txt如下
1 | <?php |
php5.2.x版本解析1.php时,会将1.txt\000.jpg解释为1.txt
只要比较发现文件名的strlen长度和语法分析出来的长度不一样,就说明内部存在截断的字符,因此输出了打开文件失败的信息。
php.ini是php的一个全局配置文件,对整个web服务起作用;而.user.ini和.htaccess一样是目录的配置文件,.user.ini就是用户自定义的一个php.ini,我们可以利用这个文件来构造后门和隐藏后门。
实例
php 配置项中有两个配置可以起到一些作用
1 | auto_prepend_file = <filename> //包含在文件头 |
这两个配置项的作用相当于一个文件包含,比如
1 | // .user.ini |
满足这三个文件在同一目录下,则相当于在1.php文件里插入了包含语句require(‘1.png’),进行了文件包含。
另一条配置包含在文件尾,如果遇到了 exit 语句的话就会失效。
.user.ini使用范围很广,不仅限于 Apache 服务器,同样适用于 Nginx 服务器,只要服务器启用了 fastcgi 模式 (通常非线程安全模式使用的就是 fastcgi 模式)。
局限
在.user.ini中使用这条配置也说了是在同目录下的其他.php 文件中包含配置中所指定的文件,也就是说需要该目录下存在.php 文件,通常在文件上传中,一般是专门有一个目录用来存在图片,可能小概率会存在.php 文件。
但是有时可以使用 ../ 来将文件上传到其他目录,达到一个利用的效果。
1 | <?php |
新的系列开始了,还没练过,让我看看都是什么怪物,bangbang炸弹全部拿捏
利用脚本扫描目录
1 | import requests |
全部题都是struts2框架漏洞,Struts2是用Java语言编写的一个基于MVC设计模式的Web应用框架
2017年3月6日,Apache Struts 2被曝存在远程命令执行漏洞。在使用基于Jakarta插件的文件上传功能条件下,恶意用户可以通过修改HTTP请求头中的Content-Type值构造恶意代码,在服务器上执行系统命令,完全控制该服务器,最后达到挖矿、对外攻/击、数据窃取勒索、篡改为菠菜站等目的。漏洞利用所需组件默认启用,风险等级为高危。